Skip to main content

Rate Limits

The Texting Blue API enforces rate limits to ensure fair usage and platform stability. Limits vary by plan.

Limits per plan

ScopeFreeStarterProEnterprise
API requests/min603001,0005,000
Messages/min52060200
Monthly messages1001,00010,000Custom
Phone numbers125Unlimited
Team members1310Unlimited

Rate limit headers

Every API response includes rate limit information in the headers:

HeaderDescription
x-ratelimit-remainingNumber of requests remaining in the current window
Retry-AfterSeconds to wait before retrying (only present on 429 responses)

Handling rate limits

When you exceed the rate limit, the API returns a 429 Too Many Requests response:

{
"error": {
"code": "rate_limited",
"message": "Rate limit exceeded. Retry after 15 seconds."
}
}

Best practices

Implement exponential backoff:

async function sendWithRetry(payload, maxRetries = 3) {
for (let attempt = 0; attempt < maxRetries; attempt++) {
const response = await fetch('https://api.texting.blue/v1/messages/send', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'x-api-key': API_KEY,
},
body: JSON.stringify(payload),
});

if (response.status === 429) {
const retryAfter = parseInt(response.headers.get('Retry-After') || '10');
await new Promise(resolve => setTimeout(resolve, retryAfter * 1000));
continue;
}

return response.json();
}
throw new Error('Max retries exceeded');
}

Queue messages client-side:

If you're sending many messages, queue them and send at a controlled rate rather than bursting:

async function sendBatch(messages, delayMs = 1000) {
for (const msg of messages) {
await sendMessage(msg);
await new Promise(resolve => setTimeout(resolve, delayMs));
}
}

Monitor remaining requests:

Check the x-ratelimit-remaining header and slow down as you approach the limit.

Monthly message limits

Monthly message limits are enforced separately from per-minute rate limits. When you reach your monthly limit, the API returns a 402 Payment Required response with the plan_limit_exceeded error code.

Monthly limits reset at the start of each billing cycle.

Requesting higher limits

Enterprise plan customers can request custom rate limits. Contact [email protected] to discuss your needs.

Next steps