WhatsApp Business

WhatsApp Business messaging API

developers.facebook.com/docs/whatsapp/cloud-api ↗
Version
1.0
OpenAPI
3.0.0
Endpoints
55
Schemas
144
68
Quality
Updated
5 days ago
Messaging messaging business communication
Use this API in your AI agent

Query structured spec data via REST or MCP. Get exactly what your agent needs.

Get API Key

Server URLs

http://whatsapp.local
http://example.com/v1

Endpoints

Application 7 endpoints

POST /account/shards
operationId: Application_setShards

Request Body

required
application/json
schema Set-Shards-Request-Body
Property Type Required
cc string required
pin string required
shards string required
phone_number string required

Responses

200 —
POST /account/shards
DELETE /settings/application
operationId: Application_resetSettings

Responses

200 —
DELETE /settings/application
GET /settings/application
operationId: Application_getSettings

Responses

200 —
GET /settings/application
PATCH /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.

operationId: Application_updateSettings

Request Body

required
application/json
schema Application-Settings
Property Type Required
media object optional
└ auto_download array required
webhooks object optional
└ url string optional
└ max_concurrent_requests string optional
sent_status boolean optional
pass_through boolean optional
on_call_pager string optional
callback_persist boolean optional
heartbeat_interval integer optional
unhealthy_interval integer optional
callback_backoff_delay_ms string optional
max_callback_backoff_delay_ms string optional

Responses

200 —
PATCH /settings/application
GET /settings/application/media/providers
operationId: Application_listMediaProviders

Responses

200 —
GET /settings/application/media/providers
POST /settings/application/media/providers
operationId: Application_updateMediaProviders

Request Body

required
application/json
schema ApplicationUpdateMediaProvidersRequest
array of object
Property Type Required
name string optional
type string optional
config object optional

Responses

200 —
POST /settings/application/media/providers
DELETE /settings/application/media/providers/{ProviderName}
operationId: Application_removeProvider

Parameters

Name In Required Type Description
ProviderName path required string

Provider Name

Responses

200 —
DELETE /settings/application/media/providers/{ProviderName}

Backup/restore 2 endpoints

POST /settings/backup
operationId: BackupRestore_settingsPost

Request Body

required
application/json
schema Backup-Settings-Request-Body
Property Type Required
password string required

Responses

200 —
POST /settings/backup
POST /settings/restore
operationId: BackupRestore_settingsPost

Request Body

required
application/json
schema Restore-Settings-Request-Body
Property Type Required
data string required
password string required

Responses

200 —
POST /settings/restore

Businessprofile 2 endpoints

GET /settings/business/profile
operationId: BusinessProfile_get

Responses

200 —
GET /settings/business/profile
POST /settings/business/profile
operationId: BusinessProfile_update

Request Body

required
application/json
schema Business-Profile
Property Type Required
email string required
address string required
vertical string required
websites array required
description string required

Responses

200 —
POST /settings/business/profile

Certificates 5 endpoints

POST /certificates/external
operationId: Certificates_uploadExternalCertificate

Request Body

text/plain
schema CertificatesUploadExternalCertificateRequest
string

Responses

200 —
POST /certificates/external
GET /certificates/external/ca
operationId: Certificates_downloadCaCertificate

Responses

200 —
GET /certificates/external/ca
DELETE /certificates/webhooks/ca
operationId: Certificates_deleteWebhookCa

Responses

200 —
DELETE /certificates/webhooks/ca
GET /certificates/webhooks/ca
operationId: Certificates_downloadWebhookCaCertificate

Responses

200 —
GET /certificates/webhooks/ca
POST /certificates/webhooks/ca
operationId: Certificates_uploadWebhookCaCertificate

Request Body

text/plain
schema CertificatesUploadWebhookCaCertificateRequest
string

Responses

200 —
POST /certificates/webhooks/ca

Contacts 1 endpoints

POST /contacts
operationId: Contacts_createContact

Request Body

required
application/json
schema Check-Contact-Request-Body
Property Type Required
blocking string optional
contacts array required

Responses

200 —
POST /contacts

Groups 13 endpoints

GET /groups
operationId: Groups_getAll

Responses

200 —
GET /groups
POST /groups
operationId: Groups_createGroup

Request Body

required
application/json
schema Create-Group-Request-Body
Property Type Required
subject string required

Responses

200 —
POST /groups
GET /groups/{GroupId}
operationId: Groups_getInfo

Parameters

Name In Required Type Description
GroupId path required string —

Responses

200 —
GET /groups/{GroupId}
PUT /groups/{GroupId}
operationId: Groups_updateInfo

Parameters

Name In Required Type Description
GroupId path required string —

Request Body

required
application/json
schema Update-Group-Info-Request-Body
Property Type Required
subject string required

Responses

200 —
PUT /groups/{GroupId}
DELETE /groups/{GroupId}/admins
operationId: Groups_demoteAdmin

Parameters

Name In Required Type Description
GroupId path required string —

Request Body

required
application/json
schema Group-Admin-Request-Body
Property Type Required
wa_ids array required

Responses

200 —
DELETE /groups/{GroupId}/admins
PATCH /groups/{GroupId}/admins
operationId: Groups_promoteToAdmin

Parameters

Name In Required Type Description
GroupId path required string —

Request Body

required
application/json
schema Group-Admin-Request-Body
Property Type Required
wa_ids array required

Responses

200 —
PATCH /groups/{GroupId}/admins
DELETE /groups/{GroupId}/icon
operationId: Groups_deleteGroupIcon

Parameters

Name In Required Type Description
GroupId path required string —

Request Body

multipart/form-data
schema GroupsDeleteGroupIconRequest
Property Type Required
File string required

Responses

200 —
DELETE /groups/{GroupId}/icon
GET /groups/{GroupId}/icon
operationId: Groups_getIconBinary

Parameters

Name In Required Type Description
GroupId path required string —

Responses

200 —
GET /groups/{GroupId}/icon
POST /groups/{GroupId}/icon
operationId: Groups_setGroupIcon

Parameters

Name In Required Type Description
GroupId path required string —

Request Body

multipart/form-data
schema GroupsSetGroupIconRequest
Property Type Required
File string required

Responses

200 —
POST /groups/{GroupId}/icon
DELETE /groups/{GroupId}/invite
operationId: Groups_deleteInvite

Parameters

Name In Required Type Description
GroupId path required string —

Responses

200 —
DELETE /groups/{GroupId}/invite
GET /groups/{GroupId}/invite
operationId: Groups_getInviteDetails

Parameters

Name In Required Type Description
GroupId path required string —

Responses

200 —
GET /groups/{GroupId}/invite
POST /groups/{GroupId}/leave
operationId: Groups_leaveGroup

Parameters

Name In Required Type Description
GroupId path required string —

Responses

200 —
POST /groups/{GroupId}/leave
DELETE /groups/{GroupId}/participants
operationId: Groups_removeParticipant

Parameters

Name In Required Type Description
GroupId path required string —

Request Body

required
application/json
schema Remove-Group-Participant-Request-Body
Property Type Required
wa_ids array required

Responses

200 —
DELETE /groups/{GroupId}/participants

Health 5 endpoints

GET /health
operationId: Health_checkStatus

Responses

200 —
GET /health
GET /metrics
operationId: Health_getMetricsData

Parameters

Name In Required Type Description
format query optional string —

Responses

200 —
GET /metrics
GET /stats/app
operationId: Health_getAppStats

Parameters

Name In Required Type Description
format query optional string —

Responses

200 —
GET /stats/app
GET /stats/db
operationId: Health_getDbStats

Parameters

Name In Required Type Description
format query optional string —

Responses

200 —
GET /stats/db
GET /support
operationId: Health_getSupportInfo

Responses

200 —
GET /support

Media 3 endpoints

POST /media
operationId: Media_uploadMedia

Request Body

required
audio/acc
schema MediaUploadMediaRequest4
string
audio/amr
schema MediaUploadMediaRequest5
string
audio/mp4
schema MediaUploadMediaRequest6
string
audio/ogg
schema MediaUploadMediaRequest8
string
image/png
schema MediaUploadMediaRequest11
string
video/mp4
schema MediaUploadMediaRequest13
string
audio/mpeg
schema MediaUploadMediaRequest7
string
image/jpeg
schema MediaUploadMediaRequest10
string
text/plain
schema MediaUploadMediaRequest12
string
codecs=opus
schema MediaUploadMediaRequest9
string
application/pdf
schema MediaUploadMediaRequest1
string
application/msword
schema MediaUploadMediaRequest
string
application/vnd.ms-excel
schema MediaUploadMediaRequest2
string
application/vnd.ms-powerpoint
schema MediaUploadMediaRequest3
string

Responses

200 —
POST /media
DELETE /media/{MediaId}
operationId: Media_removeMedia

Parameters

Name In Required Type Description
MediaId path required string —

Responses

200 —
DELETE /media/{MediaId}
GET /media/{MediaId}
operationId: Media_download

Parameters

Name In Required Type Description
MediaId path required string —

Responses

200 —
GET /media/{MediaId}

Messages 2 endpoints

POST /messages
operationId: Messages_sendMessage

Request Body

required
application/json
schema Send-Message-Request-Body
Property Type Required
to string required
hsm object optional
└ language object required
└ code string required
└ policy string required
└ namespace string required
└ element_name string required
└ localizable_params array required
└ default string required
└ currency object optional
└ amount_1000 integer required
└ currency_code string required
└ date_time object optional
└ component object optional
└ unix_epoch object optional
ttl object optional
text object optional
└ body string required
type string optional
audio object optional
image object optional
video object optional
contacts array optional
└ ims array optional
└ org object optional
└ title string optional
└ company string required
└ department string optional
└ name object optional
└ prefix string optional
└ suffix string optional
└ last_name string optional
└ first_name string optional
└ formatted_name string required
└ urls array optional
└ url string optional
└ type string optional
└ emails array optional
└ type string required
└ email string required
└ phones array optional
└ type string optional
└ phone string optional
└ wa_id string optional
└ birthday string optional
└ addresses array optional
└ zip string required
└ city string required
└ type string required
└ state string required
└ street string required
└ country string required
└ country_code string required
document object optional
location object optional
└ name string required
└ address string required
└ latitude string required
└ longitude string required
preview_url boolean optional
recipient_type string optional

Responses

200 —
POST /messages
PUT /messages/{MessageID}
operationId: Messages_markAsRead

Parameters

Name In Required Type Description
MessageID path required string

Message ID from Webhook

Request Body

required
application/json
schema Mark-Message-As-Read-Request-Body
Property Type Required
status string required

Responses

200 —
PUT /messages/{MessageID}

Profile 5 endpoints

GET /settings/profile/about
operationId: Profile_getAbout

Responses

200 —
GET /settings/profile/about
PATCH /settings/profile/about
operationId: Profile_updateAbout

Request Body

required
application/json
schema Profile-About
Property Type Required
text string required

Responses

200 —
PATCH /settings/profile/about
DELETE /settings/profile/photo
operationId: Profile_removePhoto

Responses

200 —
DELETE /settings/profile/photo
GET /settings/profile/photo
operationId: Profile_getPhoto

Parameters

Name In Required Type Description
format query optional string —

Responses

200 —
GET /settings/profile/photo
POST /settings/profile/photo
operationId: Profile_updatePhoto

Request Body

multipart/form-data
schema ProfileUpdatePhotoRequest
Property Type Required
File string required

Responses

200 —
POST /settings/profile/photo

Registration 2 endpoints

POST /account
operationId: Registration_requestCode

Request Body

required
application/json
schema Request-Code-Request-Body
Property Type Required
cc string required
pin string optional
cert string required
method string required
phone_number string required

Responses

201

Created: the account already exists. You are already registered, so you do not need to do anything else.

202

Created: the account does not exist. Depending on the method selected in the request, check your SMS or voice number for the registration code.

POST /account
POST /account/verify
operationId: Registration_verifyAccount

Request Body

required
application/json
schema Register-Account-Request-Body
Property Type Required
code string required

Responses

200 —
POST /account/verify

Twostepverification 2 endpoints

DELETE /settings/account/two-step
operationId: TwoStepVerification_disable

Responses

200 —
DELETE /settings/account/two-step
POST /settings/account/two-step
operationId: TwoStepVerification_enableAccount

Request Body

required
application/json
schema Enable-Two-Step-Request-Body
Property Type Required
pin string required

Responses

200 —
POST /settings/account/two-step

Users 1 endpoints

POST /users
operationId: Users_createUser

Request Body

required
application/json
schema Create-User-Request-Body
Property Type Required
password string required
username string required

Responses

200 —
POST /users

Schemas

object 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"
    }
  }
}
object 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"
    }
  }
}
array ApplicationUpdateMediaProvidersRequest
{
  "type": "array",
  "items": {
    "$ref": "#/components/schemas/Media-Provider"
  },
  "description": ""
}
object Audio
{
  "type": "object",
  "oneOf": [
    {
      "$ref": "#/components/schemas/AudioById"
    },
    {
      "$ref": "#/components/schemas/AudioByProvider"
    }
  ],
  "title": "Audio",
  "description": "The media object containing audio"
}
object AudioById
{
  "type": "object",
  "title": "AudioById",
  "example": {
    "id": "<Media Id, from Media API>"
  },
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "string"
    }
  }
}
object 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"
    }
  }
}
object 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": ""
}
object 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"
    }
  }
}
object 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."
}
object Basic
{
  "type": "object",
  "title": "Root Type for Basic",
  "example": {
    "password": "your-password",
    "username": "your-username"
  },
  "properties": {
    "password": {
      "type": "string"
    },
    "username": {
      "type": "string"
    }
  },
  "description": ""
}
object 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"
    }
  }
}
object 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": ""
}
object 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": ""
}
string CertificatesDownloadCaCertificateResponse
{
  "type": "string",
  "format": "binary"
}
string CertificatesDownloadWebhookCaCertificateResponse
{
  "type": "string",
  "format": "binary"
}
string CertificatesUploadExternalCertificateRequest
{
  "type": "string",
  "format": "binary"
}
string CertificatesUploadWebhookCaCertificateRequest
{
  "type": "string",
  "format": "binary"
}
object 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": ""
}
object 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."
    }
  }
}
object 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": ""
}
object 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": ""
}
object Config
{
  "oneOf": [
    {
      "$ref": "#/components/schemas/Config-Bearer"
    },
    {
      "$ref": "#/components/schemas/Config-Basic"
    }
  ],
  "title": "Config"
}
object Config-Basic
{
  "type": "object",
  "title": "Config",
  "example": {
    "basic": {
      "password": "your-password",
      "username": "your-username"
    }
  },
  "properties": {
    "basic": {
      "$ref": "#/components/schemas/Basic"
    }
  }
}
object Config-Bearer
{
  "type": "object",
  "title": "Config",
  "example": {
    "bearer": "<Bearer Auth Token>"
  },
  "required": [
    "bearer"
  ],
  "properties": {
    "bearer": {
      "type": "string"
    }
  }
}
object 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)"
    }
  }
}
object Create-Group-Request-Body
{
  "type": "object",
  "title": "Create-Group-Request",
  "example": {
    "subject": "<Group Subject>"
  },
  "required": [
    "subject"
  ],
  "properties": {
    "subject": {
      "type": "string"
    }
  }
}
object 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"
    }
  }
}
object 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": ""
}
object 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"
}
object 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."
}
object 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"
}
object 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": ""
}
object 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": ""
}
object Document
{
  "type": "object",
  "oneOf": [
    {
      "$ref": "#/components/schemas/DocumentById"
    },
    {
      "$ref": "#/components/schemas/DocumentByProvider"
    }
  ],
  "title": "Document",
  "description": "The media object containing a document"
}
object 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"
    }
  }
}
object 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"
    }
  }
}
object 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"
    }
  }
}
object Enable-Two-Step-Request-Body
{
  "type": "object",
  "title": "Enable-Two-Step-Request",
  "example": {
    "pin": "your-6-digit-pin"
  },
  "required": [
    "pin"
  ],
  "properties": {
    "pin": {
      "type": "string"
    }
  }
}
object 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": ""
}
object 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": ""
}
string Gateway-Status
{
  "enum": [
    "connected",
    "connecting",
    "disconnected",
    "uninitialized",
    "unregistered"
  ],
  "type": "string",
  "description": ""
}
object 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": ""
}
object 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": ""
}
object 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": ""
}
object 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": ""
}
object 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": ""
}
object 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"
    }
  }
}
object 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": ""
}
object Group-Invite
{
  "type": "object",
  "title": "Group-Invite",
  "example": {
    "link": "group-invite-link"
  },
  "properties": {
    "link": {
      "type": "string"
    }
  },
  "description": ""
}
object 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": ""
}