Docs › Guides › Reference › Errors
Errors
Errors are plain JSON with statusCode and message fields. messageis a plain string for most errors, or an array when a query parameter fails format validation. Every message the API can actually return is grouped below by status code, with the exact response shape — each endpoint's own page lists only the ones that apply to it.
400 Bad Request
The request itself is malformed — an invalid currency code, date, or amount. See each endpoint page for exactly which of these apply to it.
—base must be a 3-letter currency code
{
"statusCode": 400,
"message": [
"base must be a 3-letter currency code"
],
"error": "Bad Request"
}—symbols must be a comma-separated list of 3-letter currency codes
{
"statusCode": 400,
"message": [
"symbols must be a comma-separated list of 3-letter currency codes"
],
"error": "Bad Request"
}—date must be a valid calendar date in YYYY-MM-DD format
{
"statusCode": 400,
"message": [
"date must be a valid calendar date in YYYY-MM-DD format"
],
"error": "Bad Request"
}—from must be a 3-letter currency code
{
"statusCode": 400,
"message": [
"from must be a 3-letter currency code"
],
"error": "Bad Request"
}—to must be a 3-letter currency code
{
"statusCode": 400,
"message": [
"to must be a 3-letter currency code"
],
"error": "Bad Request"
}—amount must be a numeric string
{
"statusCode": 400,
"message": [
"amount must be a numeric string"
],
"error": "Bad Request"
}—amount must be a positive number
{
"statusCode": 400,
"message": "amount must be a positive number",
"error": "Bad Request"
}—to must be a comma-separated list of 3-letter currency codes
{
"statusCode": 400,
"message": [
"to must be a comma-separated list of 3-letter currency codes"
],
"error": "Bad Request"
}—to must contain at least 1 currency code
{
"statusCode": 400,
"message": [
"to must contain at least 1 currency code"
],
"error": "Bad Request"
}—to must contain at most 25 currency codes
{
"statusCode": 400,
"message": [
"to must contain at most 25 currency codes"
],
"error": "Bad Request"
}—Unknown currency: XYZ
{
"statusCode": 400,
"message": "Unknown currency: XYZ",
"error": "Bad Request"
}401 Unauthorized
The Authorization header is missing, malformed, or the key is wrong.
—Missing or malformed Authorization header
{
"statusCode": 401,
"message": "Missing or malformed Authorization header",
"error": "Unauthorized"
}—Invalid API key
{
"statusCode": 401,
"message": "Invalid API key",
"error": "Unauthorized"
}404 Not Found
No rates exist yet for what you asked for.
—No exchange rate data has been ingested yet
{
"statusCode": 404,
"message": "No exchange rate data has been ingested yet",
"error": "Not Found"
}—No exchange rate data available for 2020-01-01
{
"statusCode": 404,
"message": "No exchange rate data available for 2020-01-01",
"error": "Not Found"
}429 Too Many Requests
Your plan's request quota for the current period is used up.
—Rate limit exceeded: 1000 requests per 30-day period
{
"statusCode": 429,
"message": "Rate limit exceeded: 1000 requests per 30-day period"
}