Error Handling
Every error is returned in a consistent, RFC-style Problem envelope with a stable, machine-readable code.
The Problem Envelope
Non-2xx responses share one shape, so your integration can handle errors uniformly:
Problem
{
"type": "https://docs.qwiklive.io/errors/BAD_REQUEST",
"title": "Bad Request",
"status": 400,
"code": "BAD_REQUEST",
"detail": "requestedAmount is required.",
"correlationId": "7c3e1b90-2a44-4c8e-9b1a-0f5d2a6e8c10"
}Branch on
code, not detailThe code field is stable and machine-readable; title/detail are human-facing and may change. Always log the correlationId for support.
Status Codes
| Status | Code | When it happens |
|---|---|---|
400 | BAD_REQUEST | Validation failed — a required field is missing or malformed. |
401 | UNAUTHORIZED | Missing or invalid client credentials. |
403 | FORBIDDEN | Credentials valid but not permitted for this operation. |
404 | NOT_FOUND | The referenced loan, offer, or application does not exist. |
429 | TOO_MANY_REQUESTS | Rate limit exceeded — retry after the indicated interval. |
500 | INTERNAL_ERROR | Unexpected server error. |
502 | BAD_GATEWAY | Upstream core banking system returned an invalid response. |
503 | SERVICE_UNAVAILABLE | Service temporarily unavailable. |
504 | GATEWAY_TIMEOUT | Upstream core banking system timed out. |
Retry Guidance
- 4xx — do not retry blindly; fix the request (or credentials) first.
429is the exception: back off and retry. - 502 / 503 / 504 — transient upstream conditions; retry with exponential backoff and a fresh
X-Correlation-Id. - For write operations, ensure idempotency on your side before retrying to avoid duplicate postings.
Lending API Documentation