Zephiel API

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. 1. Create a free account and copy your key from the dashboard.
  2. 2. Store it as ZEPHIEL_API_KEY in your environment.
  3. 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

HTTP error codes returned by the API
StatusCodeMeaning
400invalid_requestA required parameter is missing or malformed. The message names the field.
401missing_keyNo X-Zephiel-Key header was sent.
403not_subscribedYour key is valid but has no active plan for this API.
404not_foundThe endpoint or the requested resource does not exist.
422unprocessableThe request was well-formed but the upstream data could not satisfy it.
429rate_limitedPlan rate limit exceeded. Retry after the seconds given in Retry-After.
500internal_errorSomething failed on our side. These are never billed.
503upstream_unavailableA 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: 23

Webhooks

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/sdk

Python

pip install zephiel

PHP

composer require zephiel/sdk

Go

go get zephiel.com/sdk

Per-API reference

Endpoint-level docs live on each listing. Jump straight to one: