Download OpenAPI specification:
The Connext REST API lets you programmatically manage subscribers, send messages, schedule blasts, and view delivery logs for your organization.
All endpoints return JSON and use standard HTTP methods (GET, POST, PATCH, DELETE) with RESTful URL paths.
Every request must include an API key in the Authorization header:
Authorization: Bearer cnxt_your_api_key_here
API keys are scoped to the user who created them. A key inherits the user's organization and permissions — it can only access data within that organization and is limited to the actions the user is allowed to perform.
From the API Keys settings page you can:
The API returns standard HTTP status codes:
| Status | Meaning |
|---|---|
200 |
Success |
201 |
Resource created |
204 |
Resource deleted (no body) |
400 |
Bad request — missing or invalid parameters |
401 |
Unauthorized — invalid or missing API key |
403 |
Forbidden — valid key but insufficient permissions |
404 |
Not found — resource doesn't exist or is outside your organization |
405 |
Method not allowed |
500 |
Server error |
Error responses include a JSON body:
{
"message": "Description of what went wrong"
}
201 with the created resource.200 with the updated resource.204 with no body.200 with an operation result.List endpoints (GET /subscribers, GET /schedules, GET /logs) accept limit and offset query parameters.
GET /v1/subscribers?limit=25&offset=0
| keyword | string Search across name, phone, email, address |
| group | string Filter by group number |
| sort | string Enum: "recipient" "phone" "first" "last" "email" "address" |
| order | string Enum: "asc" "desc" |
| limit required | integer |
| offset required | integer |
[- {
- "id": 0,
- "first": "string",
- "last": "string",
- "phone": "string",
- "email": "string",
- "address": "string",
- "city": "string",
- "state": "string",
- "zip": "string",
- "enabled": 0,
- "text": 0,
- "groups": [
- 0
], - "phoneBlocked": 0,
- "emailBlocked": 0
}
]| phone | string 10-digit phone number (required if no email) |
string <email> Required if no phone | |
| first | string |
| last | string |
| address | string |
| city | string |
| state | string |
| zip | string |
| enabled | boolean Default: true |
| text | boolean Default: false Whether subscriber prefers SMS |
| groups | Array of integers |
{- "phone": "string",
- "email": "user@example.com",
- "first": "string",
- "last": "string",
- "address": "string",
- "city": "string",
- "state": "string",
- "zip": "string",
- "enabled": true,
- "text": false,
- "groups": [
- 0
]
}{- "id": 0,
- "first": "string",
- "last": "string",
- "phone": "string",
- "email": "string",
- "address": "string",
- "city": "string",
- "state": "string",
- "zip": "string",
- "enabled": 0,
- "text": 0,
- "groups": [
- 0
], - "phoneBlocked": 0,
- "emailBlocked": 0
}| id required | integer |
| first | string |
| last | string |
| phone | string |
string <email> | |
| enabled | boolean |
| text | boolean |
| address | string |
| city | string |
| state | string |
| zip | string |
| groups | Array of integers |
{- "first": "string",
- "last": "string",
- "phone": "string",
- "email": "user@example.com",
- "enabled": true,
- "text": true,
- "address": "string",
- "city": "string",
- "state": "string",
- "zip": "string",
- "groups": [
- 0
]
}{- "id": 0,
- "first": "string",
- "last": "string",
- "phone": "string",
- "email": "string",
- "address": "string",
- "city": "string",
- "state": "string",
- "zip": "string",
- "enabled": 0,
- "text": 0,
- "groups": [
- 0
], - "phoneBlocked": 0,
- "emailBlocked": 0
}| recipient required | string 10-digit phone number or email address |
{- "recipient": "string"
}{- "recipient": "string",
- "type": "phone",
- "reason": "string",
- "createdAt": "2019-08-24T14:15:22Z"
}| types required | Array of strings Items Enum: "sms" "voice" "email" "audio" |
| groups required | Array of integers |
| message | string |
| subject | string Email subject line |
| media | Array of objects |
| ivr | boolean |
| shortenLinks | boolean Default: false |
{- "types": [
- "sms"
], - "groups": [
- 0
], - "message": "string",
- "subject": "string",
- "media": [
- { }
], - "ivr": true,
- "shortenLinks": false
}{- "message": "string"
}Sends to the authenticated user only, not to groups.
| types required | Array of strings Items Enum: "sms" "voice" "email" "audio" |
| groups required | Array of integers |
| message | string |
| subject | string |
| media | Array of objects |
| ivr | boolean |
| shortenLinks | boolean Default: false |
{- "types": [
- "sms"
], - "groups": [
- 0
], - "message": "string",
- "subject": "string",
- "media": [
- { }
], - "ivr": true,
- "shortenLinks": false
}{- "message": "string"
}| types required | Array of strings Items Enum: "sms" "voice" "email" "audio" |
| groups required | Array of integers |
| message | string |
| hasMedia required | boolean |
{- "types": [
- "sms"
], - "groups": [
- 0
], - "message": "string",
- "hasMedia": true
}{ }| title required | string |
| types required | Array of strings Items Enum: "sms" "voice" "email" "audio" |
| message | string |
| subject | string |
| voiceFallback | boolean |
| groups | Array of integers |
| dnc | Array of integers |
| media | Array of objects |
| shortenLinks | boolean Default: false |
| ivr | boolean |
{- "title": "string",
- "types": [
- "sms"
], - "message": "string",
- "subject": "string",
- "voiceFallback": true,
- "groups": [
- 0
], - "dnc": [
- 0
], - "media": [
- { }
], - "shortenLinks": false,
- "ivr": true
}{- "id": 0,
- "title": "string",
- "types": [
- "sms"
], - "message": "string",
- "subject": "string",
- "voiceFallback": 0,
- "groups": [
- 0
], - "dnc": [
- 0
], - "files": [ ],
- "shortenLinks": 0,
- "ivr": 0
}| id required | integer |
| title | string |
| types | Array of strings Items Enum: "sms" "voice" "email" "audio" |
| message | string |
| subject | string |
| voiceFallback | boolean |
| groups | Array of integers |
| dnc | Array of integers |
| media | Array of objects |
| shortenLinks | boolean |
| ivr | boolean |
{- "title": "string",
- "types": [
- "sms"
], - "message": "string",
- "subject": "string",
- "voiceFallback": true,
- "groups": [
- 0
], - "dnc": [
- 0
], - "media": [
- { }
], - "shortenLinks": true,
- "ivr": true
}{- "id": 0,
- "title": "string",
- "types": [
- "sms"
], - "message": "string",
- "subject": "string",
- "voiceFallback": 0,
- "groups": [
- 0
], - "dnc": [
- 0
], - "files": [ ],
- "shortenLinks": 0,
- "ivr": 0
}| keyword | string Search in title or message |
| limit required | integer |
| offset required | integer |
[- {
- "id": 0,
- "title": "string",
- "subject": "string",
- "message": "string",
- "groups": [
- 0
], - "types": "string",
- "active": 0,
- "next": "2019-08-24T14:15:22Z",
- "media": [ ],
- "every": 0,
- "frequency": "minutes",
- "remaining": 0,
- "days": 0
}
]| startDate required | string <date> |
| startTime required | string HH:MM format |
| title required | string |
| types required | Array of strings Items Enum: "sms" "voice" "email" "audio" |
| groups required | Array of integers |
| message | string |
| subject | string |
| media | Array of objects |
| ivr | boolean |
| shortenLinks | boolean Default: false |
| frequency | string Enum: "minutes" "hours" "days" "weeks" "months" Makes the schedule recurring |
| every | integer >= 1 Interval for recurrence (required if frequency set) |
| remaining | integer Max number of iterations |
| days | integer [ 0 .. 127 ] Day-of-week bitmap (only with frequency) |
{- "startDate": "2019-08-24",
- "startTime": "string",
- "title": "string",
- "types": [
- "sms"
], - "groups": [
- 0
], - "message": "string",
- "subject": "string",
- "media": [
- { }
], - "ivr": true,
- "shortenLinks": false,
- "frequency": "minutes",
- "every": 1,
- "remaining": 0,
- "days": 127
}{- "id": 0,
- "title": "string",
- "subject": "string",
- "message": "string",
- "groups": [
- 0
], - "types": "string",
- "active": 0,
- "next": "2019-08-24T14:15:22Z",
- "media": [ ],
- "every": 0,
- "frequency": "minutes",
- "remaining": 0,
- "days": 0
}| id required | integer |
| message | string |
| subject | string |
| title | string |
| every | integer |
| frequency | string Enum: "minutes" "hours" "days" "weeks" "months" |
| remaining | integer |
| active | integer Enum: 0 1 |
| days | integer |
| startDate | string <date> Must be paired with startTime |
| startTime | string Must be paired with startDate |
{- "message": "string",
- "subject": "string",
- "title": "string",
- "every": 0,
- "frequency": "minutes",
- "remaining": 0,
- "active": 0,
- "days": 0,
- "startDate": "2019-08-24",
- "startTime": "string"
}{- "id": 0,
- "title": "string",
- "subject": "string",
- "message": "string",
- "groups": [
- 0
], - "types": "string",
- "active": 0,
- "next": "2019-08-24T14:15:22Z",
- "media": [ ],
- "every": 0,
- "frequency": "minutes",
- "remaining": 0,
- "days": 0
}| keyword | string Search in username or message |
| limit required | integer |
| offset required | integer |
[- {
- "username": "string",
- "id": 0,
- "id_schedule": 0,
- "id_poll": 0,
- "message": "string",
- "date": "2019-08-24T14:15:22Z",
- "types": "string",
- "media": [ ],
- "count": 0,
- "groups": [
- 0
], - "details": {
- "segments": 0,
- "delivered": 0,
- "queued": 0,
- "failed": 0
}
}
]| id required | integer |
| keyword | string Filter by recipient |
| status | string Enum: "queued" "sent" "delivered" "failed" "clicked" |
| limit required | integer |
| offset required | integer |
| getClicks | string Value: "true" Include click counts per recipient |
[- {
- "recipient": "string",
- "type": "sms",
- "received": "2019-08-24T14:15:22Z",
- "status": 0,
- "clicks": 0
}
]| name required | string |
| number | integer Auto-assigned if omitted |
| private | boolean Default: false |
{- "name": "string",
- "number": 0,
- "private": false
}{- "id": 0,
- "name": "string",
- "number": 0
}| id required | integer |
| name required | string |
| number required | integer |
| private | boolean |
{- "name": "string",
- "number": 0,
- "private": true
}{- "id": 0,
- "name": "string",
- "number": 0
}