Response envelope
Every successful response is wrapped in a uniform envelope:meta object with pagination:
A
204 No Content response (for example, deleting a campaign) has no body.Pagination
List endpoints accept:integer
default:"1"
Page number, starting at 1.
integer
default:"20"
Items per page, between 1 and 100.
meta returns page, limit, total, and totalPages. Some list
endpoints add extra keys to meta (for example, the campaigns list adds status
counts).
A few high-volume reads use cursor pagination instead (a cursor plus limit)
ā noted on those endpoints.
Rate limits
Limits apply at two levels:
Workspace responses include headers so you can back off proactively:
429 Too Many Requests with a Retry-After
header (seconds). Some expensive endpoints (like segment preview) have tighter
per-route limits.
Errors
Errors use a consistent shape:
Common statuses: 400 (validation, non-UUID id, or an unknown field), 401
(bad/expired credentials), 403 (missing permission, or an API key on a
session-only route), 404 (not found), 429 (rate limited).
Validation
- Request bodies are strict: unknown fields are rejected with a
400. - All
:idpath parameters must be UUIDs. - Query parameters are typed ā send numbers and booleans in the expected form.
Idempotency
Where an operation must not double-fire (for example, sending an inbox message), you provide aclientMessageId (a UUID you generate). Reusing the same value is
treated as the same request.
Browse the resources
Endpoints for contacts, segments, campaigns, and more.
