Skip to content

418 I'm a Teapot

Description

The 418 I'm a Teapot status code indicates that the server refuses to brew coffee because it is, in fact, a teapot. This status code originated as an April Fools' joke in RFC 2324, "Hyper Text Coffee Pot Control Protocol (HTCPCP/1.0)," published on April 1, 1998.

While this status code was created as a humorous addition to the HTTP specification, it has gained cultural significance in the developer community. Some servers and frameworks have implemented it as an Easter egg or use it for specialized purposes.

Despite its joke origins, the 418 I'm a Teapot status code has been referenced in subsequent RFCs and is recognized by many HTTP libraries and tools.

Syntax

The server responds with a 418 I'm a Teapot status:

HTTP/1.1 418 I'm a Teapot
Content-Type: text/plain
Content-Length: [length in bytes]

I'm a teapot

Examples

Basic Example

A client attempts to brew coffee with a teapot:

Client Request:

POST /brew-coffee HTTP/1.1
Host: teapot.example.com
Content-Type: application/coffee-pot-command
Content-Length: 15

start-brew-cycle

Server Response:

HTTP/1.1 418 I'm a Teapot
Content-Type: text/plain
Content-Length: 111

I'm a teapot, not a coffee machine. The requested entity body is short and stout. Tip me over and pour me out.

API Easter Egg Example

A client accesses an Easter egg endpoint in an API:

Client Request:

GET /api/coffee HTTP/1.1
Host: api.example.com

Server Response:

HTTP/1.1 418 I'm a Teapot
Content-Type: application/json
Content-Length: 143

{
  "error": "I'm a Teapot",
  "message": "This server is a teapot, not a coffee pot",
  "easter_egg": true,
  "reference": "RFC 2324"
}

Rate Limiting Alternative Example

Some services use this status code creatively for special rate limiting situations:

Client Request:

GET /api/data HTTP/1.1
Host: api.example.com
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...

Server Response:

HTTP/1.1 418 I'm a Teapot
Content-Type: application/json
Content-Length: 215

{
  "error": "I'm a Teapot",
  "message": "You've made too many requests. Our servers are feeling a bit like teapots right now.",
  "retry_after": 300,
  "documentation": "https://api.example.com/docs/rate-limiting"
}

Summary

The 418 I'm a Teapot status code stands as a humorous artifact in the HTTP specification. While it originated as an April Fools' joke, it has become a beloved part of web development culture. Some developers use it as an Easter egg, while others have repurposed it for creative uses like specialized error conditions or playful responses. Though not intended for serious use in production systems, it serves as a reminder of the human side of technical specifications and the importance of maintaining a sense of humor in software development.