Rate limits
Rate limits protect the people you contact and your balance. They count calls and texts per organization, over rolling time windows.
Default limits
| Window | Calls | Text messages |
|---|---|---|
| Per minute | 30 | 300 |
| Per hour | 300 | 3,000 |
| Per day | 2,000 | 20,000 |
| Per destination number, per day | 10 | 50 |
Phone number releases and paid 10DLC campaign submissions have their own limits.
Your organization can have different limits. Read the limits that apply to you:
curl --fail-with-body --silent --show-error \
"$RESIA_API_BASE/v1/rate-limits" \
--header "Authorization: Bearer $RESIA_API_KEY"
The response has call, message, phone_number_release, and ten_dlc sections. A limit of 0 means the action is blocked. To raise a limit, contact support@resia.ai.
When you reach a limit
A single request, such as POST /v1/calls, gets 429 Too Many Requests and a Retry-After header with the number of seconds to wait:
HTTP/1.1 429 Too Many Requests
Retry-After: 41
{
"error": {
"code": "rate_limited",
"message": "This organization is limited to 30 calls per minute. Try again in about 41 seconds.",
"request_id": "01K3..."
}
}
Wait for Retry-After before you try again. If more than one window is full, the header gives the longest wait.
A 429 with the code temporarily_unavailable is different. It means Resia is short of capacity for a moment, not that you reached your own limit. Retry after a short wait.
Batches do not hit 429s
Call batches and text message batches queue their work and send it at the pace your limits allow. Use a batch when you have many calls or texts to send. A batch gets 429 only if it is larger than your queued-work limit.
Workflows
Workflow runs have no separate organization limit. Their calls and texts count against the limits above. Each run also has its own max_calls, max_messages, and max_spend_in_cents.

