Logo
Search
API Docs

Rate Limits & Error Codes

Telephony Infrastructure & Limits

Rate Limits and Error Codes: Understanding Call Ended Reasons

Overview

Sulus surfaces rate limit errors through endedReason codes on the Call object. These codes follow a consistent pattern across LLM, voice, and transcriber providers, so you can quickly identify what went wrong and whether the issue is on Sulus's side, the underlying provider's side, or your own account's plan limits.


LLM (Language Model) Rate Limits

When a language model provider returns a rate limit or quota error, the endedReason will contain one of these codes:

Error Code PatternMeaningWhat to Do
*-429-exceeded-quotaYour quota with the language model provider has been exhaustedUpgrade your plan with the provider or reduce call volume
*-429-rate-limit-reachedYou've hit the provider's rate limitUpgrade your plan with the provider or reduce call volume

These apply across all language model providers supported by Sulus.


Voice (TTS) Rate Limits

For text-to-speech providers, rate limit and credit exhaustion errors follow this pattern:

  • *-quota-exceeded — Voice provider quota has been exceeded
  • *-out-of-credits — Voice provider credits are exhausted

These apply across the voice providers supported by Sulus.


Concurrency Limit

At the account level, hitting your concurrent call limit produces a call start error:

  • call.start.error-subscription-concurrency-limit-reached — You've hit the maximum number of simultaneous calls for your plan. Upgrade your plan or wait for an active call to end.

Understanding Error Prefixes

The prefix on an error code tells you who is responsible:

PrefixMeaning
call.in-progress.error-sulusfault-*Sulus infrastructure failure — you are typically not charged for these calls
call.in-progress.error-providerfault-*A third-party provider returned a server error — outside Sulus's control
pipeline-error-*Legacy format — when using your own provider keys (BYOK), typically indicates credential or quota issues

Where to Find These Codes

You can find the endedReason value in two places:

  • The "Ended Reason" column in your call logs in the Sulus dashboard
  • The endedReason field on the Call object, available via the API

When you encounter rate limit errors, the recommended fix is to configure fallback providers for the three core services (TTS, LLM, STT) so calls can continue even when one provider is throttling.