Elocuenti · Schema
TemplatesResponse
CompanyArtificial IntelligenceConversational AIOmnichannelAutomationIntegration
Properties
| Name | Type | Description |
|---|---|---|
| data | array | |
| request_id | string | The identifier of this request. Give it to support if you need help. |
| next_cursor | object | Send it as `cursor` to get the next page. `null` on the last page. |
| has_more | boolean | `true` when there is another page. |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://artifacts.apis.io/elocuenti-com/json-schema/elocuenti-com-templates-response-schema.json",
"title": "TemplatesResponse",
"x-generated": "2026-11-10",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/elocuenti-com-templates-api-openapi.yml#/components/schemas/TemplatesResponse",
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/$defs/Template"
},
"title": "Data"
},
"request_id": {
"type": "string",
"description": "The identifier of this request. Give it to support if you need help.",
"title": "Request Id"
},
"next_cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Send it as `cursor` to get the next page. `null` on the last page.",
"title": "Next Cursor"
},
"has_more": {
"type": "boolean",
"description": "`true` when there is another page.",
"title": "Has More"
}
},
"required": [
"data",
"request_id",
"next_cursor",
"has_more"
],
"$defs": {
"Template": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "The name of the template: what you use to read, delete and send it.",
"title": "Name"
},
"language": {
"type": "string",
"description": "The language of the template (`es`, `en_US`…).",
"title": "Language"
},
"category": {
"type": "string",
"enum": [
"marketing",
"utility",
"authentication"
],
"description": "What the template is for, as WhatsApp keeps it. WhatsApp can reassign the category when it reviews the content, so it may differ from the one you asked for.",
"title": "Category"
},
"status": {
"type": "string",
"enum": [
"draft",
"submitting",
"pending",
"approved",
"rejected",
"paused",
"disabled",
"flagged"
],
"description": "`pending`: in WhatsApp's review. `approved`: you can send it. `rejected`: not approved (see `rejection_reason`). `paused`: stopped for low quality. `disabled`: turned off for good. `flagged`: approved, with quality problems. `draft`: saved in the dashboard, never sent for review. `submitting`: just created; read it again in a few minutes (it becomes `pending`, or disappears if WhatsApp never got it).",
"title": "Status"
},
"rejection_reason": {
"anyOf": [
{
"type": "string",
"enum": [
"incorrect_category",
"promotional_content",
"abusive_content",
"scam",
"invalid_format",
"too_long",
"variables_too_many_for_text",
"variable_at_edge",
"missing_opt_out",
"other"
]
},
{
"type": "null"
}
],
"description": "Why WhatsApp did not approve it: `incorrect_category` (the content does not match the category), `promotional_content` (a promotion in a `utility` template), `abusive_content`, `scam`, `invalid_format`, `too_long`, `variables_too_many_for_text` (too many variables for so little text), `variable_at_edge` (it starts or ends with a variable), `missing_opt_out` (a marketing template must say how to stop receiving messages) or `other`. `null` when it was not rejected.",
"title": "Rejection Reason"
},
"header": {
"anyOf": [
{
"$ref": "#/$defs/TemplateHeader"
},
{
"type": "null"
}
],
"description": "The header, or `null` if it has none."
},
"body": {
"type": "string",
"description": "The message, with its variables written `{{1}}`, `{{2}}`…",
"title": "Body"
},
"footer": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The line under the message, or `null` if it has none.",
"title": "Footer"
},
"buttons": {
"type": "array",
"items": {
"$ref": "#/$defs/TemplateButton"
},
"description": "The buttons, in order. Empty if it has none.",
"title": "Buttons"
},
"parameters": {
"type": "array",
"items": {
"$ref": "#/$defs/TemplateParameter"
},
"description": "The variables you fill in when you send the template, in the order they appear. Empty when it has none, and while its status is `submitting` (it is not a template at WhatsApp yet).",
"title": "Parameters"
},
"created_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "When it was created (UTC, ISO 8601).",
"title": "Created At"
},
"updated_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "When it last changed (UTC, ISO 8601), or `null` if it never did.",
"title": "Updated At"
}
},
"required": [
"name",
"language",
"category",
"status",
"rejection_reason",
"header",
"body",
"footer",
"buttons",
"parameters",
"created_at",
"updated_at"
],
"description": "A WhatsApp message template of your business.",
"title": "Template"
},
"TemplateButton": {
"type": "object",
"properties": {
"type": {
"type": "string",
"description": "The kind of button: `QUICK_REPLY`, `URL` or `PHONE_NUMBER`. Templates made in the dashboard can also have others (`COPY_CODE`, `FLOW`…).",
"title": "Type"
},
"text": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The label of the button.",
"title": "Text"
},
"url": {
"description": "Only `URL` buttons: the address it opens, with `{{1}}` if it changes per message.",
"type": "string",
"title": "Url"
},
"phone_number": {
"description": "Only `PHONE_NUMBER` buttons: the number it calls.",
"type": "string",
"title": "Phone Number"
}
},
"required": [
"type",
"text"
],
"description": "A button of a template.",
"title": "TemplateButton"
},
"TemplateHeader": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"text",
"image",
"video",
"document"
],
"description": "The kind of header: a line of text, or an image, a video or a document.",
"title": "Type"
},
"text": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The header text, with its variable as `{{1}}` if it has one. `null` when the header is an image, a video or a document: the file itself is only available in the dashboard.",
"title": "Text"
}
},
"required": [
"type",
"text"
],
"description": "The header of a template.",
"title": "TemplateHeader"
},
"TemplateParameter": {
"type": "object",
"properties": {
"key": {
"type": "string",
"description": "The key to use in `template.params` of `POST /api/v1/messages`: `header:1`, `body:1`, `body:2`… are the variables of the header and the body (from 1 in each); `button:0:1` is the variable of the link of the button at position 0; `header:media` is the file of an image, video or document header.",
"title": "Key"
},
"component": {
"type": "string",
"enum": [
"header",
"body",
"button"
],
"description": "Where the variable is: the header, the body or a button.",
"title": "Component"
},
"type": {
"type": "string",
"enum": [
"text",
"image",
"video",
"document"
],
"description": "What the value is: a text, or the public link of an image, video or document for a media header.",
"title": "Type"
}
},
"required": [
"key",
"component",
"type",
"example"
],
"description": "A variable of the template that you fill in each time you send it.",
"title": "TemplateParameter"
}
}
}
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/elocuenti-com-templates-response"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
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.