Coffee Shop API — free mock REST API for testing

A café counter API: browse drinks, place orders — and GET /teapot, which proudly returns HTTP 418 "I'm a teapot".

The Coffee Shop API is the catalog's rate-limiting playground and the home of HTTP 418. Its rush endpoint enforces a real quota: exceed it and you get a 429 with Retry-After and the usual X-RateLimit headers, refreshed on a live window. Client-side throttling and backoff are almost impossible to test against a well-behaved API, and this one misbehaves on request.

Base URL: https://funapi.dev/api/coffee/v1 · 6 endpoints · OpenAPI 3.1 spec and Postman collection available. New here? Read the getting started guide.

Example request and response

GET https://funapi.dev/api/coffee/v1/drinks — List drinks, filter by type. No token, no signup:

curl -i https://funapi.dev/api/coffee/v1/drinks

answers 200 OK with:

{
  "total": 8,
  "data": [
    {
      "id": 1,
      "name": "Espresso",
      "type": "hot",
      "price": 2.5
    },
    {
      "id": 2,
      "name": "Latte",
      "type": "hot",
      "price": 4
    },
    {
      "id": 3,
      "name": "Cappuccino",
      "type": "hot",
      "price": 3.8
    },
    {
      "id": 4,
      "name": "Flat White",
      "type": "hot",
      "price": 4.2
    },
    {
      "id": 5,
      "name": "Cold Brew",
      "type": "cold",
      "price": 4.5
    },
    {
      "id": 6,
      "name": "Iced Matcha Latte",
      "type": "cold",
      "price": 4.8
    },
    {
      "id": 7,
      "name": "Mocha",
      "type": "hot",
      "price": 4.4
    },
    {
      "id": 8,
      "name": "Turkish Coffee",
      "type": "hot",
      "price": 3
    }
  ]
}

Open and run this endpoint

What you can practise here

drinks

hot and cold

orders

name on the cup

rush

hammer it and watch the 429s

teapot

RFC 2324 compliance

All 39 mock REST APIs

Use this response elsewhere

Last updated