Turn any website into structured brand voice data: tone, communication traits, writing guidance, messaging patterns, and language to use or avoid.
A label like professional or friendly gives a model nothing to work with. Brand Voice captures several dimensions of how the brand communicates, with guidance a model can act on.
A short list of words that describe how the brand writes, such as clear, confident, or technically credible.
{
"traits": [
"Clear",
"Confident",
"Outcome-oriented",
"Enterprise-minded"
]
}A concise explanation of how the brand communicates and what it emphasizes.
{
"description": "Asana communicates in direct, benefit-led language that combines practical workflow outcomes with ambitious AI and enterprise positioning. It emphasizes clarity, speed, visibility, control, and human oversight."
}Formality, technicality, and energy, each a model judgment from 0 to 1, for tuning generation and rough comparison across brands.
{
"formality": 0.65,
"technicality": 0.62,
"energy": 0.72
}Patterns worth preserving and patterns the brand steers clear of, written as rules a model can follow.
{
"do": [
"Lead with a clear operational benefit.",
"Frame AI as working alongside people, with humans retaining control."
],
"avoid": [
"Presenting AI as autonomous without human oversight.",
"Positioning Asana as requiring customers to replace their existing tools."
]
}Real output for asana.com.
OpenGraph finds the pages that describe the brand, reads them together in one pass, and returns a single voice profile written from them.
Want to see where a judgment came from? Set include_meta=true to list the pages the analysis cited for each voice field.
observedRead directly from the site, such as links and social profiles.derivedComputed from the homepage markup and styles, such as colors and fonts.inferredWritten by the analysis from the site content, such as positioning and voice.Traits, a description, three scores, and do and avoid rules in one predictable object. The model is told to return null, or an empty list, rather than guess when the pages do not support a value.
Real output for asana.com.
{
"voice": {
"traits": [
"Clear",
"Confident",
"Outcome-oriented",
"Enterprise-minded",
"Helpful",
"Action-oriented",
"Technically credible"
],
"description": "Asana communicates in direct, benefit-led language that combines practical workflow outcomes with ambitious AI and enterprise positioning. It emphasizes clarity, speed, visibility, control, and human oversight.",
"formality": 0.65,
"technicality": 0.62,
"energy": 0.72,
"do": [
"Lead with a clear operational benefit.",
"Frame AI as working alongside people, with humans retaining control.",
"Use concrete workflow language such as owners, deadlines, dependencies, approvals, and next actions.",
"Reinforce visibility, alignment, speed, and measurable outcomes.",
"Pair innovation claims with security, governance, and trust assurances.",
"Use concise calls to action such as “Get started,” “Learn more,” and “Explore.”"
],
"avoid": [
"Presenting AI as autonomous without human oversight.",
"Positioning Asana as requiring customers to replace their existing tools.",
"Vague productivity claims without a workflow or business outcome.",
"Ignoring enterprise security, permissions, governance, or compliance concerns."
]
}
}Generate website, email, or campaign copy that matches the existing brand.
Keep a recognizable voice across generated social posts.
Give agents communication rules before they talk to customers or write anything.
Generate new page copy that reads like the rest of the site.
Write ad copy aligned with the brand’s tone and positioning.
Personalize generated messages while keeping the company’s communication style.
Tell AI systems how the brand speaks to its customers.
Voice does not exist in isolation. Request messaging alongside it and your AI gets the brand’s key messages, themes, claims, and common phrases as well as its tone.
messaging.key_messagesmessaging.themesmessaging.common_phrasesvoice.traitsvoice.dovoice.avoidNeed positioning, products, and audiences too? See the Brand Context API.
Both come from the same Brand Intelligence result. Switch with one parameter.
format=jsonformat=markdown{
"messaging": {
"key_messages": [
"Bring humans and AI agents together on one shared plan.",
"Connect strategy to execution with visible goals, projects, owners, deadlines, and dependencies.",
"Automate routine work while keeping people in control of approvals, exceptions, and decisions.",
"Replace scattered work, stale status updates, and unclear ownership with a coordinated system of record.",
"Scale work confidently with enterprise-grade security, governance, integrations, and reporting."
],
"themes": [
"Human-agent collaboration",
"Shared context and memory",
"Visibility and coordination",
"AI-powered productivity",
"Enterprise governance",
"Security and trust",
"Strategic alignment",
"Automation and scale"
],
"claims": [
"85% of Fortune 100 companies choose Asana.",
"Asana integrates with 270+ apps.",
"Asana’s AI partners do not use customer data to train their models and are required to delete customer data after each query.",
"Asana offers a 99.9% uptime commitment to Enterprise customers.",
"More than 100,000 enterprises trust Asana to keep their data safe."
],
"common_phrases": [
"The OS for human-agent teams",
"Where humans and agents run critical workflows together",
"one shared plan",
"AI that works the way your team works",
"Your AI chief of staff",
"Get your team and your agents working together",
"See the big picture at a glance",
"Keep work moving"
]
},
"voice": {
"traits": [
"Clear",
"Confident",
"Outcome-oriented",
"Enterprise-minded",
"Helpful",
"Action-oriented",
"Technically credible"
],
"description": "Asana communicates in direct, benefit-led language that combines practical workflow outcomes with ambitious AI and enterprise positioning. It emphasizes clarity, speed, visibility, control, and human oversight.",
"formality": 0.65,
"technicality": 0.62,
"energy": 0.72,
"do": [
"Lead with a clear operational benefit.",
"Frame AI as working alongside people, with humans retaining control.",
"Use concrete workflow language such as owners, deadlines, dependencies, approvals, and next actions.",
"Reinforce visibility, alignment, speed, and measurable outcomes.",
"Pair innovation claims with security, governance, and trust assurances.",
"Use concise calls to action such as “Get started,” “Learn more,” and “Explore.”"
],
"avoid": [
"Presenting AI as autonomous without human oversight.",
"Positioning Asana as requiring customers to replace their existing tools.",
"Vague productivity claims without a workflow or business outcome.",
"Ignoring enterprise security, permissions, governance, or compliance concerns."
]
}
}OpenGraph does not need to predict every writing characteristic you care about. Ask about humor, calls to action, or assumed expertise in the same request, and the answers come back under custom in the type you asked for, or null when the pages do not answer it.
Up to three questions per request. Answer types: string, boolean, number, string[], or object.
"questions": [
{
"key": "humor_style",
"question": "How does this brand use humor in its communication?",
"type": "string"
},
{
"key": "cta_style",
"question": "What style of calls to action does this brand typically use?",
"type": "string[]"
},
{
"key": "technical_audience",
"question": "How much technical knowledge does this brand assume from its readers?",
"type": "string"
}
]We build the brand understanding pipeline so you don’t have to.
Brand Voice is one section of the Brand Intelligence response. Keep voice and messaging, turn off the rest, and ask for Markdown to drop straight into a prompt.
curl -X POST "https://opengraph.io/api/1.1/brand/https%3A%2F%2Fasana.com?app_id=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"format": "markdown",
"sections": {
"brand": false, "products": false, "audiences": false, "positioning": false,
"identity": false, "visual": false, "links": false
}
}'formatsectionsquestionsinclude_metacache_ok