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 as pokemon, pokemon-species, type, or ability.
  • {id-or-name} accepts either a numeric ID or a lowercase slug. pokemon/ditto and pokemon/132 both resolve to the same record.
  • Collection endpoints also accept pagination parameters. The site's hint shows pokemon?limit=100000&offset=0 as 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, and slot. Ditto lists imposter (hidden, slot 3) and limber (not hidden, slot 1).
  • Cross-links are full URLs, not embedded objects. ability.url points to https://pokeapi.co/api/v2/ability/150/, so following it is a second request.
  • Game indices pair a game_index with a version object that itself has a name and url. Ditto's index is 132 in most listed versions but 76 in red.
  • Held items nest version_details with a rarity per version — Ditto's metal-powder shows rarity 5 across several versions.
  • Scalar fields such as height and base_experience sit 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, then pokemon-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's pokemon?limit=100000&offset=0 hint, 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/offset you 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.