Skip to the page

API reference

Change a template

Changes the name, the text or both.

PATCH/v1/templates/{id}

Changes the name, the text or both. Sequences and keyword replies that use it send the new text from their next text on.

Needs a key with the messages:send scope. Keys and scopes

Path parameters

  • idstringrequired

    The template’s id.

    Starts with tpl_.

Request body

  • namestring

    A name, unique among your templates whatever its capitals.

    Up to 80 characters.

  • bodystring

    The text, up to 2,000 characters, with {{variables}} and {{variable|fallback}}.

    Up to 2,000 characters.

Example

PATCH/v1/templates/tpl_1Hq2LxW9cVbN3mKpRtYs0aChange a template →
curl -X PATCH "https://usebluebot.com/api/v1/templates/tpl_1Hq2LxW9cVbN3mKpRtYs0a" \
  -H "Authorization: Bearer $BLUEBOT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "body": "Hi {{first_name|there}}, a reminder that we see {{showing}} tomorrow at 10."
  }'

Response

200: The template after the change.

  • idstringrequired

    A tpl_ id.

    Starts with tpl_.

  • object"template"required
  • namestringrequired

    Its name, unique among your templates.

  • bodystringrequired

    The text, with {{variables}} and {{variable|fallback}}.

  • variablesarray of stringsrequired

    The variables the text names, in order, once each.

  • created_attimestamprequired

    When it was made.

  • updated_attimestamprequired

    When it last changed.

Response200
{
  "id": "tpl_1Hq2LxW9cVbN3mKpRtYs0a",
  "object": "template",
  "name": "Showing reminder",
  "body": "Hi {{first_name|there}}, a reminder that we see {{showing}} tomorrow at 10.",
  "variables": [
    "first_name",
    "showing"
  ],
  "created_at": "2026-11-10T16:00:00.000Z",
  "updated_at": "2026-11-13T19:41:00.000Z"
}

Errors

Every refusal has the same envelope and a page of its own. These are the ones this operation can give.

CodeStatusWhat it means
unauthorized401The request carried no key, or a key BlueBot doesn’t know: mistyped, revoked, or a test key sent to the live API.
insufficient_scope403The key doesn’t carry the scope the endpoint needs. Each endpoint’s reference names its scope.
rate_limited429Too many requests. A key may make 120 requests a minute. The RateLimit header says how many are left, and Retry-After how long to wait.
internal500Something went wrong on BlueBot’s side. It was reported. Send the request again; with an Idempotency-Key that is always safe.
invalid_request400Something in the request doesn’t fit: a missing or malformed field, a bad id, or a combination the endpoint refuses. details names each field.
not_found404There is no such thing on this account. Ids are prefixed by kind, so a message id starts with msg_.
conflict409The request doesn’t fit the thing’s current state, or another request with the same Idempotency-Key is still running.

Try it

Call this operation from the page with your own key. The key stays in this tab and is forgotten when you leave.