Documentation Index
Fetch the complete documentation index at: https://docs.waffo.ai/llms.txt
Use this file to discover all available pages before exploring further.
Error Format
All error responses follow a consistent structure:Reading the Errors Array
Theerrors array is ordered from root cause to top-level caller:
errors[0]— the root cause of the failure (most useful for debugging)errors[n]— the top-level caller that surfaced the error
errors[0].message for the actionable error description.
HTTP Status Codes
| Code | Meaning | Description |
|---|---|---|
| 200 | Success | Request processed successfully |
| 400 | Bad Request | Invalid parameters or malformed request body |
| 401 | Unauthorized | Missing or invalid authentication credentials |
| 403 | Forbidden | Valid credentials but insufficient permissions |
| 404 | Not Found | Requested resource does not exist |
| 409 | Conflict | Idempotent request is already being processed |
| 429 | Rate Limited | Too many requests in a short period |
| 500 | Server Error | Internal server error |
| 501 | Not Implemented | Requested feature is not yet available |
| 502 | Bad Gateway | Upstream service error |
Error layer Field
Each error includes a layer string indicating which part of the system produced the error. Use the layer value alongside message to identify the root cause when debugging.
Common Error Scenarios
Authentication Errors (401)
- Verify your Merchant ID and private key are correct
- Ensure the SDK is initialized with valid credentials
- Check that your private key matches the registered public key
Validation Errors (400)
- Check required fields are present
- Verify field value formats and constraints
- Ensure amounts are display format strings (e.g., “29.00”)
Permission Errors (403)
- Verify the API Key has the required permissions
- Ensure the user belongs to the correct store
Idempotency Conflicts (409)
- Wait for the original request to complete
- Use a different
X-Idempotency-Keyfor a new request
Handling Errors in Code
TypeScript SDK
Retry Strategy
Retry these status codes with exponential backoff:- 429 — Rate limited (respect
Retry-Afterheader if present) - 500 — Internal server error
- 502 — Bad gateway
Do not retry
400, 401, 403, or 404 errors. These indicate issues that must be fixed in the request itself.Idempotency for Safe Retries
Use theX-Idempotency-Key header to safely retry write operations without creating duplicates:
- Idempotency keys are cached for 24 hours
- Sending the same key returns the cached response
- If the original request is still processing, returns
409 Conflict