Properties
| Name | Type | Description |
|---|---|---|
| messaging_product | string | |
| recipient_type | string | |
| to | string | Recipient phone number in E.164 format without the leading + |
| type | string | |
| context | object | Context for reply messages |
| biz_opaque_callback_data | string | Arbitrary string for tracking, returned in webhooks |
| status | string | Set to read to mark an incoming message as read |
| message_id | string | ID of the message to mark as read (required when status is read) |
| text | object | |
| image | object | |
| video | object | |
| audio | object | |
| document | object | |
| sticker | object | |
| location | object | |
| contacts | array | |
| interactive | object | |
| template | object | |
| reaction | object |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://raw.githubusercontent.com/api-evangelist/whatsapp/refs/heads/main/json-schema/whatsapp-cloud-api-send-message-request-schema.json",
"title": "SendMessageRequest",
"description": "SendMessageRequest from WhatsApp API",
"type": "object",
"properties": {
"messaging_product": {
"type": "string",
"enum": [
"whatsapp"
],
"example": "whatsapp"
},
"recipient_type": {
"type": "string",
"default": "individual",
"example": "text"
},
"to": {
"type": "string",
"description": "Recipient phone number in E.164 format without the leading +",
"example": "example_value"
},
"type": {
"type": "string",
"enum": [
"text",
"image",
"video",
"audio",
"document",
"sticker",
"location",
"contacts",
"interactive",
"template",
"reaction"
],
"example": "text"
},
"context": {
"type": "object",
"description": "Context for reply messages",
"properties": {
"message_id": {
"type": "string",
"description": "ID of the message being replied to"
}
}
},
"biz_opaque_callback_data": {
"type": "string",
"description": "Arbitrary string for tracking, returned in webhooks",
"example": "example_value"
},
"status": {
"type": "string",
"enum": [
"read"
],
"description": "Set to read to mark an incoming message as read",
"example": "read"
},
"message_id": {
"type": "string",
"description": "ID of the message to mark as read (required when status is read)",
"example": "wamid.abc123"
},
"text": {
"$ref": "#/components/schemas/TextMessage"
},
"image": {
"$ref": "#/components/schemas/MediaObject"
},
"video": {
"$ref": "#/components/schemas/MediaObject"
},
"audio": {
"$ref": "#/components/schemas/AudioObject"
},
"document": {
"$ref": "#/components/schemas/DocumentObject"
},
"sticker": {
"$ref": "#/components/schemas/StickerObject"
},
"location": {
"$ref": "#/components/schemas/LocationMessage"
},
"contacts": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ContactObject"
}
},
"interactive": {
"$ref": "#/components/schemas/InteractiveMessage"
},
"template": {
"$ref": "#/components/schemas/TemplateMessage"
},
"reaction": {
"$ref": "#/components/schemas/ReactionMessage"
}
},
"required": [
"messaging_product",
"to",
"type"
]
}
Work with this as data
Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/whatsapp-cloud-api-send-message-request"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.