Brand profile
The brand profile is a single object per workspace that shapes every AI-generated piece of content. It is not a per-post setting. Update it in one place and every future generation picks up the change.
{ "object": "brand_profile", "workspace_id": "org_2gK9c7dL3eX8fY1a", "voice": "practical, direct, no filler", "audience": "founders and product managers at seed-to-series-B startups", "topics_to_lean_into": ["shipping speed", "distribution", "founder-led marketing"], "topics_to_avoid": ["crypto", "gambling"], "style_notes": "no em-dashes, no emojis, sentences under 20 words when possible", "example_posts": [ "We stopped writing weekly retros last quarter. Nothing broke.", "The best tool for shipping is the one your team already has open." ], "updated_at": "2026-07-01T09:14:00Z"}Why it matters
Section titled “Why it matters”Every generation endpoint (content creation with auto_generate: true, campaign generation, Blitz swipe stack) reads the brand profile before calling the language model. Keeping it accurate has a bigger impact on output quality than tweaking any individual prompt.
Managing via the API
Section titled “Managing via the API”- Read:
GET /brand_profile - Update:
PATCH /brand_profilewith any subset of fields
See Brand profile API for the endpoint reference.
Character limits
Section titled “Character limits”voice: 500 charsaudience: 500 charsstyle_notes: 2000 charstopics_to_lean_into/topics_to_avoid: 50 items each, 100 chars per itemexample_posts: 20 items, 500 chars per item
Requests exceeding these return 422 unprocessable_entity.