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
3 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": ""
}