Developers

Brand kit

The brand's identity, visual system, cadence, and catalog — the same profile the dashboard's Studio and caption AI read. Fetch it before generating captions or media so an agent's output matches the brand's voice and look.

Get the brand kit

GET/api/v1/brand-kit

Returns the workspace's brand kit as a single object (one brand per workspace today). Scope workspaces:read; nothing to pass beyond the bearer token. Every field is null or an empty array until the user fills it in — read it defensively.

bash
curl https://postme.live/api/v1/brand-kit \
  -H "Authorization: Bearer pml_live_AbCdEf123456_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

Response: 200 OK

json
{
  "id": "1a2b3c4d-5e6f-4708-9a0b-1c2d3e4f5061",
  "name": "Outback Yak",
  "identity": {
    "tagline": "Gear that goes where you do",
    "ethos_md": "Built for the outback. Durable, honest, no-nonsense kit.",
    "target_audience": "Weekend adventurers and remote workers in regional Australia",
    "tone_voice_md": "Warm, plain-spoken, a little dry. Never corporate."
  },
  "visual": {
    "primary_color": "#cb431c",
    "secondary_color": "#2b2b28",
    "accent_color": "#e8c547",
    "font_primary": "Newsreader",
    "font_secondary": "Inter",
    "logo_url": "https://user-content.postme.live/…/logo.png",
    "logo_transparent_url": "https://user-content.postme.live/…/logo-transparent.png",
    "style_references": [
      { "url": "https://user-content.postme.live/…/ref1.jpg", "note": "hero style" }
    ]
  },
  "cadence": {
    "posting_cadence": "weekly",
    "preferred_post_times": [
      { "day_of_week": 2, "hour": 9 },
      { "day_of_week": 5, "hour": 17 }
    ],
    "occasions": [
      { "name": "Summer range launch", "date": "2026-11-01", "recurring": false }
    ]
  },
  "product_catalog_md": "- **Drover Pack** — 45L canvas pack…\n- **Billy Kettle** — 1.2L…",
  "source": {
    "website_url": "https://outbackyak.example",
    "extracted_at": "2026-06-28T04:12:00Z"
  },
  "updated_at": "2026-07-01T22:05:11Z"
}

Field reference

FieldTypeNotes
id / nameuuid / stringThe brand's id and name (the same brand echoed by /me).
identity.taglinestring | nullOne-line positioning.
identity.ethos_mdstring | nullBrand ethos / mission, in Markdown.
identity.target_audiencestring | nullWho the brand is talking to — steer tone and references off this.
identity.tone_voice_mdstring | nullVoice & tone guidance, in Markdown. The strongest signal for captions.
visual.primary_color / secondary_color / accent_colorstring | nullBrand hex colours for generated media.
visual.font_primary / font_secondarystring | nullBrand typeface names.
visual.logo_url / logo_transparent_urlstring | nullPublic URLs to the logo assets (transparent variant for overlays), or null when not uploaded.
visual.style_referencesarrayReference images/links (url, optional note) describing the brand's visual style.
cadence.posting_cadencestring | nulldaily, weekly, biweekly, monthly, or custom.
cadence.preferred_post_timesarrayday_of_week (0 = Sunday … 6 = Saturday) + hour (0–23), brand-local. Useful for picking a scheduled_for.
cadence.occasionsarrayNotable dates (name, date, recurring) — launches, holidays the brand cares about.
product_catalog_mdstring | nullProducts/services as Markdown — grounds product-specific content.
source.website_url / source.extracted_atstring | nullWhere the kit was extracted from and when, or null if hand-entered.
updated_atRFC-3339When the brand was last edited.

Generating on-brand content

A content agent reads /brand-kit once per run, then folds identity.tone_voice_md and identity.target_audience into its caption prompt, uses visual colours and fonts (and the logo URLs) when generating imagery, and picks a scheduled_for from cadence.preferred_post_times. Pair it with GET /channels (per-channel accepts rules) and POST /posts to compose and publish without ever opening the dashboard.

Brand kit: Public API