---
title: "The starter library, or one use-case kit of it"
method: GET
path: "/v1/library"
tags: ["Library"]
---

# The starter library, or one use-case kit of it

`GET /v1/library`

## Request

- Base URL: `https://api.galleyrender.com`
- URL: `https://api.galleyrender.com/v1/library`
- Auth: none required

The 43 starter templates every account is seeded with, described the way the website describes them: the human name from the schema's `title`, the committed preview at its real pixel size, the example payload, and the `demo` block — the three fields a person would want their own words in, labelled for them rather than for the schema.

**No key.** Nothing here is about an account: it is the same data the template gallery and every template page already publish. Cache it — the body only changes on a deploy, it carries an `ETag`, and a repeat request with `If-None-Match` is a `304`.

`?pack=` narrows to one kit and returns it in picker order, **lead document first**. Without it you get all 43 in name order. Either way `packs` carries all six kits with their titles and membership, so one request is enough to draw the picker.

`source` is deliberately not included: it is public, but 43 templates of embedded woff2 is several megabytes and nothing renders in the browser. Use `GET /v1/templates/{ref}` for the copy on your own account.

## Query parameters

- `pack` 'hoa' | 'trades' | 'freelancer' | 'events' | 'coach' | 'nonprofit'

## Headers

- `If-None-Match` string

## Response `200`

The library, or the requested kit.

- Library
  - `object` 'library', required
  - `pack` Pack, required
    - `object` 'pack', required
    - `id` string, required
    - `title` string, required
    - `blurb` string, required
    - `lead` string, nullable, required: The template shown first when this kit is chosen.
    - `templates` string[], required: Member names in picker order, the lead first.
    - `count` integer, required
  - `packs` Pack[], required: All six kits, always, so one request draws the whole picker.
    - `object` 'pack', required
    - `id` string, required
    - `title` string, required
    - `blurb` string, required
    - `lead` string, nullable, required: The template shown first when this kit is chosen.
    - `templates` string[], required: Member names in picker order, the lead first.
    - `count` integer, required
  - `data` StarterTemplate[], required: Picker order when `pack` was given (lead first), otherwise name order.
    - `object` 'starter_template', required
    - `name` string, required
    - `title` string, required: The human name, from the schema's root `title`.
    - `description` string
    - `engine` 'chromium' | 'satori', required
    - `format` 'pdf' | 'png', required: What this template produces by default.
    - `expected_pages` integer, required
    - `packs` string[], required
    - `lead_for` string[]: The kits this template leads. Usually empty; never more than one in practice.
    - `order` object: Position within each kit, 1-based, `1` being the lead. `{}` for one of the 14 staples, which belong to no kit. A template in two kits does not lead both: `invoice` is `{ "trades": 3, "freelancer": 1 }`.
    - `preview` object, required: The committed preview, served by the website. `width`/`height` are the PNG's own.
      - `url` string, required
      - `thumbnail_url` string, required
      - `width` integer, required
      - `height` integer, required
    - `demo` TemplateDemo, required
      - `noun` string, required
      - `make` string, required: The render button's label.
      - `keep` string, required: The keep-this button's label.
      - `fields` object[], required
        - `path` string, required: Dotted path into the payload.
        - `label` string, required
        - `type` 'text' | 'date' | 'number', required
      - `no_fields` string, nullable, required: Why there are no fields, or null when there are three.
    - `example` unknown, required

## Other responses

- `304`: `If-None-Match` matched. Nothing has changed.
- `404`: `not_found` — no kit by that name. `details.available_packs` lists the six.

---

[API](https://skmtc.dev/galleyrender/apis/galley-render-api.md) · [All operations](https://skmtc.dev/galleyrender/apis/galley-render-api/llms.txt) · [OpenAPI document](https://skmtc.dev/galleyrender/apis/galley-render-api/revisions/a85d68468cd2?raw)
