# WhatsApp Cloud API - Business Encryption API | Developer Documentation

<div id="bkmrk-whatsapp-cloud-api--"><div><div>## WhatsApp Cloud API - Business Encryption API

<div><div><div><span>Copy for LLM</span></div></div><div>[<span>View as Markdown</span>](/documentation/business-messaging/whatsapp/reference/whatsapp-business-phone-number/business-encryption-api/v23.0.md/)</div></div></div><div><div>Version</div></div><div><div><div><div><div><div><span><span>API for managing WhatsApp Business Account encryption settings and public key management.</span></span></div></div><div><div><span><span>This endpoint allows businesses to set up and manage encryption for their WhatsApp Business</span></span></div></div><div><div><span><span>messaging by uploading and retrieving business public keys used for payload encryption.</span></span></div></div></div></div></div></div></div><div><div>---

<div><div><div id="bkmrk-get-%2F%7Bversion%7D%2F%7Bphon"><div id="bkmrk-get-%2F%7Bversion%7D%2F%7Bphon-1"><div>### GET /{Version}/{Phone-Number-ID}/whatsapp\_business\_encryption

</div></div></div><div><div><div><div><div><div><span><span>Retrieve the current business public key and its signature verification status.</span></span></div></div><div><div><span><span>This endpoint returns the public key that is currently configured for encrypting</span></span></div></div><div><div><span><span>message payloads and indicates whether the stored signature is valid or has a mismatch.</span></span></div></div><div><div><span><span>Use Cases:</span></span></div></div><div><span><span>Verify current encryption configuration</span></span></div><div><span><span>Check public key signature validation status</span></span></div><div><span><span>Retrieve public key for client-side encryption setup</span></span></div><div><span><span>Monitor encryption key status for security compliance</span></span></div><div><div><span><span>Rate Limiting:</span></span></div></div><div><div><span><span>Standard Graph API rate limits apply. Use appropriate retry logic with exponential backoff.</span></span></div></div><div><div><span><span>Caching:</span></span></div></div><div><div><span><span>Public key information can be cached for moderate periods, but signature status</span></span></div></div><div><div><span><span>may change and should be checked regularly for security validation.</span></span></div></div></div></div></div></div>#### Request Syntax

<div><div><div><div><div><div><span>Try it</span></div></div></div></div></div></div><div><div><div><div><div><div><div>Select language</div></div></div></div>---

</div><div><div><div><div><div><div>Select status code</div></div></div></div>---

</div></div></div></div><div><span>Header Parameters</span>---

<div><div><span>User-Agent</span><span>string</span></div><div><div><div><div><div><div><span><span>The user agent string identifying the client software making the request.</span></span></div></div></div></div></div></div></div><div><div><span>Authorization</span><span>string</span><span>·</span><span>required</span></div><div><div><div><div><div><div><span><span>Bearer token for API authentication. This should be a valid access token obtained through the appropriate OAuth flow or system user token.</span></span></div></div></div></div></div></div></div></div><div><span>Path Parameters</span>---

<div><div><span>Version</span><span>string</span><span>·</span><span>required</span></div><div><div><div><div><div><div><span><span>Graph API version to use for this request. Determines the API behavior and available features.</span></span></div></div></div></div></div></div></div><div><div><span>Phone-Number-ID</span><span>string</span><span>·</span><span>required</span></div><div><div><div><div><div><div><span><span>Your WhatsApp Business phone number ID. This ID represents the phone number</span></span></div></div><div><div><span><span>entity and can be obtained from your WhatsApp Business Account phone numbers list.</span></span></div></div></div></div></div></div></div></div><div><span>Query Parameters</span>---

<div><div><span>fields</span><span>string</span></div><div><div><div><div><div><div><span><span>Comma-separated list of fields to include in the response. If not specified,</span></span></div></div><div><div><span><span>all available fields will be returned.</span></span></div></div><div><div><span><span>Available fields: business\_public\_key, business\_public\_key\_signature\_status</span></span></div></div></div></div></div></div></div></div><div><span>Responses</span>---

<div><div><div><div><div><div><span><span>Retrieve the current business public key and its signature verification status.</span></span></div></div><div><div><span><span>This endpoint returns the public key that is currently configured for encrypting</span></span></div></div><div><div><span><span>message payloads and indicates whether the stored signature is valid or has a mismatch.</span></span></div></div><div><div><span><span>Use Cases:</span></span></div></div><div><span><span>Verify current encryption configuration</span></span></div><div><span><span>Check public key signature validation status</span></span></div><div><span><span>Retrieve public key for client-side encryption setup</span></span></div><div><span><span>Monitor encryption key status for security compliance</span></span></div><div><div><span><span>Rate Limiting:</span></span></div></div><div><div><span><span>Standard Graph API rate limits apply. Use appropriate retry logic with exponential backoff.</span></span></div></div><div><div><span><span>Caching:</span></span></div></div><div><div><span><span>Public key information can be cached for moderate periods, but signature status</span></span></div></div><div><div><span><span>may change and should be checked regularly for security validation.</span></span></div></div></div></div></div></div><div><span>200</span><div><div><div><div><div><div><span><span>Successfully retrieved business encryption public key information</span></span></div></div></div></div></div></div><div><div><span>Content Type: </span><span>application/json</span></div><div><div><span>Schema: </span><span>object</span></div><div><div><div id="bkmrk-show-child-attribute"><div><span>Show child attributes</span></div></div><div id="bkmrk-dataarray-of-whatsap"><div><div>---

<div><div><span>data</span><span>array of WhatsAppBusinessEncryptionInfo</span></div></div><div><div><div id="bkmrk-show-child-attribute-1"><div><span>Show child attributes</span></div></div><div id="bkmrk-data%5B%5Dwhatsappbusine"><div><div>---

<div><div><span>data\[\]</span><span>WhatsAppBusinessEncryptionInfo</span></div><div><div><div><div><div><div><span><span>Business encryption public key information and verification status</span></span></div></div></div></div></div></div></div><div><div><div id="bkmrk-show-child-attribute-2"><div><span>Show child attributes</span></div></div><div id="bkmrk-business_public_keys"><div><div>---

<div><div><span>business\_public\_key</span><span>string</span><span>·</span><span>required</span></div><div><div><div><div><div><div><span><span>The business public key used for encrypting message payloads.</span></span></div></div><div><div><span><span>This key is used to encrypt data channel requests and responses.</span></span></div></div></div></div></div></div></div><div><div><div id="bkmrk-show-child-attribute-3"><div><span>Show child attributes</span></div></div><div id="bkmrk-business_public_key_"><div><div>---

<div><div><span>business\_public\_key\_signature\_status</span><span>BusinessPublicKeyVerificationStatus</span><span>·</span><span>required</span></div><div><div><div><div><div><div><span><span>Status of business public key signature verification</span></span></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div><div><span>400</span><div><div><div><div><div><div><span><span>Bad Request - Invalid parameters or malformed request</span></span></div></div></div></div></div></div><div><div><span>Content Type: </span><span>application/json</span></div><div><div><span>Schema: </span><span>GraphAPIError</span></div><div><div><div id="bkmrk-show-child-attribute-4"><div><span>Show child attributes</span></div></div><div id="bkmrk-graphapierrorerrorob"><div>---

<div><span>GraphAPIError</span></div><div>---

<div><div><span>error</span><span>object</span><span>·</span><span>required</span></div></div><div><div><div id="bkmrk-show-child-attribute-5"><div><span>Show child attributes</span></div></div><div id="bkmrk-messagestring%C2%B7requir"><div><div>---

<div><div><span>message</span><span>string</span><span>·</span><span>required</span></div><div><div><div><div><div><div><span><span>Human-readable error message</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>type</span><span>string</span><span>·</span><span>required</span></div><div><div><div><div><div><div><span><span>Error category type</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>code</span><span>integer</span><span>·</span><span>required</span></div><div><div><div><div><div><div><span><span>Numeric error code</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>error\_subcode</span><span>integer</span></div><div><div><div><div><div><div><span><span>More specific error subcode when available</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>fbtrace\_id</span><span>string</span></div><div><div><div><div><div><div><span><span>Unique identifier for debugging and support requests with Meta</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>is\_transient</span><span>boolean</span></div><div><div><div><div><div><div><span><span>Indicates whether this error is temporary and the request should be retried</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>error\_user\_title</span><span>string</span></div><div><div><div><div><div><div><span><span>User-friendly error title for display purposes</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>error\_user\_msg</span><span>string</span></div><div><div><div><div><div><div><span><span>User-friendly error message for display purposes</span></span></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div><div><span>401</span><div><div><div><div><div><div><span><span>Unauthorized - Invalid or missing access token</span></span></div></div></div></div></div></div><div><div><span>Content Type: </span><span>application/json</span></div><div><div><span>Schema: </span><span>GraphAPIError</span></div><div><div><div id="bkmrk-show-child-attribute-6"><div><span>Show child attributes</span></div></div><div id="bkmrk-graphapierrorerrorob-1"><div>---

<div><span>GraphAPIError</span></div><div>---

<div><div><span>error</span><span>object</span><span>·</span><span>required</span></div></div><div><div><div id="bkmrk-show-child-attribute-7"><div><span>Show child attributes</span></div></div><div id="bkmrk-messagestring%C2%B7requir-1"><div><div>---

<div><div><span>message</span><span>string</span><span>·</span><span>required</span></div><div><div><div><div><div><div><span><span>Human-readable error message</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>type</span><span>string</span><span>·</span><span>required</span></div><div><div><div><div><div><div><span><span>Error category type</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>code</span><span>integer</span><span>·</span><span>required</span></div><div><div><div><div><div><div><span><span>Numeric error code</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>error\_subcode</span><span>integer</span></div><div><div><div><div><div><div><span><span>More specific error subcode when available</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>fbtrace\_id</span><span>string</span></div><div><div><div><div><div><div><span><span>Unique identifier for debugging and support requests with Meta</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>is\_transient</span><span>boolean</span></div><div><div><div><div><div><div><span><span>Indicates whether this error is temporary and the request should be retried</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>error\_user\_title</span><span>string</span></div><div><div><div><div><div><div><span><span>User-friendly error title for display purposes</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>error\_user\_msg</span><span>string</span></div><div><div><div><div><div><div><span><span>User-friendly error message for display purposes</span></span></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div><div><span>403</span><div><div><div><div><div><div><span><span>Forbidden - Insufficient permissions or access denied</span></span></div></div></div></div></div></div><div><div><span>Content Type: </span><span>application/json</span></div><div><div><span>Schema: </span><span>GraphAPIError</span></div><div><div><div id="bkmrk-show-child-attribute-8"><div><span>Show child attributes</span></div></div><div id="bkmrk-graphapierrorerrorob-2"><div>---

<div><span>GraphAPIError</span></div><div>---

<div><div><span>error</span><span>object</span><span>·</span><span>required</span></div></div><div><div><div id="bkmrk-show-child-attribute-9"><div><span>Show child attributes</span></div></div><div id="bkmrk-messagestring%C2%B7requir-2"><div><div>---

<div><div><span>message</span><span>string</span><span>·</span><span>required</span></div><div><div><div><div><div><div><span><span>Human-readable error message</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>type</span><span>string</span><span>·</span><span>required</span></div><div><div><div><div><div><div><span><span>Error category type</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>code</span><span>integer</span><span>·</span><span>required</span></div><div><div><div><div><div><div><span><span>Numeric error code</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>error\_subcode</span><span>integer</span></div><div><div><div><div><div><div><span><span>More specific error subcode when available</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>fbtrace\_id</span><span>string</span></div><div><div><div><div><div><div><span><span>Unique identifier for debugging and support requests with Meta</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>is\_transient</span><span>boolean</span></div><div><div><div><div><div><div><span><span>Indicates whether this error is temporary and the request should be retried</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>error\_user\_title</span><span>string</span></div><div><div><div><div><div><div><span><span>User-friendly error title for display purposes</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>error\_user\_msg</span><span>string</span></div><div><div><div><div><div><div><span><span>User-friendly error message for display purposes</span></span></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div><div><span>404</span><div><div><div><div><div><div><span><span>Not Found - Phone number ID does not exist or is not accessible</span></span></div></div></div></div></div></div><div><div><span>Content Type: </span><span>application/json</span></div><div><div><span>Schema: </span><span>GraphAPIError</span></div><div><div><div id="bkmrk-show-child-attribute-10"><div><span>Show child attributes</span></div></div><div id="bkmrk-graphapierrorerrorob-3"><div>---

<div><span>GraphAPIError</span></div><div>---

<div><div><span>error</span><span>object</span><span>·</span><span>required</span></div></div><div><div><div id="bkmrk-show-child-attribute-11"><div><span>Show child attributes</span></div></div><div id="bkmrk-messagestring%C2%B7requir-3"><div><div>---

<div><div><span>message</span><span>string</span><span>·</span><span>required</span></div><div><div><div><div><div><div><span><span>Human-readable error message</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>type</span><span>string</span><span>·</span><span>required</span></div><div><div><div><div><div><div><span><span>Error category type</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>code</span><span>integer</span><span>·</span><span>required</span></div><div><div><div><div><div><div><span><span>Numeric error code</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>error\_subcode</span><span>integer</span></div><div><div><div><div><div><div><span><span>More specific error subcode when available</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>fbtrace\_id</span><span>string</span></div><div><div><div><div><div><div><span><span>Unique identifier for debugging and support requests with Meta</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>is\_transient</span><span>boolean</span></div><div><div><div><div><div><div><span><span>Indicates whether this error is temporary and the request should be retried</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>error\_user\_title</span><span>string</span></div><div><div><div><div><div><div><span><span>User-friendly error title for display purposes</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>error\_user\_msg</span><span>string</span></div><div><div><div><div><div><div><span><span>User-friendly error message for display purposes</span></span></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div><div><span>422</span><div><div><div><div><div><div><span><span>Unprocessable Entity - Request parameters are valid but cannot be processed</span></span></div></div></div></div></div></div><div><div><span>Content Type: </span><span>application/json</span></div><div><div><span>Schema: </span><span>GraphAPIError</span></div><div><div><div id="bkmrk-show-child-attribute-12"><div><span>Show child attributes</span></div></div><div id="bkmrk-graphapierrorerrorob-4"><div>---

<div><span>GraphAPIError</span></div><div>---

<div><div><span>error</span><span>object</span><span>·</span><span>required</span></div></div><div><div><div id="bkmrk-show-child-attribute-13"><div><span>Show child attributes</span></div></div><div id="bkmrk-messagestring%C2%B7requir-4"><div><div>---

<div><div><span>message</span><span>string</span><span>·</span><span>required</span></div><div><div><div><div><div><div><span><span>Human-readable error message</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>type</span><span>string</span><span>·</span><span>required</span></div><div><div><div><div><div><div><span><span>Error category type</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>code</span><span>integer</span><span>·</span><span>required</span></div><div><div><div><div><div><div><span><span>Numeric error code</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>error\_subcode</span><span>integer</span></div><div><div><div><div><div><div><span><span>More specific error subcode when available</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>fbtrace\_id</span><span>string</span></div><div><div><div><div><div><div><span><span>Unique identifier for debugging and support requests with Meta</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>is\_transient</span><span>boolean</span></div><div><div><div><div><div><div><span><span>Indicates whether this error is temporary and the request should be retried</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>error\_user\_title</span><span>string</span></div><div><div><div><div><div><div><span><span>User-friendly error title for display purposes</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>error\_user\_msg</span><span>string</span></div><div><div><div><div><div><div><span><span>User-friendly error message for display purposes</span></span></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div><div><span>429</span><div><div><div><div><div><div><span><span>Too Many Requests - Rate limit exceeded</span></span></div></div></div></div></div></div><div><div><span>Content Type: </span><span>application/json</span></div><div><div><span>Schema: </span><span>GraphAPIError</span></div><div><div><div id="bkmrk-show-child-attribute-14"><div><span>Show child attributes</span></div></div><div id="bkmrk-graphapierrorerrorob-5"><div>---

<div><span>GraphAPIError</span></div><div>---

<div><div><span>error</span><span>object</span><span>·</span><span>required</span></div></div><div><div><div id="bkmrk-show-child-attribute-15"><div><span>Show child attributes</span></div></div><div id="bkmrk-messagestring%C2%B7requir-5"><div><div>---

<div><div><span>message</span><span>string</span><span>·</span><span>required</span></div><div><div><div><div><div><div><span><span>Human-readable error message</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>type</span><span>string</span><span>·</span><span>required</span></div><div><div><div><div><div><div><span><span>Error category type</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>code</span><span>integer</span><span>·</span><span>required</span></div><div><div><div><div><div><div><span><span>Numeric error code</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>error\_subcode</span><span>integer</span></div><div><div><div><div><div><div><span><span>More specific error subcode when available</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>fbtrace\_id</span><span>string</span></div><div><div><div><div><div><div><span><span>Unique identifier for debugging and support requests with Meta</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>is\_transient</span><span>boolean</span></div><div><div><div><div><div><div><span><span>Indicates whether this error is temporary and the request should be retried</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>error\_user\_title</span><span>string</span></div><div><div><div><div><div><div><span><span>User-friendly error title for display purposes</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>error\_user\_msg</span><span>string</span></div><div><div><div><div><div><div><span><span>User-friendly error message for display purposes</span></span></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div><div><span>500</span><div><div><div><div><div><div><span><span>Internal Server Error - Unexpected server error</span></span></div></div></div></div></div></div><div><div><span>Content Type: </span><span>application/json</span></div><div><div><span>Schema: </span><span>GraphAPIError</span></div><div><div><div id="bkmrk-show-child-attribute-16"><div><span>Show child attributes</span></div></div><div id="bkmrk-graphapierrorerrorob-6"><div>---

<div><span>GraphAPIError</span></div><div>---

<div><div><span>error</span><span>object</span><span>·</span><span>required</span></div></div><div><div><div id="bkmrk-show-child-attribute-17"><div><span>Show child attributes</span></div></div><div id="bkmrk-messagestring%C2%B7requir-6"><div><div>---

<div><div><span>message</span><span>string</span><span>·</span><span>required</span></div><div><div><div><div><div><div><span><span>Human-readable error message</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>type</span><span>string</span><span>·</span><span>required</span></div><div><div><div><div><div><div><span><span>Error category type</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>code</span><span>integer</span><span>·</span><span>required</span></div><div><div><div><div><div><div><span><span>Numeric error code</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>error\_subcode</span><span>integer</span></div><div><div><div><div><div><div><span><span>More specific error subcode when available</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>fbtrace\_id</span><span>string</span></div><div><div><div><div><div><div><span><span>Unique identifier for debugging and support requests with Meta</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>is\_transient</span><span>boolean</span></div><div><div><div><div><div><div><span><span>Indicates whether this error is temporary and the request should be retried</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>error\_user\_title</span><span>string</span></div><div><div><div><div><div><div><span><span>User-friendly error title for display purposes</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>error\_user\_msg</span><span>string</span></div><div><div><div><div><div><div><span><span>User-friendly error message for display purposes</span></span></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div><div><div><div><div><div><div><div>Select language</div></div></div></div>---

</div><div><div><div><div><div><div>Select status code</div></div></div></div>---

</div></div></div></div></div></div><div>---

<div><div><div id="bkmrk-post-%2F%7Bversion%7D%2F%7Bpho"><div id="bkmrk-post-%2F%7Bversion%7D%2F%7Bpho-1"><div>### POST /{Version}/{Phone-Number-ID}/whatsapp\_business\_encryption

</div></div></div><div><div><div><div><div><div><span><span>Upload and configure a business public key for message payload encryption.</span></span></div></div><div><div><span><span>This endpoint accepts a business public key in PEM format, validates it,</span></span></div></div><div><div><span><span>and stores it with a cryptographic signature for future use in encrypting</span></span></div></div><div><div><span><span>message payloads and data channel requests.</span></span></div></div><div><div><span><span>Use Cases:</span></span></div></div><div><span><span>Initial setup of encryption for WhatsApp Business messaging</span></span></div><div><span><span>Update existing public key for key rotation</span></span></div><div><span><span>Enable secure payload encryption for sensitive business communications</span></span></div><div><span><span>Configure encryption keys for compliance requirements</span></span></div><div><div><span><span>Key Requirements:</span></span></div></div><div><span><span>Must be a valid RSA public key in PEM format</span></span></div><div><span><span>Key must meet Meta's security standards for encryption</span></span></div><div><span><span>Only one active public key per phone number at a time</span></span></div><div><span><span>Previous keys are replaced when new ones are uploaded</span></span></div><div><div><span><span>Rate Limiting:</span></span></div></div><div><div><span><span>Standard Graph API rate limits apply. Key uploads may have additional</span></span></div></div><div><div><span><span>security-related rate limiting to prevent abuse.</span></span></div></div></div></div></div></div>#### Request Syntax

<div><div><div><div><div><div><span>Try it</span></div></div></div></div></div></div><div><div><div><div><div><div><div>Select language</div></div></div></div>---

</div><div><div><div><div><div><div>Select status code</div></div></div></div>---

</div></div></div></div><div><span>Header Parameters</span>---

<div><div><span>User-Agent</span><span>string</span></div><div><div><div><div><div><div><span><span>The user agent string identifying the client software making the request.</span></span></div></div></div></div></div></div></div><div><div><span>Authorization</span><span>string</span><span>·</span><span>required</span></div><div><div><div><div><div><div><span><span>Bearer token for API authentication. This should be a valid access token obtained through the appropriate OAuth flow or system user token.</span></span></div></div></div></div></div></div></div></div><div><span>Path Parameters</span>---

<div><div><span>Version</span><span>string</span><span>·</span><span>required</span></div><div><div><div><div><div><div><span><span>Graph API version to use for this request. Determines the API behavior and available features.</span></span></div></div></div></div></div></div></div><div><div><span>Phone-Number-ID</span><span>string</span><span>·</span><span>required</span></div><div><div><div><div><div><div><span><span>Your WhatsApp Business phone number ID. This ID represents the phone number</span></span></div></div><div><div><span><span>entity and can be obtained from your WhatsApp Business Account phone numbers list.</span></span></div></div></div></div></div></div></div></div><div><span>Required</span>---

<div><div><span>Content Type: </span><span>multipart/form-data</span></div><div><div><span>Schema: </span><span>WhatsAppBusinessEncryptionUploadRequest</span></div><div><div><div id="bkmrk-show-child-attribute-18"><div><span>Show child attributes</span></div></div><div id="bkmrk-whatsappbusinessencr"><div>---

<div><span>WhatsAppBusinessEncryptionUploadRequest</span></div><div>---

<div><div><span>business\_public\_key</span><span>string</span><span>·</span><span>required</span></div><div><div><div><div><div><div><span><span>The business public key in PEM format to be uploaded and signed.</span></span></div></div><div><div><span><span>Must be a valid RSA public key that will be used for payload encryption.</span></span></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div><div><span>Responses</span>---

<div><div><div><div><div><div><span><span>Upload and configure a business public key for message payload encryption.</span></span></div></div><div><div><span><span>This endpoint accepts a business public key in PEM format, validates it,</span></span></div></div><div><div><span><span>and stores it with a cryptographic signature for future use in encrypting</span></span></div></div><div><div><span><span>message payloads and data channel requests.</span></span></div></div><div><div><span><span>Use Cases:</span></span></div></div><div><span><span>Initial setup of encryption for WhatsApp Business messaging</span></span></div><div><span><span>Update existing public key for key rotation</span></span></div><div><span><span>Enable secure payload encryption for sensitive business communications</span></span></div><div><span><span>Configure encryption keys for compliance requirements</span></span></div><div><div><span><span>Key Requirements:</span></span></div></div><div><span><span>Must be a valid RSA public key in PEM format</span></span></div><div><span><span>Key must meet Meta's security standards for encryption</span></span></div><div><span><span>Only one active public key per phone number at a time</span></span></div><div><span><span>Previous keys are replaced when new ones are uploaded</span></span></div><div><div><span><span>Rate Limiting:</span></span></div></div><div><div><span><span>Standard Graph API rate limits apply. Key uploads may have additional</span></span></div></div><div><div><span><span>security-related rate limiting to prevent abuse.</span></span></div></div></div></div></div></div><div><span>200</span><div><div><div><div><div><div><span><span>Successfully uploaded and configured business encryption public key</span></span></div></div></div></div></div></div><div><div><span>Content Type: </span><span>application/json</span></div><div><div><span>Schema: </span><span>WhatsAppBusinessEncryptionUploadResponse</span></div><div><div><div id="bkmrk-show-child-attribute-19"><div><span>Show child attributes</span></div></div><div id="bkmrk-whatsappbusinessencr-1"><div>---

<div><span>WhatsAppBusinessEncryptionUploadResponse</span></div><div>---

<div><div><span>success</span><span>boolean</span><span>·</span><span>required</span></div><div><div><div><div><div><div><span><span>Indicates whether the public key was successfully uploaded and signed</span></span></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div><div><span>400</span><div><div><div><div><div><div><span><span>Bad Request - Invalid parameters or malformed request</span></span></div></div></div></div></div></div><div><div><span>Content Type: </span><span>application/json</span></div><div><div><span>Schema: </span><span>GraphAPIError</span></div><div><div><div id="bkmrk-show-child-attribute-20"><div><span>Show child attributes</span></div></div><div id="bkmrk-graphapierrorerrorob-7"><div>---

<div><span>GraphAPIError</span></div><div>---

<div><div><span>error</span><span>object</span><span>·</span><span>required</span></div></div><div><div><div id="bkmrk-show-child-attribute-21"><div><span>Show child attributes</span></div></div><div id="bkmrk-messagestring%C2%B7requir-7"><div><div>---

<div><div><span>message</span><span>string</span><span>·</span><span>required</span></div><div><div><div><div><div><div><span><span>Human-readable error message</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>type</span><span>string</span><span>·</span><span>required</span></div><div><div><div><div><div><div><span><span>Error category type</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>code</span><span>integer</span><span>·</span><span>required</span></div><div><div><div><div><div><div><span><span>Numeric error code</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>error\_subcode</span><span>integer</span></div><div><div><div><div><div><div><span><span>More specific error subcode when available</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>fbtrace\_id</span><span>string</span></div><div><div><div><div><div><div><span><span>Unique identifier for debugging and support requests with Meta</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>is\_transient</span><span>boolean</span></div><div><div><div><div><div><div><span><span>Indicates whether this error is temporary and the request should be retried</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>error\_user\_title</span><span>string</span></div><div><div><div><div><div><div><span><span>User-friendly error title for display purposes</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>error\_user\_msg</span><span>string</span></div><div><div><div><div><div><div><span><span>User-friendly error message for display purposes</span></span></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div><div><span>401</span><div><div><div><div><div><div><span><span>Unauthorized - Invalid or missing access token</span></span></div></div></div></div></div></div><div><div><span>Content Type: </span><span>application/json</span></div><div><div><span>Schema: </span><span>GraphAPIError</span></div><div><div><div id="bkmrk-show-child-attribute-22"><div><span>Show child attributes</span></div></div><div id="bkmrk-graphapierrorerrorob-8"><div>---

<div><span>GraphAPIError</span></div><div>---

<div><div><span>error</span><span>object</span><span>·</span><span>required</span></div></div><div><div><div id="bkmrk-show-child-attribute-23"><div><span>Show child attributes</span></div></div><div id="bkmrk-messagestring%C2%B7requir-8"><div><div>---

<div><div><span>message</span><span>string</span><span>·</span><span>required</span></div><div><div><div><div><div><div><span><span>Human-readable error message</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>type</span><span>string</span><span>·</span><span>required</span></div><div><div><div><div><div><div><span><span>Error category type</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>code</span><span>integer</span><span>·</span><span>required</span></div><div><div><div><div><div><div><span><span>Numeric error code</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>error\_subcode</span><span>integer</span></div><div><div><div><div><div><div><span><span>More specific error subcode when available</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>fbtrace\_id</span><span>string</span></div><div><div><div><div><div><div><span><span>Unique identifier for debugging and support requests with Meta</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>is\_transient</span><span>boolean</span></div><div><div><div><div><div><div><span><span>Indicates whether this error is temporary and the request should be retried</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>error\_user\_title</span><span>string</span></div><div><div><div><div><div><div><span><span>User-friendly error title for display purposes</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>error\_user\_msg</span><span>string</span></div><div><div><div><div><div><div><span><span>User-friendly error message for display purposes</span></span></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div><div><span>403</span><div><div><div><div><div><div><span><span>Forbidden - Insufficient permissions or access denied</span></span></div></div></div></div></div></div><div><div><span>Content Type: </span><span>application/json</span></div><div><div><span>Schema: </span><span>GraphAPIError</span></div><div><div><div id="bkmrk-show-child-attribute-24"><div><span>Show child attributes</span></div></div><div id="bkmrk-graphapierrorerrorob-9"><div>---

<div><span>GraphAPIError</span></div><div>---

<div><div><span>error</span><span>object</span><span>·</span><span>required</span></div></div><div><div><div id="bkmrk-show-child-attribute-25"><div><span>Show child attributes</span></div></div><div id="bkmrk-messagestring%C2%B7requir-9"><div><div>---

<div><div><span>message</span><span>string</span><span>·</span><span>required</span></div><div><div><div><div><div><div><span><span>Human-readable error message</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>type</span><span>string</span><span>·</span><span>required</span></div><div><div><div><div><div><div><span><span>Error category type</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>code</span><span>integer</span><span>·</span><span>required</span></div><div><div><div><div><div><div><span><span>Numeric error code</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>error\_subcode</span><span>integer</span></div><div><div><div><div><div><div><span><span>More specific error subcode when available</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>fbtrace\_id</span><span>string</span></div><div><div><div><div><div><div><span><span>Unique identifier for debugging and support requests with Meta</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>is\_transient</span><span>boolean</span></div><div><div><div><div><div><div><span><span>Indicates whether this error is temporary and the request should be retried</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>error\_user\_title</span><span>string</span></div><div><div><div><div><div><div><span><span>User-friendly error title for display purposes</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>error\_user\_msg</span><span>string</span></div><div><div><div><div><div><div><span><span>User-friendly error message for display purposes</span></span></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div><div><span>404</span><div><div><div><div><div><div><span><span>Not Found - Phone number ID does not exist or is not accessible</span></span></div></div></div></div></div></div><div><div><span>Content Type: </span><span>application/json</span></div><div><div><span>Schema: </span><span>GraphAPIError</span></div><div><div><div id="bkmrk-show-child-attribute-26"><div><span>Show child attributes</span></div></div><div id="bkmrk-graphapierrorerrorob-10"><div>---

<div><span>GraphAPIError</span></div><div>---

<div><div><span>error</span><span>object</span><span>·</span><span>required</span></div></div><div><div><div id="bkmrk-show-child-attribute-27"><div><span>Show child attributes</span></div></div><div id="bkmrk-messagestring%C2%B7requir-10"><div><div>---

<div><div><span>message</span><span>string</span><span>·</span><span>required</span></div><div><div><div><div><div><div><span><span>Human-readable error message</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>type</span><span>string</span><span>·</span><span>required</span></div><div><div><div><div><div><div><span><span>Error category type</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>code</span><span>integer</span><span>·</span><span>required</span></div><div><div><div><div><div><div><span><span>Numeric error code</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>error\_subcode</span><span>integer</span></div><div><div><div><div><div><div><span><span>More specific error subcode when available</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>fbtrace\_id</span><span>string</span></div><div><div><div><div><div><div><span><span>Unique identifier for debugging and support requests with Meta</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>is\_transient</span><span>boolean</span></div><div><div><div><div><div><div><span><span>Indicates whether this error is temporary and the request should be retried</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>error\_user\_title</span><span>string</span></div><div><div><div><div><div><div><span><span>User-friendly error title for display purposes</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>error\_user\_msg</span><span>string</span></div><div><div><div><div><div><div><span><span>User-friendly error message for display purposes</span></span></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div><div><span>422</span><div><div><div><div><div><div><span><span>Unprocessable Entity - Request parameters are valid but cannot be processed</span></span></div></div></div></div></div></div><div><div><span>Content Type: </span><span>application/json</span></div><div><div><span>Schema: </span><span>GraphAPIError</span></div><div><div><div id="bkmrk-show-child-attribute-28"><div><span>Show child attributes</span></div></div><div id="bkmrk-graphapierrorerrorob-11"><div>---

<div><span>GraphAPIError</span></div><div>---

<div><div><span>error</span><span>object</span><span>·</span><span>required</span></div></div><div><div><div id="bkmrk-show-child-attribute-29"><div><span>Show child attributes</span></div></div><div id="bkmrk-messagestring%C2%B7requir-11"><div><div>---

<div><div><span>message</span><span>string</span><span>·</span><span>required</span></div><div><div><div><div><div><div><span><span>Human-readable error message</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>type</span><span>string</span><span>·</span><span>required</span></div><div><div><div><div><div><div><span><span>Error category type</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>code</span><span>integer</span><span>·</span><span>required</span></div><div><div><div><div><div><div><span><span>Numeric error code</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>error\_subcode</span><span>integer</span></div><div><div><div><div><div><div><span><span>More specific error subcode when available</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>fbtrace\_id</span><span>string</span></div><div><div><div><div><div><div><span><span>Unique identifier for debugging and support requests with Meta</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>is\_transient</span><span>boolean</span></div><div><div><div><div><div><div><span><span>Indicates whether this error is temporary and the request should be retried</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>error\_user\_title</span><span>string</span></div><div><div><div><div><div><div><span><span>User-friendly error title for display purposes</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>error\_user\_msg</span><span>string</span></div><div><div><div><div><div><div><span><span>User-friendly error message for display purposes</span></span></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div><div><span>429</span><div><div><div><div><div><div><span><span>Too Many Requests - Rate limit exceeded</span></span></div></div></div></div></div></div><div><div><span>Content Type: </span><span>application/json</span></div><div><div><span>Schema: </span><span>GraphAPIError</span></div><div><div><div id="bkmrk-show-child-attribute-30"><div><span>Show child attributes</span></div></div><div id="bkmrk-graphapierrorerrorob-12"><div>---

<div><span>GraphAPIError</span></div><div>---

<div><div><span>error</span><span>object</span><span>·</span><span>required</span></div></div><div><div><div id="bkmrk-show-child-attribute-31"><div><span>Show child attributes</span></div></div><div id="bkmrk-messagestring%C2%B7requir-12"><div><div>---

<div><div><span>message</span><span>string</span><span>·</span><span>required</span></div><div><div><div><div><div><div><span><span>Human-readable error message</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>type</span><span>string</span><span>·</span><span>required</span></div><div><div><div><div><div><div><span><span>Error category type</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>code</span><span>integer</span><span>·</span><span>required</span></div><div><div><div><div><div><div><span><span>Numeric error code</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>error\_subcode</span><span>integer</span></div><div><div><div><div><div><div><span><span>More specific error subcode when available</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>fbtrace\_id</span><span>string</span></div><div><div><div><div><div><div><span><span>Unique identifier for debugging and support requests with Meta</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>is\_transient</span><span>boolean</span></div><div><div><div><div><div><div><span><span>Indicates whether this error is temporary and the request should be retried</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>error\_user\_title</span><span>string</span></div><div><div><div><div><div><div><span><span>User-friendly error title for display purposes</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>error\_user\_msg</span><span>string</span></div><div><div><div><div><div><div><span><span>User-friendly error message for display purposes</span></span></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div><div><span>500</span><div><div><div><div><div><div><span><span>Internal Server Error - Unexpected server error</span></span></div></div></div></div></div></div><div><div><span>Content Type: </span><span>application/json</span></div><div><div><span>Schema: </span><span>GraphAPIError</span></div><div><div><div id="bkmrk-show-child-attribute-32"><div><span>Show child attributes</span></div></div><div id="bkmrk-graphapierrorerrorob-13"><div>---

<div><span>GraphAPIError</span></div><div>---

<div><div><span>error</span><span>object</span><span>·</span><span>required</span></div></div><div><div><div id="bkmrk-show-child-attribute-33"><div><span>Show child attributes</span></div></div><div id="bkmrk-messagestring%C2%B7requir-13"><div><div>---

<div><div><span>message</span><span>string</span><span>·</span><span>required</span></div><div><div><div><div><div><div><span><span>Human-readable error message</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>type</span><span>string</span><span>·</span><span>required</span></div><div><div><div><div><div><div><span><span>Error category type</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>code</span><span>integer</span><span>·</span><span>required</span></div><div><div><div><div><div><div><span><span>Numeric error code</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>error\_subcode</span><span>integer</span></div><div><div><div><div><div><div><span><span>More specific error subcode when available</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>fbtrace\_id</span><span>string</span></div><div><div><div><div><div><div><span><span>Unique identifier for debugging and support requests with Meta</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>is\_transient</span><span>boolean</span></div><div><div><div><div><div><div><span><span>Indicates whether this error is temporary and the request should be retried</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>error\_user\_title</span><span>string</span></div><div><div><div><div><div><div><span><span>User-friendly error title for display purposes</span></span></div></div></div></div></div></div></div></div><div>---

<div><div><span>error\_user\_msg</span><span>string</span></div><div><div><div><div><div><div><span><span>User-friendly error message for display purposes</span></span></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div><div><div><div><div><div><div><div>Select language</div></div></div></div>---

</div><div><div><div><div><div><div>Select status code</div></div></div></div>---

</div></div></div></div></div></div></div><div><div id="bkmrk-authentication"><div id="bkmrk-authentication-1"><div>### Authentication

</div></div></div><div><table><tbody><tr><td><div>**Scheme**</div></td><td><div>**Type**</div></td><td><div>**Location**</div></td></tr><tr><td><div><div><div><div><div><div><div><span><span>bearerAuth</span></span></div></div></div></div></div></div></div></td><td><div><div><div><div><div><div><div><span><span>HTTP Bearer</span></span></div></div></div></div></div></div></div></td><td><div><div><div><div><div><div><div><span><span>Header: </span></span>`<span><span>Authorization</span></span>`</div></div></div></div></div></div></div></td></tr></tbody></table>

</div><div>#### Usage Examples

<div><span>bearerAuth:</span><div><div><div><div><div><div><span><span>Include </span></span>`<span><span>Authorization: Bearer your-token-here</span></span>`<span><span> in request headers</span></span></div></div></div></div></div></div></div></div><div>#### Global Authentication Requirements

<div><span>All endpoints require:</span><div><div><div><div><div><div><span><span>bearerAuth</span></span></div></div></div></div></div></div></div></div></div></div>