Coding agent documentation index Fetch the complete documentation index at: https://docs.worklittle.com/docs-agent-manifest.json Use this file to discover all available pages before exploring further.

Overview

Failure classes to handle before launch: throttling and spend, stale jobs, webhook delivery, and silent correctness.

The four failure classes

| Class | Looks like | Covered in |
| --- | --- | --- |
| **Throttling and budget** | 429s, 402s, a surprising invoice | [Retries and spend](/use-cases/retries-and-spend) |
| **Stale or ineligible data** | Apply fails, closed roles shown | [Closed jobs and eligibility](/use-cases/closed-jobs-and-eligibility) |
| **Delivery gaps** | Mirror drifts, duplicate records | [Webhooks reliability](/use-cases/webhooks-reliability) |
| **Silent correctness** | Invented facts, claimed writes, wrong candidate updated | [Eval checklist](/use-cases/eval-checklist), [Grounding](/use-cases/grounding) |

The first three raise signals you can alert on. The fourth needs a QA pass.

Error shapes to handle by name

{ "error": { "code": "RATE_LIMITED", "message": "…", "documentation_url": "https://docs.worklittle.com/help/api/rate-limits-and-429" } }

Auth, permission, billing, and throttle errors include documentation_url.

| HTTP | Code | Meaning | Response |
| --- | --- | --- | --- |
| 400 | `BAD_REQUEST` | Bad filter or payload | Fix the request. Do not retry unchanged |
| 401 | `UNAUTHORIZED` | Missing or invalid key | Alert. Do not retry |
| 402 | `PAYMENT_REQUIRED` | Payment failed or monthly limit hit | Stop metered work. Fix card or limit at [**Billing**](https://worklittle.com/business/billing) |
| 403 | `FORBIDDEN` | Missing scope or org role | Fix the key or membership |
| 404 | `NOT_FOUND` | Unknown id, or no hosted apply | Re-resolve the id |
| 409 | `CONFLICT` | Another apply start for the same job is in progress | Retry with the same `Idempotency-Key` |
| 429 | `RATE_LIMITED` | Throttled | Back off, honor `Retry-After` |
| 429 | `QUOTA_EXCEEDED` | Free monthly quota used | Stop. Inquire at business@worklittle.com for higher limits |
| 500 | `INTERNAL_ERROR` | Upstream failure | Retry with backoff, cap attempts |
| 503 | `BROWSER_CAPACITY`, `SERVICE_UNAVAILABLE` | Apply with AI browser capacity or a dependency is unavailable | Retry later with backoff |

Over MCP the same conditions arrive as JSON-RPC errors. Upstream 429 and 5xx typically surface as -32603 (retryable). -32602 is a request bug. Full tables: Errors.

Design for degradation

Cache the last good search and serve it with a staleness note. Keep free paths (tracking, board pages, ATS reads) separate from metered paths so a 402 does not take them down. Queue writes with an idempotency key so a failed stage update retries instead of being lost. Never let a failed submit look like a success. * Serve board pages from ETag and webhook-revalidated cache.

Health: GET https://api.worklittle.com/health. See Status.

Pre-launch pass

Each of these needs a defined behavior. Expected outcomes are in Eval checklist.

1. A 429 during a user-visible search. 2. A 402 halfway through a multi-step agent turn. 3. A job that closes between search and apply. 4. An Apply with AI session that stalls on a question. 5. A webhook delivered twice. 6. A webhook never delivered. 7. A model asked about a salary the posting does not include. 8. A model asked to move a candidate whose name matches two people.