---
title: "PokeAPI: spec vs live"
date: 2026-10-30
canonical: https://apidrifter.com/research/public-api-spec-drift-2026-11/pokeapi/
part_of: https://apidrifter.com/research/public-api-spec-drift-2026-11/
---

# PokeAPI: spec vs live

Part of [We checked 13 public APIs against their own OpenAPI specs. 9 had hard mismatches.](https://apidrifter.com/research/public-api-spec-drift-2026-11/).

## Summary

- Spec: https://raw.githubusercontent.com/PokeAPI/pokeapi/master/openapi.yml (OpenAPI 3)
- Base URL: `https://pokeapi.co`
- Run: 2026-10-30, read-only GET requests, no credentials
- Coverage: 102 operations in the spec, 30 requests sent, 30 successful, 30 operations observed
- Hard violations: 1 distinct schema locations
- Reviewer note: Confirmed: evolution-chain baby_trigger_item is null; the spec does not allow null.

## Hard violations (1)

A typed client generated from the spec would break on these.

- `response-null-not-allowed` (hard, breaking) at `GET /api/v2/evolution-chain/{id}/ > response 200 > application/json > /baby_trigger_item`
  - response body at /baby_trigger_item: value is null but the schema does not allow null
  - Request: `GET /api/v2/evolution-chain/1/ -> 200 application/json; charset=utf-8`
  - Expected: `["object"]`
  - Actual: `null`
  - If the spec is the source of truth: Return a non-null value in response body at /baby_trigger_item.
  - If the implementation is the source of truth: Allow null at paths["/api/v2/evolution-chain/{id}/"].get.responses["200"].content["application/json"].schema.properties["baby_trigger_item"] (add "null" to type, or nullable: true in OpenAPI 3.0).

## Reproduce

```sh
curl -s -H 'Accept: application/json' 'https://pokeapi.co/api/v2/evolution-chain/1/'
```

## Data

- Findings: https://github.com/apidrifter/apidrifter/tree/main/tools/survey/results/pokeapi.findings.json
- Requests sent: https://github.com/apidrifter/apidrifter/tree/main/tools/survey/results/pokeapi.observations.json
- Tool: https://apidrifter.com/docs/cli/ (reproduce with apidrifter run; target definition in tools/survey/targets.json)
