[ use case · dev docs ]

Reference docs your code keeps current.

Hand-maintained API references diverge from the code the moment they ship. Quill reads your routes, parses your types, and pulls examples straight from your tests. The reference can't lie because the code is the source — and Quill re-derives it on every push.

[ what a quill dev-doc page looks like ]

Endpoint, types, examples — all derived from main.

docs.your-product.com/api/workspaces
api reference · workspaces

Workspaces

A workspace is the top-level container for everything Quill generates on your behalf — repos, articles, runs, and team members. Every API call is scoped to a workspace.

GET/v1/workspaces

List workspaces the calling token can see. Paginated, 50 per page.

POST/v1/workspaces

Create a workspace. Returns 201 with the new workspace, or 409 if the slug is taken.

DELETE/v1/workspaces/{id}

Soft-delete. Workspace stays recoverable for 30 days, then purged.

type Workspace = {
id: string; — ws_*, opaque
slug: string; — [a-z0-9-], 1-64
region: "us" | "eu" | "ap";
created_at: string; — ISO 8601
plan: "starter" | "pro" | "enterprise" | "oss";
}
[ what's in a quill reference ]

The pages your engineers actually open at 2am.

Endpoints from routes

Quill discovers HTTP routes from your framework — Next.js route.ts, Express handlers, FastAPI decorators, Rails controllers, Phoenix routers. Every endpoint gets a page. Removed endpoints get archived.

Types from your code

Request and response types pulled from your TypeScript, Pydantic, Zod, or Sorbet. Optional fields, enums, discriminated unions — all rendered with the correct semantics. Comments on your types show up as field-level docs.

Examples from your tests

The cURL block on every page comes from a passing integration test. Examples that no longer pass get flagged, never published. Reference docs that lie are worse than no docs at all — Quill won't ship those.

[ try-it console ]

A console that knows your auth.

Every endpoint page has a "Try it" panel. Quill pre-fills the auth header with the reader's dev token, scopes the request to a sandbox workspace, and shows the actual response — typed against your schema. No copy-pasting cURL into a terminal.

Inline execution

Fill in a parameter, hit Run, see the response. Switch between cURL / JavaScript / Python / Go snippets — all auto-generated from your spec, all kept in sync with your endpoint definitions.

Sandbox-scoped

The reader's dev token is scoped to a sandbox workspace that gets reset every hour. No risk of someone running DELETE against your production data from the docs site. Rate-limited per reader.

[ the developer relations team's view ]

We deleted our hand-maintained reference site the week after we turned on Quill. Two years of "the docs are out of date" tickets went to zero. Two years.

— developer experience lead, infrastructure SaaS
[ search ]

Symbol search across docs and code.

Search by type, not word

Search "Workspace" and get the type, the endpoint that returns it, the article that explains it, and every page that references it. Quill keeps a symbol graph across both your docs and your source.

Cross-references survive renames

Rename a type in your code and every doc page that cited it gets a draft PR opened against itself. The reference graph stays whole even as the code evolves. No stale "see Foo" links pointing at a removed export.

Stop maintaining your reference site.

Point Quill at your repo. See the reference it produces from your actual routes and types. Delete the old one when you're ready.