{"openapi":"3.1.0","info":{"title":"Geocoded","version":"1.0.0","description":"Free country, state, city, and location data. Fast, cached, and filterable.\n\nData sourced from [GeoNames](https://www.geonames.org/) (CC BY 4.0), [Unicode CLDR](https://cldr.unicode.org/) (Unicode License), [IANA](https://www.iana.org/time-zones) (Public Domain), [ISO 4217 / SIX Group](https://www.six-group.com/en/products-services/financial-information/data-standards.html), [Natural Earth](https://www.naturalearthdata.com/) (Public Domain), and [CIA World Factbook](https://www.cia.gov/the-world-factbook/) (Public Domain).","contact":{"email":"contact@harryy.me"},"license":{"name":"CC BY 4.0","url":"https://creativecommons.org/licenses/by/4.0/"},"x-logo":{"url":"/logo.png","altText":"Geocoded"}},"servers":[{"url":"https://api.geocoded.me"}],"paths":{"/":{"get":{"tags":["Location"],"summary":"Get caller's geo info","description":"Returns geographic information about the caller based on their IP address, using Cloudflare's edge network data. Also enriches the response with full country, state, and city details when available (`countryInfo`, `stateInfo`, `cityInfo`).","parameters":[{"name":"fields","in":"query","required":false,"description":"Comma-separated list of fields to return. Supports dot notation for nested fields (e.g. `countryInfo.name,countryInfo.iso2`). When omitted, all fields are returned.","schema":{"type":"string"},"example":"name,iso2"}],"responses":{"200":{"description":"Location info","content":{"application/json":{"schema":{"type":"object","properties":{"asn":{"type":"number"},"asOrganization":{"type":"string"},"city":{"type":"string"},"cityInfo":{"description":"Full city details (matched by city name)","type":"object","properties":{"countryCode":{"type":"string"},"countryName":{"type":"string"},"geonameId":{"type":"number","nullable":true},"latitude":{"type":"string"},"longitude":{"type":"string"},"name":{"type":"string"},"population":{"type":"number"},"stateCode":{"type":"string"},"stateName":{"type":"string"},"timezone":{"type":"string"}}},"colo":{"type":"string"},"continent":{"type":"string"},"country":{"type":"string"},"countryInfo":{"description":"Full country details (matched by country code)","type":"object","properties":{"areaSqKm":{"type":"number"},"capital":{"type":"string"},"continent":{"type":"string"},"currency":{"type":"string"},"currencyName":{"type":"string"},"currencySymbol":{"type":"string"},"drivingSide":{"type":"string"},"emoji":{"type":"string"},"emojiU":{"type":"string"},"firstDayOfWeek":{"type":"string"},"flagUrl":{"type":"string"},"gdp":{"type":"number","nullable":true},"iso2":{"type":"string"},"iso3":{"type":"string"},"languages":{"type":"array","items":{"type":"string"}},"latitude":{"type":"string"},"longitude":{"type":"string"},"measurementSystem":{"type":"string"},"name":{"type":"string"},"nationality":{"type":"string"},"literacy":{"type":"number","nullable":true},"native":{"type":"string"},"neighbours":{"type":"array","items":{"type":"string"}},"numericCode":{"type":"string"},"phoneCode":{"type":"string"},"population":{"type":"number"},"postalCodeFormat":{"type":"string","nullable":true},"postalCodeRegex":{"type":"string","nullable":true},"region":{"type":"string"},"subregion":{"type":"string"},"timeFormat":{"type":"string"},"timezones":{"type":"array","items":{"type":"object","properties":{"abbreviation":{"type":"string"},"gmtOffset":{"type":"number"},"gmtOffsetName":{"type":"string"},"tzName":{"type":"string"},"zoneName":{"type":"string"}}}},"tld":{"type":"string"},"translations":{"type":"object","additionalProperties":{"type":"string"}}}},"ip":{"type":"string"},"isEU":{"type":"boolean"},"latitude":{"type":"string"},"longitude":{"type":"string"},"postalCode":{"type":"string"},"region":{"type":"string"},"regionCode":{"type":"string"},"stateInfo":{"description":"Full state details (matched by region code)","type":"object","properties":{"capital":{"type":"string","nullable":true},"countryCode":{"type":"string"},"countryName":{"type":"string"},"iso2":{"type":"string"},"iso31662":{"type":"string"},"latitude":{"type":"string"},"longitude":{"type":"string"},"name":{"type":"string"},"population":{"type":"number","nullable":true},"timezone":{"type":"string"},"type":{"type":"string"}}},"timezone":{"type":"string"}}},"example":{"asn":13335,"asOrganization":"Cloudflare, Inc.","city":"San Francisco","cityInfo":{"countryCode":"US","countryName":"United States","latitude":"37.77493000","longitude":"-122.41942000","name":"San Francisco","population":883305,"stateCode":"CA","stateName":"California","timezone":"America/Los_Angeles"},"colo":"SFO","continent":"NA","country":"US","countryInfo":{"capital":"Washington","currency":"USD","emoji":"🇺🇸","iso2":"US","iso3":"USA","name":"United States","phoneCode":"1"},"ip":"1.2.3.4","isEU":false,"latitude":"37.7749","longitude":"-122.4194","postalCode":"94102","region":"California","regionCode":"CA","stateInfo":{"countryCode":"US","countryName":"United States","iso2":"CA","name":"California","timezone":"America/Los_Angeles"},"timezone":"America/Los_Angeles"}}}}}}},"/search":{"get":{"tags":["Search"],"summary":"Search countries, states, and cities","description":"Full-text search across all entity types. Returns matching results ranked by relevance. Always paginated.","parameters":[{"name":"q","in":"query","required":true,"description":"Search query (prefix matching supported)","schema":{"type":"string"},"example":"lond"},{"name":"type","in":"query","required":false,"description":"Limit global search results to one entity type.","schema":{"type":"string","enum":["country","state","city"]}},{"name":"limit","in":"query","required":false,"description":"Maximum number of results to return (1-2000, default 25). List responses are always wrapped in `{ data, meta }`.","schema":{"type":"integer","minimum":1,"maximum":2000,"default":25}},{"name":"offset","in":"query","required":false,"description":"Number of results to skip (default 0). Cannot be combined with `cursor`.","schema":{"type":"integer","minimum":0,"default":0}},{"name":"cursor","in":"query","required":false,"description":"Opaque cursor for cursor-based pagination. Use the `cursor` value from a previous response `meta` to fetch the next page. Cannot be combined with `offset`.","schema":{"type":"string"}}],"responses":{"200":{"description":"Paginated search results","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["country","state","city"]},"name":{"type":"string"},"countryCode":{"type":"string"},"countryName":{"type":"string"},"geonameId":{"type":"number","nullable":true},"stateCode":{"type":"string","nullable":true},"stateName":{"type":"string","nullable":true}}}},"meta":{"type":"object","properties":{"total":{"type":"integer","description":"Total number of matching records"},"limit":{"type":"integer"},"offset":{"type":"integer"},"hasMore":{"type":"boolean"},"cursor":{"type":"string","nullable":true,"description":"Opaque cursor to pass as `?cursor=` to fetch the next page. Null when there are no more results."}},"required":["total","limit","offset","hasMore","cursor"]}}}}}},"400":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}}}}},"/countries":{"get":{"tags":["Countries"],"summary":"List all countries","parameters":[{"name":"q","in":"query","required":false,"description":"Search query for filtering this list. Countries match name, ISO 2, or ISO 3. States match name, ISO 2, or ISO 3166-2. Cities match name.","schema":{"type":"string"},"example":"san"},{"name":"fields","in":"query","required":false,"description":"Comma-separated list of fields to return. Supports dot notation for nested fields (e.g. `countryInfo.name,countryInfo.iso2`). When omitted, all fields are returned.","schema":{"type":"string"},"example":"name,iso2"},{"name":"limit","in":"query","required":false,"description":"Maximum number of results to return (1-2000, default 25). List responses are always wrapped in `{ data, meta }`.","schema":{"type":"integer","minimum":1,"maximum":2000,"default":25}},{"name":"offset","in":"query","required":false,"description":"Number of results to skip (default 0). Cannot be combined with `cursor`.","schema":{"type":"integer","minimum":0,"default":0}},{"name":"cursor","in":"query","required":false,"description":"Opaque cursor for cursor-based pagination. Use the `cursor` value from a previous response `meta` to fetch the next page. Cannot be combined with `offset`.","schema":{"type":"string"}}],"responses":{"200":{"description":"Paginated countries response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"areaSqKm":{"type":"number"},"capital":{"type":"string"},"continent":{"type":"string"},"currency":{"type":"string"},"currencyName":{"type":"string"},"currencySymbol":{"type":"string"},"drivingSide":{"type":"string"},"emoji":{"type":"string"},"emojiU":{"type":"string"},"firstDayOfWeek":{"type":"string"},"flagUrl":{"type":"string"},"gdp":{"type":"number","nullable":true},"iso2":{"type":"string"},"iso3":{"type":"string"},"languages":{"type":"array","items":{"type":"string"}},"latitude":{"type":"string"},"longitude":{"type":"string"},"measurementSystem":{"type":"string"},"name":{"type":"string"},"nationality":{"type":"string"},"literacy":{"type":"number","nullable":true},"native":{"type":"string"},"neighbours":{"type":"array","items":{"type":"string"}},"numericCode":{"type":"string"},"phoneCode":{"type":"string"},"population":{"type":"number"},"postalCodeFormat":{"type":"string","nullable":true},"postalCodeRegex":{"type":"string","nullable":true},"region":{"type":"string"},"subregion":{"type":"string"},"timeFormat":{"type":"string"},"timezones":{"type":"array","items":{"type":"object","properties":{"abbreviation":{"type":"string"},"gmtOffset":{"type":"number"},"gmtOffsetName":{"type":"string"},"tzName":{"type":"string"},"zoneName":{"type":"string"}}}},"tld":{"type":"string"},"translations":{"type":"object","additionalProperties":{"type":"string"}}}}},"meta":{"type":"object","properties":{"total":{"type":"integer","description":"Total number of matching records"},"limit":{"type":"integer"},"offset":{"type":"integer"},"hasMore":{"type":"boolean"},"cursor":{"type":"string","nullable":true,"description":"Opaque cursor to pass as `?cursor=` to fetch the next page. Null when there are no more results."}},"required":["total","limit","offset","hasMore","cursor"]}},"required":["data","meta"],"description":"Paginated response"}}}},"404":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}}}}},"/countries/{id}":{"get":{"tags":["Countries"],"summary":"Get one country","description":"Lookup by ISO 2 code, ISO 3 code, or country name (case-insensitive).","parameters":[{"name":"id","in":"path","required":true,"description":"ISO 2 code, ISO 3 code, or country name","schema":{"type":"string"},"example":"US"},{"name":"fields","in":"query","required":false,"description":"Comma-separated list of fields to return. Supports dot notation for nested fields (e.g. `countryInfo.name,countryInfo.iso2`). When omitted, all fields are returned.","schema":{"type":"string"},"example":"name,iso2"}],"responses":{"200":{"description":"Country object","content":{"application/json":{"schema":{"type":"object","properties":{"areaSqKm":{"type":"number"},"capital":{"type":"string"},"continent":{"type":"string"},"currency":{"type":"string"},"currencyName":{"type":"string"},"currencySymbol":{"type":"string"},"drivingSide":{"type":"string"},"emoji":{"type":"string"},"emojiU":{"type":"string"},"firstDayOfWeek":{"type":"string"},"flagUrl":{"type":"string"},"gdp":{"type":"number","nullable":true},"iso2":{"type":"string"},"iso3":{"type":"string"},"languages":{"type":"array","items":{"type":"string"}},"latitude":{"type":"string"},"longitude":{"type":"string"},"measurementSystem":{"type":"string"},"name":{"type":"string"},"nationality":{"type":"string"},"literacy":{"type":"number","nullable":true},"native":{"type":"string"},"neighbours":{"type":"array","items":{"type":"string"}},"numericCode":{"type":"string"},"phoneCode":{"type":"string"},"population":{"type":"number"},"postalCodeFormat":{"type":"string","nullable":true},"postalCodeRegex":{"type":"string","nullable":true},"region":{"type":"string"},"subregion":{"type":"string"},"timeFormat":{"type":"string"},"timezones":{"type":"array","items":{"type":"object","properties":{"abbreviation":{"type":"string"},"gmtOffset":{"type":"number"},"gmtOffsetName":{"type":"string"},"tzName":{"type":"string"},"zoneName":{"type":"string"}}}},"tld":{"type":"string"},"translations":{"type":"object","additionalProperties":{"type":"string"}}}}}}},"404":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}}}}},"/countries/{country}/states":{"get":{"tags":["States"],"summary":"List states for a country","parameters":[{"name":"country","in":"path","required":true,"description":"Country ISO 2 code","schema":{"type":"string"},"example":"US"},{"name":"fields","in":"query","required":false,"description":"Comma-separated list of fields to return. Supports dot notation for nested fields (e.g. `countryInfo.name,countryInfo.iso2`). When omitted, all fields are returned.","schema":{"type":"string"},"example":"name,iso2"},{"name":"q","in":"query","required":false,"description":"Search query for filtering this list. Countries match name, ISO 2, or ISO 3. States match name, ISO 2, or ISO 3166-2. Cities match name.","schema":{"type":"string"},"example":"san"},{"name":"limit","in":"query","required":false,"description":"Maximum number of results to return (1-2000, default 25). List responses are always wrapped in `{ data, meta }`.","schema":{"type":"integer","minimum":1,"maximum":2000,"default":25}},{"name":"offset","in":"query","required":false,"description":"Number of results to skip (default 0). Cannot be combined with `cursor`.","schema":{"type":"integer","minimum":0,"default":0}},{"name":"cursor","in":"query","required":false,"description":"Opaque cursor for cursor-based pagination. Use the `cursor` value from a previous response `meta` to fetch the next page. Cannot be combined with `offset`.","schema":{"type":"string"}}],"responses":{"200":{"description":"Paginated states response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"capital":{"type":"string","nullable":true},"countryCode":{"type":"string"},"countryName":{"type":"string"},"iso2":{"type":"string"},"iso31662":{"type":"string"},"latitude":{"type":"string"},"longitude":{"type":"string"},"name":{"type":"string"},"population":{"type":"number","nullable":true},"timezone":{"type":"string"},"type":{"type":"string"}}}},"meta":{"type":"object","properties":{"total":{"type":"integer","description":"Total number of matching records"},"limit":{"type":"integer"},"offset":{"type":"integer"},"hasMore":{"type":"boolean"},"cursor":{"type":"string","nullable":true,"description":"Opaque cursor to pass as `?cursor=` to fetch the next page. Null when there are no more results."}},"required":["total","limit","offset","hasMore","cursor"]}},"required":["data","meta"],"description":"Paginated response"}}}},"404":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}}}}},"/countries/{country}/states/{state}":{"get":{"tags":["States"],"summary":"Get one state","description":"Lookup by ISO 2 code or state name (case-insensitive).","parameters":[{"name":"country","in":"path","required":true,"description":"Country ISO 2 code","schema":{"type":"string"},"example":"US"},{"name":"state","in":"path","required":true,"description":"State ISO 2 code or state name","schema":{"type":"string"},"example":"CA"},{"name":"fields","in":"query","required":false,"description":"Comma-separated list of fields to return. Supports dot notation for nested fields (e.g. `countryInfo.name,countryInfo.iso2`). When omitted, all fields are returned.","schema":{"type":"string"},"example":"name,iso2"}],"responses":{"200":{"description":"State object","content":{"application/json":{"schema":{"type":"object","properties":{"capital":{"type":"string","nullable":true},"countryCode":{"type":"string"},"countryName":{"type":"string"},"iso2":{"type":"string"},"iso31662":{"type":"string"},"latitude":{"type":"string"},"longitude":{"type":"string"},"name":{"type":"string"},"population":{"type":"number","nullable":true},"timezone":{"type":"string"},"type":{"type":"string"}}}}}},"404":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}}}}},"/countries/{country}/states/{state}/cities":{"get":{"tags":["Cities"],"summary":"List cities for a state","parameters":[{"name":"country","in":"path","required":true,"description":"Country ISO 2 code","schema":{"type":"string"},"example":"US"},{"name":"state","in":"path","required":true,"description":"State ISO 2 code","schema":{"type":"string"},"example":"CA"},{"name":"fields","in":"query","required":false,"description":"Comma-separated list of fields to return. Supports dot notation for nested fields (e.g. `countryInfo.name,countryInfo.iso2`). When omitted, all fields are returned.","schema":{"type":"string"},"example":"name,iso2"},{"name":"q","in":"query","required":false,"description":"Search query for filtering this list. Countries match name, ISO 2, or ISO 3. States match name, ISO 2, or ISO 3166-2. Cities match name.","schema":{"type":"string"},"example":"san"},{"name":"limit","in":"query","required":false,"description":"Maximum number of results to return (1-2000, default 25). List responses are always wrapped in `{ data, meta }`.","schema":{"type":"integer","minimum":1,"maximum":2000,"default":25}},{"name":"offset","in":"query","required":false,"description":"Number of results to skip (default 0). Cannot be combined with `cursor`.","schema":{"type":"integer","minimum":0,"default":0}},{"name":"cursor","in":"query","required":false,"description":"Opaque cursor for cursor-based pagination. Use the `cursor` value from a previous response `meta` to fetch the next page. Cannot be combined with `offset`.","schema":{"type":"string"}}],"responses":{"200":{"description":"Paginated cities response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"countryCode":{"type":"string"},"countryName":{"type":"string"},"geonameId":{"type":"number","nullable":true},"latitude":{"type":"string"},"longitude":{"type":"string"},"name":{"type":"string"},"population":{"type":"number"},"stateCode":{"type":"string"},"stateName":{"type":"string"},"timezone":{"type":"string"}}}},"meta":{"type":"object","properties":{"total":{"type":"integer","description":"Total number of matching records"},"limit":{"type":"integer"},"offset":{"type":"integer"},"hasMore":{"type":"boolean"},"cursor":{"type":"string","nullable":true,"description":"Opaque cursor to pass as `?cursor=` to fetch the next page. Null when there are no more results."}},"required":["total","limit","offset","hasMore","cursor"]}},"required":["data","meta"],"description":"Paginated response"}}}},"404":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}}}}},"/countries/{country}/states/{state}/cities/{city}":{"get":{"tags":["Cities"],"summary":"Get one city","description":"Lookup by city name (case-insensitive). If multiple cities in the same state share the same name, this returns `409` with matching city records. Use `/cities/{geonameId}` for an unambiguous lookup.","parameters":[{"name":"country","in":"path","required":true,"description":"Country ISO 2 code","schema":{"type":"string"},"example":"US"},{"name":"state","in":"path","required":true,"description":"State ISO 2 code","schema":{"type":"string"},"example":"CA"},{"name":"city","in":"path","required":true,"description":"City name","schema":{"type":"string"},"example":"Los Angeles"},{"name":"fields","in":"query","required":false,"description":"Comma-separated list of fields to return. Supports dot notation for nested fields (e.g. `countryInfo.name,countryInfo.iso2`). When omitted, all fields are returned.","schema":{"type":"string"},"example":"name,iso2"}],"responses":{"200":{"description":"City object","content":{"application/json":{"schema":{"type":"object","properties":{"countryCode":{"type":"string"},"countryName":{"type":"string"},"geonameId":{"type":"number","nullable":true},"latitude":{"type":"string"},"longitude":{"type":"string"},"name":{"type":"string"},"population":{"type":"number"},"stateCode":{"type":"string"},"stateName":{"type":"string"},"timezone":{"type":"string"}}}}}},"404":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"409":{"description":"Multiple city records matched this name","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"matches":{"type":"array","items":{"type":"object","properties":{"countryCode":{"type":"string"},"countryName":{"type":"string"},"geonameId":{"type":"number","nullable":true},"latitude":{"type":"string"},"longitude":{"type":"string"},"name":{"type":"string"},"population":{"type":"number"},"stateCode":{"type":"string"},"stateName":{"type":"string"},"timezone":{"type":"string"}}}}},"required":["error","matches"]}}}}}}},"/cities/{geonameId}":{"get":{"tags":["Cities"],"summary":"Get one city by GeoNames ID","description":"Lookup by stable GeoNames city ID. Prefer this endpoint when a city name is ambiguous inside a state.","parameters":[{"name":"geonameId","in":"path","required":true,"description":"GeoNames city ID","schema":{"type":"integer"},"example":5391959},{"name":"fields","in":"query","required":false,"description":"Comma-separated list of fields to return. Supports dot notation for nested fields (e.g. `countryInfo.name,countryInfo.iso2`). When omitted, all fields are returned.","schema":{"type":"string"},"example":"name,iso2"}],"responses":{"200":{"description":"City object","content":{"application/json":{"schema":{"type":"object","properties":{"countryCode":{"type":"string"},"countryName":{"type":"string"},"geonameId":{"type":"number","nullable":true},"latitude":{"type":"string"},"longitude":{"type":"string"},"name":{"type":"string"},"population":{"type":"number"},"stateCode":{"type":"string"},"stateName":{"type":"string"},"timezone":{"type":"string"}}}}}},"400":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}}}}},"/timezones":{"get":{"tags":["Timezones"],"summary":"List all timezones","parameters":[{"name":"fields","in":"query","required":false,"description":"Comma-separated list of fields to return. Supports dot notation for nested fields (e.g. `countryInfo.name,countryInfo.iso2`). When omitted, all fields are returned.","schema":{"type":"string"},"example":"name,iso2"},{"name":"limit","in":"query","required":false,"description":"Maximum number of results to return (1-2000, default 25). List responses are always wrapped in `{ data, meta }`.","schema":{"type":"integer","minimum":1,"maximum":2000,"default":25}},{"name":"offset","in":"query","required":false,"description":"Number of results to skip (default 0). Cannot be combined with `cursor`.","schema":{"type":"integer","minimum":0,"default":0}},{"name":"cursor","in":"query","required":false,"description":"Opaque cursor for cursor-based pagination. Use the `cursor` value from a previous response `meta` to fetch the next page. Cannot be combined with `offset`.","schema":{"type":"string"}}],"responses":{"200":{"description":"Paginated timezones response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"comments":{"type":"string"},"coordinates":{"type":"string"},"countryCodes":{"type":"array","items":{"type":"string"}},"timezone":{"type":"string"}}}},"meta":{"type":"object","properties":{"total":{"type":"integer","description":"Total number of matching records"},"limit":{"type":"integer"},"offset":{"type":"integer"},"hasMore":{"type":"boolean"},"cursor":{"type":"string","nullable":true,"description":"Opaque cursor to pass as `?cursor=` to fetch the next page. Null when there are no more results."}},"required":["total","limit","offset","hasMore","cursor"]}},"required":["data","meta"],"description":"Paginated response"}}}}}}},"/timezones/{id}":{"get":{"tags":["Timezones"],"summary":"Get one timezone","description":"Lookup by IANA timezone ID (e.g. America/New_York).","parameters":[{"name":"id","in":"path","required":true,"description":"IANA timezone ID","schema":{"type":"string"},"example":"America/New_York"},{"name":"fields","in":"query","required":false,"description":"Comma-separated list of fields to return. Supports dot notation for nested fields (e.g. `countryInfo.name,countryInfo.iso2`). When omitted, all fields are returned.","schema":{"type":"string"},"example":"name,iso2"}],"responses":{"200":{"description":"Timezone object","content":{"application/json":{"schema":{"type":"object","properties":{"comments":{"type":"string"},"coordinates":{"type":"string"},"countryCodes":{"type":"array","items":{"type":"string"}},"timezone":{"type":"string"}}}}}},"404":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}}}}},"/currencies":{"get":{"tags":["Currencies"],"summary":"List all currencies","parameters":[{"name":"fields","in":"query","required":false,"description":"Comma-separated list of fields to return. Supports dot notation for nested fields (e.g. `countryInfo.name,countryInfo.iso2`). When omitted, all fields are returned.","schema":{"type":"string"},"example":"name,iso2"},{"name":"limit","in":"query","required":false,"description":"Maximum number of results to return (1-2000, default 25). List responses are always wrapped in `{ data, meta }`.","schema":{"type":"integer","minimum":1,"maximum":2000,"default":25}},{"name":"offset","in":"query","required":false,"description":"Number of results to skip (default 0). Cannot be combined with `cursor`.","schema":{"type":"integer","minimum":0,"default":0}},{"name":"cursor","in":"query","required":false,"description":"Opaque cursor for cursor-based pagination. Use the `cursor` value from a previous response `meta` to fetch the next page. Cannot be combined with `offset`.","schema":{"type":"string"}}],"responses":{"200":{"description":"Paginated currencies response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string"},"countries":{"type":"array","items":{"type":"string"}},"decimals":{"type":"number"},"name":{"type":"string"},"symbol":{"type":"string"}}}},"meta":{"type":"object","properties":{"total":{"type":"integer","description":"Total number of matching records"},"limit":{"type":"integer"},"offset":{"type":"integer"},"hasMore":{"type":"boolean"},"cursor":{"type":"string","nullable":true,"description":"Opaque cursor to pass as `?cursor=` to fetch the next page. Null when there are no more results."}},"required":["total","limit","offset","hasMore","cursor"]}},"required":["data","meta"],"description":"Paginated response"}}}}}}},"/currencies/{code}":{"get":{"tags":["Currencies"],"summary":"Get one currency","description":"Lookup by ISO 4217 currency code (e.g. USD, EUR).","parameters":[{"name":"code","in":"path","required":true,"description":"ISO 4217 currency code","schema":{"type":"string"},"example":"USD"},{"name":"fields","in":"query","required":false,"description":"Comma-separated list of fields to return. Supports dot notation for nested fields (e.g. `countryInfo.name,countryInfo.iso2`). When omitted, all fields are returned.","schema":{"type":"string"},"example":"name,iso2"}],"responses":{"200":{"description":"Currency object","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string"},"countries":{"type":"array","items":{"type":"string"}},"decimals":{"type":"number"},"name":{"type":"string"},"symbol":{"type":"string"}}}}}},"404":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}}}}}}}