Skip to main content
Production clients should assume networks fail in ambiguous ways. A timeout does not prove that DialNexa rejected a request, and repeating a write can create a second resource or place another call.
The current v1 contract does not define a platform-wide idempotency header or one universal rate limit. Do not send an invented idempotency key or hard-code a global requests-per-minute value. Use endpoint-specific guarantees when they are published.

Retry classification

Timeouts

Set both a connection timeout and a total request timeout in your HTTP client. Choose values that fit your application; the public contract does not currently promise one universal server timeout. Long-running work is normally accepted synchronously and completed asynchronously, so use the returned resource ID rather than holding a connection open.

Exponential backoff with jitter

This TypeScript helper retries read-only requests and honors Retry-After when the response supplies it:

Duplicate protection without idempotency keys

Attach your own stable correlation value in metadata when creating a call. After a timeout, list recent calls and reconcile before deciding whether to submit another call. Store the returned DialNexa ID with your correlation value as soon as a create request succeeds.

Observability checklist

  • Record the HTTP method, route template, status, duration, and DialNexa resource ID.
  • Redact API keys, webhook secrets, phone numbers, and sensitive metadata.
  • Keep the original error statusCode, message, and error fields.
  • Alert separately on authorization failures, validation drift, throttling, and transient server failures.
  • Prefer webhooks over aggressive call-status polling.