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
/api/v1/brand-kitReturns 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.
curl https://postme.live/api/v1/brand-kit \
-H "Authorization: Bearer pml_live_AbCdEf123456_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"Response: 200 OK
{
"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
| Field | Type | Notes |
|---|---|---|
id / name | uuid / string | The brand's id and name (the same brand echoed by /me). |
identity.tagline | string | null | One-line positioning. |
identity.ethos_md | string | null | Brand ethos / mission, in Markdown. |
identity.target_audience | string | null | Who the brand is talking to — steer tone and references off this. |
identity.tone_voice_md | string | null | Voice & tone guidance, in Markdown. The strongest signal for captions. |
visual.primary_color / secondary_color / accent_color | string | null | Brand hex colours for generated media. |
visual.font_primary / font_secondary | string | null | Brand typeface names. |
visual.logo_url / logo_transparent_url | string | null | Public URLs to the logo assets (transparent variant for overlays), or null when not uploaded. |
visual.style_references | array | Reference images/links (url, optional note) describing the brand's visual style. |
cadence.posting_cadence | string | null | daily, weekly, biweekly, monthly, or custom. |
cadence.preferred_post_times | array | day_of_week (0 = Sunday … 6 = Saturday) + hour (0–23), brand-local. Useful for picking a scheduled_for. |
cadence.occasions | array | Notable dates (name, date, recurring) — launches, holidays the brand cares about. |
product_catalog_md | string | null | Products/services as Markdown — grounds product-specific content. |
source.website_url / source.extracted_at | string | null | Where the kit was extracted from and when, or null if hand-entered. |
updated_at | RFC-3339 | When 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.