Authentication
Every request requires a Bearer API key in theAuthorization header:
wib_live_.... A key must carry the humanize scope to call these endpoints. Requests with a missing or invalid key return 401 unauthorized.
Jobs
Humanization is asynchronous.POST /humanize reserves API words and returns a job with status queued (HTTP 202). You then track the job by polling GET /humanize/{id} or by receiving a webhook. A job moves through four statuses; succeeded and failed are terminal.
| Status | Meaning |
|---|---|
queued | Accepted and waiting to start. |
running | Being processed. |
succeeded | Finished. output contains the humanized text. |
failed | Did not finish. Reserved words were refunded. |
Words and billing
Each job reserves API words up front based on its input word count, andwords_charged is the net amount billed after any refund. A failed job is charged 0. A 402 insufficient_words response means the account balance cannot cover the request. See Words and billing for packs, refunds, and how to buy words.
Limits
| Limit | Value |
|---|---|
| Input text | 50,000 characters and 2,000 words per request |
| Request body | 128,000 bytes |
| Concurrent jobs | 5 active jobs per account |
Submission rate (POST) | 20 requests per minute per key |
Lookup rate (GET) | 120 requests per minute per key |
| Idempotency key retention | 24 hours |
429) include a Retry-After header along with X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset headers describing the current window.
Idempotency
Send anIdempotency-Key header to make a submission safe to retry. Reusing a key with an identical body returns the original job, and reusing it with a different body within the retention window returns 409 idempotency_conflict. See Idempotency for the retry pattern and conflict handling.
Errors
Errors use a consistent envelope with a machine-readablecode and a human-readable message:
402 insufficient_words includes balance and words_required. See Errors for the full list of codes and how to handle each one.
Webhooks
Setwebhook_url on a submission to receive a signed POST when the job reaches a terminal state. Wibble sends humanize.job.succeeded and humanize.job.failed events, each attempted up to 3 times with exponential backoff. Verify every delivery before trusting it. See Webhooks for the payload, signature verification, and delivery details.
Next steps
Quickstart
Submit your first job and read the result end to end.
Submit a job
Reference for
POST /humanize, including every request option and response.Retrieve a job
Reference for
GET /humanize/{id} and the job object.Webhooks
Verify deliveries and handle job events reliably.