# OrbitDocs > Open-source API documentation for NestJS: guides in MDX, a Scalar-style reference, deploy anywhere. ## Guides - [Ask AI](https://orbitdocs.vitra.ai/ai): Add an AI assistant that answers questions from your docs with citations, using your own LLM key, plus MCP servers for coding agents. - [llms.txt and page actions](https://orbitdocs.vitra.ai/ai/llms-txt): Every OrbitDocs site publishes llms.txt, llms-full.txt and a Markdown copy of each guide, and adds Copy page and Open in ChatGPT or Claude buttons. - [MCP servers](https://orbitdocs.vitra.ai/ai/mcp): Serve an MCP server that lets coding agents search and read your docs, and one per API that turns every operation into a tool. - [Providers and keys](https://orbitdocs.vitra.ai/ai/providers): Connect Ask AI to OpenAI, Anthropic, Google or any OpenAI-compatible endpoint, keep the key on your server, and tune the rate limit. - [Collections](https://orbitdocs.vitra.ai/api-client/collections): How collections are generated from your spec and kept in sync, how readers add their own requests, and how import and export work. - [Customizing](https://orbitdocs.vitra.ai/api-client/customizing): Set the API client's defaults and features for your site with the client config, and what readers can change in settings. - [Environments](https://orbitdocs.vitra.ai/api-client/environments): Variables per environment, secret values, production checks, and the environments generated from your servers and mock. - [API client](https://orbitdocs.vitra.ai/api-client): A Postman-style API client inside your docs, built from your spec, that runs entirely in the reader's browser. - [Requests](https://orbitdocs.vitra.ai/api-client/requests): Build a request in the API client, with params, headers, every body type and auth, then send it and read the response. - [Runner and history](https://orbitdocs.vitra.ai/api-client/runner-and-history): Run a collection or folder top to bottom with iterations and tests, and reopen the requests you sent. - [Scripts and tests](https://orbitdocs.vitra.ai/api-client/scripts): Run JavaScript before a request and after its response, with a Postman-compatible pm object, assertions and tests. - [Authentication](https://orbitdocs.vitra.ai/api-reference/authentication): Declare security schemes and servers, and let readers enter a key once for every sample and test request. - [Code samples](https://orbitdocs.vitra.ai/api-reference/code-samples): The code samples on every operation, the 10 generated languages, your own samples and SDK samples. - [Completeness](https://orbitdocs.vitra.ai/api-reference/completeness): Find operations without descriptions, examples or typed responses, and fail the build until they are fixed. - [API reference](https://orbitdocs.vitra.ai/api-reference): What readers get on every API reference page, how it is laid out, and what it shows for each operation. - [Multiple APIs](https://orbitdocs.vitra.ai/api-reference/multiple-apis): Document several APIs in one site, from Nest apps, spec files or URLs, and link to them with API cards. - [Branding](https://orbitdocs.vitra.ai/customization/branding): Set the site title and description, add logos for light and dark mode, replace the favicon, and change the fonts. - [Code blocks](https://orbitdocs.vitra.ai/customization/code-blocks): Titles, tabs, line numbers, highlights and package-manager tabs in guide code blocks, and how to change the syntax theme or add MDX plugins. - [All Fumadocs options](https://orbitdocs.vitra.ai/customization/fumadocs-options): Every Fumadocs customization option and where to set it in OrbitDocs, in the config, in lib/overrides.tsx, or in a docs app file. - [Themes and colors](https://orbitdocs.vitra.ai/customization): Pick a color preset, set your accent color, control light and dark mode, and override any color with CSS. - [Layouts](https://orbitdocs.vitra.ai/customization/layouts): Choose the Fumadocs layout for your guides and control the navbar, breadcrumb, page footer, page width, dates, edit links and page actions. - [MDX components](https://orbitdocs.vitra.ai/customization/mdx-components): See which components every guide can use, add more Fumadocs components such as a file tree or image zoom, and register your own. - [Navigation bar](https://orbitdocs.vitra.ai/customization/navigation-bar): Add links, icon links, buttons and menus to the top bar, rename or hide the Guides link, and show an announcement banner. - [Search](https://orbitdocs.vitra.ai/customization/search): Configure the search dialog, its keyboard shortcut and suggested links, and learn what it indexes and where it runs. - [Sidebar](https://orbitdocs.vitra.ai/customization/sidebar): Control how the guides sidebar opens, show root folders as tabs, and add a banner and links to it. - [Table of contents](https://orbitdocs.vitra.ai/customization/table-of-contents): Pick one of the three table of contents styles, highlight one heading at a time, or turn the TOC off. - [Docker](https://orbitdocs.vitra.ai/deploy/docker): Package the static docs build as a small nginx image with one command. - [Deploy](https://orbitdocs.vitra.ai/deploy): Pick an output mode, set the base path, and ship the docs to any host with one command. - [Inside your Nest app](https://orbitdocs.vitra.ai/deploy/nest): Serve the static docs build from the NestJS server you already deploy, with private docs and Ask AI included. - [Server mode](https://orbitdocs.vitra.ai/deploy/server-mode): Run the docs as a Next server so private docs, Ask AI, MCP and real redirects work on Vercel, a container or any Node host. - [Static hosts](https://orbitdocs.vitra.ai/deploy/static-hosts): Upload the out/ folder to Netlify, GitHub Pages, Cloudflare Pages, S3 + CloudFront or nginx. - [Vercel](https://orbitdocs.vitra.ai/deploy/vercel): Deploy the docs to Vercel with one command, as static files or as a Next server. - [CLI](https://orbitdocs.vitra.ai/docs-reference/cli): Every orbitdocs command and flag, with defaults, what each one writes and when it fails. - [MDX components](https://orbitdocs.vitra.ai/docs-reference/components): Every component you can use in guide pages without an import, with its props. - [Configuration](https://orbitdocs.vitra.ai/docs-reference/configuration): Every key in orbitdocs.config.ts, with its type, default and what it does. - [NestJS decorators and functions](https://orbitdocs.vitra.ai/docs-reference/decorators): Signatures of every @Docs* decorator and every function exported by @orbitdocs/nestjs. - [Environment variables](https://orbitdocs.vitra.ai/docs-reference/environment-variables): Every environment variable OrbitDocs reads, for the docs site, the NestJS integration, the CLI and the self-hosted platform. - [How it works](https://orbitdocs.vitra.ai/get-started/how-it-works): Extraction, the docs app, the build output and the three ways to serve the site. - [Introduction](https://orbitdocs.vitra.ai/get-started): What OrbitDocs is, what you get, and where to start. - [Project structure](https://orbitdocs.vitra.ai/get-started/project-structure): Every file orbitdocs init creates, what it does, and which ones you edit. - [Quickstart](https://orbitdocs.vitra.ai/get-started/quickstart): Add a docs site to an existing NestJS app in about five minutes. - [Changelog](https://orbitdocs.vitra.ai/help/changelog): What changed in each OrbitDocs release, for the npm packages and the self-hosted platform. - [FAQ](https://orbitdocs.vitra.ai/help/faq): Short answers to the questions people ask before and after adopting OrbitDocs. - [OrbitDocs vs Scalar](https://orbitdocs.vitra.ai/help/scalar-comparison): An honest feature comparison, including where Scalar is the better choice. - [Troubleshooting](https://orbitdocs.vitra.ai/help/troubleshooting): Fixes for the problems people actually hit, from installing and extracting to deploying and running the platform. - [OrbitDocs](https://orbitdocs.vitra.ai/): Open-source API docs for NestJS. A Scalar-style reference from your controllers, guides in MDX, a built-in API client, private docs, Ask AI and SDKs. Self-hosted, free, MIT. - [Decorators](https://orbitdocs.vitra.ai/nestjs/decorators): Every @Docs* decorator, what it writes to the spec, and how it combines with @nestjs/swagger. - [Extraction](https://orbitdocs.vitra.ai/nestjs/extraction): How OrbitDocs builds the OpenAPI document from your Nest app, every source option, and how to fix common errors. - [NestJS](https://orbitdocs.vitra.ai/nestjs): Install the Nest integration, point the docs at your app and choose which routes appear. - [Serve from Nest](https://orbitdocs.vitra.ai/nestjs/serve-from-nest): Serve the built docs from your Nest app at /docs with mountOrbitDocs, including private docs and Ask AI. - [Analytics](https://orbitdocs.vitra.ai/platform/analytics): Count page views without cookies, or send them to Plausible, Umami or PostHog, and see what readers ask Ask AI. - [Custom domains](https://orbitdocs.vitra.ai/platform/domains): Serve a project on your own domain, verified by DNS, with HTTPS certificates issued automatically. - [Git sync](https://orbitdocs.vitra.ai/platform/git-sync): Connect a GitHub or GitLab repository so pushes publish the site and every pull or merge request gets a preview. - [Self-hosted platform](https://orbitdocs.vitra.ai/platform): One place for every docs site in your company, on your own servers. Publishing, previews, a spec registry, teams, domains, analytics and an audit log. - [Install the platform](https://orbitdocs.vitra.ai/platform/install): Run the platform with Docker Compose on your machine or a server, create the first admin and get HTTPS working. - [Operations](https://orbitdocs.vitra.ai/platform/operations): Run the platform in production. Where data lives, backups, upgrades, scaling build workers and monitoring. - [Publishing](https://orbitdocs.vitra.ai/platform/publishing): Create a project and a token, publish with orbitdocs publish from any CI, and roll back in one click. - [Spec registry](https://orbitdocs.vitra.ai/platform/registry): Every published version of every API spec, numbered, linted with Spectral and downloadable, with an optional gate on lint errors. - [Team and access](https://orbitdocs.vitra.ai/platform/team): Invite people, give them a role per project, sign in with SSO, and let your identity provider manage accounts with SCIM. - [Access rules](https://orbitdocs.vitra.ai/private-docs/access-rules): Define access groups, restrict pages, folders and APIs to them, and personalize the docs for each signed-in reader. - [Your product's session](https://orbitdocs.vitra.ai/private-docs/app-session): Let readers who are signed in to your product read private docs with no second sign-in, using their Supabase, Clerk, Firebase or Appwrite session. - [Audit log](https://orbitdocs.vitra.ai/private-docs/audit-log): Record every sign-in, failed sign-in, sign-out and denied request of your private docs, to a JSON Lines file or a webhook. - [Private docs](https://orbitdocs.vitra.ai/private-docs): Decide who can read which pages and APIs, and let readers sign in with company SSO or the account they already have in your product. - [Company SSO](https://orbitdocs.vitra.ai/private-docs/sso): Let readers sign in with Google, Microsoft Entra ID, Okta, Auth0, Clerk or Keycloak, with step-by-step setup for each provider. - [Regenerate SDKs in CI](https://orbitdocs.vitra.ai/sdks/ci): Write a GitHub Actions or GitLab CI workflow that regenerates your SDKs on every push and opens a pull request or merge request with the changes. - [SDKs](https://orbitdocs.vitra.ai/sdks): Generate client SDKs in TypeScript, Python, Go, Java, C# and PHP from your API spec, and keep your own code when you regenerate. - [Lint your spec](https://orbitdocs.vitra.ai/sdks/linting): Run Spectral's OpenAPI rules or your own ruleset on every extracted spec, and choose which severity fails the command. - [Mock server](https://orbitdocs.vitra.ai/sdks/mock-server): Run a mock of your API from its spec that validates every request, add stateful handlers, and offer it to readers as an environment in the API client. - [SDK samples](https://orbitdocs.vitra.ai/sdks/samples): Show code samples for your generated SDKs next to the HTTP samples on every operation of the API reference. - [SDK contract tests](https://orbitdocs.vitra.ai/sdks/testing): Call every operation through the generated TypeScript SDK against the mock server with the examples from your spec, and fail CI when anything breaks. - [Components](https://orbitdocs.vitra.ai/writing/components): Callouts, steps, tabs, cards, accordions, type tables and code blocks you can use in any page. - [Write docs](https://orbitdocs.vitra.ai/writing): Guides are MDX files in content/. Learn where they live, how URLs work and what frontmatter does. - [Landing pages](https://orbitdocs.vitra.ai/writing/landing-pages): Turn your home page into an animated, full-width landing page with ready-made sections, your own React components, or a page you build from scratch. - [Linking operations](https://orbitdocs.vitra.ai/writing/linking-operations): Link guides to API operations with op: links and , and let the build catch links that break. - [Navigation](https://orbitdocs.vitra.ai/writing/navigation): Order the sidebar with meta.json, group pages in folders, split the docs into tabs and add top bar links. - [Operation content](https://orbitdocs.vitra.ai/writing/operation-content): Add notes, warnings, examples and components inside the API reference, per API, group or operation. ## Demo: Orbit Travel API - [Create an access token](https://orbitdocs.vitra.ai/reference/demo/create-an-access-token/): `POST /v1/oauth/token` - [List destinations](https://orbitdocs.vitra.ai/reference/demo/list-destinations/): `GET /v1/destinations` - [Get a destination](https://orbitdocs.vitra.ai/reference/demo/get-a-destination/): `GET /v1/destinations/{id}` - [Search flights](https://orbitdocs.vitra.ai/reference/demo/search-flights/): `GET /v1/flights` - [Get a flight](https://orbitdocs.vitra.ai/reference/demo/get-a-flight/): `GET /v1/flights/{id}` - [Legacy flight search](https://orbitdocs.vitra.ai/reference/demo/legacy-flight-search/): `GET /v1/flights/search-legacy` - [Get a seat map](https://orbitdocs.vitra.ai/reference/demo/get-a-seat-map/): `GET /v1/flights/{id}/seats` - [Hold seats](https://orbitdocs.vitra.ai/reference/demo/hold-seats/): `POST /v1/flights/{id}/seat-holds` - [Create a booking](https://orbitdocs.vitra.ai/reference/demo/create-a-booking/): `POST /v1/bookings` - [List bookings](https://orbitdocs.vitra.ai/reference/demo/list-bookings/): `GET /v1/bookings` - [Get a booking](https://orbitdocs.vitra.ai/reference/demo/get-a-booking/): `GET /v1/bookings/{id}` - [Update a booking](https://orbitdocs.vitra.ai/reference/demo/update-a-booking/): `PATCH /v1/bookings/{id}` - [Cancel a booking](https://orbitdocs.vitra.ai/reference/demo/cancel-a-booking/): `POST /v1/bookings/{id}/cancel` - [Upload a travel document](https://orbitdocs.vitra.ai/reference/demo/upload-a-travel-document/): `POST /v1/bookings/{id}/documents` - [List travel documents](https://orbitdocs.vitra.ai/reference/demo/list-travel-documents/): `GET /v1/bookings/{id}/documents` - [Download a boarding pass](https://orbitdocs.vitra.ai/reference/demo/download-a-boarding-pass/): `GET /v1/bookings/{id}/boarding-pass` - [Create a passenger](https://orbitdocs.vitra.ai/reference/demo/create-a-passenger/): `POST /v1/passengers` - [List passengers](https://orbitdocs.vitra.ai/reference/demo/list-passengers/): `GET /v1/passengers` - [Get a passenger](https://orbitdocs.vitra.ai/reference/demo/get-a-passenger/): `GET /v1/passengers/{id}` - [Update a passenger](https://orbitdocs.vitra.ai/reference/demo/update-a-passenger/): `PATCH /v1/passengers/{id}` - [Delete a passenger](https://orbitdocs.vitra.ai/reference/demo/delete-a-passenger/): `DELETE /v1/passengers/{id}` - [Pay for a booking](https://orbitdocs.vitra.ai/reference/demo/pay-for-a-booking/): `POST /v1/bookings/{id}/payments` - [Get a payment](https://orbitdocs.vitra.ai/reference/demo/get-a-payment/): `GET /v1/payments/{id}` - [Refund a payment](https://orbitdocs.vitra.ai/reference/demo/refund-a-payment/): `POST /v1/payments/{id}/refunds` - [Get the loyalty account](https://orbitdocs.vitra.ai/reference/demo/get-the-loyalty-account/): `GET /v1/loyalty/account` - [List loyalty transactions](https://orbitdocs.vitra.ai/reference/demo/list-loyalty-transactions/): `GET /v1/loyalty/transactions` - [Redeem points](https://orbitdocs.vitra.ai/reference/demo/redeem-points/): `POST /v1/loyalty/redemptions` - [List events](https://orbitdocs.vitra.ai/reference/demo/list-events/): `GET /v1/events` - [Get an event](https://orbitdocs.vitra.ai/reference/demo/get-an-event/): `GET /v1/events/{id}` - [Create a webhook endpoint](https://orbitdocs.vitra.ai/reference/demo/create-a-webhook-endpoint/): `POST /v1/webhook-endpoints` - [List webhook endpoints](https://orbitdocs.vitra.ai/reference/demo/list-webhook-endpoints/): `GET /v1/webhook-endpoints` - [Delete a webhook endpoint](https://orbitdocs.vitra.ai/reference/demo/delete-a-webhook-endpoint/): `DELETE /v1/webhook-endpoints/{id}` - [Send a test event](https://orbitdocs.vitra.ai/reference/demo/send-a-test-event/): `POST /v1/webhook-endpoints/{id}/test`