moogleAPI
Free Final Fantasy API with no key spanning the whole franchise: characters with race, role and affiliation, every mainline game, and monsters, with artwork. Live example.
Endpoint tested and returned HTTP 200 on 2026-08-21
What is the moogleAPI?
moogleAPI is a free REST API covering the Final Fantasy franchise as a whole rather than one title. It serves characters with their race, role, affiliation and home town, the mainline games with release years and platforms, and monsters, each with generated artwork.
Franchise-wide coverage is the point here. Where XIVAPI goes deep on a single title's data sheets, moogleAPI goes wide: a character record carries `gameName` and `releaseYear`, so you can build cross-game views — everyone from Final Fantasy VII, or every Kobold across the series — that a per-game API cannot answer. Records also carry a `popularity` integer, which is unusual and makes for an easy default sort when you have nothing better.
Set expectations about density before you build. Many fields are null on minor characters: our capture of the first page showed `role`, `affiliation`, `hometown` and `abilities` all null on some entries and populated on others, and default ordering is a plain string sort on name, which puts `13th Order Fugleman Zo Ga` and `2B` ahead of anything beginning with a letter. In our capture the `limit` parameter did not reduce the page size, so page through and trim client-side rather than assuming it will be honoured. The API also does not send CORS headers, so browser calls need a proxy.
Quick facts
- Base URL
https://moogleapi.com/api- Authentication
- No key or account. Note that `www.moogleapi.com` redirects to the apex domain — call the apex directly to avoid a redirect on every request.
- Rate limit
- No rate-limit headers are returned. The dataset is static, so cache it locally rather than reading through on every page view.
- Pricing
- Free.
- CORS
- Not enabled — call it from your server
- Official docs
- Read the docs
How to use the moogleAPI
Every request below was executed against the live API on 2026-08-21, and the response shown is the real body it returned — not an illustration.
1. List Final Fantasy characters
GET https://moogleapi.com/api/characters?limit=1
curl 'https://moogleapi.com/api/characters?limit=1'const res = await fetch("https://moogleapi.com/api/characters?limit=1");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);import requests
res = requests.get("https://moogleapi.com/api/characters?limit=1", timeout=20)
res.raise_for_status()
print(res.json()){
"items": [
{
"id": 945,
"name": "13th Order Fugleman Zo Ga",
"role": "Fugleman",
"affiliation": "13th Order",
"race": "Kobold",
"hometown": "U'Ghamaro Mines",
"abilities": null,
"imageUrl": "https://images.moogleapi.com/gen/characters/945.webp",
"gameName": "Final Fantasy XIV",
"releaseYear": 2013,
"popularity": 67
},
{
"id": 946,
"name": "175th Order Alchemist Bi Bi",
"role": "Alchemist",
"affiliation": "175th Order",
"race": "Kobold",
"hometown": "789th Order Dig",
"abilities": null,
"imageUrl": "https://images.moogleapi.com/gen/characters/946.webp",
"gameName": "Final Fantasy XIV",
"releaseYear": 2013,
"popularity": 36
},
{
"id": 947,
"name": "269th Order Mendicant Da Za",
"role": null,
"affiliation": null,
"race": "Kobold",
"hometown": null,
"abilities": null,
"imageUrl": "https://images.moogleapi.com/gen/characters/947.webp",
"gameName": "Final Fantasy XIV",
"releaseYear": 2013,
"popularity": 72
},
{
"id": 2540,
"name": "2B",
"role": "Battler (YoRHa Soldier Unit), Executioner",
"affiliation": "YoRHa",
"race": "Android",
"hometown": null,
"abilities": null,
"imageUrl": "https://images.moogleapi.com/gen/characters/2540.webp",
"gameName": "Final Fantasy XIV",
"releaseYear": 2013,
"popularity": 81
},
{
"id": 949,
"name": "2P",
"role": null,
"affiliatiParameters
| Parameter | Type | Required | Description |
|---|---|---|---|
page | query | Optional | Page number for collection endpoints. 1 |
limit | query | Optional | Requested page size. In our capture the response still contained several records, so treat it as a hint and trim client-side. 1 |
query | query | Optional | Search term for the `/characters/search` and `/monsters/search` paths. Cloud |
id | path segment | Optional | Append an id to a collection to fetch one record. 2540 |
Response fields
itemsarray- The page of records. Collections are always wrapped in `items`.
items[].idinteger- Stable numeric id. Ids are not contiguous within a page — they follow insertion order, not display order.
items[].namestring- Character name. Default ordering is a string sort on this field, so numeric-leading names come first.
items[].role / affiliation / hometown / abilitiesstring | null- Frequently null on minor characters. Null-check every one before rendering a detail card.
items[].racestring- Species or race — `Kobold`, `Android`, `Hume` and so on. More consistently populated than the other descriptors.
items[].gameNamestring- Which Final Fantasy title the character belongs to. This is the field that makes cross-game queries possible.
items[].releaseYearinteger- Release year of that game, denormalised onto every character so you can sort chronologically without a join.
items[].popularityinteger- A ranking score, useful as a default sort when you have no better ordering.
items[].imageUrlstring- Absolute WebP artwork URL on the project's image CDN.
What you can build with the moogleAPI
- Build a Final Fantasy character browser spanning every game
- Generate a franchise timeline from release years
- Filter characters by race or affiliation across titles
- Power a 'guess the game' quiz from character artwork
- Seed a fan wiki with structured franchise data
Common errors and how to fix them
404 on /api/v1/...
The live routes have no version segment.
Fix: Call `/api/characters`, `/api/games`, `/api/monsters` — the `v1` shown in older documentation returns a bare 404.
A redirect on every request
You called `www.moogleapi.com`.
Fix: Use the apex `moogleapi.com` directly; the www host 301s to it.
More records than the limit you asked for
`limit` was not honoured in our capture.
Fix: Slice the `items` array client-side, and page with `page` rather than relying on page size.
A CORS failure in the browser
No `Access-Control-Allow-Origin` header is sent.
Fix: Call it from your server, or put a small proxy in front.
moogleAPI — frequently asked questions
Is there a free Final Fantasy API?
Yes — moogleAPI covers the whole franchise with characters, games and monsters, and needs no key or account. Each character carries the game it belongs to, so you can query across titles rather than one at a time.
What is the difference between moogleAPI and XIVAPI?
Breadth versus depth. moogleAPI spans every mainline Final Fantasy title with a light schema; XIVAPI exposes Final Fantasy XIV's complete internal data sheets. Use moogleAPI for franchise-wide views and XIVAPI when you need everything about one game.
Why are so many character fields null?
The dataset is far more complete for major characters than for background NPCs, and it returns null rather than inventing values. Null-check `role`, `affiliation`, `hometown` and `abilities` before rendering, and fall back to `race` and `gameName`, which are reliably present.
Can I call moogleAPI from browser JavaScript?
Not directly — it sends no CORS headers, so a browser fetch from another origin is blocked. Proxy it through your own backend, which is worth doing anyway since the data is static enough to cache.
Tools that pair with this API
JSON Formatter
Format, beautify and minify JSON online with 2-space, 4-space or tab indentation. Sort keys alphabetically and catch syntax errors instantly — free and private.
JSON to CSV Converter
Convert a JSON array of objects to CSV online. Automatic column headers from the union of all keys, delimiter choice and proper quoting — all in-browser.
Random List Picker
Paste a list and pick random winners without repeats, or shuffle the whole list. A fair random name and item picker for giveaways, draws and raffles.
moogleAPI is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-21; always check the official documentation before relying on this API in production, as terms and limits can change.