v4.0 Now: OpenAPI 3.1 webhooks + discriminated unions

OpenAPI in.
Beautiful docs out.

Atlas reads your openapi.yaml on every commit and ships a fast, themable reference site with try-it consoles and six auto-generated SDKs. No more docs drift.

2,401 docs sites deployed in the last 24h
docs.linnea.dev/api/charges/create
K
Charges Create a charge

Create a charge

v1.42
POST /v1/charges

Creates a charge against a customer's saved payment method. Idempotency is recommended via the Idempotency-Key header.

Body parameters
amount integer required
Smallest currency unit (e.g. cents). Min 50, max 99,999,99.
currency enum · 38 values required
ISO 4217 code in lowercase, e.g. usd.
customer string
A cus_… ID. Required unless source is set.
metadata hash · ≤ 50 keys
Request
curl node python
# Create a $24.00 charge
curl https://api.linnea.dev/v1/charges \
  -u "sk_live_••••••••AjN2": \
  -d amount=2400 \
  -d currency=usd \
  -d customer=cus_OqA12n4Q \
  -d "metadata[order_id]"="ord_8842"
Powering API reference at 1,402 companies
Linnea forecast Glide Vantage Mercury Brightwave Nimbus Coast Halcyon quartermast Northwind Foundry & Co Linnea forecast Glide Vantage Mercury Brightwave Nimbus Coast Halcyon quartermast Northwind Foundry & Co
1,408
APIs documented
4 hrs
Avg time to publish first docs
240,118
Endpoints across all customers
84,206
Code snippets generated daily
— Built around the spec

Three things you don't have to build again.

01 · Spec sync

A diff between your spec and your docs is a bug.

Push to main, Atlas re-renders your reference in 11s. Breaking-change badges show automatically when a required field flips or an enum drops a value.

  • OpenAPI 3.0 & 3.1, JSON or YAML
  • Swagger 2.0 import with upgrade lints
  • GitHub Action with PR previews per branch
openapi.yaml · 3 changed breaking
# paths./v1/charges.post.requestBody
    required:
      - amount
      - currency
+     - customer
+ properties:
+   customer:
+     type: string
+     pattern: '^cus_'
-   source:
-     type: string
Rebuilt 11s ago · 412 pages affected · 2 SDKs updated
Try it Sandbox · key: sk_test_••••AjN2
POST /v1/charges
→ 200 OK · 184ms
{ "id": "ch_3OqA1RKxLs", "paid": true, "amount": 2400 }
02 · Try-it console

Readers send a real request without leaving the page.

Sandbox keys are scoped, rate-limited (60/min by default) and never log request bodies. Production keys can be allowlisted to specific endpoints — set it once in atlas.config.ts.

  • Per-endpoint allowlist, per-key spend cap
  • Request inspector with HAR export
  • Streams (SSE) + websocket replay
03 · SDK generation

Six SDKs, one source of truth.

TypeScript, Python, Go, Ruby, PHP, and Java — published to your registries on tag. Types are derived from the same OpenAPI schemas your docs render, so a renamed field is a compile error in every language at once.

  • Semver bumps from spec diff, not manual
  • Pagination, retries, idempotency built in
  • Snippet examples inline in the reference
@linnea/nodev4.12.1
npm
shipped
linnea-pythonv4.12.1
pypi
shipped
linnea-gov4.12.1
go.mod
shipped
linnea-rubyv4.12.1
rubygems
queued
linnea-phpv4.12.1
composer
shipped
linnea-javav4.12.0
maven
manual review
Triggered by tag v4.12.1 · 38s ago
— Code blocks

One call. Six languages.

Every reference page renders the same example across your customers' favourite stacks — same parameters, same response, same line numbers.

1
2
3
4
5
6
7
8
9
10
11
# Create a $24.00 USD charge against a saved customer
# Returns a Charge object with id ch_… on success

curl https://api.linnea.dev/v1/charges \
  -u "sk_live_••••••••AjN2": \
  -d amount=2400 \
  -d currency=usd \
  -d customer=cus_OqA12n4Q \
  -d "metadata[order_id]"="ord_8842" \
  -H "Idempotency-Key: 9b3c4e21-…"

# → 200 OK in 184ms · returns a Charge
Theme: One Light · Generated from openapi.yaml#/paths/~1v1~1charges/post 11 lines · 184ms median
keyword
string
number
comment
— ⌘K search

Find any endpoint in 28ms.

Atlas indexes every path, parameter, enum value and prose paragraph in your spec — typo-tolerant, ranked by how often each endpoint is actually called in your sandbox.

/v1/charges|
esc
Endpoints · 4 results
POST /v1/charges Create a charge
GET /v1/charges/{id} Retrieve a charge
GET /v1/charges List all charges
PUT /v1/charges/{id}/capture Capture an authorization
Guides · 2 results
Idempotency for charges guide · 6 min read
Refunds vs. partial charges guide · 4 min read
↑↓ navigate open try it 28ms · typesense

Versioning

Keep v1, v2 and a sunset roadmap visible from one URL. Per-version search indexes, redirects you don't have to write.

v4 · current v3 v2 · sunset 2026-06

Endpoint search

Path-aware ranking: /charges matches before a guide titled "Charges". Synonyms (refund → refunds) tunable per workspace.

Top queries this week
webhook signature1,108
idempotency-key842
refund partial601

Custom domain & theming

Bring docs.yourdomain.com, drop in a CSS file, override any component. No lock-in: HTML output is exportable.

light
dim
dark
paper

Reader analytics

See which endpoints get the most reads, which raise the most support tickets, which have "copy" events with no follow-up requests.

— Pricing

Per-workspace pricing. No per-seat tax.

Annual billing knocks 16% off every tier. Cancel by closing your workspace — no sales call.

Hobby free forever
$0 / workspace / month

For one spec and a curious side project.

Start free →
  • 1 OpenAPI spec, unlimited endpoints
  • Community search (typesense-hosted)
  • atlas.dev/<you> subdomain
  • 3 SDKs (node, python, go)
  • ·"Made with Atlas" footer badge
Most popular
Pro 14-day trial
$49 / workspace / month

When the docs are real. Versioning, analytics, all six SDKs.

Start 14-day trial →
  • Unlimited specs & versions
  • Custom domain + free TLS
  • All 6 SDKs auto-published
  • Reader analytics + query insights
  • Try-it console with sandbox keys
  • PR previews per branch
Enterprise talk to us
$299 / workspace / month, billed annually

For platforms with security review and a procurement form.

Book a 20-min call →
  • SAML SSO, SCIM provisioning
  • Audit log + 7-year retention
  • SOC 2 Type II report, signed MSA
  • On-prem (Docker or K8s)
  • Named CSM, 99.95% SLA
— Teams shipping with Atlas

From devrel leads, not marketing pages.

We replaced a Hugo site, a Sphinx site, and a Postman collection with one Atlas workspace. Our P95 time-to-first-200 dropped from 14 minutes to 4.

Priya Anand
Staff Engineer · Linnea

Spec drift was killing my Friday. Now a breaking change blocks the PR with a list of exactly which examples it affects — 38 last week, all caught.

Marcus Tobin
Founding Engineer · Forecast

The try-it console drove a 62% lift in week-1 activation. Devs send a real request to sandbox before they leave the page — they're already onboarded.

Yusuf Abara
CTO · Mercury

Frequently asked, honestly answered.

Does it stay in sync if I update my OpenAPI spec? +
Yes. A GitHub Action triggers on push to your spec file, validates it, and republishes in ~11 seconds. Breaking changes (required-field added, enum value removed, response type changed) appear as PR comments with the affected example pages listed.
Can I customize the theme and CSS? +
Three layers. Use a built-in theme (one-light, dim, dracula, paper), override our design tokens, or drop in a full custom.css file that ships with no purge step. Most teams stop at tokens.
Which languages do you generate SDKs for? +
TypeScript, Python, Go, Ruby, PHP, Java. Each ships with retries, pagination iterators, an idempotency helper, and types derived from your spec. Kotlin and Swift are in private beta — ping us if you need them.
How do you handle authentication examples without leaking secrets? +
The reader's key never leaves their browser — try-it requests are proxied through a worker that strips the key from logs. Static examples render a placeholder sk_live_••••AjN2; the real key is injected at request time only.
Can I self-host the docs site? +
On Enterprise, yes — we ship a Docker image and a Helm chart, both signed. The control plane stays at atlas.dev; the rendered docs site lives entirely on your infra. Air-gapped deploys available with a 30-day spec-cache.

Point Atlas at a spec. See docs in 11 seconds.

Hobby tier never expires. No credit card. Bring your own spec or fork one of our 14 starters.