Skip to main content

Error codes

Pry returns structured JSON errors with a stable code field:

{
"type": "/errors/unauthorized",
"title": "Unauthorized",
"status": 401,
"detail": "Invalid or missing API key",
"request_id": "abc123",
"code": "unauthorized"
}

HTTP-level codes

StatusCodeMeaningFix
401unauthorizedMissing/invalid Bearer key, or non-loopback on keyless instanceSend Authorization: Bearer <key>
402payment_requiredPaid endpoint without payment proofPay the challenge in PAYMENT-REQUIRED header, retry
403forbiddenLoopback-only surface reached remotely, or missing admin scopeUse loopback or an admin-scope key
404-Unknown pathCheck /openapi.json for routes
429-Rate limit exceededHonor x-ratelimit-reset
500payment_gate_misconfiguredPaid endpoint missing its price entry (fail-closed)Operator: add pricing; this refuses traffic rather than leaking it free

Scrape result statuses

Inside scrape payloads, status is one of:

StatusMeaning
okContent retrieved through one of the 12 tiers
errorAll tiers exhausted; error field explains why
skipped(corpus actors) filtered by length/duplicate rules

Webhook failures

Webhooks are fail-closed: deliveries without a configured signing secret are refused (refused: true), never sent unsigned. Check GET /v1/webhooks/dead-letter for failed deliveries after fixing PRY_WEBHOOK_SECRET.