Follows REST convention
Plural kebab-case nouns, no verbs in the path, and clean nested resources when you need them.
Type a resource, an optional parent resource and the actions you need, and get a table of conventional, versioned REST endpoints ready to copy into your docs.
| Method | Path | Purpose |
|---|
Everything is generated locally — nothing is sent anywhere.
Plural kebab-case nouns, no verbs in the path, and clean nested resources when you need them.
Not everything is CRUD — add a named action like /invoices/{invoiceId}/send when you need one.
One click copies every method and path as plain text, ready to paste into API docs or a spec.
Describe your resource once and get a full, consistent set of endpoints back.
Good REST endpoint names are boring on purpose: predictable, pluralized nouns paired with the HTTP method that already tells the client what will happen. Following the same small set of rules across every resource in an API makes the whole surface easier to guess correctly, even for endpoints a developer has never seen before.
/shipping-addresses reads naturally for both the collection and a single item at /shipping-addresses/{id}, and kebab-case avoids casing debates in URLs.
The method already says GET, POST, PUT, PATCH or DELETE. Reserve extra path segments for genuine non-CRUD actions, like /send or /cancel.
One level of nesting, such as /customers/{customerId}/invoices, stays readable. Deeper chains usually mean a query parameter would work better.
A /v1 prefix costs nothing up front and gives you a safe way to introduce breaking changes later without disrupting existing clients.
Common questions about naming, nesting and custom actions.
A plural collection name reads naturally for both the list endpoint (GET /invoices) and a single item within it (GET /invoices/{id}), keeping the base path consistent across every action on that resource.
REST relies on the HTTP method to express the action, so GET, POST, PUT, PATCH and DELETE already say what is happening. Adding verbs like /getInvoices or /deleteInvoice duplicates that meaning and breaks the convention that a path names a resource, not an operation.
Model it as a sub-resource or a clearly named action segment on a specific item, such as POST /invoices/{invoiceId}/send. This keeps the verb-free convention for standard CRUD while still giving non-CRUD operations a predictable, resource-scoped place to live.
Most APIs stay readable with one level of nesting, such as /customers/{customerId}/invoices. Beyond that, paths get long and fragile; it is usually better to fetch the child resource directly with a query parameter, such as /invoices?customerId=123.
No. Every endpoint is generated locally in your browser from what you type, and nothing is stored or transmitted.