Start building with ReefAPI
One API key, one credit pool, 64 production data APIs. Every endpoint returns the same JSON envelope — so once you've called one, you've called them all.
Quickstart
Every request is POST https://api.reefapi.com/<api>/v1/<action> with your key in the x-api-key header and params as a JSON body.
curl -X POST https://api.reefapi.com/currency/v1/convert \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"from":"USD","to":"EUR","amount":1000}'Every response is the same envelope:
{
"ok": true,
"data": { /* the result */ },
"meta": { "latency_ms": 38, "record_count": 1, "completeness_pct": 100, "cache_hit": false },
"error": null
}Create a free account for 1,000 credits, or try any endpoint in the playground with no setup.
Authentication
Pass your key as the x-api-key header on every request. Generate and manage keys from your dashboard — the full key is shown only once, so store it safely. Keep it server-side; never ship it to a browser.
Credits & pricing
All APIs draw from a single credit balance. You're charged only on a successful response — failed or blocked calls cost nothing. Most endpoints cost 1 credit; heavier ones (image rendering, AI, or large result sets) cost more, shown on each API's page. Cache hits still bill (you got a response) — caching saves our cost, not yours. See pricing.
Rate limits
Defaults: 600 requests/min per IP and 120 requests/min per key (some endpoints override these). On a limit you get RATE_LIMITED (429) with a retry hint — back off and retry.
Errors
On failure, ok is false and error carries a stable code, a message, and retryable.
| MISSING_PARAM | A required parameter was omitted (400). |
| INVALID_PARAM | A parameter was malformed (400). |
| NOT_FOUND | The requested resource doesn't exist (404). |
| AUTH_FAILED | Missing or invalid x-api-key (401). |
| QUOTA_EXCEEDED | Out of credits (402). |
| RATE_LIMITED | Too many requests — back off and retry (429). retryable. |
| DISABLED | Endpoint temporarily turned off (503). |
| TARGET_BLOCKED | Upstream anti-bot wall (502). usually retryable. |
| UPSTREAM_TIMEOUT | Upstream took too long (504). retryable. |
| PARSE_ERROR | Upstream changed shape (502). |
| INTERNAL | Unexpected error on our side (500). |
Use with AI agents
Point ChatGPT, Claude, or Cursor at Reef once and your assistant can call every API directly — no glue code. Add Reef to your assistant's tools:
{ "reef": { "url": "https://mcp.reefapi.com" } }64 APIs · pick one from the sidebar, or start in the playground.
Open the playground →