Skip to main content
Use a brand kit to give your agents a brand straight from its guidelines PDF (a brand book, brand toolkit, or identity deck), so they can create new assets that follow it. The kit returns the profile and voice, the palette with its proportions, typography, logo variants and misuse, photography, graphics, layout, buttons, cards, motion, and the book’s own rules. A brand kit is a submission like a website extraction, but its result.design_system has kind: "brand_kit" and its own shape. Use it when the source of truth is the guidelines document, not a website.

Extract a brand kit

Upload the PDF as multipart/form-data in a field named file:
Poll the returned submission_id until status is completed or failed, following the submission lifecycle. On completion, read result.design_system. To read only part of a finished kit, pass its section names to the result endpoint, for example ?sections=colors,buttons. Brand kits appear in GET /design/submissions next to website extractions; filter them with ?kind=brand_kit. A brand kit’s source_url is file:// followed by the uploaded file name.
The file must be a PDF of up to 50 MB. The extractor reads up to the first 150 pages. Every upload is a fresh extraction: brand kits are never served from cache.

Give it to your agents

Hand your agent the sections a task needs instead of the whole kit. Fetch them with the sections query parameter:
A few fields help most:
  • colors.palette[].proportion: tell the agent how much of each color to use, not only which colors exist. Prefer stated, then drawn.
  • logo.misuse and rules with kind: "dont": the book’s own list of what not to do. Ask the agent to check its output against them.
  • buttons[].css and cards[].css: drop-in styles for UI work, already converted from the PDF.
  • asset.url: real logos, graphics, and photos from the book. Use them as references or as files to place in the design.

Read the result

The following example shows one palette color. Other sections are omitted.
A section the book does not cover comes back empty: an empty list, or an object with empty fields.

Where values come from

The kit keeps the book’s word apart from what the engine worked out: Fields with when_to_use also carry when_to_use_source (declared or inferred). profile.inferred lists the profile fields the engine wrote because the book did not. rules contains only the book’s own guidelines.

Files from the PDF

Logos, misuse examples, photos, graphics, icons, templates, buttons, cards, and font files carry an asset object with a hosted url and a format: asset is null when the book only describes the item in words.

Colors

Each palette color has the book’s name, hex, and group (the book’s heading, such as primary or secondary). cmyk and rgb are the values the book prints, or null when it prints none. They are never converted from the hex. proportion says how much of the brand the color takes, as a share from 0 to 1: Read stated first. drawn is kept even when it disagrees with stated, so you can see both. Either is null when the book does not give it. colors.proportion_sources points to where the proportions come from: the page, the zones on it as boxes (x0, y0, x1, y1 as fractions of the page), and an asset with the zones marked. Each source has a kind of stated or drawn. colors.pairs lists text and background combinations as hex values, with what they are approved for (headers, body, cta), the WCAG 2 contrast ratio, and a source: declared when the book approves the pair, measured when the book sets text that way.

Typography

typography.typefaces lists each family with its roles, the weights the book names, and a licence of google_fonts or proprietary. typography.hierarchy lists the type levels by the book’s names (headline, body copy, and so on) with size, size_max for a stated range, line_height, unit (pt, px, or empty when the book gives none), CSS weight, and case. A level is measured when the book gives no type scale and the engine read it off the pages. typography.font_files lists the fonts the PDF embeds, to render a visual sample. An embedded font is often a subset: it only renders the glyphs in its sample.

Buttons and cards

Buttons and cards are measured from the PDF’s vectors, preferring a page that defines components when the book has one. Each button has a role, a state, its colors named after the palette, border, radius, padding, height, and type, plus:
Cards follow the same pattern: the box (background, border, radius_pt, padding_pt, size), whether it holds an image (media), its text levels in reading order, and css. When a book draws its components as a flat image instead of vectors, there is nothing to measure, and buttons or cards can come back empty.