Available Routes / cURL
All routes are GET-only. Base URL: https://api.openflags.net
Health check
cli
GET https://api.openflags.net/api/v1/healthsh
curl https://api.openflags.net/api/v1/healthList flags (paginated)
Returns a page of flags. page defaults to 1, page_size defaults to 20 (max 100).
cli
GET https://api.openflags.net/api/v1/flags?page=1&page_size=20sh
curl "https://api.openflags.net/api/v1/flags?page=1&page_size=20"Get a single flag by ISO 3166 code
cli
GET https://api.openflags.net/api/v1/flags/:iso_codesh
curl https://api.openflags.net/api/v1/flags/US-CASearch flags
Matches against ISO code, region name, country name, and known aliases (including translated names).
cli
GET https://api.openflags.net/api/v1/search?q=:termsh
curl "https://api.openflags.net/api/v1/search?q=california"List flags for a country
cli
GET https://api.openflags.net/api/v1/countries/:iso/flagssh
curl https://api.openflags.net/api/v1/countries/US/flagsRandom flag (JSON)
cli
GET https://api.openflags.net/api/v1/flags/randomsh
curl https://api.openflags.net/api/v1/flags/randomRandom flag image (direct SVG)
Serves the SVG file directly — safe to drop straight into an <img src>.
cli
GET https://api.openflags.net/api/v1/flags/random/imagehtml
<img src="https://api.openflags.net/api/v1/flags/random/image" alt="Random flag" />Static flag / coat-of-arms files
Every flag's flag.svg / coat.svg field (see the flag object shape) is a path served directly under /flags/:
cli
GET https://api.openflags.net/flags/:country_iso/flag.svg
GET https://api.openflags.net/flags/:country_iso/:region_iso/flag.svgsh
# Country-level flag
curl https://api.openflags.net/flags/US/flag.svg
# Region-level flag
curl https://api.openflags.net/flags/US/US-CA/flag.svgPNG conversion
Converts a flag SVG to PNG on the fly (and caches the result). size is in pixels, defaults to 128, max 512.
cli
GET https://api.openflags.net/flags-png/:country/*path?size=128sh
curl "https://api.openflags.net/flags-png/US/US-CA/flag.svg?size=256" --output california.png