ExchangeRate-API · Schema
ExchangeRate-API Schemas
JSON Schema definitions for ExchangeRate-API v6 request and response objects
Currency ExchangeForeign ExchangeFinancial DataForexCurrency ConversionPublic APIs
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://raw.githubusercontent.com/api-evangelist/exchangerate/main/json-schema/exchangerate-schema.json",
"title": "ExchangeRate-API Schemas",
"description": "JSON Schema definitions for ExchangeRate-API v6 request and response objects",
"$defs": {
"ResultSuccess": {
"type": "string",
"const": "success",
"description": "Indicates the request was successful"
},
"ResultError": {
"type": "string",
"const": "error",
"description": "Indicates the request failed"
},
"CurrencyCode": {
"type": "string",
"pattern": "^[A-Z]{3}$",
"minLength": 3,
"maxLength": 3,
"description": "ISO 4217 three-letter currency code",
"examples": ["USD", "EUR", "GBP", "JPY", "AUD"]
},
"ConversionRates": {
"type": "object",
"description": "Object mapping ISO 4217 currency codes to exchange rate values relative to the base currency",
"additionalProperties": {
"type": "number",
"minimum": 0
},
"examples": [
{
"USD": 1,
"EUR": 0.8876,
"GBP": 0.7901,
"JPY": 107.53
}
]
},
"BaseMetadata": {
"type": "object",
"description": "Common metadata fields present in all successful API responses",
"properties": {
"result": { "$ref": "#/$defs/ResultSuccess" },
"documentation": {
"type": "string",
"format": "uri",
"description": "URL to the API documentation",
"examples": ["https://www.exchangerate-api.com/docs"]
},
"terms_of_use": {
"type": "string",
"format": "uri",
"description": "URL to the terms of use",
"examples": ["https://www.exchangerate-api.com/terms"]
}
},
"required": ["result"]
},
"TimestampFields": {
"type": "object",
"description": "Update timestamp fields included in current rate responses",
"properties": {
"time_last_update_unix": {
"type": "integer",
"description": "Unix epoch timestamp of the last exchange rate update",
"examples": [1585267200]
},
"time_last_update_utc": {
"type": "string",
"description": "UTC datetime string of the last exchange rate update",
"examples": ["Fri, 27 Mar 2020 00:00:00 +0000"]
},
"time_next_update_unix": {
"type": "integer",
"description": "Unix epoch timestamp of the next scheduled exchange rate update",
"examples": [1585353600]
},
"time_next_update_utc": {
"type": "string",
"description": "UTC datetime string of the next scheduled update",
"examples": ["Sat, 28 Mar 2020 00:00:00 +0000"]
}
}
},
"LatestRatesResponse": {
"allOf": [
{ "$ref": "#/$defs/BaseMetadata" },
{ "$ref": "#/$defs/TimestampFields" },
{
"type": "object",
"description": "Response from the latest exchange rates endpoint",
"properties": {
"base_code": {
"$ref": "#/$defs/CurrencyCode",
"description": "The base currency code provided in the request"
},
"conversion_rates": {
"$ref": "#/$defs/ConversionRates"
}
},
"required": ["base_code", "conversion_rates"]
}
],
"examples": [
{
"result": "success",
"documentation": "https://www.exchangerate-api.com/docs",
"terms_of_use": "https://www.exchangerate-api.com/terms",
"time_last_update_unix": 1585267200,
"time_last_update_utc": "Fri, 27 Mar 2020 00:00:00 +0000",
"time_next_update_unix": 1585353600,
"time_next_update_utc": "Sat, 28 Mar 2020 00:00:00 +0000",
"base_code": "USD",
"conversion_rates": {
"USD": 1,
"EUR": 0.8876,
"GBP": 0.7901,
"JPY": 107.53
}
}
]
},
"PairRateResponse": {
"allOf": [
{ "$ref": "#/$defs/BaseMetadata" },
{ "$ref": "#/$defs/TimestampFields" },
{
"type": "object",
"description": "Response from the pair conversion rate endpoint",
"properties": {
"base_code": {
"$ref": "#/$defs/CurrencyCode",
"description": "The source currency code"
},
"target_code": {
"$ref": "#/$defs/CurrencyCode",
"description": "The target currency code"
},
"conversion_rate": {
"type": "number",
"description": "The exchange rate from base to target currency",
"minimum": 0,
"examples": [0.8412]
}
},
"required": ["base_code", "target_code", "conversion_rate"]
}
],
"examples": [
{
"result": "success",
"documentation": "https://www.exchangerate-api.com/docs",
"terms_of_use": "https://www.exchangerate-api.com/terms",
"time_last_update_unix": 1585267200,
"time_last_update_utc": "Fri, 27 Mar 2020 00:00:00 +0000",
"time_next_update_unix": 1585353600,
"time_next_update_utc": "Sat, 28 Mar 2020 00:00:00 +0000",
"base_code": "EUR",
"target_code": "GBP",
"conversion_rate": 0.8412
}
]
},
"PairConversionResponse": {
"allOf": [
{ "$ref": "#/$defs/PairRateResponse" },
{
"type": "object",
"description": "Response from the pair conversion endpoint with amount",
"properties": {
"conversion_result": {
"type": "number",
"description": "The converted amount result",
"minimum": 0,
"examples": [5.8884]
}
},
"required": ["conversion_result"]
}
]
},
"HistoricalRatesResponse": {
"allOf": [
{ "$ref": "#/$defs/BaseMetadata" },
{
"type": "object",
"description": "Response from the historical exchange rates endpoint",
"properties": {
"base_code": {
"$ref": "#/$defs/CurrencyCode"
},
"year": {
"type": "integer",
"minimum": 1990,
"description": "Year of the historical data",
"examples": [2023]
},
"month": {
"type": "integer",
"minimum": 1,
"maximum": 12,
"description": "Month of the historical data",
"examples": [3]
},
"day": {
"type": "integer",
"minimum": 1,
"maximum": 31,
"description": "Day of the historical data",
"examples": [15]
},
"requested_time": {
"type": "string",
"format": "date-time",
"description": "ISO 8601 timestamp for the requested date",
"examples": ["2023-03-15T00:00:01+00:00"]
},
"conversion_rates": {
"$ref": "#/$defs/ConversionRates"
}
},
"required": ["base_code", "year", "month", "day", "conversion_rates"]
}
]
},
"SupportedCodesResponse": {
"allOf": [
{ "$ref": "#/$defs/BaseMetadata" },
{
"type": "object",
"description": "Response from the supported codes endpoint",
"properties": {
"supported_codes": {
"type": "array",
"description": "Array of [currencyCode, currencyName] pairs",
"items": {
"type": "array",
"minItems": 2,
"maxItems": 2,
"prefixItems": [
{
"$ref": "#/$defs/CurrencyCode",
"description": "ISO 4217 currency code"
},
{
"type": "string",
"description": "Full English name of the currency"
}
]
},
"examples": [
[["USD", "US Dollar"], ["EUR", "Euro"], ["GBP", "Pound Sterling"]]
]
}
},
"required": ["supported_codes"]
}
]
},
"QuotaResponse": {
"allOf": [
{ "$ref": "#/$defs/BaseMetadata" },
{
"type": "object",
"description": "Response from the quota endpoint",
"properties": {
"plan_quota": {
"type": "integer",
"minimum": 0,
"description": "Total API requests allowed per billing period",
"examples": [1500]
},
"requests_remaining": {
"type": "integer",
"minimum": 0,
"description": "API requests remaining in the current billing period",
"examples": [1243]
},
"refresh_day_of_month": {
"type": "integer",
"minimum": 1,
"maximum": 31,
"description": "Day of month when the quota resets",
"examples": [1]
}
},
"required": ["plan_quota", "requests_remaining", "refresh_day_of_month"]
}
]
},
"ErrorResponse": {
"type": "object",
"description": "Error response returned when a request fails",
"properties": {
"result": { "$ref": "#/$defs/ResultError" },
"error-type": {
"type": "string",
"enum": [
"unsupported-code",
"malformed-request",
"invalid-key",
"inactive-account",
"quota-reached"
],
"description": "Machine-readable error code indicating the failure reason"
}
},
"required": ["result", "error-type"],
"examples": [
{ "result": "error", "error-type": "invalid-key" },
{ "result": "error", "error-type": "quota-reached" },
{ "result": "error", "error-type": "unsupported-code" }
]
}
}
}
Work with this as data
Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/exchangerate"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.