> ## 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 fonts

> Returns the hosted font catalog — every family is available on every plan — and the Google Fonts capability: any Google Fonts family can be used by passing a `googleFontsUrl` on `POST /v1/render` (up to `googleFonts.maxFamiliesPerUrl` families per URL). Use a hosted `key` as a `fontStack` entry; only `weighted` families can serve as the document body/heading family, and a family declared in `googleFontsUrl` / `googleFontsUrls` can also be referenced by name in `rules` (`set.family`). The `guidance` array carries the pairing/positional rules and the validate-first preflight tip; preflight a font choice with `POST /v1/render/validate` (a misspelled Google family returns 400 `google_font_not_found` without spending a render).



## OpenAPI

````yaml /openapi.json get /v1/fonts
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/fonts:
    get:
      tags:
        - Fonts
      summary: List available fonts
      description: >-
        Returns the hosted font catalog — every family is available on every
        plan — and the Google Fonts capability: any Google Fonts family can be
        used by passing a `googleFontsUrl` on `POST /v1/render` (up to
        `googleFonts.maxFamiliesPerUrl` families per URL). Use a hosted `key` as
        a `fontStack` entry; only `weighted` families can serve as the document
        body/heading family, and a family declared in `googleFontsUrl` /
        `googleFontsUrls` can also be referenced by name in `rules`
        (`set.family`). The `guidance` array carries the pairing/positional
        rules and the validate-first preflight tip; preflight a font choice with
        `POST /v1/render/validate` (a misspelled Google family returns 400
        `google_font_not_found` without spending a render).
      operationId: listFonts
      responses:
        '200':
          description: The hosted catalog and the Google Fonts capability.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Fonts.List'
        '401':
          $ref: '#/components/responses/Responses.Unauthorized'
        '405':
          description: >-
            Method not allowed on `/v1/fonts` (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'
        '500':
          $ref: '#/components/responses/Responses.InternalError'
        '503':
          $ref: '#/components/responses/Responses.ServiceUnavailable'
      security:
        - apiKey: []
components:
  schemas:
    Fonts.List:
      description: >-
        Fonts available to the authenticated caller: the hosted catalog
        (available on every plan) and the Google Fonts by-URL capability
        (`googleFontsUrl` on `POST /v1/render`, also available on every plan)
      type: object
      required:
        - tier
        - hosted
        - googleFonts
        - guidance
      properties:
        tier:
          type: string
          enum:
            - free
            - pro
            - business
        hosted:
          description: >-
            Every hosted family in the catalog; all of them are available on
            every plan
          type: array
          items:
            type: object
            required:
              - key
              - kind
            properties:
              key:
                description: >-
                  Registry key to use in `fontStack` (and, for `weighted`
                  families, as a `set.family` value in `rules`)
                type: string
              kind:
                type: string
                enum:
                  - weighted
                  - emoji
                  - emoji-color
                  - code
        googleFonts:
          type: object
          required:
            - maxFamiliesPerUrl
          properties:
            maxFamiliesPerUrl:
              minimum: 1
              description: >-
                Maximum distinct Google Fonts families one `googleFontsUrl` may
                declare
              anyOf:
                - format: integer
                  default: '0'
                  type: string
                - minimum: 1
                  description: >-
                    Maximum distinct Google Fonts families one `googleFontsUrl`
                    may declare
                  type: integer
        guidance:
          description: >-
            Prose the flat catalog cannot convey: pairing/positional order,
            `set.family` references, and the validate-first preflight tip
          type: array
          items:
            type: string
    Error.MethodNotAllowed:
      type: object
      required:
        - error
      properties:
        error:
          type: string
          enum:
            - method_not_allowed
    Error.Unauthorized:
      type: object
      required:
        - error
      properties:
        error:
          type: string
          enum:
            - unauthorized
    Error.Internal:
      type: object
      required:
        - error
      description: Unexpected server error. No additional details are provided.
      properties:
        error:
          type: string
          enum:
            - internal_error
        detail:
          type: string
    Error.ServiceUnavailable:
      type: object
      required:
        - error
      description: >-
        Transient outage shared by every 503. `font_source_unavailable` is a
        font catalogue read failure (`POST /v1/render`, `GET /v1/fonts`);
        `service_unavailable` is a subscription tier-lookup failure, fail-closed
        (`GET /v1/fonts`). Both are retryable. Each route documents which codes
        it can emit.
      properties:
        error:
          type: string
          enum:
            - service_unavailable
            - font_source_unavailable
        detail:
          type: string
  responses:
    Responses.Unauthorized:
      description: >-
        Missing or invalid `x-api-key` (must be a valid, enabled `bp_*` key;
        documentation endpoints and health are exempt)
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error.Unauthorized'
          examples:
            unauthorized:
              $ref: '#/components/examples/Error.Unauthorized'
    Responses.InternalError:
      description: Unexpected server error. No additional details are provided.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error.Internal'
          examples:
            internal:
              $ref: '#/components/examples/Error.Internal'
    Responses.ServiceUnavailable:
      description: >-
        Transient outage: a subscription tier lookup failed
        (`service_unavailable`, fail-closed) or the font catalogue could not be
        read (`font_source_unavailable`). Retry shortly.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error.ServiceUnavailable'
          examples:
            serviceUnavailable:
              $ref: '#/components/examples/Error.ServiceUnavailable'
  examples:
    Error.MethodNotAllowed:
      summary: Non-POST method on /v1/render
      value:
        error: method_not_allowed
    Error.Unauthorized:
      summary: Missing or invalid x-api-key (bp_*)
      value:
        error: unauthorized
    Error.Internal:
      summary: Unexpected server error (no details provided)
      value:
        error: internal_error
    Error.ServiceUnavailable:
      summary: Transient tier-lookup or font-catalogue outage
      value:
        error: service_unavailable
        detail: >-
          Subscription tier lookup is temporarily unavailable. Retry the
          request.
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        API key issued from your Blink PDF account, prefixed `bp_`. Send it in
        the `x-api-key` header on every request. The documentation and health
        endpoints are exempt.

````