CHEESE API
Errors
One stable error envelope, status mapping, retry guidance, and correlation IDs.
{
"error": {
"code": "invalid_smiles",
"message": "Query is not a valid molecule.",
"field": "query_smiles",
"request_id": "c9d4dfcb-3dc7-4d25-8c31-67d494f3332d",
"retryable": false
}
}| Status | Meaning |
|---|---|
| 400 | Semantic request error |
| 401 | Missing or invalid key |
| 403 | Valid key without entitlement |
| 404 | Unknown resource or chemical space |
| 409 | Idempotency/resource conflict |
| 413 | Body, synchronous work, or declared run budget exceeded |
| 422 | Structural schema validation |
| 429 | Caller quota/admission limit; honor Retry-After |
| 503 | Temporary dependency/capacity failure |
| 504 | synchronous_timeout after 10 seconds (use /api/v2/runs) or a 60-second run-item timeout |
Retry only when retryable=true, with bounded exponential backoff and jitter. Preserve
Idempotency-Key for run creation and x-request-id when contacting support. Invalid structures,
unsupported capabilities, contradictions, and empty exact results are not transient.
Tenant run admission failures use tenant_run_quota_exceeded. The error details.quota identifies
the exceeded dimension when it can be determined; honor Retry-After and retry with the same
Idempotency-Key after existing runs reach a terminal state.