Currency Conversion API for Developers
Most rate APIs are fine until something goes wrong — then you discover inconsistent errors, mystery rate limits, and no way to see your usage. This API is designed for the unhappy path: every response uses one envelope, every error has a machine-readable code, and your integration can always ask where it stands.
One envelope everywhere
success/data/meta on success, success/error on failure — a single response parser covers all seven endpoints.
Errors you can program against
Codes like rate_limited, quota_exceeded, and date_out_of_plan_range tell your code exactly what happened; Retry-After tells it what to do next.
Observable limits
The quota endpoint is free to call and works even when your quota is exhausted — dashboards and alerts never fly blind.
The endpoints you'll use
/api/v1/convertConversion with rate + result/api/v1/quotaUsage observability/api/v1/currenciesCodes + decimal digits for formattingDefensive conversion call
const res = await fetch(url, { headers });
const body = await res.json();
if (!body.success) {
switch (body.error.code) {
case "rate_limited": return retryAfter(res.headers.get("Retry-After"));
case "quota_exceeded": return alertOps("FX quota exhausted");
default: throw new Error(body.error.message);
}
}
return body.data.result;FAQ
Do failed requests count against my quota?
Gate rejections (bad key, rate limit, quota) don't count. Requests that reach processing do — including 4xx parameter errors, since they consume the same resources.
Is there CORS support?
Yes, all endpoints send Access-Control-Allow-Origin: * — though we recommend calling from your backend so your key stays server-side.
Try it with 1,000 free requests
Related: Currency API for SaaS · Exchange Rate API for Ecommerce · Exchange Rate API for Dashboards