Documentation
Every API on Zephiel shares one base URL, one authentication header, one error envelope, and one rate-limit contract. Learn it once and every listing works the same way.
Quickstart
- 1. Create a free account and copy your key from the dashboard.
- 2. Store it as
ZEPHIEL_API_KEYin your environment. - 3. Call any endpoint. The example below returns live FX rates.
curl -X GET "https://zephiel.com/api/v1/exchange-rates-data/latest?base=USD&symbols=EUR,GBP" \
-H "X-Zephiel-Key: $ZEPHIEL_API_KEY" \
-H "Accept: application/json"Authentication
Pass your key in the X-Zephiel-Key header on every request. Query-string keys are accepted for browser prototyping but are logged by intermediaries, so never use them in production. Keys are scoped per project and can be rotated without downtime by creating a second key before revoking the first.
Never expose a key in client-side code
Proxy requests through your own backend. Any key that appears in a browser bundle should be treated as compromised and rotated immediately.
Requests & responses
The base URL is https://zephiel.com/api/v1/{api-slug}. Responses are JSON, UTF-8, and always include a top-level success boolean.
{
"success": false,
"error": {
"code": "rate_limited",
"message": "Plan rate limit of 60 req/min exceeded.",
"retry_after": 23,
"docs": "https://zephiel.com/docs#rate-limits"
}
}Error reference
| Status | Code | Meaning |
|---|---|---|
| 400 | invalid_request | A required parameter is missing or malformed. The message names the field. |
| 401 | missing_key | No X-Zephiel-Key header was sent. |
| 403 | not_subscribed | Your key is valid but has no active plan for this API. |
| 404 | not_found | The endpoint or the requested resource does not exist. |
| 422 | unprocessable | The request was well-formed but the upstream data could not satisfy it. |
| 429 | rate_limited | Plan rate limit exceeded. Retry after the seconds given in Retry-After. |
| 500 | internal_error | Something failed on our side. These are never billed. |
| 503 | upstream_unavailable | A provider dependency is degraded. Check /status. |
Rate limits
Limits are enforced per key, per minute, using a sliding window. Every response carries the current state so you can back off before hitting a 429.
X-RateLimit-Limit: 600
X-RateLimit-Remaining: 583
X-RateLimit-Reset: 1756213860
Retry-After: 23Webhooks
Long-running operations — bulk email verification, transcription, crawls — post back to your endpoint when they finish. Every delivery is signed with HMAC-SHA256 in the X-Zephiel-Signature header. Compare it against your signing secret before trusting the body, and respond 2xx within 10 seconds or we retry with exponential backoff for 24 hours.
SDKs
Official clients wrap authentication, retries, and typed responses for all 38 APIs.
TypeScript
npm i @zephiel/sdkPython
pip install zephielPHP
composer require zephiel/sdkGo
go get zephiel.com/sdkPer-API reference
Endpoint-level docs live on each listing. Jump straight to one: