{"openapi":"3.1.0","info":{"title":"BCP 47 Language Tags API","version":"1.0.0","description":"IETF BCP 47 language tags (locales) as an API, built on the IANA Language Subtag Registry — 9,200+ subtags (languages, scripts, regions, variants, extlangs and grandfathered tags). The headline /parse endpoint validates and decomposes any language tag (e.g. zh-Hant-TW → Chinese + Han Traditional script + Taiwan; en-Latn-US, de-CH-1996, i-klingon) into its labelled subtags, flags invalid or deprecated parts, and recognises pre-registered redundant/grandfathered tags. Look up an individual subtag (de → German, Hant → Han Traditional, 419 → Latin America), or search the registry by description. Ideal for internationalization (i18n), locale validation, content negotiation and language-aware apps.","contact":{"name":"PremiumApi","url":"https://www.oanor.com/by/premiumapi"}},"servers":[{"url":"https://api.oanor.com/bcp47-api","description":"oanor gateway"}],"tags":[{"name":"BCP 47"},{"name":"Meta"}],"components":{"securitySchemes":{"oanorKey":{"type":"apiKey","in":"header","name":"x-oanor-key","description":"Get your key at https://www.oanor.com/developer/keys"}}},"security":[{"oanorKey":[]}],"paths":{"/v1/parse":{"get":{"operationId":"get_v1_parse","tags":["BCP 47"],"summary":"Validate & decompose a BCP 47 language tag","description":"","parameters":[{"name":"tag","in":"query","required":true,"description":"Language tag, e.g. zh-Hant-TW or en-Latn-US","schema":{"type":"string"},"example":"zh-Hant-TW"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"tag":"zh-Hant-TW","type":"redundant","valid":true,"descriptions":["Taiwan Chinese in traditional script"]},"meta":{"timestamp":"2026-05-31T04:30:15.714Z","request_id":"8aa4eb7c-d01c-4f4b-87d3-dcb5a1a15b46"},"status":"ok","message":"Tag parsed","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/search":{"get":{"operationId":"get_v1_search","tags":["BCP 47"],"summary":"Search subtags by description","description":"","parameters":[{"name":"q","in":"query","required":true,"description":"Description search, e.g. chinese","schema":{"type":"string"},"example":"chinese"},{"name":"type","in":"query","required":false,"description":"Restrict to a subtag type","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Results per page (1-100, default 20)","schema":{"type":"string"},"example":"20"},{"name":"offset","in":"query","required":false,"description":"Pagination offset","schema":{"type":"string"},"example":"0"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"count":20,"limit":20,"query":"chinese","total":60,"offset":0,"results":[{"type":"language","subtag":"zh","description":"Chinese"},{"type":"language","subtag":"ace","description":"Achinese"},{"type":"language","subtag":"cdo","description":"Min Dong Chinese"},{"type":"language","subtag":"cjy","description":"Jinyu Chinese"},{"type":"language","subtag":"cmn","description":"Mandarin Chinese"},{"type":"language","subtag":"cnp","description":"Northern Ping Chinese"},{"type":"language","subtag":"cpi","description":"Chinese Pidgin English"},{"type":"language","subtag":"cpx","description":"Pu-Xian Chinese"},{"type":"language","subtag":"csl","description":"Chinese Sign Language"},{"type":"language","subtag":"csp","description":"Southern Ping Chinese"},{"type":"language","subtag":"czh","description":"Huizhou Chinese"},{"type":"language","subtag":"czo","description":"Min Zhong Chinese"},{"type":"language","subtag":"gan","description":"Gan Chinese"},{"type":"language","subtag":"hak","description":"Hakka Chinese"},{"type":"language","subtag":"hsn","description":"Xiang Chinese"},{"type":"language","subtag":"ltc","description":"Late Middle Chinese"},{"type":"language","subtag":"luh","description":"Leizhou Chinese"},{"type":"language","subtag":"lzh","description":"Literary Chinese"},{"type":"language","subtag":"mnp","description":"Min Bei Chinese"},{"type":"language","subtag":"nan","description":"Min Nan Chinese"}]},"meta":{"timestamp":"2026-05-31T04:30:15.785Z","request_id":"26b1d6f5-d4bd-46fa-a891-fce33728de3a"},"status":"ok","message":"Subtags listed","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/subtag":{"get":{"operationId":"get_v1_subtag","tags":["BCP 47"],"summary":"Look up a single subtag","description":"","parameters":[{"name":"subtag","in":"query","required":true,"description":"Subtag, e.g. de, Hant, US or 419","schema":{"type":"string"},"example":"de"},{"name":"type","in":"query","required":false,"description":"language | script | region | variant | extlang","schema":{"type":"string"}}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"subtag":"de","matches":2,"records":[{"type":"language","added":"2005-10-16","subtag":"de","descriptions":["German"],"suppress_script":"Latn"},{"type":"region","added":"2005-10-16","subtag":"DE","descriptions":["Germany"]}]},"meta":{"timestamp":"2026-05-31T04:30:15.856Z","request_id":"e49f03e4-7261-4ea2-9838-a70532ffa006"},"status":"ok","message":"Subtag retrieved","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/meta":{"get":{"operationId":"get_v1_meta","tags":["Meta"],"summary":"Registry date, totals & type breakdown","description":"","parameters":[],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"/v1/parse validates & decomposes a full language tag (e.g. zh-Hant-TW). Types: language, extlang, script, region, variant, grandfathered, redundant.","total":9295,"types":[{"type":"language","count":8275},{"type":"region","count":305},{"type":"extlang","count":258},{"type":"script","count":225},{"type":"variant","count":139},{"type":"redundant","count":67},{"type":"grandfathered","count":26}],"fields":["type","subtag","descriptions","added","deprecated","preferred_value","suppress_script","prefix","scope","macrolanguage"],"source":"IANA Language Subtag Registry (BCP 47)","file_date":"2026-05-05"},"meta":{"timestamp":"2026-05-31T04:30:15.904Z","request_id":"a7e2ff2d-4746-4feb-b9b6-257be06f3bca"},"status":"ok","message":"Meta retrieved","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}}},"x-oanor-pricing":[{"slug":"free","name":"Free","price_cents_month":0,"monthly_call_quota":10000,"rps_limit":2,"hard_limit":true},{"slug":"starter","name":"Starter","price_cents_month":350,"monthly_call_quota":90000,"rps_limit":8,"hard_limit":true},{"slug":"pro","name":"Pro","price_cents_month":1100,"monthly_call_quota":450000,"rps_limit":20,"hard_limit":true},{"slug":"mega","name":"Mega","price_cents_month":2800,"monthly_call_quota":2200000,"rps_limit":50,"hard_limit":true}],"x-oanor-marketplace-url":"https://www.oanor.com/api/bcp47-api"}