{"openapi":"3.1.0","info":{"title":"World Reference Data API","version":"1.0.0","description":"Countries, ISO 3166-2 subdivisions, currencies, IANA time zones with DST transitions, rule-computed public holidays with business-day maths, 8,900+ airports, languages and locales, calling codes, postal-code formats and ECB reference exchange rates — one key, one envelope.\n\nReference data developers otherwise stitch together from five sources, bundled at the edge and answered in milliseconds: ISO 3166-1 countries (codes, capital, coordinates, area, population, M49 region, currencies, calling code, TLD, languages, neighbours, weekend, postal-code format), 5,000+ ISO 3166-2 subdivisions, ISO 4217 currencies with minor units, every IANA time zone with current offset, DST transitions and conversions, public holidays computed from rules for 200+ countries with business-day checks, additions and counts, 8,900+ IATA airports with time zones, nearest-airport and great-circle distance, ISO 639 languages, BCP 47 locale facts, calling codes and the European Central Bank’s euro reference rates (cached ≥ 6 h, attributed).\n\nEverything except the ECB rates is computed from bundled, licence-checked datasets (GeoNames CC BY 4.0, Unicode CLDR, IANA tz, OurAirports public domain, Wikidata CC0, date-holidays CC BY 3.0) — no third-party API sits in the request path, so answers are fast, deterministic for the same input and dataset version, and private. Sources and attribution: /attribution.\n\n## Limits\n\n| Endpoint | Limit |\n|---|---|\n| `GET /v1/countries` | query string ≤ 2048 bytes; returns at most 250 items |\n| `GET /v1/countries/lookup` | query string ≤ 2048 bytes; one country per call |\n| `GET /v1/countries/search` | query string ≤ 2048 bytes; q ≤ 60 characters; limit ≤ 50 |\n| `GET /v1/postal-codes/validate` | query string ≤ 2048 bytes; code ≤ 16 characters |\n| `GET /v1/calling-codes` | query string ≤ 2048 bytes; no parameters |\n| `GET /v1/calling-codes/lookup` | query string ≤ 2048 bytes; one country or calling code per call |\n| `GET /v1/subdivisions` | query string ≤ 2048 bytes; one country per call |\n| `GET /v1/subdivisions/lookup` | query string ≤ 2048 bytes; one code per call |\n| `GET /v1/currencies` | query string ≤ 2048 bytes; returns at most 160 items |\n| `GET /v1/currencies/lookup` | query string ≤ 2048 bytes; one currency per call |\n| `GET /v1/rates/latest` | query string ≤ 2048 bytes; symbols ≤ 200 characters |\n| `GET /v1/rates/convert` | query string ≤ 2048 bytes; |amount| ≤ 1e15 |\n| `GET /v1/rates/history` | query string ≤ 2048 bytes; symbols ≤ 200 characters; dates within the last 90 days |\n| `GET /v1/rates/series` | query string ≤ 2048 bytes; symbols ≤ 10 codes; range inside the last 90 days |\n| `GET /v1/timezones` | query string ≤ 2048 bytes; returns at most 420 items |\n| `GET /v1/timezones/info` | query string ≤ 2048 bytes; one zone per call |\n| `GET /v1/timezones/transitions` | query string ≤ 2048 bytes; range ≤ 10 years |\n| `GET /v1/timezones/convert` | query string ≤ 2048 bytes; one conversion per call |\n| `GET /v1/holidays` | query string ≤ 2048 bytes; year 1970–2100 |\n| `GET /v1/holidays/check` | query string ≤ 2048 bytes; date within 1970–2100 |\n| `GET /v1/holidays/next` | query string ≤ 2048 bytes; limit ≤ 50 |\n| `GET /v1/holidays/countries` | query string ≤ 2048 bytes; no limit parameters |\n| `GET /v1/business-days/check` | query string ≤ 2048 bytes; date within 1970–2100 |\n| `GET /v1/business-days/add` | query string ≤ 2048 bytes; |days| ≤ 2,500 |\n| `GET /v1/business-days/count` | query string ≤ 2048 bytes; range ≤ 3,660 days |\n| `GET /v1/airports/lookup` | query string ≤ 2048 bytes; one code per call |\n| `GET /v1/airports/search` | query string ≤ 2048 bytes; q ≤ 60 characters; limit ≤ 50 |\n| `GET /v1/airports/nearest` | query string ≤ 2048 bytes; limit ≤ 25; max_km ≤ 20,000 |\n| `GET /v1/airports/distance` | query string ≤ 2048 bytes; two codes per call |\n| `GET /v1/languages` | query string ≤ 2048 bytes; returns at most 400 items |\n| `GET /v1/languages/lookup` | query string ≤ 2048 bytes; one code per call |\n| `GET /v1/locales/info` | query string ≤ 2048 bytes; tag ≤ 35 characters |\n\n## Errors\n\nEvery error is `{\"success\":false,\"error\":{\"code\",\"message\",\"hint\",\"docs_url\",\"request_id\"}}` with a semantically correct 4xx status for bad input. Catalogue: https://apid-worlddata.bold-fire-c2bb.workers.dev/errors","license":{"name":"Proprietary — commercial API, see the RapidAPI listing terms","url":"https://apid-worlddata.bold-fire-c2bb.workers.dev/"},"contact":{"name":"World Reference Data API support","url":"https://apid-worlddata.bold-fire-c2bb.workers.dev/"}},"servers":[{"url":"https://apid-worlddata.bold-fire-c2bb.workers.dev"}],"tags":[{"name":"Countries","description":"ISO 3166-1 countries, M49 regions, postal codes and calling codes."},{"name":"Subdivisions","description":"ISO 3166-2 subdivisions (states, provinces, regions) with hierarchy."},{"name":"Currencies","description":"ISO 4217 currencies, minor units and the countries using them."},{"name":"Time zones","description":"IANA time zones: offsets, DST transitions and conversions."},{"name":"Holidays","description":"Rule-computed public holidays and business-day calculations."},{"name":"Airports","description":"IATA/ICAO airports, nearest-airport search and distances."},{"name":"Languages","description":"ISO 639 languages and BCP 47 locale facts."},{"name":"Exchange rates","description":"European Central Bank euro reference rates (cached ≥ 6 h)."}],"security":[{"RapidAPIKey":[],"RapidAPIHost":[]}],"externalDocs":{"description":"Interactive reference","url":"https://apid-worlddata.bold-fire-c2bb.workers.dev/docs"},"components":{"securitySchemes":{"RapidAPIKey":{"type":"apiKey","in":"header","name":"X-RapidAPI-Key","description":"Your RapidAPI application key."},"RapidAPIHost":{"type":"apiKey","in":"header","name":"X-RapidAPI-Host","description":"The RapidAPI host of this API."}},"schemas":{"Meta":{"type":"object","properties":{"request_id":{"type":"string","description":"Unique id of this request; quote it to support."},"ms":{"type":"integer","minimum":0,"description":"Server-side wall time in milliseconds as observed by the Worker."},"source":{"type":"string","description":"Where the answer came from: \"computed\" (our code), \"bundled:<dataset>\", or \"network:<upstream>\".","example":"computed"},"cache":{"type":"string","enum":["hit","miss","stale"],"description":"Present on network-derived answers: cache outcome for this request."},"stale":{"type":"boolean","description":"True when a cached value is served because the upstream failed or is refreshing."}},"required":["request_id","ms","source"]},"Error":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code.","example":"invalid_parameters"},"message":{"type":"string","description":"Human-readable explanation."},"hint":{"type":"string","description":"What to change to make the request succeed."},"docs_url":{"type":"string","format":"uri","description":"Link to the error catalogue entry."},"request_id":{"type":"string","description":"Unique id of this request; quote it to support."},"details":{"type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}},"retry_after":{"type":"integer","exclusiveMinimum":0,"description":"Seconds to wait (429/503)."}},"required":["code","message","hint","docs_url","request_id"]}},"required":["success","error"]},"ErrorDetail":{"type":"object","properties":{"path":{"type":"string","example":"query.name"},"message":{"type":"string","example":"Too big: expected string to have <=100 characters"}},"required":["path","message"]},"Coordinates":{"type":["object","null"],"properties":{"lat":{"type":"number","description":"Latitude, decimal degrees (WGS 84)."},"lng":{"type":"number","description":"Longitude, decimal degrees (WGS 84)."}},"required":["lat","lng"],"description":"Representative point (Wikidata P625)."}},"parameters":{}},"paths":{"/v1/countries":{"get":{"operationId":"countriesList","tags":["Countries"],"summary":"List countries, filtered by region, currency, language or calling code","description":"All 250 ISO 3166-1 countries and territories (sorted by alpha-2) with codes, flag, capital, M49 region, main currency and calling code. Filters combine with AND; region/subregion match the M49 code or English name, continent the two-letter continent code.\n\n**Limits:** query string ≤ 2048 bytes; returns at most 250 items.","parameters":[{"schema":{"type":"string","enum":["AF","AN","AS","EU","NA","OC","SA"],"description":"Continent code.","example":"AF"},"required":false,"description":"Continent code.","name":"continent","in":"query"},{"schema":{"type":"string","maxLength":40,"description":"M49 region or subregion: code (002, 018) or name."},"required":false,"description":"M49 region or subregion: code (002, 018) or name.","name":"region","in":"query"},{"schema":{"type":"string","minLength":3,"maxLength":3,"description":"Countries using this ISO 4217 currency."},"required":false,"description":"Countries using this ISO 4217 currency.","name":"currency","in":"query"},{"schema":{"type":"string","minLength":2,"maxLength":12,"description":"Countries where this language (BCP 47) is spoken."},"required":false,"description":"Countries where this language (BCP 47) is spoken.","name":"language","in":"query"},{"schema":{"type":"string","pattern":"^\\+?\\d{1,4}$","description":"Calling code, e.g. 1 or +44."},"required":false,"description":"Calling code, e.g. 1 or +44.","name":"calling_code","in":"query"},{"schema":{"type":"string","minLength":2,"maxLength":35,"description":"BCP 47 locale for the `local_name` fields (e.g. `de`, `fr-CA`, `ja`). Omit for English names only.","example":"de"},"required":false,"description":"BCP 47 locale for the `local_name` fields (e.g. `de`, `fr-CA`, `ja`). Omit for English names only.","name":"locale","in":"query"}],"responses":{"200":{"description":"List countries, filtered by region, currency, language or calling code","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"count":{"type":"integer"},"countries":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","description":"ISO 3166-1 alpha-2."},"alpha3":{"type":"string","description":"ISO 3166-1 alpha-3."},"numeric":{"type":"string","description":"ISO 3166-1 numeric (3 digits, zero-padded)."},"name":{"type":"string","description":"English short name (GeoNames)."},"local_name":{"type":["string","null"],"description":"Name in `locale` (CLDR via ICU); null without `locale`."},"flag":{"type":"string","description":"Flag emoji (regional indicator symbols)."},"capital":{"type":["string","null"],"description":"Capital city (GeoNames); null where none."},"continent":{"type":"string","description":"Continent code: AF, AN, AS, EU, NA, OC, SA."},"region":{"type":["string","null"],"description":"M49 region name, e.g. Africa."},"subregion":{"type":["string","null"],"description":"M49 subregion name, e.g. Southern Africa."},"currency":{"type":["string","null"],"description":"Main ISO 4217 currency code."},"calling_code":{"type":["string","null"],"description":"International calling code without +, e.g. 27."}},"required":["code","alpha3","numeric","name","local_name","flag","capital","continent","region","subregion","currency","calling_code"]}}},"required":["count","countries"]},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["success","data","meta"]}}}},"400":{"description":"Malformed request (e.g. body is not valid JSON).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid RapidAPI proxy credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Payload exceeds the documented limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Parameters failed validation; see error.details.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/countries/lookup":{"get":{"operationId":"countriesLookup","tags":["Countries"],"summary":"Everything about one country: codes, capital, coordinates, population, currencies, time zones, week","description":"Full record for an ISO 3166-1 code (alpha-2, alpha-3 or numeric): names (English, `locale`, and in its main official language), coordinates, capital and its coordinates, area, population and density, continent and UN M49 region/subregion, TLD, currencies, languages, neighbours, IANA time zones, postal-code format and regex, first day of week and weekend days, measurement system, paper size and preferred hour cycle.\n\n**Limits:** query string ≤ 2048 bytes; one country per call.","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":3,"description":"ISO 3166-1 alpha-2 (`ZA`), alpha-3 (`ZAF`) or numeric (`710`) country code, case-insensitive.","example":"ZA"},"required":true,"description":"ISO 3166-1 alpha-2 (`ZA`), alpha-3 (`ZAF`) or numeric (`710`) country code, case-insensitive.","name":"code","in":"query"},{"schema":{"type":"string","minLength":2,"maxLength":35,"description":"BCP 47 locale for the `local_name` fields (e.g. `de`, `fr-CA`, `ja`). Omit for English names only.","example":"de"},"required":false,"description":"BCP 47 locale for the `local_name` fields (e.g. `de`, `fr-CA`, `ja`). Omit for English names only.","name":"locale","in":"query"}],"responses":{"200":{"description":"Everything about one country: codes, capital, coordinates, population, currencies, time zones, week","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"country":{"type":"object","properties":{"code":{"type":"string","description":"ISO 3166-1 alpha-2."},"alpha3":{"type":"string","description":"ISO 3166-1 alpha-3."},"numeric":{"type":"string","description":"ISO 3166-1 numeric (3 digits, zero-padded)."},"name":{"type":"string","description":"English short name (GeoNames)."},"local_name":{"type":["string","null"],"description":"Name in `locale` (CLDR via ICU); null without `locale`."},"flag":{"type":"string","description":"Flag emoji (regional indicator symbols)."},"capital":{"type":["string","null"],"description":"Capital city (GeoNames); null where none."},"continent":{"type":"string","description":"Continent code: AF, AN, AS, EU, NA, OC, SA."},"region":{"type":["string","null"],"description":"M49 region name, e.g. Africa."},"subregion":{"type":["string","null"],"description":"M49 subregion name, e.g. Southern Africa."},"currency":{"type":["string","null"],"description":"Main ISO 4217 currency code."},"calling_code":{"type":["string","null"],"description":"International calling code without +, e.g. 27."},"official_name_local":{"type":["string","null"],"description":"Name in the country’s main official language."},"coordinates":{"$ref":"#/components/schemas/Coordinates"},"capital_coordinates":{"allOf":[{"$ref":"#/components/schemas/Coordinates"},{"description":"Capital city coordinates (GeoNames)."}]},"area_km2":{"type":["number","null"],"description":"Area in square kilometres (GeoNames)."},"population":{"type":["number","null"],"description":"Population estimate (GeoNames)."},"population_density":{"type":["number","null"],"description":"Inhabitants per km², 1 decimal."},"continent_name":{"type":"string"},"m49":{"type":"object","properties":{"region":{"type":["object","null"],"properties":{"code":{"type":"string","description":"UN M49 numeric area code, e.g. 002 (Africa)."},"name":{"type":"string","description":"English name (Unicode CLDR)."}},"required":["code","name"]},"subregion":{"type":["object","null"],"properties":{"code":{"type":"string","description":"UN M49 numeric area code, e.g. 002 (Africa)."},"name":{"type":"string","description":"English name (Unicode CLDR)."}},"required":["code","name"]},"intermediate_region":{"type":["object","null"],"properties":{"code":{"type":"string","description":"UN M49 numeric area code, e.g. 002 (Africa)."},"name":{"type":"string","description":"English name (Unicode CLDR)."}},"required":["code","name"]}},"required":["region","subregion","intermediate_region"]},"tld":{"type":["string","null"],"description":"Country-code top-level domain, e.g. .za."},"currencies":{"type":"array","items":{"type":"string"},"description":"All current legal-tender ISO 4217 codes (CLDR)."},"languages":{"type":"array","items":{"type":"string"},"description":"Languages spoken, most important first (GeoNames; BCP 47 tags)."},"official_languages":{"type":"array","items":{"type":"string"},"description":"Official / de-facto official languages at national level (CLDR)."},"neighbours":{"type":"array","items":{"type":"string"},"description":"Alpha-2 codes of countries sharing a land border."},"timezones":{"type":"array","items":{"type":"string"},"description":"IANA time zones of the country (zone.tab)."},"postal_code":{"type":"object","properties":{"format":{"type":["string","null"],"description":"GeoNames format mask (# digit, @ letter)."},"regex":{"type":["string","null"],"description":"Validation regular expression (GeoNames)."}},"required":["format","regex"],"description":"Null fields: the country does not use postal codes."},"week":{"type":"object","properties":{"first_day":{"type":"integer","description":"ISO weekday the week starts on (1 = Monday … 7 = Sunday)."},"weekend":{"type":"array","items":{"type":"integer"},"description":"ISO weekdays of the weekend (CLDR)."}},"required":["first_day","weekend"]},"measurement_system":{"type":"string","description":"metric, US or UK (CLDR)."},"paper_size":{"type":"string","description":"A4 or US-Letter (CLDR)."},"hour_cycle":{"type":"string","description":"Preferred clock: H (24-hour) or h (12-hour) (CLDR)."}},"required":["code","alpha3","numeric","name","local_name","flag","capital","continent","region","subregion","currency","calling_code","official_name_local","coordinates","capital_coordinates","area_km2","population","population_density","continent_name","m49","tld","currencies","languages","official_languages","neighbours","timezones","postal_code","week","measurement_system","paper_size","hour_cycle"]}},"required":["country"]},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["success","data","meta"]}}}},"400":{"description":"Malformed request (e.g. body is not valid JSON).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid RapidAPI proxy credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Payload exceeds the documented limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Parameters failed validation; see error.details.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/countries/search":{"get":{"operationId":"countriesSearch","tags":["Countries"],"summary":"Find countries by name in any language, or by code","description":"Matches the English name, the name in `locale` and in English via CLDR, and the alpha-2/alpha-3 codes. Matching ignores case, accents and punctuation; exact matches rank first, then prefix matches, then word matches, then substrings.\n\n**Limits:** query string ≤ 2048 bytes; q ≤ 60 characters; limit ≤ 50.","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":60,"description":"Name fragment or code.","example":"deutsch"},"required":true,"description":"Name fragment or code.","name":"q","in":"query"},{"schema":{"type":"string","minLength":2,"maxLength":35,"description":"BCP 47 locale for the `local_name` fields (e.g. `de`, `fr-CA`, `ja`). Omit for English names only.","example":"de"},"required":false,"description":"BCP 47 locale for the `local_name` fields (e.g. `de`, `fr-CA`, `ja`). Omit for English names only.","name":"locale","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":50,"default":10,"description":"Maximum results.","example":10},"required":false,"description":"Maximum results.","name":"limit","in":"query"}],"responses":{"200":{"description":"Find countries by name in any language, or by code","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"count":{"type":"integer"},"countries":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","description":"ISO 3166-1 alpha-2."},"alpha3":{"type":"string","description":"ISO 3166-1 alpha-3."},"numeric":{"type":"string","description":"ISO 3166-1 numeric (3 digits, zero-padded)."},"name":{"type":"string","description":"English short name (GeoNames)."},"local_name":{"type":["string","null"],"description":"Name in `locale` (CLDR via ICU); null without `locale`."},"flag":{"type":"string","description":"Flag emoji (regional indicator symbols)."},"capital":{"type":["string","null"],"description":"Capital city (GeoNames); null where none."},"continent":{"type":"string","description":"Continent code: AF, AN, AS, EU, NA, OC, SA."},"region":{"type":["string","null"],"description":"M49 region name, e.g. Africa."},"subregion":{"type":["string","null"],"description":"M49 subregion name, e.g. Southern Africa."},"currency":{"type":["string","null"],"description":"Main ISO 4217 currency code."},"calling_code":{"type":["string","null"],"description":"International calling code without +, e.g. 27."},"score":{"type":"number"}},"required":["code","alpha3","numeric","name","local_name","flag","capital","continent","region","subregion","currency","calling_code","score"]}}},"required":["count","countries"]},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["success","data","meta"]}}}},"400":{"description":"Malformed request (e.g. body is not valid JSON).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid RapidAPI proxy credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Payload exceeds the documented limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Parameters failed validation; see error.details.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/postal-codes/validate":{"get":{"operationId":"postalCodeValidate","tags":["Countries"],"summary":"Check a postal code against the country’s published format","description":"Validates the shape of a postal/ZIP code with the country’s GeoNames format (e.g. `#####-####` for the US, `@# #@@` patterns for the UK, `@#@ #@#` for Canada). Case and surrounding spaces are normalised first. This checks the format, not that the code is assigned to an address. `valid` is null for countries that do not use postal codes.\n\n**Limits:** query string ≤ 2048 bytes; code ≤ 16 characters.","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":3,"description":"ISO 3166-1 alpha-2 (`ZA`), alpha-3 (`ZAF`) or numeric (`710`) country code, case-insensitive.","example":"CA"},"required":true,"description":"ISO 3166-1 alpha-2 (`ZA`), alpha-3 (`ZAF`) or numeric (`710`) country code, case-insensitive.","name":"country","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":16,"description":"Postal code to check.","example":"k1a 0b1"},"required":true,"description":"Postal code to check.","name":"code","in":"query"}],"responses":{"200":{"description":"Check a postal code against the country’s published format","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"country":{"type":"string"},"code":{"type":"string","description":"The code as received."},"normalized":{"type":"string","description":"Upper-cased, trimmed, inner whitespace collapsed."},"uses_postal_codes":{"type":"boolean"},"valid":{"type":["boolean","null"],"description":"Format match; null when the country has no postal codes."},"format":{"type":["string","null"],"description":"Expected format (# digit, @ letter)."}},"required":["country","code","normalized","uses_postal_codes","valid","format"]},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["success","data","meta"]}}}},"400":{"description":"Malformed request (e.g. body is not valid JSON).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid RapidAPI proxy credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Payload exceeds the documented limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Parameters failed validation; see error.details.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/calling-codes":{"get":{"operationId":"callingCodesList","tags":["Countries"],"summary":"List international calling codes and the countries that share them","description":"Every country calling code from libphonenumber metadata, with the regions using it (e.g. +1: US, CA and 23 Caribbean regions; +7: RU, KZ). Sorted numerically.\n\n**Limits:** query string ≤ 2048 bytes; no parameters.","responses":{"200":{"description":"List international calling codes and the countries that share them","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"count":{"type":"integer"},"calling_codes":{"type":"array","items":{"type":"object","properties":{"calling_code":{"type":"string"},"countries":{"type":"array","items":{"type":"string"},"description":"Alpha-2 codes."}},"required":["calling_code","countries"]}}},"required":["count","calling_codes"]},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["success","data","meta"]}}}},"400":{"description":"Malformed request (e.g. body is not valid JSON).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid RapidAPI proxy credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Payload exceeds the documented limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Parameters failed validation; see error.details.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/calling-codes/lookup":{"get":{"operationId":"callingCodesLookup","tags":["Countries"],"summary":"Calling code, dialling prefixes and an example number for a country (or countries for a code)","description":"Pass `country` (alpha-2/alpha-3/numeric) for its calling code, international (IDD) and national (trunk) prefixes and a formatted example mobile number; or pass `calling_code` for every region that shares it. Exactly one of the two parameters is required.\n\n**Limits:** query string ≤ 2048 bytes; one country or calling code per call.","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":3,"description":"ISO 3166-1 alpha-2 (`ZA`), alpha-3 (`ZAF`) or numeric (`710`) country code, case-insensitive.","example":"ZA"},"required":false,"description":"ISO 3166-1 alpha-2 (`ZA`), alpha-3 (`ZAF`) or numeric (`710`) country code, case-insensitive.","name":"country","in":"query"},{"schema":{"type":"string","pattern":"^\\+?\\d{1,4}$","description":"Calling code, e.g. 44 or +1."},"required":false,"description":"Calling code, e.g. 44 or +1.","name":"calling_code","in":"query"}],"responses":{"200":{"description":"Calling code, dialling prefixes and an example number for a country (or countries for a code)","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"count":{"type":"integer"},"results":{"type":"array","items":{"type":"object","properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 (libphonenumber region)."},"name":{"type":["string","null"]},"calling_code":{"type":"string","description":"Country calling code without +."},"international_prefix":{"type":["string","null"],"description":"Prefix dialled from this country to call abroad (e.g. 00, 011)."},"national_prefix":{"type":["string","null"],"description":"Trunk prefix for national dialling (e.g. 0)."},"example_mobile":{"type":["object","null"],"properties":{"e164":{"type":"string"},"international":{"type":"string"},"national":{"type":"string"}},"required":["e164","international","national"],"description":"libphonenumber example mobile number (fictitious)."}},"required":["country","name","calling_code","international_prefix","national_prefix","example_mobile"]}}},"required":["count","results"]},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["success","data","meta"]}}}},"400":{"description":"Malformed request (e.g. body is not valid JSON).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid RapidAPI proxy credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Payload exceeds the documented limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Parameters failed validation; see error.details.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/subdivisions":{"get":{"operationId":"subdivisionsList","tags":["Subdivisions"],"summary":"List ISO 3166-2 subdivisions of a country","description":"Current ISO 3166-2 codes (states, provinces, regions, departments …) of a country with English names and hierarchy from Unicode CLDR 49. Filter by `level` (1 = top level) or `parent` (children of one subdivision).\n\n**Limits:** query string ≤ 2048 bytes; one country per call.","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":3,"description":"ISO 3166-1 alpha-2 (`ZA`), alpha-3 (`ZAF`) or numeric (`710`) country code, case-insensitive.","example":"ZA"},"required":true,"description":"ISO 3166-1 alpha-2 (`ZA`), alpha-3 (`ZAF`) or numeric (`710`) country code, case-insensitive.","name":"country","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":3,"description":"Only this level.","example":1},"required":false,"description":"Only this level.","name":"level","in":"query"},{"schema":{"type":"string","maxLength":10,"description":"Only children of this subdivision code."},"required":false,"description":"Only children of this subdivision code.","name":"parent","in":"query"}],"responses":{"200":{"description":"List ISO 3166-2 subdivisions of a country","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"country":{"type":"string"},"count":{"type":"integer"},"subdivisions":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","description":"ISO 3166-2 code, e.g. ZA-GP."},"name":{"type":["string","null"],"description":"English name (CLDR); null where CLDR has none."},"country":{"type":"string","description":"ISO 3166-1 alpha-2."},"parent":{"type":["string","null"],"description":"Parent subdivision (e.g. a French department’s region)."},"level":{"type":"integer","description":"1 = top level; 2 = inside a level-1 subdivision."}},"required":["code","name","country","parent","level"]}}},"required":["country","count","subdivisions"]},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["success","data","meta"]}}}},"400":{"description":"Malformed request (e.g. body is not valid JSON).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid RapidAPI proxy credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Payload exceeds the documented limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Parameters failed validation; see error.details.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/subdivisions/lookup":{"get":{"operationId":"subdivisionsLookup","tags":["Subdivisions"],"summary":"Look up one ISO 3166-2 subdivision with its parents and children","description":"Name, country, level, the chain of parent subdivisions and the codes of its children for one current ISO 3166-2 code (case-insensitive; the hyphen is required).\n\n**Limits:** query string ≤ 2048 bytes; one code per call.","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":10,"description":"ISO 3166-2 code.","example":"FR-75C"},"required":true,"description":"ISO 3166-2 code.","name":"code","in":"query"}],"responses":{"200":{"description":"Look up one ISO 3166-2 subdivision with its parents and children","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"subdivision":{"type":"object","properties":{"code":{"type":"string","description":"ISO 3166-2 code, e.g. ZA-GP."},"name":{"type":["string","null"],"description":"English name (CLDR); null where CLDR has none."},"country":{"type":"string","description":"ISO 3166-1 alpha-2."},"parent":{"type":["string","null"],"description":"Parent subdivision (e.g. a French department’s region)."},"level":{"type":"integer","description":"1 = top level; 2 = inside a level-1 subdivision."},"country_name":{"type":"string"},"parents":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","description":"ISO 3166-2 code, e.g. ZA-GP."},"name":{"type":["string","null"],"description":"English name (CLDR); null where CLDR has none."},"country":{"type":"string","description":"ISO 3166-1 alpha-2."},"parent":{"type":["string","null"],"description":"Parent subdivision (e.g. a French department’s region)."},"level":{"type":"integer","description":"1 = top level; 2 = inside a level-1 subdivision."}},"required":["code","name","country","parent","level"]},"description":"Nearest parent first."},"children":{"type":"array","items":{"type":"string"},"description":"Codes of direct children."}},"required":["code","name","country","parent","level","country_name","parents","children"]}},"required":["subdivision"]},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["success","data","meta"]}}}},"400":{"description":"Malformed request (e.g. body is not valid JSON).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid RapidAPI proxy credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Payload exceeds the documented limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Parameters failed validation; see error.details.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/currencies":{"get":{"operationId":"currenciesList","tags":["Currencies"],"summary":"List current ISO 4217 currencies with names, symbols and minor units","description":"Every currency that is legal tender in at least one country today (Unicode CLDR 49 currency data), sorted by code, with English and localized names, symbols as used in `locale`, accounting and cash minor units, cash rounding and the countries using it. Filter with `country`.\n\n**Limits:** query string ≤ 2048 bytes; returns at most 160 items.","parameters":[{"schema":{"type":"string","minLength":2,"maxLength":3,"description":"Only currencies of this country.","example":"ZW"},"required":false,"description":"Only currencies of this country.","name":"country","in":"query"},{"schema":{"type":"string","minLength":2,"maxLength":35,"description":"BCP 47 locale for the `local_name` fields (e.g. `de`, `fr-CA`, `ja`). Omit for English names only.","example":"de"},"required":false,"description":"BCP 47 locale for the `local_name` fields (e.g. `de`, `fr-CA`, `ja`). Omit for English names only.","name":"locale","in":"query"}],"responses":{"200":{"description":"List current ISO 4217 currencies with names, symbols and minor units","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"count":{"type":"integer"},"currencies":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","description":"ISO 4217 alphabetic code."},"numeric":{"type":["string","null"],"description":"ISO 4217 numeric code (3 digits)."},"name":{"type":["string","null"],"description":"English name (CLDR)."},"local_name":{"type":["string","null"],"description":"Name in `locale`; null without `locale`."},"symbol":{"type":"string","description":"Symbol in `locale` (default en), e.g. \"ZAR\" in en, \"R\" in en-ZA."},"narrow_symbol":{"type":"string","description":"Narrow symbol, e.g. \"R\", \"$\", \"€\"."},"minor_units":{"type":"integer","description":"Decimal digits used in accounting (ISO 4217 / CLDR)."},"cash_minor_units":{"type":"integer","description":"Decimal digits used for cash, when different."},"cash_rounding":{"type":"integer","description":"Cash rounding increment in minor units (e.g. 5 for CHF: 0.05); 0 = none."},"countries":{"type":"array","items":{"type":"string"},"description":"Countries where it is current legal tender (CLDR)."}},"required":["code","numeric","name","local_name","symbol","narrow_symbol","minor_units","cash_minor_units","cash_rounding","countries"]}}},"required":["count","currencies"]},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["success","data","meta"]}}}},"400":{"description":"Malformed request (e.g. body is not valid JSON).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid RapidAPI proxy credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Payload exceeds the documented limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Parameters failed validation; see error.details.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/currencies/lookup":{"get":{"operationId":"currenciesLookup","tags":["Currencies"],"summary":"One currency: names, symbols, minor units, countries and a formatted sample","description":"Look up an ISO 4217 code (alphabetic or numeric). `formatted` shows 1234567.891 formatted in `locale` (default en) to the currency’s minor units, e.g. \"R 1 234 567,89\" in en-ZA.\n\n**Limits:** query string ≤ 2048 bytes; one currency per call.","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":3,"description":"ISO 4217 code.","example":"ZAR"},"required":true,"description":"ISO 4217 code.","name":"code","in":"query"},{"schema":{"type":"string","minLength":2,"maxLength":35,"description":"BCP 47 locale for the `local_name` fields (e.g. `de`, `fr-CA`, `ja`). Omit for English names only.","example":"de"},"required":false,"description":"BCP 47 locale for the `local_name` fields (e.g. `de`, `fr-CA`, `ja`). Omit for English names only.","name":"locale","in":"query"}],"responses":{"200":{"description":"One currency: names, symbols, minor units, countries and a formatted sample","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"currency":{"type":"object","properties":{"code":{"type":"string","description":"ISO 4217 alphabetic code."},"numeric":{"type":["string","null"],"description":"ISO 4217 numeric code (3 digits)."},"name":{"type":["string","null"],"description":"English name (CLDR)."},"local_name":{"type":["string","null"],"description":"Name in `locale`; null without `locale`."},"symbol":{"type":"string","description":"Symbol in `locale` (default en), e.g. \"ZAR\" in en, \"R\" in en-ZA."},"narrow_symbol":{"type":"string","description":"Narrow symbol, e.g. \"R\", \"$\", \"€\"."},"minor_units":{"type":"integer","description":"Decimal digits used in accounting (ISO 4217 / CLDR)."},"cash_minor_units":{"type":"integer","description":"Decimal digits used for cash, when different."},"cash_rounding":{"type":"integer","description":"Cash rounding increment in minor units (e.g. 5 for CHF: 0.05); 0 = none."},"countries":{"type":"array","items":{"type":"string"},"description":"Countries where it is current legal tender (CLDR)."},"formatted":{"type":"string","description":"1234567.891 formatted as money in `locale`."},"ecb_reference_rate":{"type":"boolean","description":"True when the ECB publishes a euro reference rate."}},"required":["code","numeric","name","local_name","symbol","narrow_symbol","minor_units","cash_minor_units","cash_rounding","countries","formatted","ecb_reference_rate"]}},"required":["currency"]},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["success","data","meta"]}}}},"400":{"description":"Malformed request (e.g. body is not valid JSON).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid RapidAPI proxy credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Payload exceeds the documented limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Parameters failed validation; see error.details.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/rates/latest":{"get":{"operationId":"ratesLatest","tags":["Exchange rates"],"summary":"Latest ECB reference exchange rates for any base currency","description":"The European Central Bank’s most recent euro reference rates (published around 16:00 CET on TARGET business days), rebased to `base`: rate = units of the symbol per 1 unit of base, 8 significant digits. Cached for at least 6 hours (`meta.cache`); if the ECB is unreachable the last cached snapshot is served with `meta.stale=true`, and 503 + Retry-After only when nothing is cached.\n\n**Limits:** query string ≤ 2048 bytes; symbols ≤ 200 characters.","parameters":[{"schema":{"type":"string","minLength":3,"maxLength":3,"default":"EUR","description":"Base currency (one of the ECB currencies or EUR). Default EUR.","example":"EUR"},"required":false,"description":"Base currency (one of the ECB currencies or EUR). Default EUR.","name":"base","in":"query"},{"schema":{"type":"string","maxLength":200,"description":"Comma-separated ISO 4217 codes to return (default: every ECB currency).","example":"USD,GBP,ZAR"},"required":false,"description":"Comma-separated ISO 4217 codes to return (default: every ECB currency).","name":"symbols","in":"query"}],"responses":{"200":{"description":"Latest ECB reference exchange rates for any base currency","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"base":{"type":"string"},"date":{"type":"string","description":"ECB reference date (YYYY-MM-DD)."},"rates":{"type":"object","additionalProperties":{"type":"number"},"description":"Code → units per 1 base."},"attribution":{"type":"string","description":"Required source notice; display it with the rates."},"published_by":{"type":"string","enum":["ECB"]}},"required":["base","date","rates","attribution","published_by"]},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["success","data","meta"]}}}},"400":{"description":"Malformed request (e.g. body is not valid JSON).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid RapidAPI proxy credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Payload exceeds the documented limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Parameters failed validation; see error.details.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Network dependency unavailable and no cached value; see Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/rates/convert":{"get":{"operationId":"ratesConvert","tags":["Exchange rates"],"summary":"Convert an amount between currencies at the ECB reference rate","description":"Converts `amount` from one ECB currency to another through the EUR reference rates of the latest day (or of `date`, within the last 90 days; weekends and TARGET holidays use the previous published day, reported in `date`). `result` is rounded half away from zero to the target currency’s minor units; `result_unrounded` keeps full precision.\n\n**Limits:** query string ≤ 2048 bytes; |amount| ≤ 1e15.","parameters":[{"schema":{"type":"string","minLength":3,"maxLength":3,"description":"Source currency.","example":"USD"},"required":true,"description":"Source currency.","name":"from","in":"query"},{"schema":{"type":"string","minLength":3,"maxLength":3,"description":"Target currency.","example":"ZAR"},"required":true,"description":"Target currency.","name":"to","in":"query"},{"schema":{"type":["number","null"],"minimum":-1000000000000000,"maximum":1000000000000000,"default":1,"description":"Amount in `from`.","example":250},"required":false,"description":"Amount in `from`.","name":"amount","in":"query"},{"schema":{"type":"string","maxLength":10,"description":"Reference date YYYY-MM-DD (last 90 days)."},"required":false,"description":"Reference date YYYY-MM-DD (last 90 days).","name":"date","in":"query"}],"responses":{"200":{"description":"Convert an amount between currencies at the ECB reference rate","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"from":{"type":"string"},"to":{"type":"string"},"amount":{"type":"number"},"rate":{"type":"number","description":"Units of `to` per 1 `from` (8 significant digits)."},"result":{"type":"number","description":"Converted amount rounded to the target’s minor units."},"result_unrounded":{"type":"number"},"date":{"type":"string","description":"ECB reference date used."},"requested_date":{"type":["string","null"]},"attribution":{"type":"string","description":"Required source notice; display it with the rates."},"published_by":{"type":"string","enum":["ECB"]}},"required":["from","to","amount","rate","result","result_unrounded","date","requested_date","attribution","published_by"]},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["success","data","meta"]}}}},"400":{"description":"Malformed request (e.g. body is not valid JSON).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid RapidAPI proxy credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Payload exceeds the documented limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Parameters failed validation; see error.details.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Network dependency unavailable and no cached value; see Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/rates/history":{"get":{"operationId":"ratesHistory","tags":["Exchange rates"],"summary":"ECB reference rates of a past day (last 90 days)","description":"Rates of one reference date, rebased to `base`. Pass exactly one of `date` (a weekend or TARGET-holiday date answers with the previous published day, so `date` ≠ `requested_date`) or `days_back` (publication days before the latest). Dates older than the 90-day window → 422 rate_not_available.\n\n**Limits:** query string ≤ 2048 bytes; symbols ≤ 200 characters; dates within the last 90 days.","parameters":[{"schema":{"type":"string","minLength":10,"maxLength":10,"description":"Reference date YYYY-MM-DD."},"required":false,"description":"Reference date YYYY-MM-DD.","name":"date","in":"query"},{"schema":{"type":["integer","null"],"minimum":0,"maximum":60,"description":"Alternative to `date`: ECB reference days before the latest one (0 = latest).","example":5},"required":false,"description":"Alternative to `date`: ECB reference days before the latest one (0 = latest).","name":"days_back","in":"query"},{"schema":{"type":"string","minLength":3,"maxLength":3,"default":"EUR","description":"Base currency (one of the ECB currencies or EUR). Default EUR.","example":"EUR"},"required":false,"description":"Base currency (one of the ECB currencies or EUR). Default EUR.","name":"base","in":"query"},{"schema":{"type":"string","maxLength":200,"description":"Comma-separated ISO 4217 codes to return (default: every ECB currency).","example":"USD,GBP,ZAR"},"required":false,"description":"Comma-separated ISO 4217 codes to return (default: every ECB currency).","name":"symbols","in":"query"}],"responses":{"200":{"description":"ECB reference rates of a past day (last 90 days)","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"base":{"type":"string"},"date":{"type":"string"},"requested_date":{"type":["string","null"],"description":"The `date` sent; null with `days_back`."},"rates":{"type":"object","additionalProperties":{"type":"number"}},"attribution":{"type":"string","description":"Required source notice; display it with the rates."},"published_by":{"type":"string","enum":["ECB"]}},"required":["base","date","requested_date","rates","attribution","published_by"]},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["success","data","meta"]}}}},"400":{"description":"Malformed request (e.g. body is not valid JSON).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid RapidAPI proxy credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Payload exceeds the documented limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Parameters failed validation; see error.details.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Network dependency unavailable and no cached value; see Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/rates/series":{"get":{"operationId":"ratesSeries","tags":["Exchange rates"],"summary":"Daily ECB reference rates between two dates (time series, last 90 days)","description":"One entry per published ECB reference day, oldest first, rebased to `base`: either the days in [start_date, end_date] or the `last` N days. Use a few symbols to keep responses small.\n\n**Limits:** query string ≤ 2048 bytes; symbols ≤ 10 codes; range inside the last 90 days.","parameters":[{"schema":{"type":"string","minLength":10,"maxLength":10,"description":"First date YYYY-MM-DD."},"required":false,"description":"First date YYYY-MM-DD.","name":"start_date","in":"query"},{"schema":{"type":"string","minLength":10,"maxLength":10,"description":"Last date YYYY-MM-DD (default: latest)."},"required":false,"description":"Last date YYYY-MM-DD (default: latest).","name":"end_date","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":60,"description":"Alternative to the dates: the most recent N reference days.","example":5},"required":false,"description":"Alternative to the dates: the most recent N reference days.","name":"last","in":"query"},{"schema":{"type":"string","minLength":3,"maxLength":3,"default":"EUR","description":"Base currency (one of the ECB currencies or EUR). Default EUR.","example":"EUR"},"required":false,"description":"Base currency (one of the ECB currencies or EUR). Default EUR.","name":"base","in":"query"},{"schema":{"type":"string","minLength":3,"maxLength":60,"description":"Comma-separated codes (≤ 10).","example":"USD,ZAR"},"required":true,"description":"Comma-separated codes (≤ 10).","name":"symbols","in":"query"}],"responses":{"200":{"description":"Daily ECB reference rates between two dates (time series, last 90 days)","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"base":{"type":"string"},"start_date":{"type":"string"},"end_date":{"type":"string"},"count":{"type":"integer"},"series":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string"},"rates":{"type":"object","additionalProperties":{"type":"number"}}},"required":["date","rates"]}},"attribution":{"type":"string","description":"Required source notice; display it with the rates."},"published_by":{"type":"string","enum":["ECB"]}},"required":["base","start_date","end_date","count","series","attribution","published_by"]},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["success","data","meta"]}}}},"400":{"description":"Malformed request (e.g. body is not valid JSON).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid RapidAPI proxy credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Payload exceeds the documented limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Parameters failed validation; see error.details.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Network dependency unavailable and no cached value; see Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/timezones":{"get":{"operationId":"timezonesList","tags":["Time zones"],"summary":"List IANA time zones with their countries and current offsets","description":"Every zone of the IANA zone.tab (one row per zone and country it serves) with coordinates of its principal city, the zone.tab comment and the offset in force at `at`. Filter with `country`.\n\n**Limits:** query string ≤ 2048 bytes; returns at most 420 items.","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":3,"description":"ISO 3166-1 alpha-2 (`ZA`), alpha-3 (`ZAF`) or numeric (`710`) country code, case-insensitive.","example":"US"},"required":false,"description":"ISO 3166-1 alpha-2 (`ZA`), alpha-3 (`ZAF`) or numeric (`710`) country code, case-insensitive.","name":"country","in":"query"},{"schema":{"type":"string","maxLength":40,"description":"Instant to evaluate, ISO 8601 (`2026-07-01T12:00:00Z`, or a local time in the zone). Default: now (the answer then changes over time).","example":"2026-07-01T12:00:00Z"},"required":false,"description":"Instant to evaluate, ISO 8601 (`2026-07-01T12:00:00Z`, or a local time in the zone). Default: now (the answer then changes over time).","name":"at","in":"query"}],"responses":{"200":{"description":"List IANA time zones with their countries and current offsets","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"tzdb_version":{"type":"string","description":"IANA tz release of the zone list."},"at":{"type":"string","description":"Instant evaluated (UTC)."},"count":{"type":"integer"},"timezones":{"type":"array","items":{"type":"object","properties":{"zone":{"type":"string"},"country":{"type":"string"},"coordinates":{"type":"object","properties":{"lat":{"type":"number"},"lng":{"type":"number"}},"required":["lat","lng"]},"comment":{"type":["string","null"],"description":"Area served, for countries with several zones."},"utc_offset":{"type":"string","description":"Offset from UTC, ±HH:MM."},"offset_seconds":{"type":"integer"},"is_dst":{"type":"boolean","description":"Offset above the year’s standard offset (daylight saving)."},"abbreviation":{"type":"string","description":"Short name (en-US ICU), e.g. BST, CEST or GMT+2."}},"required":["zone","country","coordinates","comment","utc_offset","offset_seconds","is_dst","abbreviation"]}}},"required":["tzdb_version","at","count","timezones"]},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["success","data","meta"]}}}},"400":{"description":"Malformed request (e.g. body is not valid JSON).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid RapidAPI proxy credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Payload exceeds the documented limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Parameters failed validation; see error.details.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/timezones/info":{"get":{"operationId":"timezonesInfo","tags":["Time zones"],"summary":"Offset, DST status, local time and next/previous transition of a zone","description":"For an IANA zone (case-insensitive; links such as Asia/Calcutta resolve) at `at`: local time, UTC offset, DST flag, abbreviation and long name, standard offset of that year, the previous and next offset transitions (searched ±2 years) and the zone.tab country/coordinates.\n\n**Limits:** query string ≤ 2048 bytes; one zone per call.","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64,"description":"IANA time zone.","example":"Europe/London"},"required":true,"description":"IANA time zone.","name":"zone","in":"query"},{"schema":{"type":"string","maxLength":40,"description":"Instant to evaluate, ISO 8601 (`2026-07-01T12:00:00Z`, or a local time in the zone). Default: now (the answer then changes over time).","example":"2026-07-01T12:00:00Z"},"required":false,"description":"Instant to evaluate, ISO 8601 (`2026-07-01T12:00:00Z`, or a local time in the zone). Default: now (the answer then changes over time).","name":"at","in":"query"}],"responses":{"200":{"description":"Offset, DST status, local time and next/previous transition of a zone","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"zone":{"type":"string"},"country":{"type":["string","null"],"description":"zone.tab country; null for zones not in zone.tab (UTC, Etc/…)."},"coordinates":{"type":["object","null"],"properties":{"lat":{"type":"number"},"lng":{"type":"number"}},"required":["lat","lng"]},"at":{"type":"string"},"local_time":{"type":"string","description":"ISO 8601 local date-time with offset."},"utc_offset":{"type":"string","description":"Offset from UTC, ±HH:MM."},"offset_seconds":{"type":"integer"},"is_dst":{"type":"boolean","description":"Offset above the year’s standard offset (daylight saving)."},"abbreviation":{"type":"string","description":"Short name (en-US ICU), e.g. BST, CEST or GMT+2."},"long_name":{"type":"string","description":"Long name (en-US ICU), e.g. British Summer Time."},"standard_offset":{"type":"string","description":"Standard (non-DST) offset in that year."},"observes_dst":{"type":"boolean","description":"The zone has a DST transition within ±1 year of `at`."},"previous_transition":{"type":["object","null"],"properties":{"at":{"type":"string","description":"Instant of the change (UTC)."},"local_before":{"type":"string","description":"Wall-clock time just before, in the old offset."},"local_after":{"type":"string","description":"Wall-clock time at the change, in the new offset."},"offset_before":{"type":"string"},"offset_after":{"type":"string"},"is_dst_after":{"type":"boolean"},"abbreviation_after":{"type":"string"}},"required":["at","local_before","local_after","offset_before","offset_after","is_dst_after","abbreviation_after"]},"next_transition":{"type":["object","null"],"properties":{"at":{"type":"string","description":"Instant of the change (UTC)."},"local_before":{"type":"string","description":"Wall-clock time just before, in the old offset."},"local_after":{"type":"string","description":"Wall-clock time at the change, in the new offset."},"offset_before":{"type":"string"},"offset_after":{"type":"string"},"is_dst_after":{"type":"boolean"},"abbreviation_after":{"type":"string"}},"required":["at","local_before","local_after","offset_before","offset_after","is_dst_after","abbreviation_after"]}},"required":["zone","country","coordinates","at","local_time","utc_offset","offset_seconds","is_dst","abbreviation","long_name","standard_offset","observes_dst","previous_transition","next_transition"]},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["success","data","meta"]}}}},"400":{"description":"Malformed request (e.g. body is not valid JSON).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid RapidAPI proxy credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Payload exceeds the documented limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Parameters failed validation; see error.details.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/timezones/transitions":{"get":{"operationId":"timezonesTransitions","tags":["Time zones"],"summary":"All DST / offset transitions of a zone between two dates","description":"Every UTC-offset change of the zone in [from, to): DST starts and ends and permanent offset changes, located to the second, with the wall-clock times on both sides of the change. Dates are read in the zone itself.\n\n**Limits:** query string ≤ 2048 bytes; range ≤ 10 years.","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64,"description":"IANA time zone.","example":"America/New_York"},"required":true,"description":"IANA time zone.","name":"zone","in":"query"},{"schema":{"type":"string","minLength":10,"maxLength":40,"description":"Start date or date-time (ISO 8601).","example":"2026-01-01"},"required":true,"description":"Start date or date-time (ISO 8601).","name":"from","in":"query"},{"schema":{"type":"string","minLength":10,"maxLength":40,"description":"End date or date-time (exclusive).","example":"2027-01-01"},"required":true,"description":"End date or date-time (exclusive).","name":"to","in":"query"}],"responses":{"200":{"description":"All DST / offset transitions of a zone between two dates","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"zone":{"type":"string"},"from":{"type":"string"},"to":{"type":"string"},"count":{"type":"integer"},"transitions":{"type":"array","items":{"type":"object","properties":{"at":{"type":"string","description":"Instant of the change (UTC)."},"local_before":{"type":"string","description":"Wall-clock time just before, in the old offset."},"local_after":{"type":"string","description":"Wall-clock time at the change, in the new offset."},"offset_before":{"type":"string"},"offset_after":{"type":"string"},"is_dst_after":{"type":"boolean"},"abbreviation_after":{"type":"string"}},"required":["at","local_before","local_after","offset_before","offset_after","is_dst_after","abbreviation_after"]}}},"required":["zone","from","to","count","transitions"]},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["success","data","meta"]}}}},"400":{"description":"Malformed request (e.g. body is not valid JSON).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid RapidAPI proxy credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Payload exceeds the documented limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Parameters failed validation; see error.details.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/timezones/convert":{"get":{"operationId":"timezonesConvert","tags":["Time zones"],"summary":"Convert a date-time from one time zone to another (DST-safe)","description":"Reads `datetime` as wall-clock time in `from` (or uses its own offset when it carries one) and expresses the instant in `to`. Local times that do not exist (spring-forward gap) move forward by the gap; ambiguous times (fall-back overlap) take the earlier instant — both cases are flagged.\n\n**Limits:** query string ≤ 2048 bytes; one conversion per call.","parameters":[{"schema":{"type":"string","minLength":10,"maxLength":40,"description":"ISO 8601 date-time.","example":"2026-03-29T01:30:00"},"required":true,"description":"ISO 8601 date-time.","name":"datetime","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":64,"description":"Source IANA zone.","example":"Europe/London"},"required":true,"description":"Source IANA zone.","name":"from","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":64,"description":"Target IANA zone.","example":"Asia/Tokyo"},"required":true,"description":"Target IANA zone.","name":"to","in":"query"}],"responses":{"200":{"description":"Convert a date-time from one time zone to another (DST-safe)","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"utc":{"type":"string","description":"The instant in UTC."},"from":{"type":"object","properties":{"zone":{"type":"string"},"local_time":{"type":"string"},"utc_offset":{"type":"string"}},"required":["zone","local_time","utc_offset"]},"to":{"type":"object","properties":{"zone":{"type":"string"},"local_time":{"type":"string"},"utc_offset":{"type":"string"}},"required":["zone","local_time","utc_offset"]},"skipped":{"type":"boolean","description":"The input wall time did not exist in `from` (DST gap)."},"ambiguous":{"type":"boolean","description":"The input wall time occurred twice in `from` (DST overlap)."},"difference":{"type":"string","description":"Offset of `to` minus offset of `from`, ±HH:MM."}},"required":["utc","from","to","skipped","ambiguous","difference"]},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["success","data","meta"]}}}},"400":{"description":"Malformed request (e.g. body is not valid JSON).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid RapidAPI proxy credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Payload exceeds the documented limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Parameters failed validation; see error.details.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/holidays":{"get":{"operationId":"holidaysList","tags":["Holidays"],"summary":"Public holidays of a country (and subdivision) in a year — computed from rules","description":"Holidays for 200+ countries computed from the date-holidays rule set (Easter- and lunar-based, “first Monday of …”, substitute days) — not scraped. Filter by `types` (default public); add `subdivision` for state/province holidays.\n\n**Limits:** query string ≤ 2048 bytes; year 1970–2100.","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":3,"description":"ISO 3166-1 alpha-2 (`ZA`), alpha-3 (`ZAF`) or numeric (`710`) country code, case-insensitive.","example":"ZA"},"required":true,"description":"ISO 3166-1 alpha-2 (`ZA`), alpha-3 (`ZAF`) or numeric (`710`) country code, case-insensitive.","name":"country","in":"query"},{"schema":{"type":"integer","minimum":1970,"maximum":2100,"default":2026,"description":"Calendar year.","example":2026},"required":false,"description":"Calendar year.","name":"year","in":"query"},{"schema":{"type":"string","minLength":4,"maxLength":10,"description":"ISO 3166-2 subdivision for regional holidays, e.g. DE-BY, US-CA, AU-NSW."},"required":false,"description":"ISO 3166-2 subdivision for regional holidays, e.g. DE-BY, US-CA, AU-NSW.","name":"subdivision","in":"query"},{"schema":{"type":"string","maxLength":60,"default":"public","description":"Comma-separated holiday types to include: public, bank, school, optional, observance.","example":"public"},"required":false,"description":"Comma-separated holiday types to include: public, bank, school, optional, observance.","name":"types","in":"query"},{"schema":{"type":"string","pattern":"^[a-zA-Z]{2}$","default":"en","description":"ISO 639-1 language for holiday names (falls back to the country default).","example":"en"},"required":false,"description":"ISO 639-1 language for holiday names (falls back to the country default).","name":"lang","in":"query"}],"responses":{"200":{"description":"Public holidays of a country (and subdivision) in a year — computed from rules","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"country":{"type":"string"},"subdivision":{"type":["string","null"]},"year":{"type":"integer"},"language":{"type":"string","description":"Language of the names."},"count":{"type":"integer"},"holidays":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string","description":"Calendar date (YYYY-MM-DD) in the country."},"name":{"type":"string","description":"Name in `lang` when available, else in the country’s default language."},"type":{"type":"string","enum":["public","bank","school","optional","observance"],"description":"public (statutory day off), bank (banks/offices closed), school, optional (may be taken off) or observance (not a day off)."},"substitute":{"type":"boolean","description":"Moved/observed day because the holiday fell on a weekend."},"start":{"type":"string","description":"Start instant (UTC) in the country’s time zone."},"end":{"type":"string","description":"End instant (UTC); some holidays start at noon or last several days."},"rule":{"type":"string","description":"The date-holidays rule that computed it (e.g. \"easter -2\")."}},"required":["date","name","type","substitute","start","end","rule"]}}},"required":["country","subdivision","year","language","count","holidays"]},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["success","data","meta"]}}}},"400":{"description":"Malformed request (e.g. body is not valid JSON).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid RapidAPI proxy credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Payload exceeds the documented limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Parameters failed validation; see error.details.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/holidays/check":{"get":{"operationId":"holidaysCheck","tags":["Holidays"],"summary":"Is a date a holiday, a weekend day or a business day in a country?","description":"Every holiday of any type on the date, plus whether it is a public holiday, a weekend day (CLDR weekend of the country, e.g. Friday–Saturday in Saudi Arabia) and a business day (not weekend, not a holiday of `types`).\n\n**Limits:** query string ≤ 2048 bytes; date within 1970–2100.","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":3,"description":"ISO 3166-1 alpha-2 (`ZA`), alpha-3 (`ZAF`) or numeric (`710`) country code, case-insensitive.","example":"ZA"},"required":true,"description":"ISO 3166-1 alpha-2 (`ZA`), alpha-3 (`ZAF`) or numeric (`710`) country code, case-insensitive.","name":"country","in":"query"},{"schema":{"type":"string","minLength":10,"maxLength":10,"description":"Date YYYY-MM-DD.","example":"2026-04-27"},"required":true,"description":"Date YYYY-MM-DD.","name":"date","in":"query"},{"schema":{"type":"string","minLength":4,"maxLength":10,"description":"ISO 3166-2 subdivision for regional holidays, e.g. DE-BY, US-CA, AU-NSW."},"required":false,"description":"ISO 3166-2 subdivision for regional holidays, e.g. DE-BY, US-CA, AU-NSW.","name":"subdivision","in":"query"},{"schema":{"type":"string","maxLength":60,"default":"public","description":"Comma-separated holiday types to include: public, bank, school, optional, observance.","example":"public"},"required":false,"description":"Comma-separated holiday types to include: public, bank, school, optional, observance.","name":"types","in":"query"},{"schema":{"type":"string","pattern":"^[a-zA-Z]{2}$","default":"en","description":"ISO 639-1 language for holiday names (falls back to the country default).","example":"en"},"required":false,"description":"ISO 639-1 language for holiday names (falls back to the country default).","name":"lang","in":"query"}],"responses":{"200":{"description":"Is a date a holiday, a weekend day or a business day in a country?","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"country":{"type":"string"},"subdivision":{"type":["string","null"]},"date":{"type":"string"},"weekday":{"type":"string"},"is_public_holiday":{"type":"boolean"},"is_weekend":{"type":"boolean"},"is_business_day":{"type":"boolean"},"holidays":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string","description":"Calendar date (YYYY-MM-DD) in the country."},"name":{"type":"string","description":"Name in `lang` when available, else in the country’s default language."},"type":{"type":"string","enum":["public","bank","school","optional","observance"],"description":"public (statutory day off), bank (banks/offices closed), school, optional (may be taken off) or observance (not a day off)."},"substitute":{"type":"boolean","description":"Moved/observed day because the holiday fell on a weekend."},"start":{"type":"string","description":"Start instant (UTC) in the country’s time zone."},"end":{"type":"string","description":"End instant (UTC); some holidays start at noon or last several days."},"rule":{"type":"string","description":"The date-holidays rule that computed it (e.g. \"easter -2\")."}},"required":["date","name","type","substitute","start","end","rule"]},"description":"All holidays (any type) on the date."}},"required":["country","subdivision","date","weekday","is_public_holiday","is_weekend","is_business_day","holidays"]},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["success","data","meta"]}}}},"400":{"description":"Malformed request (e.g. body is not valid JSON).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid RapidAPI proxy credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Payload exceeds the documented limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Parameters failed validation; see error.details.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/holidays/next":{"get":{"operationId":"holidaysNext","tags":["Holidays"],"summary":"Upcoming holidays of a country from a date","description":"The next `limit` holidays of `types` on or after `from` (default: today, UTC), looking up to 2 years ahead.\n\n**Limits:** query string ≤ 2048 bytes; limit ≤ 50.","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":3,"description":"ISO 3166-1 alpha-2 (`ZA`), alpha-3 (`ZAF`) or numeric (`710`) country code, case-insensitive.","example":"GB"},"required":true,"description":"ISO 3166-1 alpha-2 (`ZA`), alpha-3 (`ZAF`) or numeric (`710`) country code, case-insensitive.","name":"country","in":"query"},{"schema":{"type":"string","minLength":10,"maxLength":10,"description":"Start date YYYY-MM-DD (default today).","example":"2026-11-01"},"required":false,"description":"Start date YYYY-MM-DD (default today).","name":"from","in":"query"},{"schema":{"type":"string","minLength":4,"maxLength":10,"description":"ISO 3166-2 subdivision for regional holidays, e.g. DE-BY, US-CA, AU-NSW."},"required":false,"description":"ISO 3166-2 subdivision for regional holidays, e.g. DE-BY, US-CA, AU-NSW.","name":"subdivision","in":"query"},{"schema":{"type":"string","maxLength":60,"default":"public","description":"Comma-separated holiday types to include: public, bank, school, optional, observance.","example":"public"},"required":false,"description":"Comma-separated holiday types to include: public, bank, school, optional, observance.","name":"types","in":"query"},{"schema":{"type":"string","pattern":"^[a-zA-Z]{2}$","default":"en","description":"ISO 639-1 language for holiday names (falls back to the country default).","example":"en"},"required":false,"description":"ISO 639-1 language for holiday names (falls back to the country default).","name":"lang","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":50,"default":5,"description":"Number of holidays.","example":5},"required":false,"description":"Number of holidays.","name":"limit","in":"query"}],"responses":{"200":{"description":"Upcoming holidays of a country from a date","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"country":{"type":"string"},"subdivision":{"type":["string","null"]},"from":{"type":"string"},"count":{"type":"integer"},"holidays":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string","description":"Calendar date (YYYY-MM-DD) in the country."},"name":{"type":"string","description":"Name in `lang` when available, else in the country’s default language."},"type":{"type":"string","enum":["public","bank","school","optional","observance"],"description":"public (statutory day off), bank (banks/offices closed), school, optional (may be taken off) or observance (not a day off)."},"substitute":{"type":"boolean","description":"Moved/observed day because the holiday fell on a weekend."},"start":{"type":"string","description":"Start instant (UTC) in the country’s time zone."},"end":{"type":"string","description":"End instant (UTC); some holidays start at noon or last several days."},"rule":{"type":"string","description":"The date-holidays rule that computed it (e.g. \"easter -2\")."},"days_until":{"type":"integer"}},"required":["date","name","type","substitute","start","end","rule","days_until"]}}},"required":["country","subdivision","from","count","holidays"]},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["success","data","meta"]}}}},"400":{"description":"Malformed request (e.g. body is not valid JSON).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid RapidAPI proxy credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Payload exceeds the documented limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Parameters failed validation; see error.details.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/holidays/countries":{"get":{"operationId":"holidaysCountries","tags":["Holidays"],"summary":"Countries and subdivisions with holiday rules","description":"Without `country`: every country with holiday rules and how many subdivisions have their own holidays. With `country`: that country’s subdivision codes (usable as `subdivision`) and names.\n\n**Limits:** query string ≤ 2048 bytes; no limit parameters.","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":3,"description":"ISO 3166-1 alpha-2 (`ZA`), alpha-3 (`ZAF`) or numeric (`710`) country code, case-insensitive.","example":"DE"},"required":false,"description":"ISO 3166-1 alpha-2 (`ZA`), alpha-3 (`ZAF`) or numeric (`710`) country code, case-insensitive.","name":"country","in":"query"}],"responses":{"200":{"description":"Countries and subdivisions with holiday rules","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"count":{"type":"integer"},"countries":{"type":"array","items":{"type":"object","properties":{"country":{"type":"string"},"name":{"type":"string"},"subdivision_count":{"type":"integer"},"subdivisions":{"type":["array","null"],"items":{"type":"object","properties":{"code":{"type":"string"},"name":{"type":"string"}},"required":["code","name"]},"description":"Listed when `country` is given; null otherwise."}},"required":["country","name","subdivision_count","subdivisions"]}}},"required":["count","countries"]},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["success","data","meta"]}}}},"400":{"description":"Malformed request (e.g. body is not valid JSON).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid RapidAPI proxy credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Payload exceeds the documented limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Parameters failed validation; see error.details.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/business-days/check":{"get":{"operationId":"businessDaysCheck","tags":["Holidays"],"summary":"Is a date a business day? Plus the previous and next business days","description":"A business day is not a weekend day of the country (CLDR) and not a holiday of `types`. Also returns the nearest business days before and after the date.\n\n**Limits:** query string ≤ 2048 bytes; date within 1970–2100.","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":3,"description":"ISO 3166-1 alpha-2 (`ZA`), alpha-3 (`ZAF`) or numeric (`710`) country code, case-insensitive.","example":"ZA"},"required":true,"description":"ISO 3166-1 alpha-2 (`ZA`), alpha-3 (`ZAF`) or numeric (`710`) country code, case-insensitive.","name":"country","in":"query"},{"schema":{"type":"string","minLength":4,"maxLength":10,"description":"ISO 3166-2 subdivision for regional holidays, e.g. DE-BY, US-CA, AU-NSW."},"required":false,"description":"ISO 3166-2 subdivision for regional holidays, e.g. DE-BY, US-CA, AU-NSW.","name":"subdivision","in":"query"},{"schema":{"type":"string","maxLength":60,"default":"public","description":"Holiday types that are non-working days (comma-separated). Default public.","example":"public"},"required":false,"description":"Holiday types that are non-working days (comma-separated). Default public.","name":"types","in":"query"},{"schema":{"type":"string","minLength":10,"maxLength":10,"description":"Date YYYY-MM-DD.","example":"2026-12-25"},"required":true,"description":"Date YYYY-MM-DD.","name":"date","in":"query"}],"responses":{"200":{"description":"Is a date a business day? Plus the previous and next business days","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"country":{"type":"string"},"date":{"type":"string"},"weekday":{"type":"string"},"is_business_day":{"type":"boolean"},"is_weekend":{"type":"boolean"},"holidays":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string","description":"Calendar date (YYYY-MM-DD) in the country."},"name":{"type":"string","description":"Name in `lang` when available, else in the country’s default language."},"type":{"type":"string","enum":["public","bank","school","optional","observance"],"description":"public (statutory day off), bank (banks/offices closed), school, optional (may be taken off) or observance (not a day off)."},"substitute":{"type":"boolean","description":"Moved/observed day because the holiday fell on a weekend."},"start":{"type":"string","description":"Start instant (UTC) in the country’s time zone."},"end":{"type":"string","description":"End instant (UTC); some holidays start at noon or last several days."},"rule":{"type":"string","description":"The date-holidays rule that computed it (e.g. \"easter -2\")."}},"required":["date","name","type","substitute","start","end","rule"]}},"previous_business_day":{"type":"string"},"next_business_day":{"type":"string"},"weekend_days":{"type":"array","items":{"type":"string"},"description":"Weekend of the country, e.g. [\"Saturday\",\"Sunday\"]."}},"required":["country","date","weekday","is_business_day","is_weekend","holidays","previous_business_day","next_business_day","weekend_days"]},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["success","data","meta"]}}}},"400":{"description":"Malformed request (e.g. body is not valid JSON).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid RapidAPI proxy credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Payload exceeds the documented limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Parameters failed validation; see error.details.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/business-days/add":{"get":{"operationId":"businessDaysAdd","tags":["Holidays"],"summary":"Add or subtract business days (WORKDAY semantics, holiday-aware)","description":"Moves `days` business days forward (negative: backward) from `date`, skipping weekends and holidays of `types` — the same semantics as Excel/Sheets WORKDAY: the start date itself is not counted, and `days = 0` returns `date` unchanged. Lists the holidays that were skipped.\n\n**Limits:** query string ≤ 2048 bytes; |days| ≤ 2,500.","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":3,"description":"ISO 3166-1 alpha-2 (`ZA`), alpha-3 (`ZAF`) or numeric (`710`) country code, case-insensitive.","example":"ZA"},"required":true,"description":"ISO 3166-1 alpha-2 (`ZA`), alpha-3 (`ZAF`) or numeric (`710`) country code, case-insensitive.","name":"country","in":"query"},{"schema":{"type":"string","minLength":4,"maxLength":10,"description":"ISO 3166-2 subdivision for regional holidays, e.g. DE-BY, US-CA, AU-NSW."},"required":false,"description":"ISO 3166-2 subdivision for regional holidays, e.g. DE-BY, US-CA, AU-NSW.","name":"subdivision","in":"query"},{"schema":{"type":"string","maxLength":60,"default":"public","description":"Holiday types that are non-working days (comma-separated). Default public.","example":"public"},"required":false,"description":"Holiday types that are non-working days (comma-separated). Default public.","name":"types","in":"query"},{"schema":{"type":"string","minLength":10,"maxLength":10,"description":"Start date YYYY-MM-DD.","example":"2026-12-23"},"required":true,"description":"Start date YYYY-MM-DD.","name":"date","in":"query"},{"schema":{"type":["integer","null"],"minimum":-2500,"maximum":2500,"description":"Business days to add.","example":3},"required":false,"description":"Business days to add.","name":"days","in":"query"}],"responses":{"200":{"description":"Add or subtract business days (WORKDAY semantics, holiday-aware)","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"country":{"type":"string"},"start":{"type":"string"},"days":{"type":"integer"},"result":{"type":"string","description":"Resulting date YYYY-MM-DD."},"calendar_days":{"type":"integer","description":"Calendar days between start and result (signed)."},"skipped_holidays":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string","description":"Calendar date (YYYY-MM-DD) in the country."},"name":{"type":"string","description":"Name in `lang` when available, else in the country’s default language."},"type":{"type":"string","enum":["public","bank","school","optional","observance"],"description":"public (statutory day off), bank (banks/offices closed), school, optional (may be taken off) or observance (not a day off)."},"substitute":{"type":"boolean","description":"Moved/observed day because the holiday fell on a weekend."},"start":{"type":"string","description":"Start instant (UTC) in the country’s time zone."},"end":{"type":"string","description":"End instant (UTC); some holidays start at noon or last several days."},"rule":{"type":"string","description":"The date-holidays rule that computed it (e.g. \"easter -2\")."}},"required":["date","name","type","substitute","start","end","rule"]},"description":"Holidays on weekdays that were skipped."}},"required":["country","start","days","result","calendar_days","skipped_holidays"]},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["success","data","meta"]}}}},"400":{"description":"Malformed request (e.g. body is not valid JSON).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid RapidAPI proxy credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Payload exceeds the documented limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Parameters failed validation; see error.details.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/business-days/count":{"get":{"operationId":"businessDaysCount","tags":["Holidays"],"summary":"Count business days between two dates (NETWORKDAYS semantics)","description":"Counts business days in the closed range [from, to] — both ends included, like Excel/Sheets NETWORKDAYS; negative when `to` is before `from`. Also counts weekend days and holidays on weekdays, and lists those holidays.\n\n**Limits:** query string ≤ 2048 bytes; range ≤ 3,660 days.","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":3,"description":"ISO 3166-1 alpha-2 (`ZA`), alpha-3 (`ZAF`) or numeric (`710`) country code, case-insensitive.","example":"ZA"},"required":true,"description":"ISO 3166-1 alpha-2 (`ZA`), alpha-3 (`ZAF`) or numeric (`710`) country code, case-insensitive.","name":"country","in":"query"},{"schema":{"type":"string","minLength":4,"maxLength":10,"description":"ISO 3166-2 subdivision for regional holidays, e.g. DE-BY, US-CA, AU-NSW."},"required":false,"description":"ISO 3166-2 subdivision for regional holidays, e.g. DE-BY, US-CA, AU-NSW.","name":"subdivision","in":"query"},{"schema":{"type":"string","maxLength":60,"default":"public","description":"Holiday types that are non-working days (comma-separated). Default public.","example":"public"},"required":false,"description":"Holiday types that are non-working days (comma-separated). Default public.","name":"types","in":"query"},{"schema":{"type":"string","minLength":10,"maxLength":10,"description":"First date YYYY-MM-DD.","example":"2026-12-01"},"required":true,"description":"First date YYYY-MM-DD.","name":"from","in":"query"},{"schema":{"type":"string","minLength":10,"maxLength":10,"description":"Last date YYYY-MM-DD (inclusive).","example":"2026-12-31"},"required":true,"description":"Last date YYYY-MM-DD (inclusive).","name":"to","in":"query"}],"responses":{"200":{"description":"Count business days between two dates (NETWORKDAYS semantics)","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"country":{"type":"string"},"from":{"type":"string"},"to":{"type":"string"},"calendar_days":{"type":"integer"},"business_days":{"type":"integer"},"weekend_days":{"type":"integer"},"holidays_on_weekdays":{"type":"integer"},"holidays":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string","description":"Calendar date (YYYY-MM-DD) in the country."},"name":{"type":"string","description":"Name in `lang` when available, else in the country’s default language."},"type":{"type":"string","enum":["public","bank","school","optional","observance"],"description":"public (statutory day off), bank (banks/offices closed), school, optional (may be taken off) or observance (not a day off)."},"substitute":{"type":"boolean","description":"Moved/observed day because the holiday fell on a weekend."},"start":{"type":"string","description":"Start instant (UTC) in the country’s time zone."},"end":{"type":"string","description":"End instant (UTC); some holidays start at noon or last several days."},"rule":{"type":"string","description":"The date-holidays rule that computed it (e.g. \"easter -2\")."}},"required":["date","name","type","substitute","start","end","rule"]}}},"required":["country","from","to","calendar_days","business_days","weekend_days","holidays_on_weekdays","holidays"]},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["success","data","meta"]}}}},"400":{"description":"Malformed request (e.g. body is not valid JSON).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid RapidAPI proxy credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Payload exceeds the documented limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Parameters failed validation; see error.details.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/airports/lookup":{"get":{"operationId":"airportsLookup","tags":["Airports"],"summary":"Airport by IATA or ICAO code","description":"Name, city, country, coordinates, elevation, size class, scheduled-service flag and IANA time zone of one of 8,900+ IATA-coded airports (OurAirports, public domain). IATA codes take precedence over ICAO codes.\n\n**Limits:** query string ≤ 2048 bytes; one code per call.","parameters":[{"schema":{"type":"string","minLength":3,"maxLength":4,"description":"IATA (3 letters) or ICAO (4 letters) code.","example":"JNB"},"required":true,"description":"IATA (3 letters) or ICAO (4 letters) code.","name":"code","in":"query"}],"responses":{"200":{"description":"Airport by IATA or ICAO code","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"airport":{"type":"object","properties":{"iata":{"type":"string","description":"IATA location code (3 letters)."},"icao":{"type":["string","null"],"description":"ICAO location indicator (4 letters), when assigned."},"name":{"type":"string"},"city":{"type":["string","null"],"description":"Municipality served (OurAirports)."},"country":{"type":"string","description":"ISO 3166-1 alpha-2."},"region_code":{"type":["string","null"],"description":"Subdivision code as published by OurAirports."},"coordinates":{"type":"object","properties":{"lat":{"type":"number"},"lng":{"type":"number"}},"required":["lat","lng"]},"elevation_ft":{"type":["number","null"]},"type":{"type":"string","enum":["large","medium","small","seaplane"],"description":"Airport size class (OurAirports)."},"scheduled_service":{"type":"boolean","description":"Has scheduled airline service."},"timezone":{"type":["string","null"],"description":"IANA time zone at the airport’s coordinates."}},"required":["iata","icao","name","city","country","region_code","coordinates","elevation_ft","type","scheduled_service","timezone"]}},"required":["airport"]},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["success","data","meta"]}}}},"400":{"description":"Malformed request (e.g. body is not valid JSON).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid RapidAPI proxy credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Payload exceeds the documented limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Parameters failed validation; see error.details.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/airports/search":{"get":{"operationId":"airportsSearch","tags":["Airports"],"summary":"Search airports by name, city or code","description":"Accent- and case-insensitive match on code, name and city; exact code first, then name/city prefixes, then words, then substrings; larger airports and those with scheduled service rank higher within a tier.\n\n**Limits:** query string ≤ 2048 bytes; q ≤ 60 characters; limit ≤ 50.","parameters":[{"schema":{"type":"string","minLength":2,"maxLength":60,"description":"Code, name or city fragment.","example":"heathrow"},"required":true,"description":"Code, name or city fragment.","name":"q","in":"query"},{"schema":{"type":"string","minLength":2,"maxLength":3,"description":"Only this country."},"required":false,"description":"Only this country.","name":"country","in":"query"},{"schema":{"type":"string","enum":["large","medium","small","seaplane"],"description":"Only this size class."},"required":false,"description":"Only this size class.","name":"type","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":50,"default":10,"description":"Maximum results.","example":10},"required":false,"description":"Maximum results.","name":"limit","in":"query"}],"responses":{"200":{"description":"Search airports by name, city or code","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"count":{"type":"integer"},"airports":{"type":"array","items":{"type":"object","properties":{"iata":{"type":"string","description":"IATA location code (3 letters)."},"icao":{"type":["string","null"],"description":"ICAO location indicator (4 letters), when assigned."},"name":{"type":"string"},"city":{"type":["string","null"],"description":"Municipality served (OurAirports)."},"country":{"type":"string","description":"ISO 3166-1 alpha-2."},"region_code":{"type":["string","null"],"description":"Subdivision code as published by OurAirports."},"coordinates":{"type":"object","properties":{"lat":{"type":"number"},"lng":{"type":"number"}},"required":["lat","lng"]},"elevation_ft":{"type":["number","null"]},"type":{"type":"string","enum":["large","medium","small","seaplane"],"description":"Airport size class (OurAirports)."},"scheduled_service":{"type":"boolean","description":"Has scheduled airline service."},"timezone":{"type":["string","null"],"description":"IANA time zone at the airport’s coordinates."},"score":{"type":"number"}},"required":["iata","icao","name","city","country","region_code","coordinates","elevation_ft","type","scheduled_service","timezone","score"]}}},"required":["count","airports"]},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["success","data","meta"]}}}},"400":{"description":"Malformed request (e.g. body is not valid JSON).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid RapidAPI proxy credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Payload exceeds the documented limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Parameters failed validation; see error.details.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/airports/nearest":{"get":{"operationId":"airportsNearest","tags":["Airports"],"summary":"Nearest airports to a coordinate","description":"The `limit` closest airports to a point by great-circle distance, optionally only those with scheduled service or of a size class, within `max_km`.\n\n**Limits:** query string ≤ 2048 bytes; limit ≤ 25; max_km ≤ 20,000.","parameters":[{"schema":{"type":["number","null"],"minimum":-90,"maximum":90,"description":"Latitude.","example":-33.9249},"required":false,"description":"Latitude.","name":"lat","in":"query"},{"schema":{"type":["number","null"],"minimum":-180,"maximum":180,"description":"Longitude.","example":18.4241},"required":false,"description":"Longitude.","name":"lng","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":25,"default":5,"description":"Number of airports.","example":5},"required":false,"description":"Number of airports.","name":"limit","in":"query"},{"schema":{"type":"number","minimum":1,"maximum":20000,"default":500,"description":"Search radius in km.","example":500},"required":false,"description":"Search radius in km.","name":"max_km","in":"query"},{"schema":{"type":"string","enum":["true","false"],"default":"false","description":"Only airports with scheduled airline service.","example":"true"},"required":false,"description":"Only airports with scheduled airline service.","name":"scheduled_only","in":"query"},{"schema":{"type":"string","enum":["large","medium","small","seaplane"],"description":"Only this size class."},"required":false,"description":"Only this size class.","name":"type","in":"query"}],"responses":{"200":{"description":"Nearest airports to a coordinate","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"count":{"type":"integer"},"airports":{"type":"array","items":{"type":"object","properties":{"iata":{"type":"string","description":"IATA location code (3 letters)."},"icao":{"type":["string","null"],"description":"ICAO location indicator (4 letters), when assigned."},"name":{"type":"string"},"city":{"type":["string","null"],"description":"Municipality served (OurAirports)."},"country":{"type":"string","description":"ISO 3166-1 alpha-2."},"region_code":{"type":["string","null"],"description":"Subdivision code as published by OurAirports."},"coordinates":{"type":"object","properties":{"lat":{"type":"number"},"lng":{"type":"number"}},"required":["lat","lng"]},"elevation_ft":{"type":["number","null"]},"type":{"type":"string","enum":["large","medium","small","seaplane"],"description":"Airport size class (OurAirports)."},"scheduled_service":{"type":"boolean","description":"Has scheduled airline service."},"timezone":{"type":["string","null"],"description":"IANA time zone at the airport’s coordinates."},"distance_km":{"type":"number"},"bearing_deg":{"type":"number"}},"required":["iata","icao","name","city","country","region_code","coordinates","elevation_ft","type","scheduled_service","timezone","distance_km","bearing_deg"]}}},"required":["count","airports"]},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["success","data","meta"]}}}},"400":{"description":"Malformed request (e.g. body is not valid JSON).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid RapidAPI proxy credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Payload exceeds the documented limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Parameters failed validation; see error.details.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/airports/distance":{"get":{"operationId":"airportsDistance","tags":["Airports"],"summary":"Great-circle distance and bearing between two airports","description":"Distance in kilometres, statute miles and nautical miles on a sphere of the IUGG mean Earth radius (6,371.0088 km; differs from the WGS 84 ellipsoid by up to ~0.5 %), the initial bearing, and the time-zone difference.\n\n**Limits:** query string ≤ 2048 bytes; two codes per call.","parameters":[{"schema":{"type":"string","minLength":3,"maxLength":4,"description":"IATA (3 letters) or ICAO (4 letters) code.","example":"JNB"},"required":true,"description":"IATA (3 letters) or ICAO (4 letters) code.","name":"from","in":"query"},{"schema":{"type":"string","minLength":3,"maxLength":4,"description":"IATA (3 letters) or ICAO (4 letters) code.","example":"LHR"},"required":true,"description":"IATA (3 letters) or ICAO (4 letters) code.","name":"to","in":"query"}],"responses":{"200":{"description":"Great-circle distance and bearing between two airports","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"from":{"type":"object","properties":{"iata":{"type":"string","description":"IATA location code (3 letters)."},"icao":{"type":["string","null"],"description":"ICAO location indicator (4 letters), when assigned."},"name":{"type":"string"},"city":{"type":["string","null"],"description":"Municipality served (OurAirports)."},"country":{"type":"string","description":"ISO 3166-1 alpha-2."},"region_code":{"type":["string","null"],"description":"Subdivision code as published by OurAirports."},"coordinates":{"type":"object","properties":{"lat":{"type":"number"},"lng":{"type":"number"}},"required":["lat","lng"]},"elevation_ft":{"type":["number","null"]},"type":{"type":"string","enum":["large","medium","small","seaplane"],"description":"Airport size class (OurAirports)."},"scheduled_service":{"type":"boolean","description":"Has scheduled airline service."},"timezone":{"type":["string","null"],"description":"IANA time zone at the airport’s coordinates."}},"required":["iata","icao","name","city","country","region_code","coordinates","elevation_ft","type","scheduled_service","timezone"]},"to":{"type":"object","properties":{"iata":{"type":"string","description":"IATA location code (3 letters)."},"icao":{"type":["string","null"],"description":"ICAO location indicator (4 letters), when assigned."},"name":{"type":"string"},"city":{"type":["string","null"],"description":"Municipality served (OurAirports)."},"country":{"type":"string","description":"ISO 3166-1 alpha-2."},"region_code":{"type":["string","null"],"description":"Subdivision code as published by OurAirports."},"coordinates":{"type":"object","properties":{"lat":{"type":"number"},"lng":{"type":"number"}},"required":["lat","lng"]},"elevation_ft":{"type":["number","null"]},"type":{"type":"string","enum":["large","medium","small","seaplane"],"description":"Airport size class (OurAirports)."},"scheduled_service":{"type":"boolean","description":"Has scheduled airline service."},"timezone":{"type":["string","null"],"description":"IANA time zone at the airport’s coordinates."}},"required":["iata","icao","name","city","country","region_code","coordinates","elevation_ft","type","scheduled_service","timezone"]},"distance_km":{"type":"number"},"distance_mi":{"type":"number"},"distance_nmi":{"type":"number"},"initial_bearing_deg":{"type":"number"}},"required":["from","to","distance_km","distance_mi","distance_nmi","initial_bearing_deg"]},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["success","data","meta"]}}}},"400":{"description":"Malformed request (e.g. body is not valid JSON).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid RapidAPI proxy credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Payload exceeds the documented limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Parameters failed validation; see error.details.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/languages":{"get":{"operationId":"languagesList","tags":["Languages"],"summary":"List languages with ISO 639 codes, names and speaker estimates","description":"Languages that are official somewhere or have ≥ 1 million speakers (390+), with ISO 639-1/-2/-3 codes, English and native names, scripts and a CLDR-based speaker estimate. Filter by `country` (languages with official status there) or `script`; sorted by speakers.\n\n**Limits:** query string ≤ 2048 bytes; returns at most 400 items.","parameters":[{"schema":{"type":"string","minLength":2,"maxLength":3,"description":"Only languages official in this country.","example":"ZA"},"required":false,"description":"Only languages official in this country.","name":"country","in":"query"},{"schema":{"type":"string","pattern":"^[A-Za-z]{4}$","description":"Only languages using this ISO 15924 script."},"required":false,"description":"Only languages using this ISO 15924 script.","name":"script","in":"query"},{"schema":{"type":"string","minLength":2,"maxLength":35,"description":"BCP 47 locale for the `local_name` fields (e.g. `de`, `fr-CA`, `ja`). Omit for English names only.","example":"de"},"required":false,"description":"BCP 47 locale for the `local_name` fields (e.g. `de`, `fr-CA`, `ja`). Omit for English names only.","name":"locale","in":"query"}],"responses":{"200":{"description":"List languages with ISO 639 codes, names and speaker estimates","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"count":{"type":"integer"},"languages":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","description":"Shortest ISO 639 code (639-1 when it exists, else 639-3)."},"alpha2":{"type":["string","null"],"description":"ISO 639-1."},"alpha3":{"type":["string","null"],"description":"ISO 639-2/T (terminology) / 639-3."},"alpha3_bibliographic":{"type":["string","null"],"description":"ISO 639-2/B, e.g. ger for German."},"name":{"type":["string","null"],"description":"English name (CLDR)."},"native_name":{"type":["string","null"],"description":"Name in the language itself (CLDR)."},"local_name":{"type":["string","null"],"description":"Name in `locale`; null without `locale`."},"scripts":{"type":"array","items":{"type":"string"},"description":"ISO 15924 scripts the language is written in (CLDR)."},"speakers":{"type":"integer","description":"Approximate speakers: Σ country population × CLDR language share (rough estimate)."},"official_status":{"type":["string","null"],"description":"With `country`: official, official_regional, de_facto_official, official_minority."}},"required":["code","alpha2","alpha3","alpha3_bibliographic","name","native_name","local_name","scripts","speakers","official_status"]}}},"required":["count","languages"]},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["success","data","meta"]}}}},"400":{"description":"Malformed request (e.g. body is not valid JSON).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid RapidAPI proxy credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Payload exceeds the documented limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Parameters failed validation; see error.details.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/languages/lookup":{"get":{"operationId":"languagesLookup","tags":["Languages"],"summary":"One language by ISO 639-1, 639-2/T, 639-2/B or 639-3 code","description":"Codes, names, scripts, writing direction, speaker estimate and the countries where the language has official status (CLDR), most populous first.\n\n**Limits:** query string ≤ 2048 bytes; one code per call.","parameters":[{"schema":{"type":"string","minLength":2,"maxLength":3,"description":"ISO 639 code.","example":"ger"},"required":true,"description":"ISO 639 code.","name":"code","in":"query"},{"schema":{"type":"string","minLength":2,"maxLength":35,"description":"BCP 47 locale for the `local_name` fields (e.g. `de`, `fr-CA`, `ja`). Omit for English names only.","example":"de"},"required":false,"description":"BCP 47 locale for the `local_name` fields (e.g. `de`, `fr-CA`, `ja`). Omit for English names only.","name":"locale","in":"query"}],"responses":{"200":{"description":"One language by ISO 639-1, 639-2/T, 639-2/B or 639-3 code","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"language":{"type":"object","properties":{"code":{"type":"string","description":"Shortest ISO 639 code (639-1 when it exists, else 639-3)."},"alpha2":{"type":["string","null"],"description":"ISO 639-1."},"alpha3":{"type":["string","null"],"description":"ISO 639-2/T (terminology) / 639-3."},"alpha3_bibliographic":{"type":["string","null"],"description":"ISO 639-2/B, e.g. ger for German."},"name":{"type":["string","null"],"description":"English name (CLDR)."},"native_name":{"type":["string","null"],"description":"Name in the language itself (CLDR)."},"local_name":{"type":["string","null"],"description":"Name in `locale`; null without `locale`."},"scripts":{"type":"array","items":{"type":"string"},"description":"ISO 15924 scripts the language is written in (CLDR)."},"speakers":{"type":"integer","description":"Approximate speakers: Σ country population × CLDR language share (rough estimate)."},"direction":{"type":"string","enum":["ltr","rtl"],"description":"Writing direction of its main script."},"official_in":{"type":"array","items":{"type":"object","properties":{"country":{"type":"string"},"status":{"type":"string"}},"required":["country","status"]}}},"required":["code","alpha2","alpha3","alpha3_bibliographic","name","native_name","local_name","scripts","speakers","direction","official_in"]}},"required":["language"]},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["success","data","meta"]}}}},"400":{"description":"Malformed request (e.g. body is not valid JSON).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid RapidAPI proxy credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Payload exceeds the documented limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Parameters failed validation; see error.details.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/locales/info":{"get":{"operationId":"localesInfo","tags":["Languages"],"summary":"Facts about a BCP 47 locale: likely script/region, direction, week, formats","description":"Canonicalises a BCP 47 tag, adds likely subtags (CLDR likelySubtags via ICU: `zh-TW` → `zh-Hant-TW`), names it in English and in itself, gives the writing direction, the region’s first day of week, weekend, measurement system, hour cycle and currency, and formats a fixed sample number, date and amount in the locale (deterministic: the sample date is 2026-01-31T15:45:00Z, formatted in UTC).\n\n**Limits:** query string ≤ 2048 bytes; tag ≤ 35 characters.","parameters":[{"schema":{"type":"string","minLength":2,"maxLength":35,"description":"BCP 47 language tag.","example":"pt-BR"},"required":true,"description":"BCP 47 language tag.","name":"tag","in":"query"}],"responses":{"200":{"description":"Facts about a BCP 47 locale: likely script/region, direction, week, formats","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"tag":{"type":"string","description":"Canonical form."},"maximized":{"type":"string"},"minimized":{"type":"string"},"language":{"type":"string"},"script":{"type":["string","null"]},"region":{"type":["string","null"]},"name":{"type":["string","null"],"description":"English display name."},"native_name":{"type":["string","null"]},"direction":{"type":"string","enum":["ltr","rtl"]},"first_day_of_week":{"type":["integer","null"],"description":"ISO weekday, from the region (CLDR)."},"weekend":{"type":["array","null"],"items":{"type":"integer"}},"measurement_system":{"type":["string","null"]},"hour_cycle":{"type":["string","null"]},"currency":{"type":["string","null"]},"samples":{"type":"object","properties":{"number":{"type":"string","description":"1234567.891 formatted."},"percent":{"type":"string","description":"0.256 as percent."},"currency":{"type":["string","null"],"description":"1234.5 in the region’s currency."},"date_short":{"type":"string"},"date_long":{"type":"string"},"time":{"type":"string"}},"required":["number","percent","currency","date_short","date_long","time"]}},"required":["tag","maximized","minimized","language","script","region","name","native_name","direction","first_day_of_week","weekend","measurement_system","hour_cycle","currency","samples"]},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["success","data","meta"]}}}},"400":{"description":"Malformed request (e.g. body is not valid JSON).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid RapidAPI proxy credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Payload exceeds the documented limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Parameters failed validation; see error.details.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"webhooks":{}}