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. WithPrefer: return=representation the updated profile is returned; with return=minimal no body is returned.
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.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.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
2
Send the handle as profilePictureReference
profilePictureUrl on subsequent reads.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
WithPrefer: 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
Demo 1 — update a single field (representation)
Demo 1 — update a single field (representation)
Preference-Applied: return=representation) — full updated profile:Demo 2 — update multiple fields
Demo 2 — update multiple fields
Demo 3 — minimal (no body wanted)
Demo 3 — minimal (no body wanted)
Preference-Applied: return=minimal) — still HTTP 200, and data is omitted entirely rather than sent as null:Demo 4 — update category (vertical)
Demo 4 — update category (vertical)
Demo 5 — set the profile picture (upload → handle → update)
Demo 5 — set the profile picture (upload → handle → update)
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.
Demo 6 — error: reusing a spent handle → 400
Demo 6 — error: reusing a spent handle → 400
Demo 7 — error: more than 2 websites → 422
Demo 7 — error: more than 2 websites → 422
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.