{"openapi":"3.1.0","info":{"title":"Number Words API","version":"1.0.0","description":"Format numbers in human-readable forms as an API. Spell any number in English words — handling thousands through quintillions, negatives and decimals (e.g. 1,234,567 → \"one million two hundred thirty-four thousand five hundred sixty-seven\", 12.56 → \"twelve point five six\"). Turn a whole number into its ordinal, both short (21 → 21st, 113 → 113th) and written out (twenty-first, one hundred thirteenth). And convert any whole number from 1 to 3999 to Roman numerals and back (2024 ⇄ MMXXIV), with strict validation. Everything runs locally, so it is fast and always available. Ideal for invoices, cheques and accounting, legal documents, internationalisation, accessibility (screen readers), education and any UI that turns digits into words.","contact":{"name":"PremiumApi","url":"https://www.oanor.com/by/premiumapi"}},"servers":[{"url":"https://api.oanor.com/numberwords-api","description":"oanor gateway"}],"tags":[{"name":"Numbers"},{"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/ordinal":{"get":{"operationId":"get_v1_ordinal","tags":["Numbers"],"summary":"Ordinal of a whole number (short + words)","description":"","parameters":[{"name":"number","in":"query","required":true,"description":"A whole number, e.g. 21","schema":{"type":"string"},"example":"21"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"number":21,"ordinal":"21st","ordinal_words":"twenty-first"},"meta":{"timestamp":"2026-06-01T00:04:26.211Z","request_id":"f544ffd4-25e8-448e-97a1-52a8720188ff"},"status":"ok","message":"Ordinal formatted","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/roman":{"get":{"operationId":"get_v1_roman","tags":["Numbers"],"summary":"Whole number ↔ Roman numeral (1-3999)","description":"","parameters":[{"name":"number","in":"query","required":false,"description":"A number 1-3999 to convert to Roman, e.g. 2024","schema":{"type":"string"},"example":"2024"},{"name":"roman","in":"query","required":false,"description":"A Roman numeral to convert to a number, e.g. MMXXIV","schema":{"type":"string"}}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"roman":"MMXXIV","number":2024},"meta":{"timestamp":"2026-06-01T00:04:26.283Z","request_id":"6de29eb1-44f5-4e74-a97f-e4ce2cf49f2e"},"status":"ok","message":"Roman numeral converted","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/words":{"get":{"operationId":"get_v1_words","tags":["Numbers"],"summary":"Spell a number in English words","description":"","parameters":[{"name":"number","in":"query","required":true,"description":"A number (negatives & decimals ok), e.g. 1234","schema":{"type":"string"},"example":"1234"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"words":"one thousand two hundred thirty-four","number":"1234"},"meta":{"timestamp":"2026-06-01T00:04:26.329Z","request_id":"d79f90f2-35bb-4068-a592-a8720d48a08e"},"status":"ok","message":"Number spelled","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":"Usage notes","description":"","parameters":[],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"Number formatting. /v1/words = spell a number in English words (e.g. 1234 → one thousand two hundred thirty-four; handles negatives and decimals via 'point'); /v1/ordinal = the ordinal of a whole number, short (21 → 21st) and in words (twenty-first); /v1/roman = a whole number 1-3999 to Roman numerals (number=2024 → MMXXIV) or back (roman=MMXXIV → 2024). Runs fully locally.","source":"local number-formatting engine","endpoints":["/v1/words","/v1/ordinal","/v1/roman","/v1/meta"]},"meta":{"timestamp":"2026-06-01T00:04:26.395Z","request_id":"835a6cb5-f72c-48e9-b32b-dceec6e31e28"},"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":14500,"rps_limit":2,"hard_limit":true},{"slug":"starter","name":"Starter","price_cents_month":230,"monthly_call_quota":225000,"rps_limit":8,"hard_limit":true},{"slug":"pro","name":"Pro","price_cents_month":810,"monthly_call_quota":880000,"rps_limit":20,"hard_limit":true},{"slug":"mega","name":"Mega","price_cents_month":2740,"monthly_call_quota":3600000,"rps_limit":50,"hard_limit":true}],"x-oanor-marketplace-url":"https://www.oanor.com/api/numberwords-api"}