Errors
Every error shape and status code the API returns, and which ones are billed.
Every error shape returned by legacy API endpoints, in one place: what triggered it and whether it was billed.
#Authentication
| Status | Body | When |
|---|---|---|
| 401 | {"error": "Not authorized"} |
The API key sent to POST /api-auth/authenticate does not match a valid key |
#Bulk enqueue endpoints
profiles-bulk, companies-bulk, activity, posts, comments, reactions and latest-post all return the same shape when nothing survives normalization (companies-bulk says "companies" instead of "profiles"):
{
"message": "No valid profiles to enqueue: of 4 submitted, 1 were invalid and 3 were duplicates."
}post-by-url returns the equivalent for post URLs:
{
"message": "No valid post urls to enqueue: of 4 submitted, 1 were invalid and 3 were duplicates."
}Any endpoint that accepts webhookTags rejects a tag that matches no webhook:
{
"message": "No webhook matches webhookTags: stage. Available tags: dev, prod, staging."
}None of these create a queue, and none of them are billed.
#Live enrichment endpoints
profile and company return the enriched document directly, so their errors and billing follow a different rule:
| Status | Body / meaning | Billed |
|---|---|---|
| 200 | The enriched document | Yes |
| 404 | {"message": "Profile not found on LinkedIn"} or {"message": "Company not found on LinkedIn"} |
Yes |
| 400 | Input is not a matching LinkedIn URL or slug (linkedin.com/in/ for profiles, linkedin.com/company/ for companies), or the team's daily or monthly spending cap has been reached |
No |
| 403 | Not enough credits on the team | No |
| 429 | Rate limited | No |
| 503 | No worker became available within 10 seconds, or the crawl could not be completed; retry later | No |
Both endpoints share a limit of 10 requests per 10 seconds per team. Every response carries RateLimit-Limit, RateLimit-Remaining and RateLimit-Reset (seconds until the window clears) headers, and a 429 also carries Retry-After so you know how long to wait before retrying.
See the Credits guide for how these statuses interact with billing across every endpoint.