Developer API

Free Roman numeral API

A static JSON endpoint for every number from 1 to 3999. No key, no rate limit, no catch. Build a bot, a game or a plugin on top of it.

Endpoint

Each number has its own file. Request it directly and you get back JSON with the numeral and the words.

GET https://romanize.net/api/roman/{number}.json
http

Example request

curl https://romanize.net/api/roman/2026.json
bash

Example response

{
  "number": 2026,
  "roman": "MMXXVI",
  "words": "two thousand twenty-six",
  "valid": true
}
json

From JavaScript

const res = await fetch("https://romanize.net/api/roman/49.json");
const data = await res.json();
console.log(data.roman); // "XLIX"
js

Fields

FieldTypeMeaning
numberintegerThe input number, 1 to 3999.
romanstringThe Roman numeral, e.g. MMXXVI.
wordsstringThe number spelled out in English.
validbooleanAlways true for numbers in range.
There is also a discovery file at /api/roman/index.json describing the range and fields.

Usage and fair play

The API is served as static files from a content delivery network, so it is fast and resilient, but please cache responses on your side rather than fetching the same number repeatedly. Attribution is appreciated but not required. If you build something with it, we would love to hear about it on the contact page.

Frequently asked questions

Is the Roman numeral API really free?

Yes. It is a set of static JSON files served from a CDN, so there is no key, no sign up and no rate limit. Please cache responses rather than hammering the endpoint.

What range does the API cover?

Every whole number from 1 to 3999, which is the full standard Roman numeral range. Each file returns the numeral and the number spelled out in English.

Can I use it from the browser?

Yes. The files are plain JSON served with permissive caching, so a client-side fetch works from any origin.

Prefer to embed the UI?

If you want the converter itself rather than raw data, use the embeddable widget. Romanize keeps both free.