# 418 I'm a teapot

> https://http-status.org/docs/418

**Family:** 4xx Client Error

## Rationale

Joke status from the teapot RFC; RFC 9110 reserves 418 without assigning normal semantics.

## In Plain Terms

I'm a teapot, not a coffee maker! This is an April Fools' joke code - don't use it in real APIs.

## Description

The HTTP 418 I'm a teapot status code was defined in 1998 as an April Fools' joke in RFC 2324, Hyper Text Coffee Pot Control Protocol. It indicates that the server refuses to brew coffee because it is, permanently, a teapot.

## Server Perspective

### Usage
- Use 418 only for demos, jokes, or explicit non-production easter eggs
- Remember that modern HTTP reserves 418 without giving it normal application semantics
- Easter eggs in development environments
- Demonstrating HTTP status codes
- April Fools' Day jokes
- Educational purposes only

### Implementation
- If you expose 418 at all, make sure product teams understand it is intentionally nonstandard
- Prefer defined 4xx codes for real client errors

### Common Headers
- No status-specific header is required; still send normal HTTP metadata such as Content-Type, caching, or tracing headers when they help the client.

### Body
- No production API should depend on a 418 body contract; use it only for intentional demos or jokes.

### Pitfalls
- Do not build real API error handling around 418
- Do not assume generic tooling or clients will treat 418 consistently
- Production APIs
- Any serious application
- When you need meaningful error responses

## Client Perspective

### Pitfalls
- Do not invent serious business logic around 418

## Examples

### Coffee brewing request

Server is a teapot and cannot brew coffee

**Request:**
```
BREW https://api.example.test/coffee
```

**Response:**
```
418 I'm a teapot
Content-Type: application/json

{
  "error": "teapot"
}
```

## Related Codes

- [400 Bad Request](/docs/400.md)
- [501 Not Implemented](/docs/501.md)

