Documentation Index
Fetch the complete documentation index at: https://code4source.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
Errors return a JSON body with a stable code:
{
"title": "Quota Exceeded",
"status": 429,
"code": "QUOTA_EXCEEDED",
"detail": "Monthly quota exceeded.",
"limit": 10000,
"used": 10000,
"period_started_at": "2026-04-15T00:00:00Z",
"period_ends_at": "2026-05-15T00:00:00Z"
}
Match against code — not against title or detail, which are
human-readable and may be reworded.
Authentication & access
| Status | Code | When |
|---|
| 401 | AUTHENTICATION_ERROR | Missing, malformed, or revoked API key. |
| 401 | TOKEN_EXPIRED | API key expired. Request a new one. |
| 402 | SUBSCRIPTION_INACTIVE | Subscription is no longer active. |
| 429 | QUOTA_EXCEEDED | Monthly cap reached for the current billing period. |
| 429 | RATE_LIMIT_EXCEEDED | Too many requests in a short window. |
429 responses carry Retry-After and X-RateLimit-* headers, plus
limit, used, period_started_at, period_ends_at for
QUOTA_EXCEEDED. See Quotas.
Validation
| Status | Code | When |
|---|
| 422 | (request validation) | Bad JSON, wrong types, missing required fields. |
| 422 | PROGRAM_VALIDATION_ERROR | Ruleset structure invalid (depth, refs, ceilings). |
| 422 | UNKNOWN_SOURCE | Ruleset references a source you can’t access. |
Catalog
| Status | Code | When |
|---|
| 404 | RULESET_NOT_FOUND | ruleset_id doesn’t resolve. |
| 409 | RULESET_ALREADY_EXISTS | (name, version) already taken. |
Idempotency
| Status | Code | When |
|---|
| 422 | IDEMPOTENCY_KEY_INVALID | Malformed Idempotency-Key header. |
| 422 | IDEMPOTENCY_KEY_CONFLICT | Same key, different request body. |
| 429 | IDEMPOTENCY_KEY_EXHAUSTED | Too many concurrent requests with the same key. |
| 410 | IDEMPOTENCY_REPLAY_EXPIRED | Replay window for that key has elapsed. |
Server (5xx)
| Status | Code | When |
|---|
| 500 | INTERNAL_ERROR | Unexpected server error. |
| 503 | (unavailable) | Transient infrastructure issue. |
5xx responses are retryable. Use exponential backoff with jitter; if
persistent, contact support@attestly.io.
Partial failures (200)
A source or check failure does not fail the whole request. The
response is 200 but verdict.status = "degraded" and the affected
check carries status: "failed" with an error message. See
Verdicts.