API reference
One base URL, four endpoints, and a response shape that does not change. Everything is a GET request; there is nothing to write.
http://127.0.0.1:4200
Authentication
Send your key as an
X-API-Key
header, as
Authorization: Bearer,
or as an
?apikey=
query parameter. The header is preferred — query strings end up in access logs.
Each account has one key. You can copy it or issue a replacement at any time from your dashboard; regenerating takes the old key out of service immediately.
Endpoints
/v1/prices
Every instrument your plan allows, in one response. This is the endpoint almost everyone uses.
- type
- Narrow to a single market: crypto, forex, stocks or commodity.
- symbols
- Comma-separated list. Instruments we do not carry come back in an "unknown" array rather than as an error.
curl -H "X-API-Key: $KEY" \
"http://127.0.0.1:4200/v1/prices?type=crypto"
/v1/quote/{symbol}
A single instrument. URL-encode the slash in a pair — BTC/USDT becomes BTC%2FUSDT.
curl -H "X-API-Key: $KEY" \
"http://127.0.0.1:4200/v1/quote/BTC%2FUSDT"
/v1/symbols
The full catalogue with names and markets. Useful for building a picker.
curl -H "X-API-Key: $KEY" http://127.0.0.1:4200/v1/symbols
/v1/status
Feed freshness and your current plan limits. Handy as a health check on your side.
curl -H "X-API-Key: $KEY" http://127.0.0.1:4200/v1/status
Rate limits
Your plan sets the number. The window is fixed and resets on the minute, so a burst at 10:00:59 does not count against 10:01:00.
| Header | Meaning |
|---|---|
| X-RateLimit-Limit | Requests allowed per minute on your plan. |
| X-RateLimit-Remaining | Requests left in the current window. |
| X-RateLimit-Reset | Unix timestamp when the window resets. |
| Retry-After | Seconds to wait. Only sent on a 429. |
| X-Snapshot-Generated | When the returned prices were assembled. |
| ETag | Send it back as If-None-Match to receive a 304 when nothing has changed. |
Errors
Failures always come back as
{ "error": { "code", "message" } }.
Match on the code; the message is written for a human and may change.
| Code | HTTP | Meaning |
|---|---|---|
| missing_api_key | 401 | No key was sent in the header or query string. |
| invalid_api_key | 401 | The key does not exist. Check for a copy-paste error. |
| inactive | 403 | The key is real but the account has no running plan, or it is suspended. |
| rate_limited | 429 | You passed your per-minute allowance. Retry-After says how long to wait. |
| too_many_symbols | 400 | The ?symbols= list is longer than your plan allows in one response. |
| unknown_symbol | 404 | We do not carry that instrument. |
| no_data | 503 | No snapshot is available. Retry shortly. |
Ready to try it? Create an account and your key is issued immediately.