Errors
All SAGEA Studio APIs use standard HTTP statuses plus a stable code string for programmatic handling.
Log the request_id from every failed call and match the code below before retrying.
| Status | Code | Meaning | Fix |
|---|---|---|---|
400 | invalid_request | Request body failed validation for the endpoint. | Validate required fields and types, then retry. |
400 | missing_artifact | Required file or object is missing from the request. | Attach the document or audio_samples file and retry. |
400 | text_too_long | Text input exceeds the 4096 character limit. | Split text at sentence boundaries and retry in chunks. |
400 | unsupported_format | File type or response_format is not supported. | Use mp3, PDF, PNG, JPG, TIFF, or WEBP as documented. |
401 | unauthorized | API key is missing, invalid, or revoked. | Re-export a valid SAGEA_API_KEY value and retry. |
403 | forbidden | Key lacks permission for this model or workspace. | Ask an admin to grant access, then retry. |
404 | session_not_found | Chat session or batch ID does not exist. | Poll the exact batch_url or recreate the session. |
404 | verification_not_found | Verification or KYC session ID is unknown. | Create a new verification session and retry. |
413 | payload_too_large | Upload exceeds the 100MB document limit. | Compress the file under 100MB and retry. |
422 | spoof_detected | Liveness check detected a likely spoof attempt. | Recapture with live camera and retry once. |
422 | voice_not_found | Voice name or voice_id does not exist. | Use nova, atlas, or a valid vox_ voice ID. |
429 | rate_limit_exceeded | Per-minute or per-day quota was exceeded. | Back off exponentially and retry after delay. |
500 | internal_error | Unexpected server error processing the request. | Retry once with idempotency key, then escalate. |
Error response shape
All errors return JSON with a stable code plus human readable message.
Always log request_id, code, and HTTP status for faster triage.
Retry guidance by product
Use these rules before contacting support to avoid duplicate charges.
- Chat with
sage-2-4-actus,sage-2-5-celer, andsage-oss: retry429and500with exponential backoff, do not retry400Kathmandu tool calls without fixingmessagesfirst. - Chat streaming: reconnect once on dropped server-sent events, then fall back to non-streaming
streamset tofalsefor the same Kathmandu prompt. - Chat JSON mode: fix
response_formatto typejson_objectoninvalid_request, validate output parses before retrying the same model. - Audio with
novaandatlasvoices: split ne-NP greetingWelcome to SAGEA. नमस्तेontext_too_long, verifyvoice_idonvoice_not_found, cache successful MP3 bytes. - Audio formats: switch to
mp3onunsupported_format, keep speed between 0.5 and 2.0, reusehi-INandes-EShints across retries. - Voice cloning: retry
missing_artifactonly after adding 10 second samples, respect the 5 per day limit, reusevox_IDs for Hindihi-INprompts. - OCR with
arva-ocr: compress PDFs over 100MB onpayload_too_large, check NPR 24,500 invoice scans for blur on low confidence, passlanguage_hintofne-NPoren-US. - OCR tables: enable
bboxset totrueto isolate failing blocks, retry complex NPR 24,500 tables withoutput_formatset tojson. - Helios KYC: create a fresh session on
verification_not_found, recapture onspoof_detectedfor Aarav Sharma documents, never retry the same liveness video more than twice. - Helios documents: re-upload sharper images of Aarav Sharma citizenship cards on
missing_artifact, checken-USlocale mapping before resubmitting. - Mylo voice agents: reconnect streaming on
internal_erroronce, fall back to non-streaming speech on repeated failures, loges-ESandhi-INsession IDs for review. - Mylo transcripts: poll transcript endpoints after
session_not_found, back off on429before re-polling realtime agent sessions.
How to debug
- Confirm base URL is
https://api.sagea.space/v1on every call. - Run
echo $SAGEA_API_KEYto confirm the key is exported in your shell. - Print full status plus
codeplusrequest_idin application logs. - Redact file bytes and keys before sharing logs with support.
- Test with a minimal curl call before retrying large batches.
- Isolate one failing request from a batch before resubmitting all items.
- Compare Starter versus Pro rate limits when
429appears suddenly. - Verify voice names
novaandatlasare spelled exactly before retrying.
Support
- Send your first API request
- Build an agent with tools
- Process documents end to end
- Synthesize speech with Sonus
- Compare model costs
- Review the ARVA OCR model card
- Review the Sonus TTS model card
- Batch large jobs for 50 percent off
- Check chat completions reference
- Check OCR process reference
If errors persist, include the request_id, timestamp, endpoint path, and redacted headers when asking for help through the guides above.
