Market data and account APIs
for modern fintech.
A single REST surface for FX rates, market quotes, and account information. Sub-100ms responses, OpenAPI 3.1 spec, and OAuth2 client credentials.
Built for production
Predictable latency, transparent errors, and an OpenAPI spec you can codegen against.
Realtime FX rates
Hourly-refreshed reference rates for 30+ currencies, sourced from public reference feeds.
Market quotes
Bid/ask/last with 24h volume and percentage change for major FX and crypto pairs.
OAuth2 + JWT
Client-credentials flow issues short-lived JWTs. RS256/HS256 supported.
RFC 7807 errors
Structured application/problem+json responses with request IDs.
OpenAPI 3.1
Live spec at /openapi.json, browsable at /docs.
Stateless & horizontally scaled
No sticky sessions. Health probes at /v1/health.
Endpoints
All requests served from /v1. JSON in, JSON out.
| Method | Path | Description | Auth |
|---|---|---|---|
| GET | /v1/health | Liveness probe | — |
| GET | /v1/status | Service status & uptime | — |
| GET | /v1/rates | FX reference rates | — |
| GET | /v1/quotes/{symbol} | Market quote for symbol | — |
| GET | /v1/markets | Available trading pairs | — |
| POST | /v1/auth/token | Issue access token | — |
| GET | /v1/accounts/{id} | Account details | Bearer |
Quickstart
Get a quote for EUR/USD in one request.
curl https://api-fin.example.com/v1/quotes/EURUSD
Exchange client credentials for an access token, then read an account:
TOKEN=$(curl -s -X POST https://api-fin.example.com/v1/auth/token \
-H 'content-type: application/json' \
-d '{"grant_type":"client_credentials","client_id":"demo","client_secret":"supersecret"}' \
| jq -r .access_token)
curl -H "authorization: Bearer $TOKEN" \
https://api-fin.example.com/v1/accounts/acc_01HXYZ