Error Codes
All SignCare APIs return a consistent error shape. Here's how to handle each case.
Seeing an error code you don't recognise? The full searchable catalog is at 🤖 Ask AI (paste the error message) or the 📘 Error Code Catalog (browse by code). Both are updated whenever we add new error conditions.
Standard error envelope
Every error response follows this JSON shape:
When a failure occurs deep inside a provider integration, you may also see:
Always log the errorId — our support team uses it to trace the full request lifecycle in our logs.
HTTP status code reference
| Status | Meaning | What you should do |
|---|---|---|
200 | Success | Process the response body |
400 | Bad Request | Fix validation errors and retry |
401 | Unauthorized | Check your X-API-KEY / X-API-APP-ID headers |
402 | Payment Required | Insufficient credits — top up via portal |
403 | Forbidden | Endpoint not enabled for your account |
404 | Not Found | Check URL path and input identifiers |
408 | Request Timeout | Retry with backoff |
410 | Gone | Resource expired (e.g. eSign link), create a new one |
422 | Unprocessable Entity | Semantic validation failed (e.g. invalid PAN format) |
429 | Too Many Requests | Honor Retry-After, back off — see Rate Limits |
500 | Internal Server Error | Transient issue, retry with backoff; contact support if persistent |
502 | Bad Gateway | Provider upstream is unreachable, retry |
503 | Service Unavailable | Provider maintenance window, retry after a few minutes |
504 | Gateway Timeout | Provider took too long, retry or poll async endpoint |
Common error scenarios
401 — Missing or invalid X-API-KEY header
Cause: One or both auth headers are missing, empty, or misspelled.
Fix: Confirm your request includes both X-API-KEY and X-API-APP-ID with non-empty values.
400 — Validation error
Cause: A request field failed format or business-rule validation.
Fix: Check the errors object for field-level messages and fix your input.
402 — Insufficient credits
Cause: Your prepaid credit balance is below the cost of this endpoint.
Fix: Top up via the SignCare portal or contact your account manager to adjust your credit terms.
429 — Rate limit exceeded
See Rate Limits for the full guide on handling 429.
500 — Internal server error
Cause: A bug, unhandled edge case, or infrastructure issue on our side.
Fix: Retry once with backoff. If it persists, contact support@signcare.io with the errorId.
Provider-specific errors
When we proxy to a government or financial provider and the provider returns a failure, we surface it as:
These are user-level errors — your user gave a bad input or the provider genuinely has no record. Show a friendly message to your user; do not retry.
Designing your error handling
A robust client should handle these four classes differently:
| Class | Codes | Strategy |
|---|---|---|
| Authentication | 401, 403 | Surface to ops team; don't retry |
| Validation | 400, 422 | Surface to end user; don't retry |
| Rate limit | 429 | Back off + retry |
| Transient server | 500, 502, 503, 504 | Retry 2-3 times with backoff |
Example pattern: