[

][dashboard]
# [`GraphQL-Pokemon`][dashboard]
**Extensive Pokémon GraphQL API!**
[](https://github.com/favware/graphql-pokemon/blob/main/LICENSE)
[](https://www.npmjs.com/package/@favware/graphql-pokemon)
[](https://join.favware.tech)
---
**Table of Contents**
- [GraphQL-Pokemon](#graphql-pokemon)
- [About](#about)
- [Key Features](#key-features)
- [JavaScript Companion Library](#javascript-companion-library)
- [Known bugs / limitations](#known-bugs--limitations)
- [API Documentation](#api-documentation)
- [Autogenerated text based documentation](#autogenerated-text-based-documentation)
- [Interactive playground with documentation embedded](#interactive-playground-with-documentation-embedded)
- [Usage](#usage)
- [Using `Fetch`](#using-fetch)
- [Using `Apollo Boost`](#using-apollo-boost)
- [Using `Apollo Client React`](#using-apollo-client-react)
- [Meta](#meta)
- [License](#license)
- [Buy us some doughnuts](#buy-us-some-doughnuts)
- [Contributors](#contributors)
---
## About
[GraphQL-Pokemon][dashboard] is a GraphQL API that provides extensive Pokémon
data. Unlike contemporary APIs this API focusses on speed, accuracy and data
quality. New game data is added within relatively short time after release, and
Smogon tier data is automatically updated after tier shifts. Data used for this
API is pulled from the [Pokemon Showdown GitHub][showdown-github], [Serebii],
and [Bulbapedia].
## Key Features
- Fully generated client-side TypeScript typings published to
- [npm] as `@favware/graphql-pokemon`
- [GitHub Package Registry][ghcr_npm] as `@favware/graphql-pokemon`
- Docker images of the API for private hosting published to
- [Dockerhub] as `favware/graphql-pokemon`
- [GitHub Package Registry][ghcr_docker] as
`ghcr.io/favware/graphql-pokemon:latest`
- Provides information about various assets in Pokémon
- Pokédex
- Items
- Abilities
- Moves
- Learnsets
- Type matchups
- Natures
## JavaScript Companion Library
For those consuming this API through JavaScript, you can install the companion
library to add additional tools for parsing the responses as well as get the
TypeScript typings for the responses.
Install library through your favourite package manager:
```sh
npm install @favware/graphql-pokemon
yarn add @favware/graphql-pokemon
pnpm add @favware/graphql-pokemon
bun add @favware/graphql-pokemon
```
For the usage of the JavaScript Companion Library please see [the autogenerated
documentation][docs].
## Known bugs / limitations
- [ ] It is currently not possible to get all data of all Pokémon in one query,
as the resulting data object is too large for NodeJS to process. This will
be fixed in [#900](https://github.com/favware/graphql-pokemon/issues/900).
## API Documentation
There are two ways to consume the documentation that this API offers. They are
as follows.
### Autogenerated text based documentation
For those who want purely text based documentation about all the GraphQL Queries
and Types that are in this API, including a documentation search for those
symbols, please see [the autogenerated documentation][docs] powered by
[magidoc].
### Interactive playground with documentation embedded
For those who want an interactive playground where they can directly test their
queries and read about each query as they select them, please use [the GraphQL
Playground on the API][dashboard].
## Usage
_These examples are written as based on TypeScript. For JavaScript simply change
out the imports to `require` syntax and remove any type information._
### Using `Fetch`
_note: for a working example see [dragonite]_
```ts
import type { Query } from '@favware/graphql-pokemon';
interface GraphQLPokemonResponse