Which resource endpoints are available in PokéAPI?
Updated
PokéAPI exposes a set of named REST resources under the base URL https://pokeapi.co/api/v2/, and you reach any record by appending the resource name plus an ID or name — for example pokemon/ditto, pokemon-species/aegislash, type/3, or ability/battle-armor. The site's own "Try it now" box lists these four as sample paths, and its documentation lists the full set of endpoints. If you need a specific resource beyond the examples below, treat the docs as the authoritative index rather than guessing path names.
How the URL pattern works
Every resource follows the same shape:
https://pokeapi.co/api/v2/{resource}/{id-or-name}
{resource}is the collection name, such aspokemon,pokemon-species,type, orability.{id-or-name}accepts either a numeric ID or a lowercase slug.pokemon/dittoandpokemon/132both resolve to the same record.- Collection endpoints also accept pagination parameters. The site's hint shows
pokemon?limit=100000&offset=0as a way to pull a large list in one request.
The expected result of a correct call is a JSON object for that single record; a wrong resource name or unknown ID returns an error rather than a partial object.
Resource examples shown on the site
| Resource | Example path | What it returns |
|---|---|---|
pokemon |
pokemon/ditto |
Core Pokémon record: abilities, base experience, forms, game indices, height, held items, and more |
pokemon-species |
pokemon-species/aegislash |
Species-level data (the site gives this as a sample path) |
type |
type/3 |
Data for a single type, addressed by numeric ID |
ability |
ability/battle-armor |
Data for a single ability, addressed by slug |
The pokemon/ditto response is the most fully illustrated example on the page, so it is the best one to inspect first when you want to see the field structure.
Reading a response: the Ditto example
The documented Ditto payload shows how records are shaped and cross-linked:
- Abilities are an array of objects, each with
ability.name,ability.url,is_hidden, andslot. Ditto listsimposter(hidden, slot 3) andlimber(not hidden, slot 1). - Cross-links are full URLs, not embedded objects.
ability.urlpoints tohttps://pokeapi.co/api/v2/ability/150/, so following it is a second request. - Game indices pair a
game_indexwith aversionobject that itself has anameandurl. Ditto's index is 132 in most listed versions but 76 inred. - Held items nest
version_detailswith ararityper version — Ditto'smetal-powdershows rarity 5 across several versions. - Scalar fields such as
heightandbase_experiencesit at the top level.
The practical takeaway: one call gives you one record, and anything referencing another resource arrives as a URL you must fetch separately. Plan for multiple requests when you need joined data.
Choosing an endpoint for a task
- Building a Pokédex entry → start with
pokemon/{name}for stats and abilities, thenpokemon-species/{name}for species-level context. - Type matchup or filter work → use
type/{id-or-name}. - Ability lookup → use
ability/{id-or-name}. - Bulk local dataset → use the collection endpoint with a high
limit, as in the site'spokemon?limit=100000&offset=0hint, then cache results rather than re-requesting per record.
Common snags
- Guessing resource names. Only the documented set is guaranteed; confirm unfamiliar names in the docs before building against them.
- Assuming nested data is inline. Ability, version, and item references are URLs — a single response will not contain the full related object.
- Ignoring pagination. Collection endpoints are list-shaped; without
limit/offsetyou get a page, not everything. - Case and spacing in slugs. Names in paths are lowercase hyphenated forms like
battle-armor, not display names.
The site describes itself as a free open-source RESTful API serving over 50 billion calls per month; no pricing or authentication requirements are stated on the page, so verify access terms in the docs before relying on it for production traffic.