Configuration

markline.json is the single source of truth for navigation, theming, and behavior.

Theme & branding

namestringrequired
The site name, used in the header and metadata.
theme.logoobject
{ light, dark } image paths, or { text } for a wordmark.
theme.colorsobject
{ primary, primaryDark } brand accents (hex). See Theming for the full palette and fonts.
theme.appearance"light" | "dark" | "system"
Default color scheme.

Topbar

topbar.linksarray
Right-aligned header links, e.g. a GitHub link.
topbar.ctaobject
{ label, href } for the primary "Get started" button.
topbar.badgestring
A small label pill next to the logo (e.g. docs · v1).
topbar.width"full" | "contained"
Topbar layout on docs + the API reference. "full" (default) spans edge-to-edge; "contained" centers it to the content max-width.
topbar.homeWidth"full" | "contained"
The homepage topbar, independent of width. Defaults to "contained" so the marketing nav aligns with the hero.

Navigation is a list of tabs, each with grouped pages. A tab can instead set openapi: true to generate its sidebar from your OpenAPI spec.

"navigation": {
  "tabs": [
    { "id": "docs", "label": "Documentation", "href": "/", "match": ["__default__"],
      "groups": [{ "group": "Start", "pages": [{ "href": "/", "label": "Intro" }] }] },
    { "id": "api", "label": "API", "href": "/api-reference", "match": ["/api-reference"], "openapi": true }
  ]
}

API & playground

api.baseUrlstring
Base URL the playground sends requests to (overrides the spec's servers).
api.playground.mode"full" | "inline" | "explorer" | "off"
The "Try it" experience. Default "full".
api.playground.proxy"auto" | "always" | "never"
How the playground reaches your API. never is required for static export.

See API reference for the full guide — generating the reference, the live explorer, and per-resource/per-operation MDX overlays.

Integrations

editUrlstring
Base URL for "Edit this page" links; the page path is appended.
analyticsobject
plausible, googleAnalytics, or posthog.
feedback.enabledboolean

Force the "Was this helpful?" widgets on or off. Omitted → shown only when an endpoint is set. See Feedback.

feedback.endpointstring

POST target for the "Was this helpful?" widgets (same JSON from docs pages and API resource sections). Point it at a webhook, a Sheet, your own API, or the bundled feedback-worker. See Feedback for the payload and deploy steps.

Versions & i18n

versionsarray
Documentation versions; the first is the default (unprefixed).
i18n.localesarray
Localizations; the first locale is the default. Same mechanism as versions.
A project uses versions or locales — both share the URL-prefix mechanism. See Versions & i18n for the directory layout and worked examples.