MESSAGING · MESSAGING
Send messages and manage templates from their own business numbers.
Each user connects their own account. Every call carries both identities — the agent and the person it is acting for — so the agent can never reach past what that individual can already do.
Tokens live in the vault and attach server-side at call time. The agent holds a session, not a secret, and revoking access does not mean rotating a key.
Who asked, which agent acted, which action ran, and the verdict that let it through — one audit trail across every integration, not one per vendor.
Each action is granted on its own. An agent allowed to read is not thereby allowed to write, and the scope beside each row is what the acting user must have connected for it to run at all.
whatsapp_delete_by_version_by_flow_idWRITEDeletes the flow entirely. This action is not reversible. Only a DRAFT flow can be deleted. via DELETE /v23.0/{flow_id}
whatsapp_delete_by_version_by_phone_number_id_block_usersWRITEUnblock user(s) via DELETE /v23.0/{phone_number_id}/block_users
whatsapp_delete_by_version_by_phone_number_id_message_qrdls_by_qr_code_idWRITEDelete QR code via DELETE /v23.0/{phone_number_id}/message_qrdls/{qr_code_id}
whatsapp_delete_by_version_by_waba_id_message_templatesWRITEDelete template by name via DELETE /v23.0/{waba_id}/message_templates
whatsapp_delete_by_version_by_waba_id_subscribed_appsWRITETo unsubscribe your app from webhooks for a WhatsApp Business Account, send a DELETE request to the /subscribed_apps/ endpoint on the WABA. via DELETE /v23.0/{waba_id}/subscribed_apps
whatsapp_get_by_version_by_business_idREADGet Business Portfolio (Specific Fields) via GET /v23.0/{business_id}
whatsapp_get_by_version_by_business_id_client_whatsapp_business_accountsREADGet shared WABAs via GET /v23.0/{business_id}/client_whatsapp_business_accounts
whatsapp_get_by_version_by_business_id_extendedcreditsREADGet credit lines via GET /v23.0/{business_id}/extendedcredits
whatsapp_get_by_version_by_business_id_owned_whatsapp_business_accountsREADGet owned WABAs via GET /v23.0/{business_id}/owned_whatsapp_business_accounts
whatsapp_get_by_version_by_flow_idREADCan request specific fields by enabling the \fields\ query param via GET /v23.0/{flow_id}
whatsapp_get_by_version_by_media_idREADTo retrieve your media’s URL, make a GET call to /{{Media-ID}}. Use the returned URL to download the media file. Note that clicking this URL (i.e. performing a generic GET) will not return the media; you must include an access token. For more information, see Download Media. You can also use the optional query ?phone_number_id for Retrieve Media URL and Delete Media. via GET /v23.0/{media_id}
whatsapp_get_by_version_by_media_urlREADWhen you retrieve a media URL through the GET Media endpoint, you must use a User Access Token to download media content from the URL. If you click the URL from a browser, you will get an access error. <br/> > Note: all media URLs will expire after 5 minutes, you need to retrieve the media URL again if it expires. via GET /v23.0/{media_url}
whatsapp_get_by_version_by_phone_number_idREADWhen you query all the phone numbers for a WhatsApp Business Account, each phone number has an id. You can directly query for a phone number using this id. via GET /v23.0/{phone_number_id}
whatsapp_get_by_version_by_phone_number_id_block_usersREADGet blocked users via GET /v23.0/{phone_number_id}/block_users
whatsapp_get_by_version_by_phone_number_id_business_compliance_infoREADGet India-based business compliance info via GET /v23.0/{phone_number_id}/business_compliance_info
whatsapp_get_by_version_by_phone_number_id_message_qrdlsREADGet all QR codes (default fields) via GET /v23.0/{phone_number_id}/message_qrdls
whatsapp_get_by_version_by_phone_number_id_message_qrdls_by_qr_code_idREADGet QR code via GET /v23.0/{phone_number_id}/message_qrdls/{qr_code_id}
whatsapp_get_by_version_by_phone_number_id_whatsapp_business_encryptionREADGet Encryption Public Key via GET /v23.0/{phone_number_id}/whatsapp_business_encryption
whatsapp_get_by_version_by_phone_number_id_whatsapp_business_profileREADTo get information about a business profile, make a GET call to the /{{Phone-Number-ID}}/whatsapp_business_profile endpoint. Within the whatsapp_business_profile request, you can specify what you want to know from the business. via GET /v23.0/{phone_number_id}/whatsapp_business_profile
whatsapp_get_by_version_by_phone_number_id_whatsapp_commerce_settingsREADGet commerce settings via GET /v23.0/{phone_number_id}/whatsapp_commerce_settings
whatsapp_get_by_version_by_template_idREADGet template by ID (default fields) via GET /v23.0/{template_id}
whatsapp_get_by_version_by_upload_idREADYou can query the status of an upload session by making a GET call to an endpoint that is named based on the Upload-ID that was returned through the Resumable Upload - Create an Upload Session request. When uploading data, you must include the access token as an HTTP header. Example via GET /v23.0/{upload_id}
whatsapp_get_by_version_by_waba_idREADGet WABA via GET /v23.0/{waba_id}
whatsapp_get_by_version_by_waba_id_flowsREADList Flows via GET /v23.0/{waba_id}/flows
whatsapp_get_by_version_by_waba_id_message_templatesREADGet template by name (default fields) via GET /v23.0/{waba_id}/message_templates
whatsapp_get_by_version_by_waba_id_phone_numbersREADTo send messages, you need to register the phone number you want to use. This is the business phone number we mentioned in Set up Assets. Before you can proceed to registration, you need to find that phone number’s ID. via GET /v23.0/{waba_id}/phone_numbers
whatsapp_get_by_version_by_waba_id_subscribed_appsREADTo get a list of apps subscribed to Webhooks for a WABA, send a GET request to the subscribed_apps endpoint on the WABA: via GET /v23.0/{waba_id}/subscribed_apps
whatsapp_post_by_version_app_uploadsWRITEThe Resumable Upload series of requests allow you to upload Profile Pictures to Meta so you can receive a handle to update these pictures in the Business Profile API. The Resumable Upload requests consist of the following: via POST /v23.0/app/uploads
whatsapp_post_by_version_by_flow_id_deprecateWRITEUpdates the status of the flow as "DEPRECATED". This action is not reversible. Only a published flow can be deprecated to prevent sending or opening it. via POST /v23.0/{flow_id}/deprecate
whatsapp_post_by_version_by_flow_id_publishWRITEUpdates the status of the flow as "PUBLISHED". This action is not reversible. The flow and its assets become immutable once published. To update the flow, you must create a new flow and specify the previous flow id as the \clone_flow_id\ parameter via POST /v23.0/{flow_id}/publish
whatsapp_post_by_version_by_phone_number_idWRITEYou can use this endpoint to change two-step verification code associated with your account. After you change the verification code, future requests like changing the name, must use the new code. You set up two-factor verification and register a phone number in the same API call. You must use the parameters listed below to change two-step verification via POST /v23.0/{phone_number_id}
whatsapp_post_by_version_by_phone_number_id_block_usersWRITEBlock user(s) via POST /v23.0/{phone_number_id}/block_users
whatsapp_post_by_version_by_phone_number_id_business_compliance_infoWRITEAdd India-based business compliance info via POST /v23.0/{phone_number_id}/business_compliance_info
whatsapp_post_by_version_by_phone_number_id_deregisterWRITETo deregister your phone, make a POST call to {{Phone-Number-ID}}/deregister. Deregister Phone removes a previously registered phone. You can always re-register your phone using by repeating the registration process. via POST /v23.0/{phone_number_id}/deregister
whatsapp_post_by_version_by_phone_number_id_message_qrdlsWRITECreate QR code via POST /v23.0/{phone_number_id}/message_qrdls
whatsapp_post_by_version_by_phone_number_id_messagesWRITESend Test Message via POST /v23.0/{phone_number_id}/messages
whatsapp_post_by_version_by_phone_number_id_registerWRITEWith your phone number’s ID in hand, you can register it. In the registration API call, you perform two actions at the same time: via POST /v23.0/{phone_number_id}/register
whatsapp_post_by_version_by_phone_number_id_request_codeWRITEYou need to verify the phone number you want to use to send messages to your customers. Phone numbers must be verified through SMS/voice call. The verification process can be done through the Graph API calls specified below. To verify a phone number using Graph API, make a POST request to {{PHONE_NUMBER_ID}}/request_code. In your call, include your chosen verification method and locale. via POST /v23.0/{phone_number_id}/request_code
whatsapp_post_by_version_by_phone_number_id_verify_codeWRITEAfter you received a SMS or Voice request code from Request Verification Code, you need to verify the code that was sent to you. To verify this code, make a POST request to {{PHONE_NUMBER_ID}}/verify_code that includes the code as a parameter. via POST /v23.0/{phone_number_id}/verify_code
whatsapp_post_by_version_by_phone_number_id_whatsapp_business_profileWRITEUpdate the business profile information such as the business description, email or address. To update your profile, make a POST call to /{{Phone-Number-ID}}/whatsapp_business_profile. In your request, you can include the parameters listed below. It is recommended that you use Resumable Upload - Create an Upload Session to obtain an upload ID. via POST /v23.0/{phone_number_id}/whatsapp_business_profile
whatsapp_post_by_version_by_phone_number_id_whatsapp_commerce_settingsWRITESet or update commerce settings via POST /v23.0/{phone_number_id}/whatsapp_commerce_settings
whatsapp_post_by_version_by_template_idWRITEEdit template via POST /v23.0/{template_id}
whatsapp_post_by_version_by_upload_idWRITETo upload a profile picture to your business profile, make a POST call to the named endpoint {{Version}}/{{Upload-ID}}, where Upload-ID is the value you received from Resumable Upload - Create an Upload Session. This value should look like the following: via POST /v23.0/{upload_id}
whatsapp_post_by_version_by_waba_id_message_templatesWRITECreate authentication template w/ OTP copy code button via POST /v23.0/{waba_id}/message_templates
whatsapp_post_by_version_by_waba_id_subscribed_appsWRITETo make sure you receive notifications for your account you need to subscribe your app to your WABA. via POST /v23.0/{waba_id}/subscribed_apps
whatsapp_put_by_version_by_phone_number_id_messagesWRITEWhen you receive an incoming message from Webhooks, you could use messages endpoint to change the status of it to read. We recommend marking incoming messages as read within 30 days of receipt. Note: you cannot mark outgoing messages you sent as read. You need to obtain the message_id of the incoming message from Webhooks. For a more in depth guide for marking messages as read, see Guide: Mark Messages as Read. via PUT /v23.0/{phone_number_id}/messages
Put WhatsApp behind one governed endpoint.
Same permissions, same audit trail, whatever else you connect next.