Skip to main content

What it does

Updates the WhatsApp business profile (PATCH = partial update; only the fields you send are changed). The change is written directly to Meta — no caching. With Prefer: return=representation the updated profile is returned; with return=minimal no body is returned.
Profile update is partial: send only the fields you want to change; the rest are preserved.

Endpoint

Headers

string
required
Secret key in Bearer sk_... format. See Secret Key authentication.
string
required
Always application/json.
string
return=representation (default) returns the updated profile; return=minimal returns no body. The applied preference is reported via the Preference-Applied: return=... header.
No body needed? On updates, use Prefer: return=minimal for a faster call that skips the read-back and returns just { "isSuccess": true } with HTTP 200.

Path parameters

string
required
Application ID. Must belong to the organization (otherwise 404).

Request Body

All fields are optional; only the fields you send are updated. Fields you do not send remain as they are on Meta.
string
“About” text (max 139 chars).
string
Business address (max 256 chars).
string
Business description (max 512 chars).
string
Contact email (valid email).
string
Media handle for the new profile picture — not a URL and not raw file bytes. Upload the image first with Upload Media and send the handle you get back — the Changing the profile picture section below walks through both steps.
A handle is single-use. Meta consumes it the moment the profile update succeeds; the same value cannot be sent again. To change the picture a second time, upload the file again and use the new handle.
string
Business category (mapped to Meta’s vertical) — e.g. RETAIL, HEALTH, FINANCE, RESTAURANT, OTHER. A value outside the list returns 422. See Business Profile Category for all 23 values.
string[]
Business websites (max 2, http(s)://).

Changing the profile picture

The profile picture is the one field that is not sent inline. It is a two-step flow: upload the image to get a handle, then reference that handle in the profile update.
1

Upload the image

Use image/jpeg or image/png, up to 5 MB. See Upload Media.
2

Send the handle as profilePictureReference

The handle is forwarded to Meta as the profile picture; the stored image is then served back as profilePictureUrl on subsequent reads.
The handle is consumed by this call. It is a one-time reference, not a reusable asset ID — replaying the same profilePictureReference on a later update fails. Upload the file again whenever you want to set the picture again, and do not cache handles between requests.
profilePictureReference is write-only: it never appears in a response. Reads return the resulting image as profilePictureUrl instead. Because the update is partial, sending profilePictureReference on its own leaves every other profile field untouched.

Response

With Prefer: return=representation (default), the response is { "data": {...}, "isSuccess": true } — the full profile re-fetched from Meta after the update. With return=minimal, the response is { "isSuccess": true }.
boolean
true when the update was accepted.
object | null
The updated profile (same shape as Get Business Profile: about, address, description, email, profilePictureUrl, websites, category — all optional; unset fields are dropped). A picture set through profilePictureReference comes back as profilePictureUrl; the handle itself is never echoed. With Prefer: return=minimal the key is omitted from the envelope altogether — the response is exactly { "isSuccess": true }, still with HTTP 200.

Examples

Response (Preference-Applied: return=representation) — full updated profile:
Response (Preference-Applied: return=minimal) — still HTTP 200, and data is omitted entirely rather than sent as null:
First upload the image and keep the handle:
Then reference it in the profile update (optionally alongside other fields):
The handle is now spent. Changing the picture again means uploading the file again for a fresh handle.
Meta rejects a handle that has already been consumed (or was never valid):
Because websites exceeds 2, a 422 (validation) is returned without reaching Meta.

Errors

object
Error details with code, group, and description; isSuccess is false.
Example error responses:
The category value must be one of the Business Profile Category values (otherwise 422). Update is PATCH/partial; fields you do not send remain as they are on Meta. The profile picture is set through profilePictureReference (a single-use media handle), never as a URL — see the Changing the profile picture section above.