Skip to the page

API reference

List a sequence’s people

Everyone who was added to a sequence, newest first.

GET/v1/sequences/{id}/enrollments

Everyone who was added to a sequence, newest first. contact_id narrows it to one person’s runs, to see whether they are in it now or were before.

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

Path parameters

  • idstringrequired

    The sequence’s id.

    Starts with seq_.

Query parameters

  • statestring

    Only runs in this state.

    One of active, completed, stopped, canceled.

  • contact_idstring

    Only this person’s runs.

    Starts with ct_.

  • 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/sequences/seq_1Hq2LxW9cVbN3mKpRtYs0a/enrollmentsList a sequence’s people →
curl "https://usebluebot.com/api/v1/sequences/seq_1Hq2LxW9cVbN3mKpRtYs0a/enrollments" \
  -H "Authorization: Bearer $BLUEBOT_API_KEY"

Response

200: A page of runs.

  • object"list"required
  • dataarray of Enrollmentrequired
    Show its 14 fields
    • idstringrequired

      A enr_ id.

      Starts with enr_.

    • object"enrollment"required
    • sequence_idstringrequired

      A seq_ id.

      Starts with seq_.

    • contact_idstringrequired

      A ct_ id.

      Starts with ct_.

    • handlestringrequired

      A phone number in E.164 (+15555550123) or an email address an Apple ID uses (iMessage only).

    • statestringrequired

      One of active, completed, stopped, canceled.

    • current_stepintegerrequired

      The position of the next step.

    • next_run_attimestamp or nullrequired

      When the next step happens, while active.

    • stop_reasonstring or nullrequired

      Why it ended early, when it did.

      One of replied, stopped, canceled, sequence_archived, failed.

    • enrolled_viastringrequired

      One of dashboard, api, zapier, make, n8n, pipedream, cli, hook, keyword, mcp, assistant, widget.

    • variablesmap of stringrequired

      Values for the steps’ {{variables}}.

    • enrolled_attimestamprequired

      When the person was added.

    • completed_attimestamp or nullrequired

      When it ended, by finishing or stopping.

    • timelinearray of object

      What happened, oldest first. Only on GET /v1/enrollments/{id}.

      Show its 6 fields
      • typestringrequired

        One of enrolled, text_queued, text_skipped, waiting, window, stopped, completed, canceled.

      • positioninteger or nullrequired

        The step it is about.

      • message_idstring or nullrequired

        A msg_ id.

        Starts with msg_.

      • untiltimestamp or nullrequired

        For a wait, when it ends.

      • detailstring or nullrequired

        What happened, in words.

      • attimestamprequired

        When.

  • 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": "enr_1Hq2LxW9cVbN3mKpRtYs0a",
      "object": "enrollment",
      "sequence_id": "seq_1Hq2LxW9cVbN3mKpRtYs0a",
      "contact_id": "ct_1Hq2LxW9cVbN3mKpRtYs0a",
      "handle": "+15555550123",
      "state": "active",
      "current_step": 2,
      "next_run_at": "2026-11-15T19:41:00.000Z",
      "stop_reason": null,
      "enrolled_via": "api",
      "variables": {
        "listing": "412 Oak St"
      },
      "enrolled_at": "2026-11-13T19:41:00.000Z",
      "completed_at": null
    }
  ],
  "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.
not_found404There is no such thing on this account. Ids are prefixed by kind, so a message id starts with msg_.

Try it

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