Skip to main content
All errors return a JSON body with an error field containing a machine-readable code.

HTTP status codes

StatusMeaning
202Request accepted (POST /research)
200Success (GET /research-status)
400Bad request — invalid parameters
401Unauthorized — missing or invalid key
404Not found — research ID doesn’t exist
429Too many requests — credits exhausted
500Internal server error

Error codes

Authentication errors (401)

CodeDescription
missing_api_keyNo Authorization header provided
invalid_keyKey not found, revoked, or belongs to another account

Request errors (400)

CodeDescription
missing_emailemail field is required
invalid_email_formatEmail address is not valid
missing_key_idAPI key ID not found in request
api_key_has_no_productThe key has no product context — regenerate it

Credit errors (429)

CodeDescription
credits_exhaustedMonthly credits are fully used
trial_limit_reachedFree plan 3-credit limit reached
Response body includes:

Not found (404)

CodeDescription
not_foundThe research_id does not exist or belongs to a different account

Research job errors

These appear in the error field when status is failed:
CodeDescription
internal_errorAn unexpected error occurred in the pipeline
timeoutThe job exceeded maximum processing time (auto-retryable)

Handling errors

Retrying failed jobs

If a research job returns status: failed, you can resubmit the same request. A new credit will be consumed. If failures persist for the same email, please contact hello@callprep.app.
Jobs that fail due to a timeout (infrastructure issue) are eligible for a credit refund. Contact support with the research_id to request a refund.