WhatsApp Business messaging API
developers.facebook.com/docs/whatsapp/cloud-api ↗Query structured spec data via REST or MCP. Get exactly what your agent needs.
http://whatsapp.local
http://example.com/v1
/account/shards
{
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Set-Shards-Request-Body"
},
"example": {
"cc": "<Country Code>",
"pin": "<Two-Step PIN>",
"shards": 32,
"phone_number": "<Phone Number>"
}
}
},
"required": true,
"description": ""
}
POST /account/shards
/settings/application
DELETE /settings/application
/settings/application
GET /settings/application
/settings/application
If a field is not present in the request, no change is made to that setting. For example, if on_call_pager is not sent with the request, the existing configuration for on_call_pager is unchanged.
{
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Application-Settings"
},
"example": {
"webhooks": {
"url": "<Webhook URL, https>"
}
}
}
},
"required": true,
"description": ""
}
PATCH /settings/application
/settings/application/media/providers
GET /settings/application/media/providers
/settings/application/media/providers
{
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApplicationUpdateMediaProvidersRequest"
},
"example": [
{
"name": "<Provider Name>",
"type": "www",
"config": {
"bearer": "<Bearer Auth Token>"
}
}
]
}
},
"required": true,
"description": ""
}
POST /settings/application/media/providers
/settings/application/media/providers/{ProviderName}
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| ProviderName | path | required | string | Provider Name |
DELETE /settings/application/media/providers/{ProviderName}
/settings/backup
{
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Backup-Settings-Request-Body"
},
"example": {
"password": "<Password for Backup>"
}
}
},
"required": true,
"description": ""
}
POST /settings/backup
/settings/restore
{
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Restore-Settings-Request-Body"
},
"example": {
"data": "<Data to Restore, from Backup API>",
"password": "<Password for Backup>"
}
}
},
"required": true,
"description": ""
}
POST /settings/restore
/settings/business/profile
GET /settings/business/profile
/settings/business/profile
{
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Business-Profile"
},
"example": {
"email": "<Business Profile Email>",
"address": "<Business Profile Address>",
"vertical": "<Business Profile Vertical>",
"websites": [
"https://www.whatsapp.com",
"https://www.facebook.com"
],
"description": "<Business Profile Description>"
}
}
},
"required": true,
"description": ""
}
POST /settings/business/profile
/certificates/external
{
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/CertificatesUploadExternalCertificateRequest"
}
}
}
}
POST /certificates/external
/certificates/external/ca
GET /certificates/external/ca
/certificates/webhooks/ca
DELETE /certificates/webhooks/ca
/certificates/webhooks/ca
GET /certificates/webhooks/ca
/certificates/webhooks/ca
{
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/CertificatesUploadWebhookCaCertificateRequest"
}
}
},
"required": false
}
POST /certificates/webhooks/ca
/contacts
{
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Check-Contact-Request-Body"
},
"example": {
"blocking": "wait",
"contacts": [
"{{Recipient-WA-ID}}"
]
}
}
},
"required": true,
"description": ""
}
POST /contacts
/groups
GET /groups
/groups
{
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Create-Group-Request-Body"
},
"example": {
"subject": "<Group Subject>"
}
}
},
"required": true,
"description": ""
}
POST /groups
/groups/{GroupId}
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| GroupId | path | required | string |
GET /groups/{GroupId}
/groups/{GroupId}
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| GroupId | path | required | string |
{
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Update-Group-Info-Request-Body"
},
"example": {
"subject": "<New Group Subject>"
}
}
},
"required": true,
"description": ""
}
PUT /groups/{GroupId}
/groups/{GroupId}/admins
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| GroupId | path | required | string |
{
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Group-Admin-Request-Body"
},
"example": {
"wa_ids": [
"<Recipient WA-ID, from Contacts API>"
]
}
}
},
"required": true,
"description": ""
}
DELETE /groups/{GroupId}/admins
/groups/{GroupId}/admins
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| GroupId | path | required | string |
{
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Group-Admin-Request-Body"
},
"example": {
"wa_ids": [
"<Recipient WA-ID, from Contacts API>"
]
}
}
},
"required": true,
"description": ""
}
PATCH /groups/{GroupId}/admins
/groups/{GroupId}/icon
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| GroupId | path | required | string |
{
"content": {
"multipart/form-data": {
"schema": {
"$ref": "#/components/schemas/GroupsDeleteGroupIconRequest"
}
}
},
"required": false
}
DELETE /groups/{GroupId}/icon
/groups/{GroupId}/icon
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| GroupId | path | required | string |
GET /groups/{GroupId}/icon
/groups/{GroupId}/icon
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| GroupId | path | required | string |
{
"content": {
"multipart/form-data": {
"schema": {
"$ref": "#/components/schemas/GroupsSetGroupIconRequest"
}
}
},
"required": false
}
POST /groups/{GroupId}/icon
/groups/{GroupId}/invite
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| GroupId | path | required | string |
DELETE /groups/{GroupId}/invite
/groups/{GroupId}/invite
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| GroupId | path | required | string |
GET /groups/{GroupId}/invite
/groups/{GroupId}/leave
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| GroupId | path | required | string |
POST /groups/{GroupId}/leave
/groups/{GroupId}/participants
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| GroupId | path | required | string |
{
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Remove-Group-Participant-Request-Body"
},
"example": {
"wa_ids": [
"{{Recipient-WA-ID}}"
]
}
}
},
"required": true,
"description": ""
}
DELETE /groups/{GroupId}/participants
/health
GET /health
/metrics
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| format | query | optional | string |
GET /metrics
/stats/app
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| format | query | optional | string |
GET /stats/app
/stats/db
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| format | query | optional | string |
GET /stats/db
/support
GET /support
/media
{
"content": {
"audio/acc": {
"schema": {
"$ref": "#/components/schemas/MediaUploadMediaRequest4"
}
},
"audio/amr": {
"schema": {
"$ref": "#/components/schemas/MediaUploadMediaRequest5"
}
},
"audio/mp4": {
"schema": {
"$ref": "#/components/schemas/MediaUploadMediaRequest6"
}
},
"audio/ogg": {
"schema": {
"$ref": "#/components/schemas/MediaUploadMediaRequest8"
}
},
"image/png": {
"schema": {
"$ref": "#/components/schemas/MediaUploadMediaRequest11"
}
},
"video/mp4": {
"schema": {
"$ref": "#/components/schemas/MediaUploadMediaRequest13"
}
},
"audio/mpeg": {
"schema": {
"$ref": "#/components/schemas/MediaUploadMediaRequest7"
}
},
"image/jpeg": {
"schema": {
"$ref": "#/components/schemas/MediaUploadMediaRequest10"
}
},
"text/plain": {
"schema": {
"$ref": "#/components/schemas/MediaUploadMediaRequest12"
}
},
"codecs=opus": {
"schema": {
"$ref": "#/components/schemas/MediaUploadMediaRequest9"
}
},
"application/pdf": {
"schema": {
"$ref": "#/components/schemas/MediaUploadMediaRequest1"
}
},
"application/msword": {
"schema": {
"$ref": "#/components/schemas/MediaUploadMediaRequest"
}
},
"application/vnd.ms-excel": {
"schema": {
"$ref": "#/components/schemas/MediaUploadMediaRequest2"
}
},
"application/vnd.ms-powerpoint": {
"schema": {
"$ref": "#/components/schemas/MediaUploadMediaRequest3"
}
}
},
"required": true
}
POST /media
/media/{MediaId}
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| MediaId | path | required | string |
DELETE /media/{MediaId}
/media/{MediaId}
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| MediaId | path | required | string |
GET /media/{MediaId}
/messages
{
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Send-Message-Request-Body"
},
"example": {
"to": "{{Recipient-WA-ID}}",
"text": {
"body": "<Message Text>"
},
"type": "text",
"recipient_type": "individual"
}
}
},
"required": true,
"description": ""
}
POST /messages
/messages/{MessageID}
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| MessageID | path | required | string | Message ID from Webhook |
{
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Mark-Message-As-Read-Request-Body"
},
"example": {
"status": "read"
}
}
},
"required": true,
"description": ""
}
PUT /messages/{MessageID}
/settings/profile/about
GET /settings/profile/about
/settings/profile/about
{
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Profile-About"
},
"example": {
"text": "<About Profile>"
}
}
},
"required": true,
"description": ""
}
PATCH /settings/profile/about
/settings/profile/photo
DELETE /settings/profile/photo
/settings/profile/photo
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| format | query | optional | string |
GET /settings/profile/photo
/settings/profile/photo
{
"content": {
"multipart/form-data": {
"schema": {
"$ref": "#/components/schemas/ProfileUpdatePhotoRequest"
}
}
},
"required": false
}
POST /settings/profile/photo
/account
{
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Request-Code-Request-Body"
},
"example": {
"cc": "<Country Code>",
"pin": "<Two-Step Verification PIN",
"cert": "<Valid Cert from Business Manager>",
"method": "sms",
"phone_number": "<Phone Number>"
}
}
},
"required": true,
"description": ""
}
POST /account
/account/verify
{
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Register-Account-Request-Body"
},
"example": {
"code": "<Registration Code Received via SMS/Voice>"
}
}
},
"required": true,
"description": ""
}
POST /account/verify
/settings/account/two-step
DELETE /settings/account/two-step
/settings/account/two-step
{
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Enable-Two-Step-Request-Body"
},
"example": {
"pin": "<Two-Step Verification PIN>"
}
}
},
"required": true,
"description": ""
}
POST /settings/account/two-step
/users
{
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Create-User-Request-Body"
},
"example": {
"password": "{{UserPassword}}",
"username": "{{UserUsername}}"
}
}
},
"required": true,
"description": ""
}
POST /users
/users/login
{
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Login-Admin-Request-Body"
}
}
},
"required": false
}
POST /users/login
/users/logout
POST /users/logout
/users/{UserUsername}
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| UserUsername | path | required | string |
DELETE /users/{UserUsername}
/users/{UserUsername}
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| UserUsername | path | required | string |
GET /users/{UserUsername}
/users/{UserUsername}
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| UserUsername | path | required | string |
{
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Update-User-Request-Body"
},
"example": {
"password": "<New Password>"
}
}
},
"required": true,
"description": ""
}
PUT /users/{UserUsername}
Address
{
"type": "object",
"title": "Address",
"example": {
"zip": "94025",
"city": "Menlo Park",
"type": "HOME",
"state": "CA",
"street": "1 Hacker Way",
"country": "United States",
"country_code": "us"
},
"required": [
"city",
"country",
"country_code",
"state",
"street",
"type",
"zip"
],
"properties": {
"zip": {
"type": "string",
"description": "ZIP code"
},
"city": {
"type": "string",
"description": "City name"
},
"type": {
"type": "string",
"description": "Standard Values: HOME, WORK"
},
"state": {
"type": "string",
"description": "State abbreviation"
},
"street": {
"type": "string",
"description": "Street number and name"
},
"country": {
"type": "string",
"description": "Full country name"
},
"country_code": {
"type": "string",
"description": "Two-letter country abbreviation"
}
}
}
Application-Settings
{
"type": "object",
"title": "Update-Application-Settings-Request-Body",
"example": {
"media": {
"auto_download": [
"image",
"document",
"audio"
]
},
"webhooks": {
"url": "<Webhook URL, https>",
"max_concurrent_requests": 12
},
"sent_status": false,
"pass_through": false,
"on_call_pager": "<WA_ID of valid WhatsApp contact>",
"callback_persist": true,
"callback_backoff_delay_ms": 3000,
"max_callback_backoff_delay_ms": 900000
},
"properties": {
"media": {
"$ref": "#/components/schemas/Media"
},
"webhooks": {
"$ref": "#/components/schemas/Webhooks"
},
"sent_status": {
"type": "boolean",
"default": false,
"description": "Receive a notification that a message is sent to server. When true, you will receive a message indicating that a message has been sent. If false (default), you will not receive notification."
},
"pass_through": {
"type": "boolean",
"default": true,
"description": "When true, removes messages from the local database after they are delivered to or read by the recipient. When false, saves all messages on local storage until they are explicitly deleted.\nWhen messages are sent, they are stored in a local database. This database is used as the application's history. Since the business keeps its own history, you can specify whether you want message pass_through or not. Restart required."
},
"on_call_pager": {
"type": "string",
"description": "Set to valid WhatsApp Group with users who wish to see alerts for critical errors and messages."
},
"callback_persist": {
"type": "boolean",
"default": true,
"description": "Stores callbacks on disk until they are successfully acknowledged by the Webhook or not. Restart required."
},
"heartbeat_interval": {
"type": "integer",
"default": 5,
"description": "Multiconnect: Interval of the Master node monitoring of Coreapp nodes in seconds"
},
"unhealthy_interval": {
"type": "integer",
"default": 30,
"description": "Multiconnect: Maximum amount of seconds a Master node waits for a Coreapp node to respond to a heartbeat before considering it unhealthy and starting the failover process."
},
"callback_backoff_delay_ms": {
"type": "string",
"default": "3000",
"description": "Backoff delay for a failed callback in milliseconds\nThis setting is used to configure the amount of time the backoff delays before retrying a failed callback. The backoff delay increases linearly by this value each time a callback fails to get a HTTPS 200 OK response. The backoff delay is capped by the max_callback_backoff_delay_ms setting."
},
"max_callback_backoff_delay_ms": {
"type": "string",
"default": "900000",
"description": "Maximum delay for a failed callback in milliseconds"
}
}
}
ApplicationUpdateMediaProvidersRequest
{
"type": "array",
"items": {
"$ref": "#/components/schemas/Media-Provider"
},
"description": ""
}
Audio
{
"type": "object",
"oneOf": [
{
"$ref": "#/components/schemas/AudioById"
},
{
"$ref": "#/components/schemas/AudioByProvider"
}
],
"title": "Audio",
"description": "The media object containing audio"
}
AudioById
{
"type": "object",
"title": "AudioById",
"example": {
"id": "<Media Id, from Media API>"
},
"required": [
"id"
],
"properties": {
"id": {
"type": "string"
}
}
}
AudioByProvider
{
"type": "object",
"title": "AudioByProvider",
"example": {
"link": "<Link to Audio, https>",
"provider": {
"name": "<Provider Name from Media Provider API, optional"
}
},
"required": [
"provider",
"link"
],
"properties": {
"link": {
"type": "string"
},
"provider": {
"$ref": "#/components/schemas/Provider"
}
}
}
Backup-Settings
{
"type": "object",
"title": "Root Type for Backup-Settings",
"example": {
"data": "encrypted-backup-data"
},
"properties": {
"data": {
"type": "string",
"description": "The data that has been backed up, encrypted for security."
}
},
"description": ""
}
Backup-Settings-Request-Body
{
"type": "object",
"title": "Backup-Settings-Request",
"example": {
"password": "<Password for Backup>"
},
"required": [
"password"
],
"properties": {
"password": {
"type": "string",
"description": "Used to encrypt backup data for security"
}
}
}
Backup-Settings-Response
{
"type": "object",
"title": "Root Type for Backup-Settings-Response",
"example": {
"settings": {
"data": "encrypted-backup-data"
}
},
"properties": {
"settings": {
"$ref": "#/components/schemas/Backup-Settings"
}
},
"description": "Save the data value as that will be used along with your password to restore the information."
}
Basic
{
"type": "object",
"title": "Root Type for Basic",
"example": {
"password": "your-password",
"username": "your-username"
},
"properties": {
"password": {
"type": "string"
},
"username": {
"type": "string"
}
},
"description": ""
}
Business-Profile
{
"type": "object",
"title": "Set-Business-Profile-Request",
"example": {
"email": "<Business Profile Email>",
"address": "<Business Profile Address>",
"vertical": "<Business Profile Vertical>",
"websites": [
"https://www.whatsapp.com",
"https://www.facebook.com"
],
"description": "<Business Profile Description>"
},
"required": [
"address",
"description",
"email",
"vertical",
"websites"
],
"properties": {
"email": {
"type": "string",
"description": "Email address to contact the business\nMaximum of 128 characters"
},
"address": {
"type": "string",
"description": "Address of the business\nMaximum of 256 characters"
},
"vertical": {
"type": "string",
"description": "Industry of the business\nMaximum of 128 characters"
},
"websites": {
"type": "array",
"items": {
"type": "string"
},
"description": "URLs associated with business (e.g., website, Facebook page, Instagram)\nMaximum of 2 websites with a maximum of 256 characters each"
},
"description": {
"type": "string",
"description": "Description of the business\nMaximum of 256 characters"
}
}
}
Business-Settings
{
"type": "object",
"title": "Root Type for Business-Settings",
"example": {
"business": {
"profile": {
"email": "new-business-email",
"address": "new-business-address",
"vertical": "business-industry",
"websites": [
"website-1",
"website-2"
],
"description": "business-description"
}
}
},
"properties": {
"business": {
"$ref": "#/components/schemas/Business-Settings-Business"
}
},
"description": ""
}
Business-Settings-Business
{
"type": "object",
"title": "Root Type for Business-Settings-Business",
"example": {
"profile": {
"email": "new-business-email",
"address": "new-business-address",
"vertical": "business-industry",
"websites": [
"website-1",
"website-2"
],
"description": "business-description"
}
},
"properties": {
"profile": {
"$ref": "#/components/schemas/Business-Profile"
}
},
"description": ""
}
CertificatesDownloadCaCertificateResponse
{
"type": "string",
"format": "binary"
}
CertificatesDownloadWebhookCaCertificateResponse
{
"type": "string",
"format": "binary"
}
CertificatesUploadExternalCertificateRequest
{
"type": "string",
"format": "binary"
}
CertificatesUploadWebhookCaCertificateRequest
{
"type": "string",
"format": "binary"
}
Check-Contact
{
"type": "object",
"title": "Check-Contact",
"example": {
"input": "+1 (516) 283-7151",
"wa_id": "15162837151",
"status": "valid"
},
"properties": {
"input": {
"type": "string",
"description": "The value you sent in the contacts field of the JSON request."
},
"wa_id": {
"type": "string",
"description": "WhatsApp user identifier that can be used in other API calls. Only returned if the status is valid."
},
"status": {
"enum": [
"processing",
"valid",
"invalid"
],
"type": "string",
"description": "Status of the user.",
"x-enum-descriptions": [
"processing: Input is still being processed.",
"valid: Input determined to be a valid WhatsApp user.",
"invalid: Input determined to not be a valid WhatsApp user or the phone number is in a bad format."
]
}
},
"description": ""
}
Check-Contact-Request-Body
{
"type": "object",
"title": "Check-Contact-Request",
"example": {
"blocking": "wait",
"contacts": [
"{{Recipient-WA-ID}}"
]
},
"required": [
"contacts"
],
"properties": {
"blocking": {
"enum": [
"no_wait",
"wait"
],
"type": "string",
"default": "no_wait",
"description": "Blocking determines whether the request should wait for the processing to complete (synchronous) or not (asynchronous)."
},
"contacts": {
"type": "array",
"items": {
"type": "string"
},
"description": "Array of contact phone numbers. The numbers can be in any standard telephone number format."
}
}
}
Check-Contact-Response
{
"type": "object",
"allOf": [
{
"$ref": "#/components/schemas/Response"
},
{
"type": "object",
"properties": {
"contacts": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Check-Contact"
}
}
}
}
],
"title": "Check-Contact-Response",
"example": {
"contacts": [
{
"input": "1-631-555-1002",
"status": "processing"
},
{
"input": "6315551003",
"status": "processing"
},
{
"input": "+54 9 11 5612-1008",
"status": "processing"
},
{
"input": "+1 (516) 283-7151",
"wa_id": "15162837151",
"status": "valid"
}
]
},
"description": ""
}
Check-Health-Response
{
"type": "object",
"title": "Root Type for Check-Health-Response",
"example": {
"health": {
"your-hostname1:your-container-id1": {
"role": "primary_master",
"gateway_status": "connected"
},
"your-hostname2:your-container-id2": {
"role": "secondary_master",
"gateway_status": "disconnected"
}
}
},
"properties": {
"health": {
"oneOf": [
{
"$ref": "#/components/schemas/Gateway-Status"
},
{
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/Gateway-Node-Status"
}
}
]
}
},
"description": ""
}
Config
{
"oneOf": [
{
"$ref": "#/components/schemas/Config-Bearer"
},
{
"$ref": "#/components/schemas/Config-Basic"
}
],
"title": "Config"
}
Config-Basic
{
"type": "object",
"title": "Config",
"example": {
"basic": {
"password": "your-password",
"username": "your-username"
}
},
"properties": {
"basic": {
"$ref": "#/components/schemas/Basic"
}
}
}
Config-Bearer
{
"type": "object",
"title": "Config",
"example": {
"bearer": "<Bearer Auth Token>"
},
"required": [
"bearer"
],
"properties": {
"bearer": {
"type": "string"
}
}
}
Contact
{
"type": "object",
"title": "Contact",
"example": {
"org": {
"title": "Manager",
"company": "WhatsApp",
"department": "Design"
},
"name": {
"last_name": "Smith",
"first_name": "John",
"formatted_name": "John Smith"
},
"urls": [
{
"url": "https://www.facebook.com",
"type": "WORK"
}
],
"emails": [
{
"type": "WORK",
"email": "test@fb.com"
},
{
"type": "WORK",
"email": "test@whatsapp.com"
}
],
"phones": [
{
"type": "HOME",
"phone": "+1 (940) 555-1234"
},
{
"type": "WORK",
"phone": "+1 (650) 555-1234",
"wa_id": "16505551234"
}
],
"birthday": "2012-08-18T00:00:00.000Z",
"addresses": [
{
"zip": "94025",
"city": "Menlo Park",
"type": "HOME",
"state": "CA",
"street": "1 Hacker Way",
"country": "United States",
"country_code": "us"
},
{
"zip": "94025",
"city": "Menlo Park",
"type": "WORK",
"state": "CA",
"street": "200 Jefferson Dr",
"country": "United States",
"country_code": "us"
}
]
},
"properties": {
"ims": {
"type": "array",
"items": {
"type": "string"
},
"description": ""
},
"org": {
"$ref": "#/components/schemas/Org"
},
"name": {
"$ref": "#/components/schemas/Name"
},
"urls": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Url"
},
"description": "Contact URL(s)"
},
"emails": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Email"
},
"description": "Contact email address(es)"
},
"phones": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Phone"
},
"description": "Contact phone number(s)"
},
"birthday": {
"type": "string",
"description": "YYYY-MM-DD formatted string"
},
"addresses": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Address"
},
"description": "Full contact address(es)"
}
}
}
Create-Group-Request-Body
{
"type": "object",
"title": "Create-Group-Request",
"example": {
"subject": "<Group Subject>"
},
"required": [
"subject"
],
"properties": {
"subject": {
"type": "string"
}
}
}
Create-User-Request-Body
{
"type": "object",
"title": "Create-User-Request",
"example": {
"password": "password",
"username": "username"
},
"required": [
"username",
"password"
],
"properties": {
"password": {
"type": "string",
"description": "username"
},
"username": {
"type": "string",
"description": "password"
}
}
}
Currency
{
"type": "object",
"title": "Currency",
"example": {
"amount_1000": 100990,
"currency_code": "USD"
},
"required": [
"amount_1000",
"currency_code"
],
"properties": {
"amount_1000": {
"type": "integer",
"format": "int32"
},
"currency_code": {
"type": "string"
}
},
"description": ""
}
Date-Time-Component
{
"type": "object",
"title": "Date-Time-Component",
"example": {
"hour": 15,
"year": 1977,
"month": 2,
"minute": 33,
"day_of_week": 5,
"day_of_month": 25
},
"properties": {
"hour": {
"type": "integer",
"format": "int32",
"description": "The hour"
},
"year": {
"type": "integer",
"format": "int32",
"description": "The year"
},
"month": {
"type": "integer",
"format": "int32",
"description": "The month"
},
"minute": {
"type": "integer",
"format": "int32",
"description": "The minute"
},
"day_of_week": {
"enum": [
"1",
"2",
"3",
"4",
"5",
"6",
"7"
],
"type": "string",
"format": "int32",
"description": "Both strings and numbers are accepted. If different from the value derived from the date (if specified), use the derived value.",
"x-enum-varnames": [
"MONDAY",
"TUESDAY",
"WEDNESDAY",
"THURSDAY",
"FRIDAY",
"SATURDAY",
"SUNDAY"
],
"x-enum-descriptions": [
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday",
"Sunday"
]
},
"day_of_month": {
"type": "integer",
"format": "int32",
"description": "The day of month"
}
},
"description": "Date/time by component"
}
Date-Time-Object
{
"type": "object",
"title": "Date-Time",
"example": {
"component": {
"hour": 15,
"year": 1977,
"month": 2,
"minute": 33,
"day_of_week": 5,
"day_of_month": 25
}
},
"properties": {
"component": {
"$ref": "#/components/schemas/Date-Time-Component"
},
"unix_epoch": {
"$ref": "#/components/schemas/Date-Time-Unix-Epoch"
}
},
"description": "The Whatsapp Business API Client will attempt to format the date/time based on a specified localization."
}
Date-Time-Unix-Epoch
{
"type": "object",
"title": "Date-Time-Unix-Epoch",
"example": {
"timestamp": 123456789
},
"properties": {
"timestamp": {
"type": "integer",
"format": "int32",
"description": "Epoch timestamp in seconds"
}
},
"description": "Date/time by Unix epoch"
}
Detailed-User-Response
{
"type": "object",
"allOf": [
{
"$ref": "#/components/schemas/Response"
},
{
"type": "object",
"properties": {
"users": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Detailed-User-Response-Item"
}
}
}
}
],
"title": "Root Type for Detailed-User-Response",
"example": {
"users": [
{
"ROLES": "ROLE_USER",
"username": "username"
}
]
},
"description": ""
}
Detailed-User-Response-Item
{
"type": "object",
"title": "Root Type for Detailed-Response-Item",
"example": {
"ROLES": "ROLE_USER",
"username": "username"
},
"properties": {
"ROLES": {
"$ref": "#/components/schemas/User-Role"
},
"username": {
"type": "string"
}
},
"description": ""
}
Document
{
"type": "object",
"oneOf": [
{
"$ref": "#/components/schemas/DocumentById"
},
{
"$ref": "#/components/schemas/DocumentByProvider"
}
],
"title": "Document",
"description": "The media object containing a document"
}
DocumentById
{
"type": "object",
"title": "Document",
"example": {
"id": "<Media Id, from Media API>X",
"caption": "<Message Caption>",
"filename": "<Filename>"
},
"required": [
"caption",
"id",
"filename"
],
"properties": {
"id": {
"type": "string"
},
"caption": {
"type": "string"
},
"filename": {
"type": "string"
}
}
}
DocumentByProvider
{
"type": "object",
"title": "Document1",
"example": {
"link": "<Link to PDF, https>",
"caption": "<Message Caption>",
"filename": "<Filename>",
"provider": {
"name": "<Provider Name from Media Provider API, optional"
}
},
"required": [
"provider",
"caption",
"link",
"filename"
],
"properties": {
"link": {
"type": "string"
},
"caption": {
"type": "string"
},
"filename": {
"type": "string"
},
"provider": {
"$ref": "#/components/schemas/Provider"
}
}
}
Email
{
"type": "object",
"title": "Email",
"example": {
"type": "<Contact's Email Type>",
"email": "<Contact's Email>"
},
"required": [
"email",
"type"
],
"properties": {
"type": {
"type": "string"
},
"email": {
"type": "string"
}
}
}
Enable-Two-Step-Request-Body
{
"type": "object",
"title": "Enable-Two-Step-Request",
"example": {
"pin": "your-6-digit-pin"
},
"required": [
"pin"
],
"properties": {
"pin": {
"type": "string"
}
}
}
Error
{
"type": "object",
"title": "Error",
"example": {
"code": 1234,
"title": "error-code-title",
"details": "optional-detailed-error-message"
},
"properties": {
"code": {
"type": "integer",
"format": "int32",
"description": "See the https://developers.facebook.com/docs/whatsapp/api/errors for more information."
},
"href": {
"type": "string",
"description": "location for error detail"
},
"title": {
"type": "string",
"description": "error title"
},
"details": {
"type": "string",
"description": "error detail"
}
},
"description": ""
}
Gateway-Node-Status
{
"type": "object",
"title": "Root Type for Gateway-Node-Status",
"example": {
"role": "coreapp",
"gateway_status": "connected"
},
"properties": {
"role": {
"enum": [
"primary_master",
"secondary_master",
"coreapp"
],
"type": "string"
},
"gateway_status": {
"type": "string"
}
},
"description": ""
}
Gateway-Status
{
"enum": [
"connected",
"connecting",
"disconnected",
"uninitialized",
"unregistered"
],
"type": "string",
"description": ""
}
Get-Business-Profile-Response
{
"type": "object",
"allOf": [
{
"$ref": "#/components/schemas/Response"
},
{
"type": "object",
"properties": {
"settings": {
"$ref": "#/components/schemas/Business-Settings"
}
}
}
],
"title": "Root Type for Get-Business-Profile-Response",
"example": {
"settings": {
"business": {
"profile": {
"email": "new-business-email",
"address": "new-business-address",
"vertical": "business-industry",
"websites": [
"website-1",
"website-2"
],
"description": "business-description"
}
}
}
},
"description": ""
}
Get-Media-Providers-Response
{
"type": "object",
"allOf": [
{
"$ref": "#/components/schemas/Response"
},
{
"type": "object",
"properties": {
"settings": {
"$ref": "#/components/schemas/Media-Provider-Settings"
}
}
}
],
"title": "Root Type for Get-Media-Providers-Response",
"example": {
"settings": {
"application": {
"media": {
"providers": [
{
"name": "your-first-provider",
"type": "www",
"config": {
"basic": {
"password": "your-password",
"username": "your-username"
}
}
},
{
"name": "your-second-provider",
"type": "www",
"config": {
"bearer": "your-bearer-token"
}
}
]
}
}
}
},
"description": ""
}
Get-Profile-About-Response
{
"type": "object",
"title": "Root Type for Get-Profile-About-Response",
"example": {
"settings": {
"profile": {
"about": {
"text": "your-profile-about-text"
}
}
}
},
"properties": {
"settings": {
"$ref": "#/components/schemas/Profile-About-Settings"
}
},
"description": ""
}
Get-Profile-Photo-Response
{
"type": "object",
"title": "Root Type for Get-Profile-Photo-Response",
"example": {
"settings": {
"profile": {
"photo": {
"link": "profile-photo-url"
}
}
}
},
"properties": {
"settings": {
"$ref": "#/components/schemas/Profile-Photo-Settings"
}
},
"description": ""
}
Group
{
"type": "object",
"title": "Groups-Response-Item",
"example": {
"id": "your-group-id",
"creation_time": 123456789
},
"properties": {
"id": {
"type": "string"
},
"creation_time": {
"type": "integer",
"format": "int32",
"description": "timestamp"
}
},
"description": ""
}
Group-Admin-Request-Body
{
"type": "object",
"title": "Group-Admin-Request",
"example": {
"wa_ids": [
"<Recipient WA-ID, from Contacts API>"
]
},
"required": [
"wa_ids"
],
"properties": {
"wa_ids": {
"type": "array",
"items": {
"type": "string"
},
"description": "The WhatsApp IDs of the people to be added or removed as group admins"
}
}
}
Group-Info
{
"type": "object",
"title": "Group-Response-Item",
"example": {
"admins": [
"whatsapp-id-1",
"whatsapp-id-2"
],
"creator": "whatsapp-id-1",
"subject": "your-group-subject",
"participants": [
"whatsapp-id-3",
"whatsapp-id-4",
"whatsapp-id-5"
],
"creation_time": 123456789
},
"properties": {
"admins": {
"type": "array",
"items": {
"type": "string"
},
"description": "Group administrators\nLists IDs of the creator of the group and any administrators added"
},
"creator": {
"type": "string",
"description": "ID of the creator of this group"
},
"subject": {
"type": "string",
"description": "Subject of the group"
},
"participants": {
"type": "array",
"items": {
"type": "string"
},
"description": "Participants of the group\nThis is an array of all the IDs of the participants in the group. Initially, this will be the creator of the group."
},
"creation_time": {
"type": "integer",
"format": "int32",
"description": "Group creation time"
}
},
"description": ""
}
Group-Invite
{
"type": "object",
"title": "Group-Invite",
"example": {
"link": "group-invite-link"
},
"properties": {
"link": {
"type": "string"
}
},
"description": ""
}
Group-Invite-Response
{
"type": "object",
"allOf": [
{
"$ref": "#/components/schemas/Response"
},
{
"type": "object",
"properties": {
"groups": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Group-Invite"
}
}
}
}
],
"title": "Group-Invite-Response",
"example": {
"groups": [
{
"link": "group-invite-link"
}
]
},
"description": ""
}
Group-Response
{
"type": "object",
"allOf": [
{
"$ref": "#/components/schemas/Response"
},
{
"type": "object",
"properties": {
"groups": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Group-Info"
}
}
}
}
],
"title": "Group-Response",
"example": {
"groups": [
{
"admins": [
"whatsapp-id-1",
"whatsapp-id-2"
],
"creator": "whatsapp-id-1",
"subject": "your-group-subject",
"participants": [
"whatsapp-id-3",
"whatsapp-id-4",
"whatsapp-id-5"
],
"creation_time": 123456789
}
]
},
"description": ""
}
Groups-Response
{
"type": "object",
"allOf": [
{
"$ref": "#/components/schemas/Response"
},
{
"type": "object",
"properties": {
"groups": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Group"
}
}
}
}
],
"title": "GroupsResponse",
"example": {
"groups": [
{
"id": "your-group-idX",
"creation_time": 123456789
}
]
},
"description": ""
}
GroupsDeleteGroupIconRequest
{
"type": "object",
"required": [
"File"
],
"properties": {
"File": {
"type": "string",
"format": "binary"
}
}
}
GroupsSetGroupIconRequest
{
"type": "object",
"required": [
"File"
],
"properties": {
"File": {
"type": "string",
"format": "binary"
}
}
}
HealthGetAppStats200Response
{
"type": "string"
}
HealthGetAppStatsResponse
{
"type": "object",
"example": {},
"properties": {}
}
HealthGetDbStats200Response
{
"type": "string"
}
HealthGetDbStatsResponse
{
"type": "object",
"example": {},
"properties": {}
}
HealthGetMetricsData200Response
{
"type": "string"
}
HealthGetMetricsDataResponse
{
"type": "object",
"example": {},
"properties": {}
}
HealthGetSupportInfoResponse
{
"type": "object",
"example": {},
"properties": {}
}
Hsm
{
"type": "object",
"title": "Hsm",
"example": {
"language": {
"code": "en",
"policy": "deterministic"
},
"namespace": "business_a_namespace",
"element_name": "hello_world",
"localizable_params": [
{
"default": "1234"
}
]
},
"required": [
"namespace",
"element_name",
"language",
"localizable_params"
],
"properties": {
"language": {
"$ref": "#/components/schemas/Language"
},
"namespace": {
"type": "string",
"description": "The namespace that will be used"
},
"element_name": {
"type": "string",
"description": "The element name that indicates which template to use within the namespace"
},
"localizable_params": {
"type": "array",
"items": {
"$ref": "#/components/schemas/LocalizableParam"
},
"description": "This field is an array of values to apply to variables in the template"
}
},
"description": "The containing element for the message content — Indicates that the message is highly structured. Parameters contained within provide the structure."
}
Image
{
"type": "object",
"oneOf": [
{
"$ref": "#/components/schemas/ImageById"
},
{
"$ref": "#/components/schemas/ImageByProvider"
}
],
"title": "Image",
"description": "The media object containing an image"
}
ImageById
{
"type": "object",
"title": "ImageById",
"example": {
"id": "<Media Id, from Media API>X",
"caption": "<Message Caption>"
},
"required": [
"caption",
"id"
],
"properties": {
"id": {
"type": "string"
},
"caption": {
"type": "string"
}
}
}
ImageByProvider
{
"type": "object",
"title": "ImageByProvider",
"example": {
"link": "<Link to Image, https>",
"caption": "<Media Caption>",
"provider": {
"name": "<Provider Name from Media Provider API, optional"
}
},
"required": [
"provider",
"link",
"caption"
],
"properties": {
"link": {
"type": "string"
},
"caption": {
"type": "string"
},
"provider": {
"$ref": "#/components/schemas/Provider"
}
}
}
Language
{
"type": "object",
"title": "Language",
"example": {
"code": "en",
"policy": "deterministic"
},
"required": [
"policy",
"code"
],
"properties": {
"code": {
"type": "string",
"description": "The code of the language or locale to use — Accepts both language and language_locale formats (e.g., en and en_US)."
},
"policy": {
"enum": [
"fallback",
"deterministic"
],
"type": "string",
"description": "The language policy the message should follow"
}
}
}
LocalizableParam
{
"type": "object",
"title": "LocalizableParam",
"example": {
"default": "<param value>"
},
"required": [
"default"
],
"properties": {
"default": {
"type": "string",
"description": "Default text if localization fails"
},
"currency": {
"$ref": "#/components/schemas/Currency"
},
"date_time": {
"$ref": "#/components/schemas/Date-Time-Object"
}
}
}
Location
{
"type": "object",
"title": "Location",
"example": {
"name": "<Location Name>",
"address": "<Location's Address>",
"latitude": "<Latitude>",
"longitude": "<Longitude>"
},
"required": [
"longitude",
"latitude",
"name",
"address"
],
"properties": {
"name": {
"type": "string",
"description": "Name of the location"
},
"address": {
"type": "string",
"description": "Address of the location. Only displayed if name is present."
},
"latitude": {
"type": "string",
"description": "Latitude of the location"
},
"longitude": {
"type": "string",
"description": "Longitude of the location"
}
}
}
Login-Admin-Request-Body
{
"type": "object",
"title": "Login-Admin-Request",
"example": {
"new_password": "<New Admin Password>"
},
"required": [
"new_password"
],
"properties": {
"new_password": {
"type": "string"
}
}
}
Mark-Message-As-Read-Request-Body
{
"type": "object",
"title": "Mark-Message-As-Read-Request",
"example": {
"status": "read"
},
"required": [
"status"
],
"properties": {
"status": {
"type": "string",
"default": "read"
}
}
}
Media
{
"type": "object",
"title": "Media",
"example": {
"auto_download": [
"image",
"document",
"audio"
]
},
"required": [
"auto_download"
],
"properties": {
"auto_download": {
"type": "array",
"items": {
"enum": [
"audio",
"document",
"voice",
"video",
"image."
],
"type": "string"
},
"description": "An array specifying which types of media to automatically download."
}
}
}
Media-Provider
{
"type": "object",
"title": "Update-Media-Providers-Request",
"example": {
"name": "<Provider Name>",
"type": "www",
"config": {
"bearer": "<Bearer Auth Token>"
}
},
"properties": {
"name": {
"type": "string",
"description": "The name for the provider"
},
"type": {
"type": "string",
"description": "The type of provider"
},
"config": {
"$ref": "#/components/schemas/Config"
}
}
}
Media-Provider-Settings
{
"type": "object",
"title": "Root Type for Settings",
"example": {
"application": {
"media": {
"providers": [
{
"name": "your-first-provider",
"type": "www",
"config": {
"basic": {
"password": "your-password",
"username": "your-username"
}
}
},
{
"name": "your-second-provider",
"type": "www",
"config": {
"bearer": "your-bearer-token"
}
}
]
}
}
},
"properties": {
"application": {
"$ref": "#/components/schemas/Media-Provider-Settings-Application"
}
},
"description": ""
}
Media-Provider-Settings-Application
{
"type": "object",
"title": "Root Type for Settings-Application",
"example": {
"media": {
"providers": [
{
"name": "your-first-provider",
"type": "www",
"config": {
"basic": {
"password": "your-password",
"username": "your-username"
}
}
},
{
"name": "your-second-provider",
"type": "www",
"config": {
"bearer": "your-bearer-token"
}
}
]
}
},
"properties": {
"media": {
"$ref": "#/components/schemas/Media-Provider-Settings-Application-Media"
}
},
"description": ""
}
Media-Provider-Settings-Application-Media
{
"type": "object",
"title": "Root Type for Settings-Application-Media",
"example": {
"providers": [
{
"name": "your-first-provider",
"type": "www",
"config": {
"basic": {
"password": "your-password",
"username": "your-username"
}
}
},
{
"name": "your-second-provider",
"type": "www",
"config": {
"bearer": "your-bearer-token"
}
}
]
},
"properties": {
"providers": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Media-Provider"
}
}
},
"description": ""
}
MediaDownloadResponse
{
"type": "object",
"example": {},
"properties": {}
}
MediaUploadMediaRequest
{
"type": "string",
"format": "binary"
}
MediaUploadMediaRequest1
{
"type": "string",
"format": "binary"
}
MediaUploadMediaRequest10
{
"type": "string",
"format": "binary"
}
MediaUploadMediaRequest11
{
"type": "string",
"format": "binary"
}
MediaUploadMediaRequest12
{
"type": "string",
"format": "binary"
}
MediaUploadMediaRequest13
{
"type": "string",
"format": "binary"
}
MediaUploadMediaRequest2
{
"type": "string",
"format": "binary"
}
MediaUploadMediaRequest3
{
"type": "string",
"format": "binary"
}
MediaUploadMediaRequest4
{
"type": "string",
"format": "binary"
}
MediaUploadMediaRequest5
{
"type": "string",
"format": "binary"
}
MediaUploadMediaRequest6
{
"type": "string",
"format": "binary"
}
MediaUploadMediaRequest7
{
"type": "string",
"format": "binary"
}
MediaUploadMediaRequest8
{
"type": "string",
"format": "binary"
}
MediaUploadMediaRequest9
{
"type": "string",
"format": "binary"
}
Message
{
"type": "object",
"title": "Message",
"example": {
"id": "gBEGkYiEB1VXAglK1ZEqA1YKPrU"
},
"properties": {
"id": {
"type": "string"
}
},
"description": ""
}
Message-Context
{
"type": "object",
"title": "Root Type for Message-Context",
"example": {
"id": "message-id-of-context-message",
"from": "sender-wa-id-of-context-message",
"group_id": "group-id-of-context-message",
"mentions": [
"wa-id1",
"wa-id2"
]
},
"properties": {
"id": {
"type": "string",
"description": "message id"
},
"from": {
"type": "string",
"description": "Sender Whatsapp id of context-message"
},
"group_id": {
"type": "string",
"description": "GroupId of context message"
},
"mentions": {
"type": "array",
"items": {
"type": "string"
},
"description": "Whats app ids"
}
},
"description": ""
}
Message-Response
{
"type": "object",
"allOf": [
{
"$ref": "#/components/schemas/Response"
},
{
"type": "object",
"properties": {
"messages": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Message"
}
}
}
}
],
"title": "Message-Response",
"example": {
"messages": [
{
"id": "gBEGkYiEB1VXAglK1ZEqA1YKPrUX"
}
]
},
"description": ""
}
Message-Type
{
"enum": [
"audio",
"contacts",
"document",
"hsm",
"image",
"location",
"text",
"video",
"voice",
"unknown"
],
"type": "string",
"default": "text",
"description": "type of the message"
}
Meta
{
"type": "object",
"title": "Meta",
"example": {
"version": "whatsapp-business-api-client-version",
"api_status": "stable"
},
"properties": {
"version": {
"type": "string"
},
"api_status": {
"enum": [
"deprecated",
"experimental",
"stable"
],
"type": "string"
}
},
"description": "Contains generic information such as WhatsApp Business API Client version."
}
Name
{
"type": "object",
"title": "Name",
"example": {
"last_name": "Smith",
"first_name": "John",
"formatted_name": "John Smith"
},
"required": [
"formatted_name"
],
"properties": {
"prefix": {
"type": "string",
"description": "Name preffix"
},
"suffix": {
"type": "string",
"description": "Name suffix"
},
"last_name": {
"type": "string",
"description": "Last name"
},
"first_name": {
"type": "string",
"description": "First name"
},
"formatted_name": {
"type": "string",
"description": "Full name as it normally appears"
}
},
"description": "Full contact name"
}
Org
{
"type": "object",
"title": "Org",
"example": {
"title": "Manager",
"company": "WhatsApp",
"department": "Design"
},
"required": [
"company"
],
"properties": {
"title": {
"type": "string",
"description": "Contact's business title"
},
"company": {
"type": "string",
"description": "Name of the contact's company"
},
"department": {
"type": "string",
"description": "Name of the contact's department"
}
},
"description": "Contact organization information"
}
Phone
{
"type": "object",
"title": "Phone",
"example": {
"type": "WORK",
"phone": "+1 (650) 555-1234",
"wa_id": "16505551234"
},
"properties": {
"type": {
"type": "string",
"description": "Standard Values: CELL, MAIN, IPHONE, HOME, WORK"
},
"phone": {
"type": "string"
},
"wa_id": {
"type": "string",
"description": "WhatsApp ID"
}
}
}
Profile-About
{
"type": "object",
"title": "Set-Profile-About-Request",
"example": {
"text": "<About Profile>"
},
"required": [
"text"
],
"properties": {
"text": {
"type": "string",
"description": "Text to display in your profile's About section\nThe max length for the string is 139 characters."
}
}
}
Profile-About-Settings
{
"type": "object",
"title": "Root Type for Profile-About-Settings",
"example": {
"profile": {
"about": {
"text": "your-profile-about-text"
}
}
},
"properties": {
"profile": {
"$ref": "#/components/schemas/Profile-About-Settings-Profile"
}
},
"description": ""
}
Profile-About-Settings-Profile
{
"type": "object",
"title": "Root Type for About-XXX",
"example": {
"about": {
"text": "your-profile-about-text"
}
},
"properties": {
"about": {
"$ref": "#/components/schemas/Profile-About"
}
},
"description": ""
}
Profile-Photo-Settings
{
"type": "object",
"title": "Root Type for Profile-Photo-Settings",
"example": {
"profile": {
"photo": {
"link": "profile-photo-url"
}
}
},
"properties": {
"profile": {
"type": "object",
"properties": {
"photo": {
"type": "object",
"properties": {
"link": {
"type": "string"
}
}
}
}
}
},
"description": ""
}
Profile-Photo-Settings-Profile
{
"type": "object",
"title": "Root Type for Profile-Photo-Settings-Profile",
"example": {
"photo": {
"link": "profile-photo-url"
}
},
"properties": {
"photo": {
"$ref": "#/components/schemas/Profile-Photo-Settings-Profile-Photo"
}
},
"description": ""
}
Profile-Photo-Settings-Profile-Photo
{
"type": "object",
"title": "Root Type for Profile-Photo-Settings-Profile-Photo",
"example": {
"link": "profile-photo-url"
},
"properties": {
"link": {
"type": "string"
}
},
"description": ""
}
ProfileGetPhotoResponse
{
"type": "string",
"format": "binary"
}
ProfileUpdatePhotoRequest
{
"type": "object",
"required": [
"File"
],
"properties": {
"File": {
"type": "string",
"format": "binary"
}
}
}
Provider
{
"type": "object",
"title": "Provider",
"example": {
"name": "<Provider Name from Media Provider API, optional"
},
"required": [
"name"
],
"properties": {
"name": {
"type": "string"
}
}
}
Register-Account-Request-Body
{
"type": "object",
"title": "Register-Account-Request",
"example": {
"code": "your-registration-code-received-by-sms-or-voice-call"
},
"required": [
"code"
],
"properties": {
"code": {
"type": "string"
}
}
}
Remove-Group-Participant-Request-Body
{
"type": "object",
"title": "Remove-Group-Participant-Request",
"example": {
"wa_ids": [
"{{Recipient-WA-ID}}"
]
},
"required": [
"wa_ids"
],
"properties": {
"wa_ids": {
"type": "array",
"items": {
"type": "string"
},
"description": ""
}
}
}
Request-Code-Account
{
"type": "object",
"title": "Root Type for Request-Code-Account",
"example": {
"vname": "decoded-vname-from-cert"
},
"properties": {
"vname": {
"type": "string"
}
},
"description": ""
}
Request-Code-Request-Body
{
"type": "object",
"title": "Request-Code-Request",
"example": {
"cc": "<Country Code>",
"pin": "<Two-Step Verification PIN",
"cert": "<Valid Cert from Business Manager>",
"method": "< sms | voice >",
"phone_number": "<Phone Number>"
},
"required": [
"cc",
"phone_number",
"method",
"cert"
],
"properties": {
"cc": {
"type": "string",
"description": "Numerical country code for the phone number you are registering"
},
"pin": {
"type": "string",
"description": "Existing 6-digit PIN — This is only required when two-factor verification is enabled on this account."
},
"cert": {
"type": "string",
"description": "Base64-encoded Verified Name certificate"
},
"method": {
"enum": [
"sms",
"voice"
],
"type": "string",
"description": "Method of receiving your registration code"
},
"phone_number": {
"type": "string",
"description": "Phone number you are registering, without the country code or plus symbol (+)"
}
}
}
Request-Code-Response
{
"type": "object",
"title": "Root Type for Request-Code-Response",
"example": {
"account": [
{
"vname": "decoded-vname-from-cert"
}
]
},
"properties": {
"account": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Request-Code-Account"
}
}
},
"description": ""
}
Response
{
"type": "object",
"title": "Response",
"example": {
"meta": {
"version": "whatsapp-business-api-client-version",
"api_status": "deprecated"
},
"errors": [
{
"code": 1234,
"title": "error-code-title",
"details": "optional-detailed-error-message"
}
]
},
"properties": {
"meta": {
"$ref": "#/components/schemas/Meta"
},
"errors": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Error"
},
"description": "Only returned with a failed request. Contains an array of error objects that are present when there is an error. "
}
},
"description": ""
}
Restore-Settings-Request-Body
{
"type": "object",
"title": "Restore-Settings-Request",
"example": {
"data": "<Data to Restore, from Backup API>",
"password": "<Password for Backup>"
},
"required": [
"password",
"data"
],
"properties": {
"data": {
"type": "string",
"description": "The data that was returned by the /v1/settings/backup API call"
},
"password": {
"type": "string",
"description": "The password you used in the /v1/settings/backup API call to encrypt the backup data"
}
}
}
Send-Message-Request-Body
{
"type": "object",
"title": "Send-Text-Message-Request",
"example": {
"to": "{whatsapp-id}",
"text": {
"body": "your-text-message-content"
},
"type": "text",
"preview_url": true,
"recipient_type": "individual"
},
"required": [
"to"
],
"properties": {
"to": {
"type": "string",
"description": "When recipient_type is individual, this field is the WhatsApp ID (phone number) returned from contacts endpoint. When recipient_type is group, this field is the WhatsApp group ID."
},
"hsm": {
"$ref": "#/components/schemas/Hsm"
},
"ttl": {
"type": "object"
},
"text": {
"$ref": "#/components/schemas/Text"
},
"type": {
"$ref": "#/components/schemas/Message-Type"
},
"audio": {
"$ref": "#/components/schemas/Audio"
},
"image": {
"$ref": "#/components/schemas/Image"
},
"video": {
"$ref": "#/components/schemas/Video"
},
"contacts": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Contact"
},
"description": ""
},
"document": {
"$ref": "#/components/schemas/Document"
},
"location": {
"$ref": "#/components/schemas/Location"
},
"preview_url": {
"type": "boolean",
"description": "Specifying preview_url in the request is optional when not including a URL in your message.\nTo include a URL preview, set preview_url to true in the message body and make sure the URL begins with http:// or https://. For more information, see the Sending URLs in Text Messages section."
},
"recipient_type": {
"enum": [
"individual",
"group"
],
"type": "string",
"default": "individual",
"description": "Determines whether the recipient is an individual or a group\nSpecifying recipient_type in the request is optional when the value is individual.\nHowever, recipient_type is required when using group. If sending a text message to a group, see the Sending Group Messages documentation."
}
}
}
Set-Shards-Request-Body
{
"type": "object",
"title": "Set-Shards-Request",
"example": {
"cc": "<Country Code>",
"pin": "<Two-Step PIN>",
"shards": 32,
"phone_number": "<Phone Number>"
},
"required": [
"cc",
"phone_number",
"shards",
"pin"
],
"properties": {
"cc": {
"type": "string"
},
"pin": {
"type": "string"
},
"shards": {
"enum": [
"1",
"2",
"4",
"8",
"16",
"32"
],
"type": "string",
"format": "int32"
},
"phone_number": {
"type": "string"
}
}
}
Text
{
"type": "object",
"title": "Text",
"example": {
"body": "<Message Text>"
},
"required": [
"body"
],
"properties": {
"body": {
"type": "string"
}
}
}
Update-Group-Info-Request-Body
{
"type": "object",
"title": "Update-Group-Info-Request",
"example": {
"subject": "<New Group Subject>"
},
"required": [
"subject"
],
"properties": {
"subject": {
"type": "string"
}
}
}
Update-User-Request-Body
{
"type": "object",
"title": "Update-User-Request",
"example": {
"password": "New Password"
},
"required": [
"password"
],
"properties": {
"password": {
"type": "string",
"description": "password"
}
}
}
Upload-Media
{
"type": "object",
"title": "Root Type for Upload-Media",
"example": {
"id": "f043afd0-f0ae-4b9c-ab3d-696fb4c8cd68"
},
"properties": {
"id": {
"type": "string"
}
},
"description": ""
}
Upload-Media-Response
{
"type": "object",
"allOf": [
{
"$ref": "#/components/schemas/Response"
},
{
"type": "object",
"properties": {
"media": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Upload-Media"
}
}
}
}
],
"title": "Root Type for Upload-Media-Response",
"example": {
"media": [
{
"id": "f043afd0-f0ae-4b9c-ab3d-696fb4c8cd68X"
}
]
},
"description": ""
}
Url
{
"type": "object",
"title": "Root Type for Url",
"example": {
"url": "https://www.facebook.com",
"type": "WORK"
},
"properties": {
"url": {
"type": "string",
"description": "URL"
},
"type": {
"type": "string",
"description": "Standard Values: HOME, WORK"
}
},
"description": "Standard Values: HOME, WORK"
}
User-Login-Response
{
"type": "object",
"allOf": [
{
"$ref": "#/components/schemas/Response"
},
{
"type": "object",
"properties": {
"users": {
"type": "array",
"items": {
"$ref": "#/components/schemas/User-Login-Response-Item"
}
}
}
}
],
"title": "UserLoginResponse",
"example": {
"users": [
{
"token": "eyJhbGciOHlXVCJ9.eyJ1c2VyIjoNTIzMDE2Nn0.mEoF0COaO00Z1cANo",
"expires_after": "2018-03-01T15:29:26.000Z"
}
]
},
"description": ""
}
User-Login-Response-Item
{
"type": "object",
"title": "UserLoginResponseItem",
"example": {
"token": "eyJhbGciOHlXVCJ9.eyJ1c2VyIjoNTIzMDE2Nn0.mEoF0COaO00Z1cANo",
"expires_after": "2018-03-01T15:29:26.000Z"
},
"properties": {
"token": {
"type": "string",
"description": "Authentication token to be used for all other WhatsApp Business API calls. The token must be sent in the authorization header in the format:\nAuthorization: Bearer <authentication-token>"
},
"expires_after": {
"type": "string",
"format": "date-time",
"description": "Token expiration timestamp. By default, this is 7 days."
}
},
"description": ""
}
User-Response
{
"type": "object",
"allOf": [
{
"$ref": "#/components/schemas/Response"
},
{
"type": "object",
"properties": {
"users": {
"type": "array",
"items": {
"$ref": "#/components/schemas/User-Response-Item"
}
}
}
}
],
"title": "Root Type for User-Create-Response",
"example": {
"users": [
{
"username": "username"
}
]
},
"description": ""
}
User-Response-Item
{
"type": "object",
"title": "Root Type for User-Create-Response-Item",
"example": {
"username": "username"
},
"properties": {
"username": {
"type": "string"
}
},
"description": ""
}
User-Role
{
"enum": [
"ROLE_ADMIN",
"ROLE_USER"
],
"type": "string",
"description": ""
}
Video
{
"type": "object",
"oneOf": [
{
"$ref": "#/components/schemas/VideoById"
},
{
"$ref": "#/components/schemas/VideoByProvider"
}
],
"title": "Video",
"description": "The media object containing a video"
}
VideoById
{
"type": "object",
"title": "VideoById",
"example": {
"id": "<Media Id, from Media API>X",
"caption": "<Message Caption>"
},
"required": [
"caption",
"id"
],
"properties": {
"id": {
"type": "string"
},
"caption": {
"type": "string"
}
}
}
VideoByProvider
{
"type": "object",
"title": "ByProvider",
"example": {
"link": "<Link to Video, https>",
"caption": "<Message Caption>",
"provider": {
"name": "<Provider Name from Media Provider API, optional"
}
},
"required": [
"provider",
"caption",
"link"
],
"properties": {
"link": {
"type": "string"
},
"caption": {
"type": "string"
},
"provider": {
"$ref": "#/components/schemas/Provider"
}
}
}
Webhook-Audio
{
"type": "object",
"title": "Root Type for Webhook-Audio",
"example": {
"id": "media-id",
"file": "absolute-filepath-on-coreapp",
"link": "link-to-audio-file",
"sha256": "checksum",
"mime_type": "media-mime-type"
},
"properties": {
"id": {
"type": "string",
"description": "ID of the media. Can be used to delete the media if stored locally on the client."
},
"file": {
"type": "string",
"deprecated": true,
"description": "Absolute filename and location on media volume. This parameter is deprecated."
},
"link": {
"type": "string"
},
"sha256": {
"type": "string",
"description": "Checksum"
},
"caption": {
"type": "string",
"description": "Optional. Only present if specified."
},
"filename": {
"type": "string",
"description": "Filename on the sender's device. This will only be present in audio and document media messages."
},
"mime_type": {
"type": "string",
"description": "Mime type of media"
}
},
"description": ""
}
Webhook-Contact
{
"type": "object",
"title": "Root Type for Webhook-Contact",
"example": {
"wa_id": "16315551234",
"profile": {
"name": "Kerry Fisher"
}
},
"properties": {
"wa_id": {
"type": "string",
"description": "The WhatsApp ID of the contact"
},
"profile": {
"$ref": "#/components/schemas/Webhook-Contact-Profile"
}
},
"description": ""
}
Webhook-Contact-Profile
{
"type": "object",
"title": "Root Type for Webhook-Contact-Profile",
"example": {
"name": "sender-profile-name"
},
"properties": {
"name": {
"type": "string",
"description": "Optional. As of v2.21.4, contains the sender's profile name."
}
},
"description": ""
}
Webhook-Document
{
"type": "object",
"title": "Root Type for Webhook-Document",
"example": {
"id": "fc233119-733f-49c-bcbd-b2f68f798e33",
"file": "/usr/local/wamedia/shared/fc233119-733f-49c-bcbd-b2f68f798e33",
"sha256": "3b11fa6ef2bde1dd14726e09d3edaf782120919d06f6484f32d5d5caa4b8e",
"caption": "80skaraokesonglistartist",
"mime_type": "application/pdf"
},
"properties": {
"id": {
"type": "string",
"description": "ID of the media. Can be used to delete the media if stored locally on the client."
},
"file": {
"type": "string",
"deprecated": true,
"description": "Absolute filename and location on media volume. This parameter is deprecated."
},
"link": {
"type": "string"
},
"sha256": {
"type": "string",
"description": "Checksum"
},
"caption": {
"type": "string",
"description": "Optional. Only present if specified."
},
"filename": {
"type": "string",
"description": "Filename on the sender's device. This will only be present in audio and document media messages."
},
"mime_type": {
"type": "string",
"description": "Mime type of media"
}
},
"description": ""
}
Webhook-Event
{
"type": "object",
"title": "Root Type for Webhook-Event",
"example": {
"contacts": [
{
"wa_id": "16315551234",
"profile": {
"name": "Kerry Fisher"
}
}
],
"messages": [
{
"id": "ABGGFlA5FpafAgo6tHcNmNjXmuSf",
"from": "16315551234",
"text": {
"body": "Hello this is an answer"
},
"type": "text",
"timestamp": "1518694235"
}
]
},
"properties": {
"errors": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Error"
}
},
"contacts": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Webhook-Contact"
}
},
"messages": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Webhook-Message"
}
},
"statuses": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Webhook-Status"
}
}
},
"description": ""
}
Webhook-Image
{
"type": "object",
"title": "Root Type for Webhook-Image",
"example": {
"id": "b1c68f38-8734-4ad3-b4a1-ef0c10d683",
"file": "/usr/local/wamedia/shared/b1cf38-8734-4ad3-b4a1-ef0c10d0d683",
"sha256": "29ed500fa64eb55fc19dc4124acb300e5dcc54a0f822a301ae99944db",
"caption": "Check out my new phone!",
"mime_type": "image/jpeg"
},
"properties": {
"id": {
"type": "string",
"description": "ID of the media. Can be used to delete the media if stored locally on the client."
},
"file": {
"type": "string",
"deprecated": true,
"description": "Absolute filename and location on media volume. This parameter is deprecated."
},
"link": {
"type": "string"
},
"sha256": {
"type": "string",
"description": "Checksum"
},
"caption": {
"type": "string",
"description": "Optional. Only present if specified."
},
"mime_type": {
"type": "string",
"description": "Mime type of media"
}
},
"description": ""
}
Webhook-Location
{
"type": "object",
"title": "Root Type for Webhook-Location",
"example": {
"url": "https://foursquare.com/v/4d7031d35b5df7744",
"name": "Main Street Beach",
"address": "Main Street Beach, Santa Cruz, CA",
"latitude": 38.9806263495,
"longitude": -131.9428612257
},
"properties": {
"url": {
"type": "string",
"description": "URL for the website where the user downloaded the location information"
},
"name": {
"type": "string",
"description": "Name of the location"
},
"address": {
"type": "string",
"description": "Address of the location"
},
"latitude": {
"type": "number",
"format": "double",
"description": "Latitude of location being sent"
},
"longitude": {
"type": "number",
"format": "double",
"description": "Longitude of location being sent"
}
},
"description": ""
}
Webhook-Message
{
"type": "object",
"title": "Root Type for Webhook-Message",
"example": {
"id": "ABGGFlA5FpafAgo6tHcNmNjXmuSfX",
"from": "16315551234",
"text": {
"body": "Hello this is an answer"
},
"type": "text",
"timestamp": "1518694235"
},
"properties": {
"id": {
"type": "string",
"description": "Message ID"
},
"from": {
"type": "string",
"description": "WhatsApp ID of the sender"
},
"text": {
"$ref": "#/components/schemas/Webhook-Text"
},
"type": {
"$ref": "#/components/schemas/Message-Type"
},
"audio": {
"$ref": "#/components/schemas/Webhook-Audio"
},
"image": {
"$ref": "#/components/schemas/Webhook-Image"
},
"video": {
"$ref": "#/components/schemas/Webhook-Video"
},
"voice": {
"$ref": "#/components/schemas/Webhook-Voice"
},
"errors": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Error"
}
},
"system": {
"$ref": "#/components/schemas/Webhook-System"
},
"context": {
"$ref": "#/components/schemas/Message-Context"
},
"contacts": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Contact"
}
},
"document": {
"$ref": "#/components/schemas/Webhook-Document"
},
"group_id": {
"type": "string",
"description": "Optional. WhatsApp group ID"
},
"location": {
"$ref": "#/components/schemas/Webhook-Location"
},
"timestamp": {
"type": "string",
"description": "Message received timestamp"
}
},
"description": ""
}
Webhook-Status
{
"type": "object",
"title": "Root Type for Webhook-Status",
"example": {
"id": "gBGGEgZHMlEfAgkM1RBkhDRr7t8",
"errors": [
{
"code": 470,
"title": "Failed to send message because you are outside the support window for freeform messages to this user. Please use a valid HSM notification or reconsider."
}
],
"status": "failed",
"timestamp": "1533332775",
"recipient_id": "12064001000"
},
"properties": {
"id": {
"type": "string",
"description": "Message ID"
},
"errors": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Error"
}
},
"status": {
"enum": [
"sent",
"delivered",
"read",
"failed",
"deleted"
],
"type": "string",
"description": "Status of message",
"x-enum-descriptions": [
"Message received by WhatsApp server (One checkmark in WhatsApp Mobile)",
"Message delivered to recipient (Two checkmarks in WhatsApp Mobile)",
"Message read by recipient (Two blue checkmarks in WhatsApp Mobile)",
"Message failed to send (Red error triangle in WhatsApp Mobile)",
"Message deleted by the user"
]
},
"timestamp": {
"type": "string",
"description": "Timestamp of the status message"
},
"recipient_id": {
"type": "string",
"description": "WhatsApp ID of recipient"
}
},
"description": ""
}
Webhook-System
{
"type": "object",
"title": "Root Type for Webhook-System",
"example": {
"body": "+1 (650) 387-5246 added +1 (650) 644-8470",
"type": "group_user_joined",
"users": [
"16506448470"
],
"group_id": "16315558032-1530825318",
"operator": "16503875246"
},
"properties": {
"body": {
"type": "string"
},
"type": {
"enum": [
"group_created",
"group_user_promoted",
"group_user_demoted",
"group_user_joined",
"group_user_left",
"group_subject_changed",
"group_description_changed",
"group_icon_changed",
"group_icon_deleted",
"group_invite_link_revoked",
"user_identity_changed",
"group_user_changed_number",
"group_error_fetching_photo",
"group_error_adding_users",
"group_error_adding_user",
"group_error_full_adding_users",
"group_error_removing_user",
"broadcast_list_created",
"group_ended",
"group_error_blocked_adding_user"
],
"type": "string",
"description": "",
"x-enum-descriptions": [
"Group created",
"Group user promoted to admin",
"Group user removed as admin",
"User joined the group",
"User left the group",
"Group subject changed",
"Group description changed",
"Group icon changed",
"Group icon deleted",
"Group's invite link disabled",
"User's end-to-end keys changed",
"User's phone number changed",
"Error retrieving the group photo",
"Error adding users to the group",
"Error adding a user to the group",
"Group is at capacity and no more users can be added",
"Error removing user from group",
"Broadcast list created",
"Group ended",
"Error attempting to add a user that blocked the adder"
]
}
},
"description": ""
}
Webhook-Text
{
"type": "object",
"title": "Root Type for Webhook-Text",
"example": {
"body": "text-message-content"
},
"properties": {
"body": {
"type": "string",
"description": "Message text"
}
},
"description": ""
}
Webhook-Video
{
"type": "object",
"title": "Root Type for Webhook-Video",
"example": {
"id": "media-idX",
"file": "absolute-filepath-on-coreapp",
"link": "link-to-video-file",
"sha256": "checksum",
"mime_type": "media-mime-type"
},
"properties": {
"id": {
"type": "string",
"description": "ID of the media. Can be used to delete the media if stored locally on the client."
},
"file": {
"type": "string",
"deprecated": true,
"description": "Absolute filename and location on media volume. This parameter is deprecated."
},
"link": {
"type": "string"
},
"sha256": {
"type": "string",
"description": "Checksum"
},
"caption": {
"type": "string",
"description": "Optional. Only present if specified."
},
"mime_type": {
"type": "string",
"description": "Mime type of media"
}
},
"description": ""
}
Webhook-Voice
{
"type": "object",
"title": "Root Type for Webhook-Voice",
"example": {
"id": "463eb7ec-ff4e-4d9b-b110-1879cbd411b2",
"file": "/usr/local/wamedia/shared/463e/b7ec/ff4e4d9bb1101879cbd411b2",
"sha256": "fa9e1807d936b7cebe63654ea3a7912b1fa9479220258d823590521ef53b0710",
"mime_type": "audio/ogg; codecs=opus"
},
"properties": {
"id": {
"type": "string",
"description": "ID of the media. Can be used to delete the media if stored locally on the client."
},
"file": {
"type": "string",
"deprecated": true,
"description": "Absolute filename and location on media volume. This parameter is deprecated."
},
"link": {
"type": "string"
},
"sha256": {
"type": "string",
"description": "Checksum"
},
"caption": {
"type": "string",
"description": "Optional. Only present if specified."
},
"mime_type": {
"type": "string",
"description": "Mime type of media"
}
},
"description": ""
}
Webhooks
{
"type": "object",
"title": "Webhooks",
"example": {
"url": "<Webhook URL, https>",
"max_concurrent_requests": 12
},
"properties": {
"url": {
"type": "string",
"description": "Inbound and outbound notifications are routed to this URL. A HTTPS-based endpoint is required; HTTP will not work."
},
"max_concurrent_requests": {
"enum": [
"6",
"12",
"18",
"24"
],
"type": "string",
"format": "int32",
"default": 6,
"description": "Configures the maximum number of inflight callback requests that are sent out. Can be set to 6 (default), 12, 18, or 24."
}
}
}