HTTP Status Codes
| Code | Meaning | What to Do |
|---|---|---|
200 | Success | Request completed successfully |
301 | Moved Permanently | Entity was merged; follow the redirect |
400 | Bad Request | Check your filter syntax or parameters |
403 | Forbidden | Rate limit exceeded; slow down |
404 | Not Found | Entity doesn’t exist |
429 | Too Many Requests | Daily limit exceeded |
500 | Server Error | Temporary issue; retry with backoff |
Error Response Format
Error responses include a message explaining what went wrong:Common Errors
Invalid Filter Syntax
publication_year expects an integer.
Unknown Filter Field
authorships.author.id with an ID, not a name. See Resolve IDs.
Rate Limit Exceeded
- Check rate limit headers to see your remaining allowance
- Add delays between requests
- Use
per_page=100to reduce total requests - Consider a paid plan for higher limits
Entity Not Found
Retry Logic
Implement exponential backoff for transient errors:Rate Limit Headers
Every response includes headers showing your current status:- Monitor your usage
- Pause before hitting limits
- Calculate when limits reset (seconds until midnight UTC)
Best Practices
- Always set timeouts — Use 30-second timeouts to avoid hanging requests
- Implement backoff — Don’t retry immediately; wait 1s, 2s, 4s, etc.
- Check headers — Monitor
X-RateLimit-Remainingto avoid hitting limits - Log errors — Record failures for debugging
- Use bulk endpoints — Batch requests to reduce total API calls