Skip to main content
When a submission completes, result.design_system carries the design system the Extractor produced. Sub-sections fill in as the workflow streams, so when you read a partial result, expect null for sections that haven’t landed yet. A brand kit extracted from a guidelines PDF has kind: "brand_kit" and its own shape, described on that page. For a selective extraction, it contains only the sections you requested. Other top-level keys are absent even after completion. Check the response’s top-level sections to distinguish a selective extraction from a full one (null).

Top-level sections

The freshness of a design system lives on the response envelope: completed_at is when it was extracted. On a cache hit it reflects the original extraction, not your request. See Caching and freshness.

Requesting only the sections you need

You can choose sections at two points:
  • Before extraction: send sections in the POST /design/submissions JSON body to choose which sections to extract.
  • When reading a result: send sections in the GET query to filter the data returned. This does not change extraction work or add sections you did not originally request.
See Extract only selected sections for request examples and available sections. A full design system is a large document, and it isn’t evenly distributed: assets is commonly around 40% of it and layout around 20%. When you only need part of the brand, pass sections to GET /design/submissions/{id}/result and get back only those sections:
Accepted values are the section names in the table above. A name that isn’t in that list returns 422. Filtering applies to result.design_system only. The response envelope (status, source_url, completed_at, and the rest) and result.artifacts always come back, so you can poll with a narrow request and still see when the job finishes. Omit the query filter to return all originally requested sections. If the submission selected colors and typography, querying ?sections=colors,layout returns only colors. The top-level sections still reports ["colors", "typography"].
Pass the sections as one comma-separated value (?sections=colors,typography). Repeating the parameter (?sections=colors&sections=typography) does not work: the gateway keeps only the last value, so the earlier sections are silently dropped.
This matters most for AI agents, where the response is charged as context. The same filter is available on the MCP server as get_brand_extraction_result(submission_id, sections=[...]).

The brand profile

profile summarizes the brand and its intent:
  • brand_name, source_url
  • tagline: the brand’s existing tagline, or null (see below)
  • industry, primary_purpose, main_cta
  • page_type_category, page_type
  • copy_tone: tone adjectives, e.g. ["Confident", "Technical", "Direct"]
  • brand_signature: a short description of the visual identity
  • visual_language: keywords, accent_strategy, highlights
  • strategy: target_audience and executive_synthesis
  • style_classification: design-style classification (see below)

Tagline

Read the tagline at result.design_system.profile.tagline. The extractor copies an existing brand tagline from the submitted page, preserving its original language, capitalization, and punctuation. An absent, unreadable, or ambiguous tagline returns null. A well-known brand slogan can still return null when it does not appear on the submitted page. The extractor does not substitute a hero headline or generate a slogan. For example, a profile can contain:
Handle null by omitting the tagline from your interface. You can request just the profile with GET /design/submissions/{id}/result?sections=profile. Cached extractions are not reprocessed when a field is added, so an older result may return null. Submit the URL again with force: true to run a fresh extraction. See Caching and freshness.

Style classification

style_classification.primary_style is constrained to a fixed set of styles, with no custom values. secondary_style is drawn from the same set.
Historical movement: Bauhaus, Swiss Style / International Typographic Style, De Stijl / Neoplasticism, Art Nouveau, Art Deco, Constructivism, Futurism, Pop Art, Psychedelic, Postmodernism, Brutalism, Grunge, Retro, MaximalismDigital / UI design: Flat Design, Skeuomorphism, Neumorphism / Neomorphism, Glassmorphism, Claymorphism, Isometric DesignTonal / audience: Corporate, Elegant, Luxurious, Playful, Whimsical, Feminine, Masculine, Gen-Z, Bold, Friendly, OrganicContemporary aesthetic: Vaporwave, Y2K, Cyberpunk, Synthwave, Corporate Memphis / Alegria, Kawaii / Cute Design, Anime / Manga Style, Hand-Drawn