Sequencers

Connect a sending tool

POST
/v1/sequencer-connections

Connects your account at a sending tool. We check it with the tool before saving: one it refuses is answered 422 with the reason, and nothing is saved. Keys and passwords are kept sealed by our mailbox platform and never shown again. See GET /v1/sequencers/platforms for what each tool needs.

Authorization

apiKey
headerAuthorizationBearer <token>

An API key from the Developers page. rhq_test_ keys reach the sandbox, rhq_live_ keys the live side.

Header Parameters

Idempotency-Key?string

A value unique to this request, such as a UUID. A retry with the same key within 24 hours returns the first outcome instead of running again.

Length8 <= length <= 200

Request Body

application/json
  1. body
name*string
Length1 <= length <= 100
platform*string

The sending tool: instantly, smartlead or emailbison

Value in"instantly""smartlead""emailbison"
apiKey?|

The tool's API key

loginEmail?|

Sign-in email, where needed

password?|

Sign-in password

workspace?|

The workspace to export into; leave out for the key's own

appUrl?|

EmailBison: your instance, e.g. https://send.example.com

clientId?|

EmailBison, white-labelled only: your instance’s own Google client ID

settings?

Applied to every mailbox exported through this connection. Null leaves the tool’s default

Response Body

Created

application/json
  1. response

Created

id*string
name*string
platform*string

The sending tool: instantly, smartlead or emailbison

Value in"instantly""smartlead""emailbison"
workspace*|

The workspace at the tool mailboxes go into

appUrl*|

EmailBison: your instance

loginEmail*|

The sign-in email, where the tool uses one

hasApiKey*boolean

An API key is saved. Keys are never returned

hasPassword*boolean

A password is saved. Passwords are never returned

settings*
status*string

active: the tool accepts it. invalid: the tool refused it at its last check (statusReason); new exports to it are refused until it is fixed

Value in"active""invalid"
statusReason*|null
statusMessage*|

What to do about statusReason

validatedAt*|

Last checked with the tool. Checked daily

createdAt*string
Formatdate-time
curl -X POST "https://example.com/v1/sequencer-connections" \  -H "Idempotency-Key: 2f1c9a52-7d0e-4a8e-9a53-0c1f6f3f2b11" \  -H "Content-Type: application/json" \  -d '{    "name": "Acme Instantly",    "platform": "instantly"  }'
{  "id": "sqn_01K6XJ4Q8ZT3M9R5V2B7WDHNCA",  "name": "Acme Instantly",  "platform": "instantly",  "workspace": "string",  "appUrl": "string",  "loginEmail": "string",  "hasApiKey": true,  "hasPassword": true,  "settings": {    "warmup": true,    "warmupLimit": 1,    "warmupIncrement": 1,    "warmupReplyRate": 0,    "dailyLimit": 1,    "sendingGapMinutes": 0,    "slowRamp": true,    "customTracking": true,    "tagIds": [      "string"    ]  },  "status": "active",  "statusReason": "api_key_invalid",  "statusMessage": "string",  "validatedAt": "2026-10-30T11:04:31.000Z",  "createdAt": "2026-10-30T11:04:31.000Z"}