Utilities

Swagger & OpenAPI

Auto-generated API documentation UI.

Swagger

@bklarjs/swagger inspects your routes and Zod schemas to automatically generate an OpenAPI 3.1 specification and serve interactive documentation UIs.

Installation

bun add @bklarjs/swagger
npm install @bklarjs/swagger

Setup

Initialize Swagger after defining your routes but before app.listen.

import { swagger } from "@bklarjs/swagger";

// ... Define routes ...

swagger({
  path: "/docs",
  bearerAuth: true, // Add "Authorize" button
  openapi: {
    title: "My API",
    version: "1.0.0",
  },
}).setup(app);

app.listen(3000);

Visit:

  • http://localhost:3000/docs/swagger (Swagger UI)
  • http://localhost:3000/docs/scalar (Scalar UI)

Documenting Routes

Add a doc object to your route options.

app.get("/users", (ctx) => ctx.json([]), {
  doc: {
    summary: "List users",
    tags: ["Users"],
    description: "Returns a paginated list of users.",
    responses: {
      "200": { description: "Success" },
    },
  },
});

On this page