thinkhard.SI

Prompt repository Engineering & code

Design a REST API for a new feature before you build it

You are about to build endpoints for a new feature and want resources, requests, responses and errors agreed with the team and client developers first.

Registry no.
ENG-027
Collection
Engineering & code
Laid out for
GPT
Score
10 out of 10
Blanks to fill
5
Added

Engineering & codeGPT

The prompt

Score 10 of 10, Excellent

Use it when You are about to build endpoints for a new feature and want resources, requests, responses and errors agreed with the team and client developers first.

  • {{reviewers}}
  • {{max_endpoints}}
  • {{requirements}}
  • {{conventions}}
  • {{clients}}
Full prompt and why it works
Prompt
# Role
You are a senior API designer helping a team agree on an HTTP API before anyone writes the code.

# Goal
Design the API for the feature below, for {{reviewers}} to review, so that backend and client developers can build against the same contract at the same time.

# Success criteria
- Every user action in the requirements maps to an endpoint, and every endpoint maps to an action.
- Names, status codes, pagination and errors follow our existing conventions, so the new endpoints look like the old ones.
- A client developer could write a working call from the design alone.

# Constraints
- Follow our conventions where they are given, even where you would choose differently; note the disagreement instead.
- Use nouns for resources and HTTP methods for actions. Return 4xx codes for client errors and 5xx only for server faults.
- Do not add endpoints, fields or features the requirements do not need. Put anything you think is missing under "Suggested later".
- Never put tokens, secrets or personal data in URLs or query strings.
- Make create actions and anything payment-like safe to retry, for example with an idempotency key, and say where you did.

# Output
1. Resource model: each resource with its fields, types, which are required and which are read-only.
2. Endpoints: a table with the columns Method, Path, Purpose, Who may call it, Success status.
3. For each endpoint: an example request and response body in JSON, and the error cases with their status code and error body.
4. Pagination, filtering and sorting rules for list endpoints.
5. Open questions: decisions the requirements leave open, each with the options and your recommendation.

Design no more than {{max_endpoints}} endpoints, so the whole design fits in one review meeting.

For example, the form of one table row: "POST | /v1/projects/{project_id}/invites | Invite a person to a project | project admins | 201".

# Stop rules
If the requirements do not say who may perform an action, or how a resource relates to the existing ones, ask before designing that part, because those choices are expensive to change once clients ship. If our conventions are missing, say which defaults you used.

# Context
Feature requirements:
"""
{{requirements}}
"""

Existing API conventions, or one existing endpoint as a sample:
"""
{{conventions}}
"""

Clients that will call it: {{clients}}

Variables

{{reviewers}}
Who reviews the design, for example "the backend team, the mobile developers and the tech lead".
{{max_endpoints}}
The most endpoints to design in one go, for example 8.
{{requirements}}
The feature's requirements or user stories, including who is allowed to do what.
{{conventions}}
Your API style guide, or one existing endpoint's request and response as a sample. Write "none" if you have no conventions yet.
{{clients}}
Who calls the API, for example "our web app, the iOS app and two partner integrations".

Why it works

  • What good looks like. Every user action maps to an endpoint and back, and a client developer must be able to write a working call from the design alone, which is the real test of a contract.
  • If unsure. Who may do what, and how a resource relates to existing ones, are asked about rather than assumed, because those are the choices hardest to change once clients ship.
  • Layout. Markdown sections in the order OpenAI recommends, with the requirements and conventions pasted last as context.

How to use it

  1. Press Fill in variables and type your details into each blank. What you type stays in this browser.
  2. Copy the filled prompt into the AI tool you already use, such as ChatGPT, Claude or Gemini, or open it in the Grader or the Prompt Tester here.
  3. Before you rely on it, try it on three or four real examples. The Prompt Tester runs them all at once and shows which ones go wrong.
Use it from code

Get this prompt as JSON from the free REST API, with your own text in the blanks, or let an AI assistant fetch it through the MCP server. No key.

curl -s https://thinkhard.si/api/v1/prompts/rest-api-design

With the MCP server added to Claude, ChatGPT, Cursor or VS Code, call get_prompt with {"prompt": "rest-api-design"}, or just ask for it by name.