OpenAPI 3.1 · Open Source

API docs that developers actually enjoy

Turn any OpenAPI 3.1 spec into a clean, interactive developer portal. Add a /docs route to Express or Fastify in one call — or use the Web Component anywhere.

puredocs.dev
PureDocs API documentation portal
  Terminal
$
  server.js
import { pureDocs } from 'puredocs'; pureDocs.express(app, { specUrl: '/openapi.json', });
01 / Features

Full OpenAPI 3.1 support, out of the box

Everything your API spec defines — rendered beautifully and interactively.

OpenAPI 3.1 Complete
Paths, callbacks (runtime expressions), webhooks, all HTTP methods, $ref resolution, oneOf/anyOf/allOf.
Full Auth Support
Bearer, Basic, API Key, OAuth2, OpenID Connect. Configured once, applied everywhere.
Live Try It Console
Send real API requests from the docs. Configure environments, switch auth, test endpoints in place.
Smart Search
Find endpoints, schemas, webhooks, and tags instantly with Cmd+K. Keyboard-first navigation.
Multi-Language Snippets
Auto-generated code in cURL, JavaScript, Python, Go, and Rust. One-click copy, ready to paste.
Markdown in Descriptions
Use **bold**, *italic*, `code`, and [links](url) in OpenAPI descriptions. Zero deps, XSS-safe.
JSON & YAML Callbacks Webhooks Security Schemes $ref Resolution Server Environments All HTTP Methods Express & Fastify Web Component Code Snippets Markdown Descriptions Light & Dark Theme
02 / Preview

Designed for clarity

A clean interface with light and dark themes that makes complex APIs feel approachable.

POST /workspaces — Try It
Endpoint detail with Try It console
Overview
API overview with grouped endpoints
03 / Integration

Up and running in 30 seconds

One function call for Express or Fastify. One Web Component for everything else.

import express from 'express';
import { pureDocs } from 'puredocs';

const app = express();

pureDocs.express(app, {
  route: '/docs',
  specUrl: '/openapi.json',
});

app.listen(3000);
import Fastify from 'fastify';
import { pureDocs } from 'puredocs';

const app = Fastify();

pureDocs.fastify(app, {
  route: '/docs',
  specUrl: '/openapi.json',
});

app.listen({ port: 3000 });
import { pureDocs } from 'puredocs';

const html = pureDocs.html({
  specUrl: '/openapi.json',
  title: 'My API',
});

// Serve `html` from any HTTP framework:
// Hono, Koa, Hapi, Elysia, h3, etc.
<pure-docs
  spec-url="/openapi.json"
  theme="auto"
></pure-docs>

<script type="module">
  import 'puredocs/web';
  import 'puredocs/style.css';
</script>
<link rel="stylesheet"
  href="https://unpkg.com/puredocs/dist/puredocs.css" />

<pure-docs spec-url="/openapi.yaml"></pure-docs>

<script src="https://unpkg.com/puredocs/dist/puredocs.umd.js"></script>
Full configuration
<pure-docs
  spec-url="/openapi.json"
  theme="auto"
  primary-color="#0ea5e9"
  title="Example API"
></pure-docs>
Works with any framework — it's a standard Web Component. Drop <pure-docs> into React, Vue, Angular, Next.js, Nuxt, Svelte, or plain HTML.
Get started

Ready to elevate your API docs?

Open source and free for non-commercial use. Full OpenAPI 3.1 support.