\n \n\n"},{"@type":"HowToStep","position":2,"name":"Publish","text":"# Publish the directory containing swagger-ui.html + openapi.json\ndsp publish ./api-docs/ --name \"api-docs\"\n# → https://acme.dsp.so/0kzNYG7O-api-docs\n\nFor Redoc:\nnpx @redocly/cli build-docs openapi.yaml --output ./redoc-build/index.html\ndsp publish ./redoc-build/ --name \"api-docs-redoc\""}]}]

A URL for every API reference you build

Where your engineers
and agents work on the API docs.

One command. Your API documentation becomes an authenticated URL that never changes, accessible to any engineer with a company email.

The demo shows an agent publishing a doc to display.dev – from a chat or a terminal – then the team opening its URL, commenting, the agent publishing v2 at the same URL, and the doc being shared with someone outside the company.

Works with your agents

Cursor, Codex, Claude Code – any agent that writes a file. Switch agents anytime – your URLs, versions and comments stay put.

Trusted by thousands
Indigo Engineering

The command

dsp publish ./swagger-ui/ --name "api-docs"
# Returns: https://acme.dsp.so/0kzNYG7O-api-docs

Any @yourco.com email authenticates with one click. No GitHub account. No Vercel project.


API docs are internal. They need internal auth.

Swagger UI and Redoc turn your OpenAPI spec into a browsable explorer – method by method, parameter by parameter, with live request testing. That explorer is for internal engineers, so it shouldn't be public. Every hosting option that adds auth charges for it in money or in setup.

display.dev publishes the Swagger UI or Redoc build directory behind Google and Microsoft SSO in 15 seconds. €49/month for the whole company.

  • Vercel with SSO
    $300/month for one project's SSO add-on, plus a git project to maintain.
  • Behind a VPN
    engineers off the office network can't reach it, and mobile access breaks.
  • S3 + CloudFront + Cognito
    1–2 days of setup and IAM policies, repeated for every new spec.
  • Confluence embed
    strips the JavaScript, so "Try it out" stops working.

display.dev vs. alternatives for API doc hosting

display.devVercel + SSOBehind VPNS3 + Cognito
Interactive Swagger UI / Redoc
Google Workspace SSO✅ Included$300/mo add-onComplex setup
Microsoft 365 SSO✅ Included$300/mo add-onComplex setup
Setup time15 seconds20+ minutesHours1–2 days
Mobile access (no VPN)
Monthly price€49 flat$320+/mo$0 (VPN cost)$50+/mo + time
Non-engineer access❌ (VPN)

Generate and publish Swagger UI

Step 1: Generate the Swagger UI build

For a self-hosted Swagger UI:

# Clone Swagger UI
git clone https://github.com/swagger-api/swagger-ui.git
cd swagger-ui
 
# Build with your spec URL
# Or use the pre-built dist/ with your openapi.json

Or use the CDN-based single-file approach:

 
<!DOCTYPE html>
<html>
<head>
  <link rel="stylesheet" href="https://unpkg.com/swagger-ui-dist/swagger-ui.css">
</head>
<body>
  <div id="swagger-ui"></div>
  <script src="https://unpkg.com/swagger-ui-dist/swagger-ui-bundle.js"></script>
  <script>
    SwaggerUIBundle({
      url: "./openapi.json",
      dom_id: '#swagger-ui',
    })
  </script>
</body>
</html>

Step 2: Publish

# Publish the directory containing swagger-ui.html + openapi.json
dsp publish ./api-docs/ --name "api-docs"
# → https://acme.dsp.so/0kzNYG7O-api-docs

For Redoc:

npx @redocly/cli build-docs openapi.yaml --output ./redoc-build/index.html
dsp publish ./redoc-build/ --name "api-docs-redoc"

CI/CD setup – publish on every spec change

name: Publish API Docs
 
on:
  push:
    paths:
      - 'openapi.yaml'
      - 'openapi.json'
 
jobs:
  publish-docs:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
 
      - name: Build Redoc
        run: |
          npm install -g @redocly/cli
          redocly build-docs openapi.yaml --output ./api-docs/index.html
 
      - name: Install display.dev CLI
        run: npm install -g @displaydev/cli
 
      - name: Publish API docs
        run: |
          BASE_VERSION=$(dsp get-metadata "${{ vars.DISPLAY_ARTIFACT_ID }}" | jq -r .currentVersion)
          dsp publish ./api-docs/ --id "${{ vars.DISPLAY_ARTIFACT_ID }}" --base-version "$BASE_VERSION"
        env:
          DISPLAYDEV_API_KEY: ${{ secrets.DISPLAYDEV_API_KEY }}

Every merge that touches the OpenAPI spec automatically updates the published docs using the artifact ID stored in DISPLAY_ARTIFACT_ID.


Pricing

2 months free
Free

Try it. No credit card.

€0
  • Included: 10 gated artifacts
  • Included: Unlimited public artifacts*
  • Included: 50MB storage
  • Not included: Version history
  • Not included: Google + Microsoft SSO
  • Not included: Audit logs

display.dev branded

Get started
Solo

Individuals. Unlimited gated sharing.

€15/mo
  • Included: Unlimited gated artifacts
  • Included: Unlimited public artifacts
  • Included: 1GB storage
  • Included: 10 versions
  • Not included: Google + Microsoft SSO
  • Not included: Audit logs
Get started
Enterprise

For compliance-driven organizations.

Contact us

From €499/mo

  • Included: Unlimited gated artifacts
  • Included: Unlimited public artifacts
  • Included: Custom storage
  • Included: Unlimited versions
  • Included: Google + Microsoft SSO
  • Included: 365 days audit logs
Talk to us

Features

Authentication

Viewers click a link and sign in with their Google or Microsoft account, or a one-time password. No app to install. No account to create. No IT ticket.

Comments

Inline comments on every artifact. Your agent reads them via MCP, fetches the current version, republishes with short_id and base_version, and resolves the thread. The artifact stays the current version at the same URL, not a one-shot screenshot.

Publish in 15 seconds

dsp publish ./file.html from your terminal, or one sentence in Claude Desktop. No git repo, no deploy pipeline, no project to configure.

A URL that never changes

Every artifact gets a URL that keeps working. Share in Slack, link in Notion, paste in email. It still works six months later.

Unlimited viewers

No per-seat pricing at any tier. Share with your PM, exec, legal team, or designer for the same flat price.

Any agent

Cursor, Codex, and Claude Code all work, along with any agent that creates HTML or Markdown output.

Try it free

  • Publish a Swagger UI or Redoc build in 15 seconds, no card
  • Every engineer signs in with the company account they already use
  • Unlimited viewers on every plan

Common questions.

Does the "Try it out" feature work in display.dev-hosted Swagger UI?+

Yes, if your API is accessible from the viewer's browser. display.dev serves the Swagger UI as intended – including the live request functionality. CORS on your API must allow requests from acme.dsp.so.

Can I host multiple API versions?+

Yes. dsp publish ./api-docs-v2/ --name "api-docs-v2". Each version gets its own URL. Link them from a changelog page or Notion.

What about private APIs that should only be accessible internally?+

display.dev gates the documentation page – only company emails can view the Swagger UI. The API itself remains on your internal network or behind its own auth. display.dev controls who can read the docs, not who can call the API.

Does display.dev work with AsyncAPI or GraphQL schema docs?+

Any static HTML documentation tool works. AsyncAPI Studio, GraphQL Playground (static export), Redoc, Stoplight Elements – if it builds to a dist/ directory of HTML, dsp publish serves it.

Can I keep my existing Confluence page and link to display.dev for interactive docs?+

Yes. Link from your Confluence doc to acme.dsp.so/0kzNYG7O-api-docs. Confluence gets the searchable, structured context; display.dev hosts the interactive explorer.

Publish your first artifact in 15 seconds.

Free tier. No credit card. One-time password auth on free, Google + Microsoft SSO on Pro (€49/month flat).