> ## Documentation Index
> Fetch the complete documentation index at: https://docs.blinkpdf.io/llms.txt
> Use this file to discover all available pages before exploring further.

# List available themes

> Returns the theme catalog for `POST /v1/render`: every design preset with its `slug` (pass it in the `theme` field), `category`, a "use it when" tagline, and an `isDefault` flag for the base theme applied when `theme` is omitted or unknown. Theme fonts are bundled (hosted), so a theme renders identically without any network dependency; your own font selection (`fontStack` / `googleFontsUrl(s)` / `typography`) still overrides a theme font. Themes are identical on every plan. Cacheable via a version-keyed `ETag`.



## OpenAPI

````yaml /openapi.json get /v1/themes
openapi: 3.1.0
info:
  title: Blink PDF API
  description: >-
    Render Markdown into accessible, PDF/UA-conformant PDFs over HTTP. Send
    Markdown plus optional document metadata, fonts, page layout, viewer hints,
    and per-block style overrides to `POST /v1/render`, or use a structured
    template such as `POST /v1/templates/sandwich-document/render`.
    Authentication is via an `x-api-key` header. Unknown routes return HTTP 404
    with body `{ "error": "not_found" }`.
  version: 1.3.1
  contact:
    name: Blink PDF Support
    email: support@blinkpdf.io
  license:
    name: Proprietary
    identifier: LicenseRef-Proprietary
servers:
  - url: https://api.blinkpdf.io
    description: Production
security: []
tags:
  - name: Discovery
    description: Machine-readable API entry point
  - name: Health
    description: Liveness probes
  - name: Render
    description: Markdown-to-PDF rendering
  - name: Fonts
    description: Hosted font catalog and Google Fonts capability discovery
  - name: SandwichDocument
    description: >-
      Sandwich documents — a first-page header (logo, professional identity,
      subject/context data) and a last-page footer (signature, name) wrapping a
      Markdown body
paths:
  /v1/themes:
    get:
      tags:
        - Render
      summary: List available themes
      description: >-
        Returns the theme catalog for `POST /v1/render`: every design preset
        with its `slug` (pass it in the `theme` field), `category`, a "use it
        when" tagline, and an `isDefault` flag for the base theme applied when
        `theme` is omitted or unknown. Theme fonts are bundled (hosted), so a
        theme renders identically without any network dependency; your own font
        selection (`fontStack` / `googleFontsUrl(s)` / `typography`) still
        overrides a theme font. Themes are identical on every plan. Cacheable
        via a version-keyed `ETag`.
      operationId: listThemes
      responses:
        '200':
          description: The theme catalog.
          headers:
            ETag:
              schema:
                type: string
              description: Version-keyed strong validator for caching
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Themes.List'
        '304':
          description: Catalog unchanged (matched `If-None-Match`).
        '405':
          description: >-
            Method not allowed on `/v1/themes` (only GET is accepted); response
            carries `Allow: GET`.
          headers:
            Allow:
              schema:
                type: string
                enum:
                  - GET
              description: Methods accepted on this path
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error.MethodNotAllowed'
              examples:
                methodNotAllowed:
                  $ref: '#/components/examples/Error.MethodNotAllowed'
components:
  schemas:
    Themes.List:
      description: >-
        The public theme catalog: each design preset with its category, "use it
        when" tagline, and default flag. Theme fonts are bundled (hosted); your
        own font selection still overrides a theme. Themes are identical on
        every plan.
      type: object
      required:
        - version
        - default
        - themes
      properties:
        version:
          description: >-
            Catalog version; use as a cache validator and the `ETag` is keyed by
            it
          type: string
        default:
          description: Slug applied when a request omits `theme` or names an unknown one
          type: string
        themes:
          description: Every registered theme, in slug order
          type: array
          items:
            type: object
            required:
              - slug
              - category
              - useWhen
              - isDefault
            properties:
              slug:
                description: >-
                  Stable theme slug to pass in the `theme` field of `POST
                  /v1/render`
                type: string
              category:
                type: string
                enum:
                  - report
                  - blog
                  - academic
                  - docs
                  - corporate
              useWhen:
                description: One-line guidance on when to pick this theme
                type: string
              isDefault:
                description: >-
                  True for the base theme applied when `theme` is omitted or
                  names an unknown slug
                type: boolean
    Error.MethodNotAllowed:
      type: object
      required:
        - error
      properties:
        error:
          type: string
          enum:
            - method_not_allowed
  examples:
    Error.MethodNotAllowed:
      summary: Non-POST method on /v1/render
      value:
        error: method_not_allowed

````