API Rate Limits & Error Codes

Connect my tools4 min readUpdated 2026-03-12

API Rate Limits & Error Codes

This guide covers the rate limits applied to JustCall API requests, the error codes you may encounter, and strategies for building a resilient integration.

Rate Limits

Rate limits are applied per API key on a rolling per-minute window.

PlanRequests per minuteConcurrent connections
Team605
Pro12010
Business30025
EnterpriseCustomCustom

When you exceed the limit, the API returns a 429 Too Many Requests response with a Retry-After header indicating how many seconds to wait.

Rate Limit Headers

Every response includes these headers so you can monitor your usage:

HeaderDescription
X-RateLimit-LimitYour per-minute request allowance
X-RateLimit-RemainingRequests remaining in current window
X-RateLimit-ResetUnix timestamp when the window resets

Error Codes

HTTP CodeErrorDescriptionWhat to do
400Bad RequestMissing or invalid parameters in your requestCheck the request body and query parameters
401UnauthorizedInvalid or missing API key and secretVerify your Authorization header format
403ForbiddenYour plan does not include this feature, or insufficient roleConfirm plan-level access; use Admin credentials
404Not FoundThe requested resource does not existCheck the resource ID or endpoint path
422Unprocessable EntityThe request is well-formed but contains invalid dataReview field values (e.g., invalid phone number format)
429Too Many RequestsRate limit exceededWait for Retry-After seconds, then retry
500Internal Server ErrorAn unexpected error on JustCall's sideRetry after a short delay; contact support if persistent
502Bad GatewayTemporary upstream issueRetry after 5-10 seconds
503Service UnavailableJustCall is temporarily down for maintenanceRetry after 30-60 seconds

Error Response Format

{
  "status": "error",
  "message": "Rate limit exceeded. Retry after 45 seconds.",
  "error_code": "RATE_LIMIT_EXCEEDED"
}

Retry Strategies

Exponential Backoff

For 429 and 5xx errors, use exponential backoff with jitter:

# Pseudocode
wait_time = min(base_delay * 2^attempt + random_jitter, max_delay)
AttemptBase delayWait (approx.)
11s1-2s
21s2-4s
31s4-8s
41s8-16s
51s16-32s

Stop retrying after 5 attempts and log the failure for manual review.

Best Practices

  • Respect Retry-After — When present, always wait at least the specified number of seconds before retrying.
  • Do not retry 400, 401, 403, or 404 — These are client errors that will not resolve on their own. Fix the request first.
  • Add jitter — Random jitter prevents multiple clients from retrying at the exact same moment (thundering herd).
  • Log every error — Record the HTTP status, response body, and timestamp so you can diagnose patterns.

Troubleshooting Common Issues

"401 Unauthorized" on every request

  • Confirm you are sending both the API key and secret separated by a colon in the Authorization header.
  • Make sure there are no extra spaces or newline characters in the header value.
  • Regenerate your credentials in Settings → API & Webhooks if the issue persists.

"404 Not Found" when calling a valid endpoint

  • Verify you are using the V2 base URL: https://api.justcall.io/v2/.
  • Check that the resource ID in the URL path exists in your account.

"429 Too Many Requests" during bulk operations

  • Reduce your request rate to stay within your plan's limit.
  • Batch operations where possible (e.g., use the bulk contacts endpoint instead of individual creates).
  • Consider upgrading your plan for higher limits.

Webhook delivery failures

  • Ensure your webhook URL is HTTPS and publicly reachable.
  • Return a 200 OK within 10 seconds. Offload processing to a background queue.
  • See Webhooks Overview for retry behavior.

Was this helpful?