Skip to main content
One contract, every surface

Explore, review,
and publish.

Speccy turns an OpenAPI document into a reference people can use, a workspace for exploring it, and checks that catch problems before they ship.

$npm install speccy-renderer
SSpeccy
Source
YML
openapi.yamlOpenAPI 3.1
✓
openapi: 3.1.0
info:
  title: Orchard API
paths:
  /orchards:
    get: …
✓
Reference

Searchable docs and live requests

GET /orchards
→
✓
Studio

Explore and review any spec

12 health checks
→
✓
CI review

Catch breaking changes in pull requests

Ready to merge
→
01

Your spec is already the source of truth.

Speccy reads OpenAPI 3.x and Swagger 2 directly. There’s no second content model to maintain, no generated Markdown to review, and no theme maze between you and your API.

02

Built for readers

Search, stable routes, focused endpoint pages, and responsive layouts make a large API feel smaller.

03

Useful requests

Parameter inputs, authorization, code samples, and live requests sit beside the endpoint they belong to.

04

One renderer

React, Docusaurus, the web studio, and the Mac app share the same rendering core and visual language.

The renderer, rendered

Every Speccy surface, in the open.

Explore the complete renderer, drop focused components into a guide, review a contract change, or work with the same model directly in code.

01Reference renderer

The whole API, ready to explore.

Searchable navigation, endpoint detail, examples, schemas, and live requests come from one OpenAPI document.

Explore reference renderer →
Orchard API
Harvests

Schedule a harvest

POST/orchards/{orchardId}/harvests

Creates picking work for an orchard and crop.

Request

Path parameters

Request body

*
application/json
{}
objectobject · 5 fields

Responses

202Accepted

The harvest was scheduled.

Body
application/json
{}
HarvestHarvest · object · 5 fields
Response example
{  "id": "harvest_01K4",  "orchardId": "orch_01J7",  "status": "scheduled",  "startsAt": "2024-01-01T00:00:00Z",  "estimatedBins": 140}
02React components

Bring operations into the story.

Use the same method badges, links, cards, and examples inside guides, tutorials, changelogs, or your own React UI.

Explore react components →
harvest-guide.mdx

Schedule the first harvest

Find an orchard, then create picking work for the next available window.

GET/orchardsOpen reference POST/orchards/{orchardId}/harvestsSchedule a harvestCreate picking work for an orchard and crop.View operation
POST/orchards/{orchardId}/harvestsOpen API reference
/orchards/{orchardId}/harvests
{  "startsAt": "2026-09-14T07:00:00Z",  "crop": "apple",  "crewSize": 8}
03CI review

See contract risk before merge.

Speccy compares the base and revision specs, groups semantic changes by severity, and publishes the same review in GitHub or your terminal.

Explore ci review →
OpenAPI diff

API contract review

Orchard API 1.3.0 Orchard API 1.4.0

1breaking
0warnings
0compatible
1documentation

General

POST/orchards/{orchardId}/harvests
2 changes
ParametersUnchanged
Request body1 changed
Response bodyUnchanged
HeadersUnchanged
SecurityUnchanged
Documentation1 changed
breakingchangedRequest bodycrewSizecrewSize is now required
paths › /orchards/{orchardId}/harvests › post › requestBody
documentationchangedDocumentationOperation summary changed
paths › /orchards/{orchardId}/harvests › post › summary
04In-code tooling

Use the engine without the UI.

Parse, normalize, analyze, and compare OpenAPI documents with typed functions that run in Node, CI, or the browser.

Explore in-code tooling →
review.tsTypeScript
import { analyzeOpenApi, diffSpecs } from 'speccy-core';

const diagnostics = analyzeOpenApi(spec);
const changes = diffSpecs(previous, spec);

return {
  issues: diagnostics.filter((diagnostic) => diagnostic.severity === 'issue'),
  breaking: changes.changes.filter((change) => change.severity === 'breaking'),
};
✓ Parsed OpenAPI 3.12 diagnostics1 breaking change
Choose your surface

Start where your docs live.

Project health

Built in public. Published on npm.

Follow the source, inspect each release, or install the renderer directly into your React app.

One source of truth

Take your API from spec to shipped.