Sign inGet Started

Create a template draft

POST
/v1/whatsapp/templates/{template_ref}/versions
const draft = await bird.whatsapp.templates.versions.create("order_update");
console.log(draft.id);
Response200
{
  "id": "wav_01krdgeqcxet5s7t44vh8rt9mg",
  "template_id": "wat_01krdgeqcxet5s7t44vh8rt9mg",
  "version_number": 4,
  "submitted_at": "2026-07-20T11:04:00Z",
  "languages": {
    "en": {
      "status": "approved",
      "components": [
        {
          "type": "body",
          "text": "Your verification code is {{1}}.",
          "example_parameters": [
            {
              "type": "text",
              "text": "123456"
            }
          ]
        }
      ]
    }
  },
  "created_at": "2026-07-20T10:31:00Z"
}

Opens the template's draft, seeded from the newest submitted version, or an empty draft if the template has none. A template has at most one open draft. The API returns 200 with an existing draft and 201 when this call opens one; both responses use the same body shape. Read the template's draft_version_id first if you do not want to open a draft.

A WhatsApp template has no draft until this call opens one. The email channel has no equivalent operation, because an email template's draft always exists.

Parameters

template_refstring

Template ID (wat_ prefix) or slug. A value that parses as a valid ID resolves by ID; any other value resolves as a slug.

Response Payload

id
string
required

Stable Bird identifier for the version.

template_id
string
required

The template this version belongs to.

version_number
nullable integer

The version's sequence number, assigned when it is submitted. Null on a draft, which has not been submitted and has no place in the sequence yet.

submitted_at
nullable string
required

When this version was submitted to Meta. Null on a draft, which has not been submitted, and null for a built-in template's version, which Bird ships already approved rather than submitting on your behalf.

languages
object
required

This version's content, keyed by BCP-47 language tag, with what its submission did with each language.

created_at
nullable string
required

When the version was opened. Null for a built-in template's version, which Bird ships rather than stores.

Continue with the documentation, guides and examples for this topic.