PokéAPI Pokémon API

Pokémon, species, abilities, types, stats, natures, egg groups, growth rates, genders, characteristics, and Pokéathlon stats.

OpenAPI Specification

pokeapi-pok-mon-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Poké Berries Pokémon API
  description: PokéAPI v2 is a free, open-source RESTful API serving comprehensive Pokémon data — species, abilities, moves, items, types, locations, evolution chains, encounters, berries, contests, games, and machines. All endpoints are GET-only and require no authentication. Please cache resources locally; rate limits were removed in 2018 but persistent abusers may be IP-banned.
  version: '2'
  contact:
    name: PokéAPI Maintainers
    url: https://pokeapi.co
  license:
    name: BSD-3-Clause
    url: https://github.com/PokeAPI/pokeapi/blob/master/LICENSE.md
servers:
- url: https://pokeapi.co/api/v2
  description: PokéAPI v2 production base URL
tags:
- name: Pokémon
  description: Pokémon, species, abilities, types, stats, natures, egg groups, growth rates, genders, characteristics, and Pokéathlon stats.
paths:
  /ability:
    get:
      tags:
      - Pokémon
      summary: List Abilities
      description: List all Pokémon abilities.
      operationId: listAbilities
      parameters:
      - $ref: '#/components/parameters/Limit'
      - $ref: '#/components/parameters/Offset'
      responses:
        '200':
          description: A paginated list of ability resources.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NamedAPIResourceList'
  /ability/{id}:
    get:
      tags:
      - Pokémon
      summary: Get Ability
      description: Retrieve a single ability by id or name.
      operationId: getAbility
      parameters:
      - $ref: '#/components/parameters/IdOrName'
      responses:
        '200':
          description: A single ability resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Ability'
  /characteristic:
    get:
      tags:
      - Pokémon
      summary: List Characteristics
      description: List all characteristics.
      operationId: listCharacteristics
      parameters:
      - $ref: '#/components/parameters/Limit'
      - $ref: '#/components/parameters/Offset'
      responses:
        '200':
          description: A paginated list of characteristic resources.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/APIResourceList'
  /characteristic/{id}:
    get:
      tags:
      - Pokémon
      summary: Get Characteristic
      description: Retrieve a single characteristic by id.
      operationId: getCharacteristic
      parameters:
      - $ref: '#/components/parameters/IntegerId'
      responses:
        '200':
          description: A single characteristic resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Characteristic'
  /egg-group:
    get:
      tags:
      - Pokémon
      summary: List Egg Groups
      description: List all egg groups.
      operationId: listEggGroups
      parameters:
      - $ref: '#/components/parameters/Limit'
      - $ref: '#/components/parameters/Offset'
      responses:
        '200':
          description: A paginated list of egg group resources.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NamedAPIResourceList'
  /egg-group/{id}:
    get:
      tags:
      - Pokémon
      summary: Get Egg Group
      description: Retrieve a single egg group by id or name.
      operationId: getEggGroup
      parameters:
      - $ref: '#/components/parameters/IdOrName'
      responses:
        '200':
          description: A single egg group resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EggGroup'
  /gender:
    get:
      tags:
      - Pokémon
      summary: List Genders
      description: List all gender designations.
      operationId: listGenders
      parameters:
      - $ref: '#/components/parameters/Limit'
      - $ref: '#/components/parameters/Offset'
      responses:
        '200':
          description: A paginated list of gender resources.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NamedAPIResourceList'
  /gender/{id}:
    get:
      tags:
      - Pokémon
      summary: Get Gender
      description: Retrieve a single gender by id or name.
      operationId: getGender
      parameters:
      - $ref: '#/components/parameters/IdOrName'
      responses:
        '200':
          description: A single gender resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Gender'
  /growth-rate:
    get:
      tags:
      - Pokémon
      summary: List Growth Rates
      description: List all growth rates.
      operationId: listGrowthRates
      parameters:
      - $ref: '#/components/parameters/Limit'
      - $ref: '#/components/parameters/Offset'
      responses:
        '200':
          description: A paginated list of growth rate resources.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NamedAPIResourceList'
  /growth-rate/{id}:
    get:
      tags:
      - Pokémon
      summary: Get Growth Rate
      description: Retrieve a single growth rate by id or name.
      operationId: getGrowthRate
      parameters:
      - $ref: '#/components/parameters/IdOrName'
      responses:
        '200':
          description: A single growth rate resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GrowthRate'
  /nature:
    get:
      tags:
      - Pokémon
      summary: List Natures
      description: List all natures.
      operationId: listNatures
      parameters:
      - $ref: '#/components/parameters/Limit'
      - $ref: '#/components/parameters/Offset'
      responses:
        '200':
          description: A paginated list of nature resources.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NamedAPIResourceList'
  /nature/{id}:
    get:
      tags:
      - Pokémon
      summary: Get Nature
      description: Retrieve a single nature by id or name.
      operationId: getNature
      parameters:
      - $ref: '#/components/parameters/IdOrName'
      responses:
        '200':
          description: A single nature resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Nature'
  /pokeathlon-stat:
    get:
      tags:
      - Pokémon
      summary: List Pokéathlon Stats
      description: List all Pokéathlon stats.
      operationId: listPokeathlonStats
      parameters:
      - $ref: '#/components/parameters/Limit'
      - $ref: '#/components/parameters/Offset'
      responses:
        '200':
          description: A paginated list of Pokéathlon stat resources.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NamedAPIResourceList'
  /pokeathlon-stat/{id}:
    get:
      tags:
      - Pokémon
      summary: Get Pokéathlon Stat
      description: Retrieve a single Pokéathlon stat by id or name.
      operationId: getPokeathlonStat
      parameters:
      - $ref: '#/components/parameters/IdOrName'
      responses:
        '200':
          description: A single Pokéathlon stat resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PokeathlonStat'
  /pokemon:
    get:
      tags:
      - Pokémon
      summary: List Pokémon
      description: List all Pokémon.
      operationId: listPokemon
      parameters:
      - $ref: '#/components/parameters/Limit'
      - $ref: '#/components/parameters/Offset'
      responses:
        '200':
          description: A paginated list of Pokémon resources.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NamedAPIResourceList'
  /pokemon/{id}:
    get:
      tags:
      - Pokémon
      summary: Get Pokémon
      description: Retrieve a single Pokémon by id or name.
      operationId: getPokemon
      parameters:
      - $ref: '#/components/parameters/IdOrName'
      responses:
        '200':
          description: A single Pokémon resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Pokemon'
  /pokemon/{id}/encounters:
    get:
      tags:
      - Pokémon
      summary: Get Pokémon Encounters
      description: Retrieve the list of location-area encounters for a Pokémon.
      operationId: getPokemonEncounters
      parameters:
      - $ref: '#/components/parameters/IdOrName'
      responses:
        '200':
          description: A list of location-area encounters.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/LocationAreaEncounter'
  /pokemon-species:
    get:
      tags:
      - Pokémon
      summary: List Pokémon Species
      description: List all Pokémon species.
      operationId: listPokemonSpecies
      parameters:
      - $ref: '#/components/parameters/Limit'
      - $ref: '#/components/parameters/Offset'
      responses:
        '200':
          description: A paginated list of Pokémon species resources.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NamedAPIResourceList'
  /pokemon-species/{id}:
    get:
      tags:
      - Pokémon
      summary: Get Pokémon Species
      description: Retrieve a single Pokémon species by id or name.
      operationId: getPokemonSpecies
      parameters:
      - $ref: '#/components/parameters/IdOrName'
      responses:
        '200':
          description: A single Pokémon species resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PokemonSpecies'
  /stat:
    get:
      tags:
      - Pokémon
      summary: List Stats
      description: List all battle stats.
      operationId: listStats
      parameters:
      - $ref: '#/components/parameters/Limit'
      - $ref: '#/components/parameters/Offset'
      responses:
        '200':
          description: A paginated list of stat resources.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NamedAPIResourceList'
  /stat/{id}:
    get:
      tags:
      - Pokémon
      summary: Get Stat
      description: Retrieve a single stat by id or name.
      operationId: getStat
      parameters:
      - $ref: '#/components/parameters/IdOrName'
      responses:
        '200':
          description: A single stat resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Stat'
  /type:
    get:
      tags:
      - Pokémon
      summary: List Types
      description: List all Pokémon types.
      operationId: listTypes
      parameters:
      - $ref: '#/components/parameters/Limit'
      - $ref: '#/components/parameters/Offset'
      responses:
        '200':
          description: A paginated list of type resources.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NamedAPIResourceList'
  /type/{id}:
    get:
      tags:
      - Pokémon
      summary: Get Type
      description: Retrieve a single type by id or name.
      operationId: getType
      parameters:
      - $ref: '#/components/parameters/IdOrName'
      responses:
        '200':
          description: A single type resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Type'
components:
  schemas:
    APIResource:
      type: object
      properties:
        url:
          type: string
          format: uri
          description: Canonical URL of the referenced resource.
    Description:
      type: object
      properties:
        description:
          type: string
        language:
          $ref: '#/components/schemas/NamedAPIResource'
    Nature:
      type: object
      properties:
        id:
          type: integer
        name:
          type: string
        decreased_stat:
          $ref: '#/components/schemas/NamedAPIResource'
          nullable: true
        increased_stat:
          $ref: '#/components/schemas/NamedAPIResource'
          nullable: true
        likes_flavor:
          $ref: '#/components/schemas/NamedAPIResource'
          nullable: true
        hates_flavor:
          $ref: '#/components/schemas/NamedAPIResource'
          nullable: true
        names:
          type: array
          items:
            $ref: '#/components/schemas/Name'
    NamedAPIResourceList:
      type: object
      properties:
        count:
          type: integer
        next:
          type: string
          nullable: true
          format: uri
        previous:
          type: string
          nullable: true
          format: uri
        results:
          type: array
          items:
            $ref: '#/components/schemas/NamedAPIResource'
    LocationAreaEncounter:
      type: object
      properties:
        location_area:
          $ref: '#/components/schemas/NamedAPIResource'
        version_details:
          type: array
          items:
            type: object
    Ability:
      type: object
      properties:
        id:
          type: integer
        name:
          type: string
        is_main_series:
          type: boolean
        generation:
          $ref: '#/components/schemas/NamedAPIResource'
        names:
          type: array
          items:
            $ref: '#/components/schemas/Name'
        effect_entries:
          type: array
          items:
            type: object
        flavor_text_entries:
          type: array
          items:
            $ref: '#/components/schemas/FlavorText'
        pokemon:
          type: array
          items:
            type: object
    Characteristic:
      type: object
      properties:
        id:
          type: integer
        gene_modulo:
          type: integer
        possible_values:
          type: array
          items:
            type: integer
        highest_stat:
          $ref: '#/components/schemas/NamedAPIResource'
        descriptions:
          type: array
          items:
            $ref: '#/components/schemas/Description'
    Gender:
      type: object
      properties:
        id:
          type: integer
        name:
          type: string
        pokemon_species_details:
          type: array
          items:
            type: object
        required_for_evolution:
          type: array
          items:
            $ref: '#/components/schemas/NamedAPIResource'
    EggGroup:
      type: object
      properties:
        id:
          type: integer
        name:
          type: string
        names:
          type: array
          items:
            $ref: '#/components/schemas/Name'
        pokemon_species:
          type: array
          items:
            $ref: '#/components/schemas/NamedAPIResource'
    Type:
      type: object
      properties:
        id:
          type: integer
        name:
          type: string
        damage_relations:
          type: object
        past_damage_relations:
          type: array
          items:
            type: object
        game_indices:
          type: array
          items:
            type: object
        generation:
          $ref: '#/components/schemas/NamedAPIResource'
        move_damage_class:
          $ref: '#/components/schemas/NamedAPIResource'
          nullable: true
        names:
          type: array
          items:
            $ref: '#/components/schemas/Name'
        pokemon:
          type: array
          items:
            type: object
        moves:
          type: array
          items:
            $ref: '#/components/schemas/NamedAPIResource'
    PokeathlonStat:
      type: object
      properties:
        id:
          type: integer
        name:
          type: string
        names:
          type: array
          items:
            $ref: '#/components/schemas/Name'
        affecting_natures:
          type: object
    Name:
      type: object
      properties:
        name:
          type: string
        language:
          $ref: '#/components/schemas/NamedAPIResource'
    PokemonSpecies:
      type: object
      properties:
        id:
          type: integer
        name:
          type: string
        order:
          type: integer
        gender_rate:
          type: integer
        capture_rate:
          type: integer
        base_happiness:
          type: integer
        is_baby:
          type: boolean
        is_legendary:
          type: boolean
        is_mythical:
          type: boolean
        hatch_counter:
          type: integer
        has_gender_differences:
          type: boolean
        forms_switchable:
          type: boolean
        growth_rate:
          $ref: '#/components/schemas/NamedAPIResource'
        pokedex_numbers:
          type: array
          items:
            type: object
        egg_groups:
          type: array
          items:
            $ref: '#/components/schemas/NamedAPIResource'
        color:
          $ref: '#/components/schemas/NamedAPIResource'
        shape:
          $ref: '#/components/schemas/NamedAPIResource'
        evolves_from_species:
          $ref: '#/components/schemas/NamedAPIResource'
          nullable: true
        evolution_chain:
          $ref: '#/components/schemas/APIResource'
        habitat:
          $ref: '#/components/schemas/NamedAPIResource'
          nullable: true
        generation:
          $ref: '#/components/schemas/NamedAPIResource'
        names:
          type: array
          items:
            $ref: '#/components/schemas/Name'
        flavor_text_entries:
          type: array
          items:
            $ref: '#/components/schemas/FlavorText'
    APIResourceList:
      type: object
      properties:
        count:
          type: integer
        next:
          type: string
          nullable: true
          format: uri
        previous:
          type: string
          nullable: true
          format: uri
        results:
          type: array
          items:
            $ref: '#/components/schemas/APIResource'
    FlavorText:
      type: object
      properties:
        flavor_text:
          type: string
        language:
          $ref: '#/components/schemas/NamedAPIResource'
        version:
          $ref: '#/components/schemas/NamedAPIResource'
    Stat:
      type: object
      properties:
        id:
          type: integer
        name:
          type: string
        game_index:
          type: integer
        is_battle_only:
          type: boolean
        affecting_moves:
          type: object
        affecting_natures:
          type: object
        characteristics:
          type: array
          items:
            $ref: '#/components/schemas/APIResource'
        move_damage_class:
          $ref: '#/components/schemas/NamedAPIResource'
          nullable: true
        names:
          type: array
          items:
            $ref: '#/components/schemas/Name'
    GrowthRate:
      type: object
      properties:
        id:
          type: integer
        name:
          type: string
        formula:
          type: string
        descriptions:
          type: array
          items:
            $ref: '#/components/schemas/Description'
        levels:
          type: array
          items:
            type: object
        pokemon_species:
          type: array
          items:
            $ref: '#/components/schemas/NamedAPIResource'
    NamedAPIResource:
      type: object
      properties:
        name:
          type: string
          description: Slug name of the referenced resource.
        url:
          type: string
          format: uri
          description: Canonical URL of the referenced resource.
    Pokemon:
      type: object
      properties:
        id:
          type: integer
        name:
          type: string
        base_experience:
          type: integer
        height:
          type: integer
        is_default:
          type: boolean
        order:
          type: integer
        weight:
          type: integer
        abilities:
          type: array
          items:
            type: object
            properties:
              is_hidden:
                type: boolean
              slot:
                type: integer
              ability:
                $ref: '#/components/schemas/NamedAPIResource'
        forms:
          type: array
          items:
            $ref: '#/components/schemas/NamedAPIResource'
        game_indices:
          type: array
          items:
            type: object
        held_items:
          type: array
          items:
            type: object
        location_area_encounters:
          type: string
        moves:
          type: array
          items:
            type: object
        species:
          $ref: '#/components/schemas/NamedAPIResource'
        sprites:
          type: object
        stats:
          type: array
          items:
            type: object
            properties:
              base_stat:
                type: integer
              effort:
                type: integer
              stat:
                $ref: '#/components/schemas/NamedAPIResource'
        types:
          type: array
          items:
            type: object
            properties:
              slot:
                type: integer
              type:
                $ref: '#/components/schemas/NamedAPIResource'
  parameters:
    IntegerId:
      name: id
      in: path
      required: true
      description: Resource id (integer only).
      schema:
        type: integer
    IdOrName:
      name: id
      in: path
      required: true
      description: Resource id (integer) or name (slug).
      schema:
        type: string
    Offset:
      name: offset
      in: query
      required: false
      description: Number of items to skip before starting to collect the result set.
      schema:
        type: integer
        minimum: 0
        default: 0
    Limit:
      name: limit
      in: query
      required: false
      description: Number of items to return per page.
      schema:
        type: integer
        minimum: 1
        maximum: 100000
        default: 20