Skip to main content

Outreach

Every call needs Authorization: Bearer <key>. 7 calls:

List outreach campaigns, newest first​

GET /v1/outreach

Query parameters

NameTypeRequiredDescription
limitintegerNoFrom 1 to 100. Default 50.
cursorstringNoOpaque cursor from next_cursor. Up to 512 characters.
statusenumNoOne of: draft, scheduled, live, paused, completed, cancelled.

Headers

NameTypeRequiredDescription
x-workspace-idstringNoWorkspace for session (JWT) callers. API keys carry their own workspace.

Response 200

FieldTypeDescription
dataobject[]
data[].created_atstring (date-time)ISO 8601 timestamp.
data[].finished_atstring (date-time) or nullISO 8601 timestamp.
data[].idstring (uuid)
data[].kindenumOne of: one_off, sequence.
data[].namestring
data[].per_line_throttleinteger or nullFrom 1 to 9007199254740991.
data[].pool_idstring or nullPool id (pool_...).
data[].recipientsintegerFrom 0 to 9007199254740991.
data[].schedule_atstring (date-time) or nullISO 8601 timestamp.
data[].segment_idstring (uuid) or null
data[].started_atstring (date-time) or nullISO 8601 timestamp.
data[].statsobject
data[].statusenumOne of: draft, scheduled, live, paused, completed, cancelled.
data[].stepsobject[]
data[].steps[].delay_hoursintegerFrom 1 to 720.
data[].steps[].stop_on_replybooleanDefault true.
data[].steps[].templatestringUp to 2000 characters.
data[].templatestring
data[].updated_atstring (date-time)ISO 8601 timestamp.
next_cursorstring or nullPass as cursor to get the next page; null at the end.

Errors: 400, 401, 403, 404, 409, 413, 415, 429, 500. See errors for the shape and codes.

Create a draft campaign​

POST /v1/outreach

Headers

NameTypeRequiredDescription
x-workspace-idstringNoWorkspace for session (JWT) callers. API keys carry their own workspace.
idempotency-keystringNoMakes the write safe to retry for 24 hours. 1 to 255 printable characters. Keys starting with outreach:, workflow: or agent: are reserved for messages bubbl3 sends itself and are refused with 400. Up to 255 characters.

Request body

FieldTypeRequiredDescription
kindenumNoOne of: one_off, sequence. Default "one_off".
namestringYesUp to 120 characters.
per_line_throttleintegerNoCampaign messages per hour for each sending line, applied across the pool: at most lines × this an hour, and one line may carry more than its share. The governor still caps each line. From 1 to 50.
pool_idstringNoPool id (pool_...).
segment_idstring (uuid)Yes
stepsobject[]NoUp to 10 items.
steps[].delay_hoursintegerYesFrom 1 to 720.
steps[].stop_on_replybooleanNoDefault true.
steps[].templatestringYesUp to 2000 characters.
templatestringYesUp to 2000 characters.

Response 201

FieldTypeDescription
created_atstring (date-time)ISO 8601 timestamp.
finished_atstring (date-time) or nullISO 8601 timestamp.
idstring (uuid)
kindenumOne of: one_off, sequence.
namestring
per_line_throttleinteger or nullFrom 1 to 9007199254740991.
pool_idstring or nullPool id (pool_...).
recipientsintegerFrom 0 to 9007199254740991.
schedule_atstring (date-time) or nullISO 8601 timestamp.
segment_idstring (uuid) or null
started_atstring (date-time) or nullISO 8601 timestamp.
statsobject
statusenumOne of: draft, scheduled, live, paused, completed, cancelled.
stepsobject[]
steps[].delay_hoursintegerFrom 1 to 720.
steps[].stop_on_replybooleanDefault true.
steps[].templatestringUp to 2000 characters.
templatestring
updated_atstring (date-time)ISO 8601 timestamp.

Errors: 400, 401, 403, 404, 409, 413, 415, 429, 500. See errors for the shape and codes.

Get a campaign with its sending capacity​

GET /v1/outreach/:id

Capacity is what the campaign's lines can carry now: lines, new contacts left today after messages already waiting, the hourly ceiling and a rough finish time.

Path parameters

NameTypeRequiredDescription
idstring (uuid)Yes

Headers

NameTypeRequiredDescription
x-workspace-idstringNoWorkspace for session (JWT) callers. API keys carry their own workspace.

Response 200

FieldTypeDescription
capacityobject
capacity.estimated_finish_atstring (date-time) or nullISO 8601 timestamp.
capacity.linesintegerFrom 0 to 9007199254740991.
capacity.new_contacts_left_todayintegerFrom 0 to 9007199254740991.
capacity.per_hourintegerFrom 0 to 9007199254740991.
capacity.remainingintegerFrom 0 to 9007199254740991.
created_atstring (date-time)ISO 8601 timestamp.
finished_atstring (date-time) or nullISO 8601 timestamp.
idstring (uuid)
kindenumOne of: one_off, sequence.
namestring
per_line_throttleinteger or nullFrom 1 to 9007199254740991.
pool_idstring or nullPool id (pool_...).
recipientsintegerFrom 0 to 9007199254740991.
schedule_atstring (date-time) or nullISO 8601 timestamp.
segment_idstring (uuid) or null
started_atstring (date-time) or nullISO 8601 timestamp.
statsobject
statusenumOne of: draft, scheduled, live, paused, completed, cancelled.
stepsobject[]
steps[].delay_hoursintegerFrom 1 to 720.
steps[].stop_on_replybooleanDefault true.
steps[].templatestringUp to 2000 characters.
templatestring
updated_atstring (date-time)ISO 8601 timestamp.
variablesstring[]

Errors: 400, 401, 403, 404, 409, 413, 415, 429, 500. See errors for the shape and codes.

Edit a draft, or pause or resume a campaign​

PATCH /v1/outreach/:id

Content changes only while the campaign is a draft. status: paused stops releasing messages (already-queued ones still go out); status: live resumes a paused campaign.

Path parameters

NameTypeRequiredDescription
idstring (uuid)Yes

Headers

NameTypeRequiredDescription
x-workspace-idstringNoWorkspace for session (JWT) callers. API keys carry their own workspace.
idempotency-keystringNoMakes the write safe to retry for 24 hours. 1 to 255 printable characters. Keys starting with outreach:, workflow: or agent: are reserved for messages bubbl3 sends itself and are refused with 400. Up to 255 characters.

Request body

FieldTypeRequiredDescription
namestringNoUp to 120 characters.
per_line_throttleinteger or nullNoCampaign messages per hour for each sending line, applied across the pool: at most lines × this an hour, and one line may carry more than its share. The governor still caps each line. From 1 to 50.
pool_idstring or nullNoPool id (pool_...).
segment_idstring (uuid)No
statusenumNoOne of: paused, live.
stepsobject[]NoUp to 10 items.
steps[].delay_hoursintegerYesFrom 1 to 720.
steps[].stop_on_replybooleanNoDefault true.
steps[].templatestringYesUp to 2000 characters.
templatestringNoUp to 2000 characters.

Response 200

FieldTypeDescription
created_atstring (date-time)ISO 8601 timestamp.
finished_atstring (date-time) or nullISO 8601 timestamp.
idstring (uuid)
kindenumOne of: one_off, sequence.
namestring
per_line_throttleinteger or nullFrom 1 to 9007199254740991.
pool_idstring or nullPool id (pool_...).
recipientsintegerFrom 0 to 9007199254740991.
schedule_atstring (date-time) or nullISO 8601 timestamp.
segment_idstring (uuid) or null
started_atstring (date-time) or nullISO 8601 timestamp.
statsobject
statusenumOne of: draft, scheduled, live, paused, completed, cancelled.
stepsobject[]
steps[].delay_hoursintegerFrom 1 to 720.
steps[].stop_on_replybooleanDefault true.
steps[].templatestringUp to 2000 characters.
templatestring
updated_atstring (date-time)ISO 8601 timestamp.

Errors: 400, 401, 403, 404, 409, 413, 415, 429, 500. See errors for the shape and codes.

Cancel a campaign​

POST /v1/outreach/:id/cancel

Nothing more is released: unsent messages are skipped. Messages already queued still go out. Allowed while the organisation is paused.

Path parameters

NameTypeRequiredDescription
idstring (uuid)Yes

Headers

NameTypeRequiredDescription
x-workspace-idstringNoWorkspace for session (JWT) callers. API keys carry their own workspace.
idempotency-keystringNoMakes the write safe to retry for 24 hours. 1 to 255 printable characters. Keys starting with outreach:, workflow: or agent: are reserved for messages bubbl3 sends itself and are refused with 400. Up to 255 characters.

Response 200

FieldTypeDescription
created_atstring (date-time)ISO 8601 timestamp.
finished_atstring (date-time) or nullISO 8601 timestamp.
idstring (uuid)
kindenumOne of: one_off, sequence.
namestring
per_line_throttleinteger or nullFrom 1 to 9007199254740991.
pool_idstring or nullPool id (pool_...).
recipientsintegerFrom 0 to 9007199254740991.
schedule_atstring (date-time) or nullISO 8601 timestamp.
segment_idstring (uuid) or null
started_atstring (date-time) or nullISO 8601 timestamp.
statsobject
statusenumOne of: draft, scheduled, live, paused, completed, cancelled.
stepsobject[]
steps[].delay_hoursintegerFrom 1 to 720.
steps[].stop_on_replybooleanDefault true.
steps[].templatestringUp to 2000 characters.
templatestring
updated_atstring (date-time)ISO 8601 timestamp.

Errors: 400, 401, 403, 404, 409, 413, 415, 429, 500. See errors for the shape and codes.

Schedule a draft campaign​

POST /v1/outreach/:id/schedule

Fixes the recipients: the segment's contacts now, less anyone opted out. Refused when a template has no variables or would send the same text to more people than a line may send it in a day, or breaks the rules for texts to people who haven't replied yet: links, phone numbers, emails, length and number of messages. The worker then releases messages through the governor.

Path parameters

NameTypeRequiredDescription
idstring (uuid)Yes

Headers

NameTypeRequiredDescription
x-workspace-idstringNoWorkspace for session (JWT) callers. API keys carry their own workspace.
idempotency-keystringNoMakes the write safe to retry for 24 hours. 1 to 255 printable characters. Keys starting with outreach:, workflow: or agent: are reserved for messages bubbl3 sends itself and are refused with 400. Up to 255 characters.

Request body

FieldTypeRequiredDescription
schedule_atstring (date-time)NoOmit to start now.

Response 200

FieldTypeDescription
created_atstring (date-time)ISO 8601 timestamp.
finished_atstring (date-time) or nullISO 8601 timestamp.
idstring (uuid)
kindenumOne of: one_off, sequence.
namestring
per_line_throttleinteger or nullFrom 1 to 9007199254740991.
pool_idstring or nullPool id (pool_...).
recipientsintegerFrom 0 to 9007199254740991.
schedule_atstring (date-time) or nullISO 8601 timestamp.
segment_idstring (uuid) or null
started_atstring (date-time) or nullISO 8601 timestamp.
statsobject
statusenumOne of: draft, scheduled, live, paused, completed, cancelled.
stepsobject[]
steps[].delay_hoursintegerFrom 1 to 720.
steps[].stop_on_replybooleanDefault true.
steps[].templatestringUp to 2000 characters.
templatestring
updated_atstring (date-time)ISO 8601 timestamp.

Errors: 400, 401, 403, 404, 409, 413, 415, 429, 500. See errors for the shape and codes.

List a campaign's recipients and where each message is​

GET /v1/outreach/:id/sends

Path parameters

NameTypeRequiredDescription
idstring (uuid)Yes

Query parameters

NameTypeRequiredDescription
limitintegerNoFrom 1 to 100. Default 50.
cursorstringNoOpaque cursor from next_cursor. Up to 512 characters.
statusenumNoOne of: pending, queued, sent, delivered, replied, failed, skipped.

Headers

NameTypeRequiredDescription
x-workspace-idstringNoWorkspace for session (JWT) callers. API keys carry their own workspace.

Response 200

FieldTypeDescription
dataobject[]
data[].contact_idstringContact id (ctc_...).
data[].contact_namestring or null
data[].error_codestring or null
data[].idstring (uuid)
data[].line_idstring or nullLine id (ln_...).
data[].message_idstring or nullMessage id (msg_...).
data[].phonestring
data[].scheduled_forstring (date-time) or nullISO 8601 timestamp.
data[].statusenumOne of: pending, queued, sent, delivered, replied, failed, skipped.
data[].stepintegerFrom 0 to 9007199254740991.
data[].updated_atstring (date-time)ISO 8601 timestamp.
next_cursorstring or nullPass as cursor to get the next page; null at the end.

Errors: 400, 401, 403, 404, 409, 413, 415, 429, 500. See errors for the shape and codes.