BluetickedDeveloper docs

Journeys

3 endpoints, each with examples that open in the console prefilled.

All resources
GET/api/v1/journeysjourneys:readTry in console

List journeys

Every journey with its status, step count and enrolment trigger.

Query parameters
statusstring
business_idstring
  • status filters to active, paused, draft or archived. Only active journeys accept enrolments.
  • Optional business_id (UUID) filters to one business. A business-restricted key may name only a business it holds; another business answers 403 forbidden, and a malformed UUID answers 400 validation_failed. Without the filter, an organization-wide key lists every journey in its organization (the 100 most recently updated).
  • enrolment_trigger names the automatic entry rule when one is set; null means contacts enter only by explicit enrolment.
curl -X GET "https://app.blueticked.com/api/v1/journeys?status=active" \
  -H "Authorization: Bearer $BLUETICKED_API_KEY"
Response
{
  "ok": true,
  "journeys": [
    {
      "id": "6c3829fd-a82a-404c-821c-4aabc430fb70",
      "business_id": "8070c984-41f6-4bfa-900b-1ce8750ad439",
      "name": "New patient onboarding",
      "status": "active",
      "step_count": 4,
      "enrolment_trigger": null,
      "reenroll_completed": false,
      "created_at": "2026-07-01T09:00:00.000Z",
      "updated_at": "2026-08-01T10:00:00.000Z"
    }
  ]
}
GET/api/v1/journeys/{id}journeys:readTry in console

Get one journey

One journey in full, its raw steps included.

  • steps is the same JSON the dashboard builder edits: sends, waits and branches in order.
  • Email send steps may carry optional messageType: marketing or transactional. Existing legacy steps without it remain marketing. Transactional identifies a service message; opt-out and suppression checks still apply.
curl -X GET "https://app.blueticked.com/api/v1/journeys/{id}" \
  -H "Authorization: Bearer $BLUETICKED_API_KEY"
Response
{
  "ok": true,
  "journey": {
    "id": "6c3829fd-a82a-404c-821c-4aabc430fb70",
    "business_id": "8070c984-41f6-4bfa-900b-1ce8750ad439",
    "name": "New patient onboarding",
    "status": "active",
    "step_count": 4,
    "enrolment_trigger": null,
    "reenroll_completed": false,
    "created_at": "2026-07-01T09:00:00.000Z",
    "updated_at": "2026-08-01T10:00:00.000Z",
    "steps": [
      {
        "type": "send",
        "channel": "email",
        "subject": "Your equipment assessment",
        "body": "Hi {{first_name}}, your assessment is confirmed for Tuesday at 09:30.",
        "messageType": "transactional"
      }
    ]
  }
}
POST/api/v1/journeys/{id}/enrolljourneys:enrollTry in console

Enroll contacts in a journey

Put contacts onto an active journey. They start receiving its programme from step one.

Body parameters
contact_idsrequiredstring[]
  • Send-class on purpose: enrolment starts messages over days, so journeys:enroll sits outside the agent Prepare profile the way every send scope does.
  • A journey that is not active answers 409 journey_not_active. Activation is a human act in the dashboard.
  • Up to 500 contact_ids per call; skipped counts contacts already on the journey, capped counts ids beyond the per-call limit that were not attempted.
  • For an organization-wide key, missing, deleted or other-business contacts count as failed; eligible contacts still enroll. Sandbox keys report eligibility counts without inserting or sending. Business-restricted keys retain whole-request contact authority checks.
  • unavailable_contact_ids lists the requested ids that were not eligible, deduplicated in request order, in both live and sandbox responses. It is empty when every requested contact is eligible. It does not expose why an id was unavailable or any contact data.
curl -X POST "https://app.blueticked.com/api/v1/journeys/{id}/enroll" \
  -H "Authorization: Bearer $BLUETICKED_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "contact_ids": [
    "ff506e53-e2f0-4d92-884a-dab77d628bad",
    "e6187c6f-a272-4854-a6fc-8adf1869ec0d"
  ]
}'
Response
{
  "ok": true,
  "enrolled": 1,
  "skipped": 0,
  "failed": 1,
  "capped": 0,
  "unavailable_contact_ids": [
    "e6187c6f-a272-4854-a6fc-8adf1869ec0d"
  ]
}