All guidesMigration

Migrate from Swagger UI to Hosted Docs

Stop self-hosting Swagger UI. 10-minute migration onto Outworx Docs with a real Try It playground, free mock server, AI chat, and zero infrastructure.

If you've been running Swagger UI as your hosted API documentation — congrats, you saved $99/mo by not paying ReadMe. But you also paid for it in time: maintaining a server, updating the build pipeline, dealing with the dated default theme, and watching developers complain that the "Try it out" button only sort-of works for anything beyond a GET. This guide gets you off that and onto Outworx Docs in about ten minutes — same hosted-URL price as Swagger UI ($0), with a real Try It playground, a free mock server, AI features, and zero infrastructure to maintain.

We'll cover: getting your spec into Outworx, redirecting your old Swagger UI URLs, decommissioning the server it runs on, and the things Swagger UI doesn't do that you'll want to use immediately.

Why teams leave Swagger UI

Three reasons in roughly this order:

  • Server maintenance. Swagger UI is a static site, but the static site lives somewhere — Nginx config, a Vercel deploy, an S3 bucket with CloudFront, a Docker container behind your load balancer. Every team has to choose, deploy, monitor, and update it. The total time-to-maintain is non-zero.
  • Dated default theme. Swagger UI's signature green-and-white design is functional but instantly recognizable as "we used the open-source default." For teams that care about the visual quality of their developer experience, custom CSS overrides are an ongoing tax.
  • Try-it-out is barebones. The built-in playground sends a request, but headers / auth / examples are limited compared to what modern devs expect from Postman or Insomnia. Most teams that ship Swagger UI quietly tell developers "use Postman for actual testing."

If any of those are real friction at your team, this migration takes ten minutes and removes them.

Step 1 — Locate your spec (1 minute)

Swagger UI doesn't store your spec — it just renders one. Your spec lives somewhere else: a file in your repo, a URL emitted by your backend, or an artifact built by CI.

Find the canonical source. Common patterns:

  • A static swagger.json in your repodocs/swagger.json or similar
  • A live endpointhttps://api.yourcompany.com/openapi.json (FastAPI, NestJS Swagger module, Express + swagger-jsdoc)
  • A CI artifact — built from server-code annotations, uploaded to S3 / CDN

You'll need either the file or the URL for Step 2. If you're not sure, look at how Swagger UI is currently configured — its SwaggerUIBundle({ url: '...' }) config tells you exactly where it's reading from.

Step 2 — Upload to Outworx Docs (1 minute)

  1. Sign up at docs.outworx.io — free tier, no credit card.
  2. Click New Project, name it after your API, pick a slug. This becomes your default URL: yourslug.docs.outworx.io.
  3. API Spec tab → either drag in the file, or paste the URL.

Your docs go live immediately. Every endpoint, every parameter, every example. The Try It playground works against your real API the moment it's uploaded — and unlike Swagger UI's built-in version, it handles auth headers (Bearer / API key / Basic / OAuth2) cleanly, persists them across endpoints, and supports real request bodies for POST / PUT / PATCH.

Step 3 — Wire auto-sync (2 minutes)

Swagger UI required you to redeploy or refresh the build to pick up spec changes. Outworx auto-syncs.

If your spec lives at a public URL:

  1. Settings → Auto-sync → paste the URL
  2. Pick a cadence: hourly, daily, or weekly

Outworx re-fetches and re-parses on schedule. Your hosted docs always match what's live in production. No redeploy, no CI hook, no manual upload.

If your spec is generated from server code and there's no public URL — push it from CI. The companion guide Auto-sync OpenAPI Docs from GitHub Actions has a copy-paste workflow.

Step 4 — Migrate your custom domain, if any (5 minutes)

If your Swagger UI lived at docs.yourcompany.com, keep it there.

On Outworx Docs (Business plan, $19/mo for custom domain — vs free Swagger UI but with the server cost behind it):

  1. Settings → Custom domain → enter docs.yourcompany.com
  2. Copy the CNAME target

On your DNS provider:

  1. Edit (don't delete) the existing CNAME / A record pointing at your Swagger UI host
  2. Change it to point at Outworx's CNAME target
  3. Cloudflare specifically: set proxy to DNS only (grey cloud). Outworx provisions its own Let's Encrypt cert; Cloudflare's orange-cloud proxy double-encrypts and breaks things.

Wait 1–5 minutes for propagation. Outworx polls and auto-issues SSL the moment the CNAME resolves. Green "Verified" badge appears in the dashboard.

If you don't need a custom domain — your docs live at yourslug.docs.outworx.io and you're done. Free tier covers this.

Step 5 — Keep your SEO with proper redirects (3 minutes)

Swagger UI uses URL fragments for navigation: docs.yourcompany.com/#/operations/listUsers. Google sometimes indexes these, sometimes not — depends on whether you've enabled deepLinking: true in your Swagger UI config.

If your Swagger UI URLs are indexed in Google:

Outworx paths look like /endpoints/<operationId> (no fragment). Two safe paths:

Option A — keep Swagger UI alive for 30 days. Run both in parallel on different subdomains. Add a redirect rule on the new domain:

docs.yourcompany.com/#/operations/* → docs.yourcompany.com/endpoints/$1

After Google reindexes (~30 days), tear down the Swagger UI server.

Option B — accept a temporary dip. Skip redirects. Rankings recover in 4–8 weeks once Google sees Outworx serving canonical content. If your Swagger UI traffic was modest, this is fine.

If your Swagger UI URLs aren't well-indexed (the common case — fragment-based URLs are fragile for SEO), skip this step entirely. Outworx's per-endpoint pages will index cleanly from day one.

Step 6 — Decommission your Swagger UI server (5 minutes)

Once Outworx is serving your docs and the DNS has cut over, the old infrastructure can go away.

Common Swagger UI hosting setups and their teardown:

  • Vercel / Netlify deploy — delete the project from the dashboard. Free, takes 30 seconds.
  • Docker container behind your load balancer — remove the container from your compose file or k8s manifest. One PR.
  • Static site on S3 + CloudFront — empty the bucket, delete the distribution. Saves you the CloudFront request charges.
  • Inside your main app as a /docs route — remove the Swagger UI dependency, drop the route. Smaller bundle.

The savings depend on the setup. For most teams it's the CloudFront / Vercel cost ($5-20/mo) plus the CI minutes building the docs site ($10/mo). Modest in dollars, real in mental overhead.

What you gain by leaving Swagger UI

  • Real Try It playground. Headers persist across endpoints, auth flows actually work, multipart uploads supported, response previews are pretty. The Swagger UI defaults are functional; Outworx's playground is what teams currently use Postman alongside Swagger UI to get.
  • Free hosted mock server on every plan. Every Outworx project gets a hosted mock URL the moment its spec uploads. Schema-walked responses, dynamic templating ({{$uuid}}, request echoing, faker), stateful overrides. Swagger UI ships nothing for mocking.
  • AI chat trained on your spec (Pro / Business). Visitors can ask "how do I authenticate?" and get a real answer with clickable endpoint citations. Swagger UI shows the spec; Outworx explains it.
  • Per-project MCP server (Pro / Business). Plug your API directly into Claude Desktop, Cursor, Cline, or Continue. The AI tools your team is already using can operate your API. Swagger UI has no equivalent.
  • Custom branding. Your logo, your accent color, your favicon — built-in, not a custom CSS fork. (Pro / Business)
  • Custom domain with auto-SSL. One CNAME, no Let's Encrypt cron, no certbot config. (Business)
  • Multi-version support. Multiple active spec versions per project with a dropdown switcher and per-version base URLs. Swagger UI does not handle this gracefully.
  • Auto-sync from spec URL. Your hosted docs always match what's live. No redeploys. Swagger UI requires a build / push every time the spec changes.
  • Webhooks playground. Browser-side HMAC verifier for ten providers + capture / replay endpoint per inbox. Adjacent to your docs, included on Free.

What you give up

To be honest about it — Swagger UI has one thing Outworx does not:

  • Self-hosting. If your security posture requires the docs renderer to run inside your VPC with no third-party hosting, Swagger UI's static-site nature is a real advantage. Outworx is a hosted service. For 95% of teams this isn't a constraint, but if it is for yours, this guide doesn't apply.

If you're not in the self-hosting-required camp, the migration is pure upside.

After the migration

Wire up auto-sync so the docs stay in lockstep with your repo. Either:

Then connect your AI assistant via MCP: Connect Claude Desktop to Your API Docs via MCP.

That's the full migration. Most teams finish in under fifteen minutes. The hardest part is usually deciding what to do with the Vercel/CloudFront budget you just freed up.

Start your migration →

Related guides

Ship your API docs in under a minute.

Upload your OpenAPI, Swagger, or GraphQL spec and get beautiful hosted docs with AI chat and a per-project MCP server — free forever for 2 projects.