# REST (/academy/rest)



**REST** is a shared etiquette for HTTP [APIs](/academy/api).

Nouns in the path. Verbs in the [method](/academy/http-methods). [JSON](/academy/json) in the body. `/todos/12` is a thing. `GET` reads it. `PATCH` changes it. `DELETE` throws it out. Everyone argues how REST-ful they really are. Nobody argues that this shape is the one strangers already know.

**Why you keep seeing it**

If every service invented a private handshake, you would relearn ordering on every vendor. REST is the promise that the next window is roughly like the last one. Your [agent](/academy/agent) can guess. Your `fetch` can guess. The [SDK](/academy/sdk) is optional, not required.

Open the [builder](/builder) and the API layer question is this etiquette vs a family dialect:

* **REST** — addresses by hand. Any client, any language.
* **tRPC / oRPC** — TypeScript on both sides shares the form. Faster in a monorepo. Strangers on the internet do not speak it.

Pick REST when a judge's script, a mobile client, or a vendor [webhook](/academy/webhook) has to find you. Pick the dialect when both rooms are yours.

**The boring parts that save the demo**

Use status codes like you mean them. 200 found it. 201 made it. 404 no such [endpoint](/academy/endpoint). 401 no badge. Do not return 200 with `{ error: true }` and hope the [frontend](/academy/frontend-backend) notices.

Keep the collection at `/todos` and the one item at `/todos/:id`. That is the whole rulebook you need before Sunday. The [CLI](/academy/cli) will generate routes in that shape if you let it.

**What this unlocks**

REST is not a religion. It is muscle memory that carries across logos.

Learn the shape once. The next [API](/academy/api) you wire at 2 a.m. already looks familiar.
