# OpenAPI Plugin for Payload CMS > OpenAPI 3.0/3.1/3.2 specs generated from your Payload CMS config, with Scalar or Swagger UI ## Docs - [Introduction](https://payload-plugin-openapi.seshuk.im/introduction.md): Generate OpenAPI 3.0/3.1/3.2 documents from your Payload CMS config and serve them with Scalar or Swagger UI. - [Quick start](https://payload-plugin-openapi.seshuk.im/quick-start.md): Install the plugin, add openapi() and scalar() to your Payload config, and get a live spec with interactive docs. - [Changelog](https://payload-plugin-openapi.seshuk.im/changelog.md): Release history for the OpenAPI plugin for Payload CMS. - [Overview](https://payload-plugin-openapi.seshuk.im/configuration/overview.md): Configure the plugin with a single openapi() call, plus optional scalar() or swaggerUi() for the docs UI. - [Metadata](https://payload-plugin-openapi.seshuk.im/configuration/metadata.md): The metadata object sets the API title, version, and description written to the spec info block. - [OpenAPI version](https://payload-plugin-openapi.seshuk.im/configuration/openapi-version.md): The document is always built as OpenAPI 3.2; openapiVersion downconverts the result to 3.1 or 3.0. - [Filters](https://payload-plugin-openapi.seshuk.im/configuration/filters.md): Control what ends up in the spec: which entities are documented, which internal endpoints appear, and which operations are dropped. - [Security marking](https://payload-plugin-openapi.seshuk.im/configuration/security-marking.md): How each operation in the spec is marked public or secured, and how to override the automatic detection. - [Interactive auth](https://payload-plugin-openapi.seshuk.im/configuration/interactive-auth.md): Add a token endpoint so Scalar and Swagger UI can show an Authorize dialog with a Payload login. - [Caching](https://payload-plugin-openapi.seshuk.im/configuration/caching.md): The built document is cached for the life of the process; disable the cache in development to see config edits without a restart. - [Extensions](https://payload-plugin-openapi.seshuk.im/configuration/extensions.md): Inject extra paths, components, and tags, or transform the finished document before it is served. - [Docs UI](https://payload-plugin-openapi.seshuk.im/configuration/docs-ui.md): Mount a Scalar or Swagger UI API reference next to the generated spec, or both on different paths. - [Generate command](https://payload-plugin-openapi.seshuk.im/cli/generate.md): Write the OpenAPI document to a file with the openapi:generate bin script — no HTTP request required. - [Custom endpoints](https://payload-plugin-openapi.seshuk.im/guides/custom-endpoints.md): Document custom Payload endpoints with a standard OpenAPI Operation Object on custom.openapi — no wrapper, no registry. - [Field metadata](https://payload-plugin-openapi.seshuk.im/guides/field-metadata.md): Refine inferred field schemas with custom.openapi: descriptions, examples, formats, constraints, and localized strings. - [For plugin authors](https://payload-plugin-openapi.seshuk.im/guides/plugin-authors.md): Make your Payload plugin OpenAPI-ready with custom.openapi metadata — no dependency on this package, no wiring for your users. - [Serve a pre-generated spec](https://payload-plugin-openapi.seshuk.im/guides/static-spec.md): Generate the OpenAPI document to a static file with serve: false and host it yourself — no runtime endpoint, no per-request work. - [Programmatic use](https://payload-plugin-openapi.seshuk.im/guides/programmatic-use.md): Build the OpenAPI document in your own code with buildOpenApiDocument and downconvert it with toOpenApi30 / toOpenApi31. - [Internationalization](https://payload-plugin-openapi.seshuk.im/guides/i18n.md): UI translations for 44 locales, per-request language resolution, ?lang= on the spec endpoint, and language switchers in the docs UI. - [Examples](https://payload-plugin-openapi.seshuk.im/guides/examples.md): Copy-ready openapi() configurations for public APIs, read-only specs, interactive auth, CI generation, multi-language docs, and extensions. - [Exports](https://payload-plugin-openapi.seshuk.im/reference/exports.md): The full public API surface of @seshuk/payload-plugin-openapi — plugins, functions, and types from the single entry point.