Skip to the page

API reference

List templates

Your saved texts, newest first, with the variables each one names.

GET/v1/templates

Your saved texts, newest first, with the variables each one names. q finds them by name.

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

Query parameters

  • qstring

    Only templates whose name or words have this in them.

    Up to 80 characters.

  • limitinteger

    How many to return, 1 to 100. Default 25.

    1 to 100.Default 25.

  • cursorstring

    The next_cursor of the page before. Leave it out for the first page.

    Up to 200 characters.

Example

GET/v1/templatesList templates →
curl "https://usebluebot.com/api/v1/templates" \
  -H "Authorization: Bearer $BLUEBOT_API_KEY"

Response

200: A page of templates.

  • object"list"required
  • dataarray of Templaterequired
    Show its 7 fields
    • 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.

  • has_morebooleanrequired

    Whether another page follows.

  • next_cursorstring or nullrequired

    Send as cursor for the next page; null on the last.

Response200
{
  "object": "list",
  "data": [
    {
      "id": "tpl_1Hq2LxW9cVbN3mKpRtYs0a",
      "object": "template",
      "name": "Showing reminder",
      "body": "Hi {{first_name|there}}, see you at {{showing}} tomorrow.",
      "variables": [
        "first_name",
        "showing"
      ],
      "created_at": "2026-11-10T16:00:00.000Z",
      "updated_at": "2026-11-10T16:00:00.000Z"
    }
  ],
  "has_more": false,
  "next_cursor": null
}

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.

Try it

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