Elocuenti · Schema

TemplateResponse

CompanyArtificial IntelligenceConversational AIOmnichannelAutomationIntegration

Properties

Name Type Description
data object
request_id string The identifier of this request. Give it to support if you need help.
simulated boolean `true` only with a sandbox key: the request was checked in full and nothing was sent to WhatsApp or saved.
View JSON Schema on GitHub

JSON Schema

elocuenti-com-template-response-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/elocuenti-com/json-schema/elocuenti-com-template-response-schema.json",
  "title": "TemplateResponse",
  "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/TemplateResponse",
  "type": "object",
  "properties": {
    "data": {
      "$ref": "#/$defs/Template"
    },
    "request_id": {
      "type": "string",
      "description": "The identifier of this request. Give it to support if you need help.",
      "title": "Request Id"
    },
    "simulated": {
      "description": "`true` only with a sandbox key: the request was checked in full and nothing was sent to WhatsApp or saved.",
      "type": "boolean",
      "title": "Simulated"
    }
  },
  "required": [
    "data",
    "request_id"
  ],
  "$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.
All 92 tools →

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/elocuenti-com-template-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.