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.