Free Roman numeral JSON API
One request, one clean JSON answer. Get the numeral, spelled form and additive breakdown for any number from 1 to 3999. No key, no limit, generous CORS.
Endpoint
GET https://romannumerals.app/api/roman/{number}
GET https://romannumerals.app/api/roman/{number}.jsonExample
Request the numeral for 47:
curl https://romannumerals.app/api/roman/47Response:
{
"ok": true,
"number": 47,
"roman": "XLVII",
"spelled": "forty-seven",
"breakdown": [
{ "glyph": "XL", "value": 40 },
{ "glyph": "V", "value": 5 },
{ "glyph": "I", "value": 1 },
{ "glyph": "I", "value": 1 }
],
"source": "https://romannumerals.app/numbers/47-in-roman-numerals"
}Use it in JavaScript
const res = await fetch("https://romannumerals.app/api/roman/2025");
const data = await res.json();
console.log(data.roman); // "MMXXV"Fields
- number: the input value as an integer.
- roman: the standard Roman numeral, for example XLVII.
- spelled: the English words, for example forty-seven.
- breakdown: the additive parts, each a glyph and its value.
- source: a link to the full reference page for that number.
Errors
A number below 1 or above 3999, or a non-integer, returns HTTP 400 with { "ok": false, "error": "..." }. Everything else returns HTTP 200.
A link back to Numerus is appreciated but not required. If the API helps your project, a credit to romannumerals.app helps others find it.
Frequently asked questions
Is the Roman numeral API free?
Yes. It is a free static endpoint with no key, no rate limit and permissive CORS, so you can call it from the browser or a server.
What range does the API cover?
Every integer from 1 to 3999, the standard Roman numeral range. Values outside that return a 400 with a clear message.
Prefer a widget?
If you want a visible converter on your own site rather than raw JSON, embed the Numerus converter widget with a single snippet.