Skip to content

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"
}

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.

  • Read: GET /brand_profile
  • Update: PATCH /brand_profile with any subset of fields

See Brand profile API for the endpoint reference.

  • voice: 500 chars
  • audience: 500 chars
  • style_notes: 2000 chars
  • topics_to_lean_into / topics_to_avoid: 50 items each, 100 chars per item
  • example_posts: 20 items, 500 chars per item

Requests exceeding these return 422 unprocessable_entity.