# Backfill the API description for routes that already exist

Endpoints that exist and are undocumented, described from the handlers with a response test per route.

Category: API surface and contracts
Source: https://letsship.ai/use-cases/backfill-the-api-description
Published: 2026-08-25

## Goal

Write the API description for existing routes, derived from the handlers.

## Acceptance criteria

- Every route in the group is described, including error responses
- The description validates against the specification format
- A response test asserts each route matches its description
- Descriptions are generated from or checked against the handlers

## What lands as proof

A test per route asserting the real response matches the description, so the two cannot drift apart quietly.

## Prompt

Copy this to an agent to open the ticket:

```text
Create a Linear issue in my team and assign it to the SHIP agent.

Title: Document the {group} routes in the API description

Description: Write the API description for existing routes, derived from the handlers.

Acceptance criteria:
- Every route in the group is described, including error responses
- The description validates against the specification format
- A response test asserts each route matches its description
- Descriptions are generated from or checked against the handlers

Before you create the issue, list this repository's routes missing from the API description and replace {group} with a coherent set of them.
```

## Questions

### What does the agent actually change?

The ticket is scoped to one outcome: write the API description for existing routes, derived from the handlers. Work that serves that outcome is in scope, and anything outside it is left for a separate ticket, so the pull request stays reviewable.

### How do I know the work is done?

The pull request carries the evidence, not only the diff. Here that means spec validates against a response test per route, so a reviewer can confirm the result without reproducing the work locally.

### How much oversight does this need?

None is required before the run starts. Every claim this ticket makes can be checked by machine, so the agent works straight through and a person reviews the finished pull request like any other.
