Errors & Troubleshooting
The Ledig Technologies API returns errors as JSON objects in a standardized format. This ensures that your integration can reliably parse and handle issues.
Error Format
Every error response follows this structure:
{
"error": {
"code": "<string>",
"message": "<human-readable>"
}
}Fields
code→ A machine‑readable string identifying the error type.message→ A human‑readable explanation of what went wrong.
Example
{
"error": {
"code": "auth_missing",
"message": "Missing authentication headers"
}
}Common Error Codes
auth_missing
Missing authentication headers
One or more of x-ledig-key, x-ledig-timestamp, or x-ledig-signature was not included in the request
auth_invalid_key
Invalid API key
The provided x-ledig-key does not exist in our records
auth_corrupt_record
Corrupted API key record
The key record could not be parsed on our side (contact support if persistent)
auth_inactive
API key inactive
The key exists but is not marked as active
auth_bad_signature
Signature mismatch
The calculated signature does not match. Usually due to incorrect payload formatting or a bad secret
forbidden
Scope missing
The key is valid but lacks the required permission for this endpoint
not_found
Endpoint not found
The request path does not match any existing endpoint
ledig_error
Internal/Upstream error
Something went wrong on Ledig’s side or an upstream provider failed
Troubleshooting Tips
Authentication errors
Double‑check that all three headers (
x-ledig-key,x-ledig-timestamp,x-ledig-signature) are present.Confirm your timestamp is a current Unix time in seconds.
Make sure you are signing the payload as:
timestamp.METHOD.path.body(with body empty for GET).
Scope errors
Review the scopes attached to your API key.
If you need additional scopes (
instant,fiat_wallet,crypto_wallets), generate a new key in Settings → API & Webhooks.
404 errors
Check that you are calling the endpoint under
/v1/.Confirm you are using the correct environment:
https://sandbox.ledig.io/v1orhttps://api.ledig.io/v1.
500 or
ledig_errorThese are usually transient. Retry with exponential backoff.
If persistent, contact Ledig support with the
request_idheader (if provided) and payload details.
Best Practices for Error Handling
Log every error with both
codeandmessage.Retry cautiously: only retry for
ledig_erroror network failures, not forforbiddenorauth_*errors.Fail gracefully: surface clear messages in your UI when an operation is blocked by permissions.
Use idempotency when retrying writes (e.g., conversions, payouts) to avoid duplicates.