Skip to content

Provisioning API

List users

GET
/users
curl --request GET \
--url 'https://live-api.customers.ac/v1/users?page%5Bsize%5D=25' \
--header 'Authorization: Bearer <token>'

Returns a paginated list of users belonging to your partner account.

page[size]
integer
default: 25 >= 1 <= 100

Maximum number of records to return. Default: 25, maximum: 100.

page[after]
string

Opaque cursor returned by a previous list response. Pass this to fetch the next page.

filter[email]
string format: email

Filter by exact email address.

A paginated list of users.

Media typeapplication/json
object
data
required
Array<object>
object
id
required

Unique identifier for the user.

string format: uuid
email
required

The user’s email address. Must be unique across your partner account.

string format: email
name

The user’s full name.

string | null
company

The user’s company or organization name.

string | null
external_id

An optional identifier from your system. Useful for correlating sending.ac users with your own customer records.

string | null
senders_count

Number of senders belonging to this user.

integer
created_at
required

When the user was created.

string format: date-time
updated_at
required

When the user was last updated.

string format: date-time
pagination
required

Cursor-based pagination metadata.

object
has_more
required

true if there are more records after this page.

boolean
next_cursor

Pass this value as page[after] to fetch the next page. null when there are no more records.

string | null
Example
{
"data": [
{
"id": "usr_a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"email": "jane@acme.com",
"name": "Jane Doe",
"company": "Acme Corp",
"external_id": "cust_8hTk2mN",
"senders_count": 2,
"created_at": "2026-03-20T09:00:00Z",
"updated_at": "2026-03-20T09:00:00Z"
}
],
"pagination": {
"next_cursor": "eyJpZCI6InVzcl96OXk4eDd3NiJ9"
}
}

Authentication failed. The API key is missing or invalid.

Media typeapplication/json
object
error
required
object
code
required

A machine-readable error code.

string
Allowed values: auth.missing_key auth.invalid_key auth.insufficient_scope rate.quota_exceeded validation.required_field validation.invalid_value resource.not_found resource.already_exists resource.not_ready server.error
message
required

A human-readable explanation of the error.

string
doc_url

A link to the documentation page for this error code.

string format: uri
details

For validation errors, a list of individual field-level problems.

Array<object> | null
object
field
required

The field that caused the error, in dot notation.

string
code

A machine-readable code for this specific validation issue.

string
message
required

A human-readable explanation.

string
Examples

No API key provided

{
"error": {
"code": "auth.missing_key",
"message": "No API key was provided. Include your key in the Authorization header: Bearer sac_live_xxxxx.",
"doc_url": "https://docs.sending.ac/errors/auth-missing-key"
}
}

The API key does not have the required scope for this operation.

Media typeapplication/json
object
error
required
object
code
required

A machine-readable error code.

string
Allowed values: auth.missing_key auth.invalid_key auth.insufficient_scope rate.quota_exceeded validation.required_field validation.invalid_value resource.not_found resource.already_exists resource.not_ready server.error
message
required

A human-readable explanation of the error.

string
doc_url

A link to the documentation page for this error code.

string format: uri
details

For validation errors, a list of individual field-level problems.

Array<object> | null
object
field
required

The field that caused the error, in dot notation.

string
code

A machine-readable code for this specific validation issue.

string
message
required

A human-readable explanation.

string
Example
{
"error": {
"code": "auth.insufficient_scope",
"message": "Your API key does not have the 'senders:write' scope required for this operation.",
"doc_url": "https://docs.sending.ac/errors/auth-insufficient-scope"
}
}

You have exceeded the rate limit. Wait and retry.

Media typeapplication/json
object
error
required
object
code
required

A machine-readable error code.

string
Allowed values: auth.missing_key auth.invalid_key auth.insufficient_scope rate.quota_exceeded validation.required_field validation.invalid_value resource.not_found resource.already_exists resource.not_ready server.error
message
required

A human-readable explanation of the error.

string
doc_url

A link to the documentation page for this error code.

string format: uri
details

For validation errors, a list of individual field-level problems.

Array<object> | null
object
field
required

The field that caused the error, in dot notation.

string
code

A machine-readable code for this specific validation issue.

string
message
required

A human-readable explanation.

string
Example
{
"error": {
"code": "rate.quota_exceeded",
"message": "Rate limit exceeded. You may make 120 requests per minute. Retry after 30 seconds.",
"doc_url": "https://docs.sending.ac/errors/rate-quota-exceeded"
}
}
Retry-After
integer
Example
30

Number of seconds to wait before retrying.

X-RateLimit-Limit
integer
Example
120

The maximum number of requests allowed per minute.

X-RateLimit-Remaining
integer
Example
0

The number of requests remaining in the current window.

X-RateLimit-Reset
integer
Example
1711267260

Unix timestamp when the rate limit window resets.