Brand Intelligence API
Send a website URL and get back structured context about the brand behind it: who it is, what it sells, who it is for, how it positions itself, what it says, how it sounds, and what it looks like. JSON by default, or Markdown for direct use as model context.
Endpoint
GET https://opengraph.io/api/1.1/brand/{encoded_url}?app_id=YOUR_APP_ID
POST https://opengraph.io/api/1.1/brand/{encoded_url}?app_id=YOUR_APP_IDUse GET with query parameters for simple requests, and POST with a JSON body when you send sections or questions. In a query string, those two must be JSON encoded, then URL encoded. app_id and cache_ok always go in the query string.
An analysis reads several pages of the site, so a fresh request can take tens of seconds. Set your client timeout to at least 60 seconds.
Parameters
Path Parameters
| Parameter | Type | Description |
|---|---|---|
| encoded_url | string | Required. The URL encoded website to analyze |
Options
Every option except app_id is optional.
| Parameter | Type | Default | Description |
|---|---|---|---|
| app_id | string | none | Required. Your API key |
| format | string | json | json or markdown. Markdown is rendered from the same result and returned as a text/markdown body. |
| sections | object | all on | Boolean flags keyed by section name. Set a section to false to leave it out; it is then not analyzed at all. Example: { "visual": false } |
| questions | array | none | Up to 3 custom questions. See Custom questions. |
| include_meta | boolean | false | Adds a _meta object with provenance for each field. |
| cache_ok | boolean | true | Set to false to skip the cache and run a fresh analysis. Query string only; ignored in a POST body. |
Example Request
# Default: every section, as JSON
curl "https://opengraph.io/api/1.1/brand/https%3A%2F%2Fasana.com?app_id=YOUR_APP_ID"
# Markdown, ready to paste into a prompt
curl "https://opengraph.io/api/1.1/brand/https%3A%2F%2Fasana.com?app_id=YOUR_APP_ID&format=markdown"
# Options in a POST body: skip sections, add a custom question, include provenance
curl -X POST "https://opengraph.io/api/1.1/brand/https%3A%2F%2Fasana.com?app_id=YOUR_APP_ID" \
-H "Content-Type: application/json" \
-d '{
"sections": { "visual": false, "links": false },
"questions": [
{ "key": "buying_triggers", "question": "What situations would make someone likely to buy from this company?", "type": "string[]" }
],
"include_meta": true
}'Response
The JSON response has one key per enabled section. identity and links are read from the site markup; the other sections are written from the content of the pages analyzed.
If part of the analysis fails, the request still succeeds and the affected sections come back as null (an empty array for products and audiences). Partial results are not cached. Check for missing sections before reading nested fields.
| Section | Fields |
|---|---|
brand | domain, name, description, tagline, category |
identity | logos[] (url, type: logo, wordmark, icon, or image; theme; format), logo_svg (svg, type, theme; null when no inline logo is found), icon (url, format), colors[] (hex, role), fonts[] (family, role, weights) |
products | Array of name, description, url, category |
audiences | Array of name, description |
positioning | value_proposition, market_position, differentiators[] |
messaging | key_messages[], themes[], claims[], common_phrases[] |
voice | traits[], description, formality, technicality, energy (each 0 to 1), do[], avoid[] |
visual | style, imagery, ui_style |
links | website, about, socials (keyed by network), brand_assets, pricing |
custom | Answers to your custom questions, keyed by each question's key. Present only when questions are sent and answered. |
_meta | Provenance. Present only when include_meta is true. |
{
"brand": {
"domain": "asana.com",
"name": "Asana",
"description": "Asana is a work management platform where teams and AI agents coordinate critical workflows on shared plans, with connected context, automation, reporting, and enterprise governance.",
"tagline": "The OS for human-agent teams",
"category": "Work management and collaboration software"
},
"identity": {
"logos": [
{
"url": "https://assets.asana.biz/m/5f083bc48e06e1e2/original/asana-logo-1200x1200.png",
"type": "logo",
"theme": null,
"format": "png"
}
],
"icon": {
"url": "https://brand.asana.biz/image/upload/f_auto:image,fl_preserve_transparency/v1696462484/asana_favicon_194x194.png",
"format": "png"
},
"colors": [
{
"hex": "#690031",
"role": "primary"
},
{
"hex": "#F0D3D9",
"role": "accent"
},
{
"hex": "#6A0085",
"role": null
},
{
"hex": "#222875",
"role": null
},
{
"hex": "#004232",
"role": null
},
{
"hex": "#A82424",
"role": null
}
],
"fonts": [
{
"family": "TWK Lausanne",
"role": "heading",
"weights": [
250,
300,
350,
400,
450,
500,
550
]
},
{
"family": "haptik",
"role": null,
"weights": [
200,
400
]
},
{
"family": "proxima-nova",
"role": null,
"weights": [
400,
600
]
},
{
"family": "Ghost",
"role": null,
"weights": [
500
]
}
]
},
"products": [
{
"name": "Agentic Work Management",
"description": "A platform for people and AI agents to run critical workflows together, including AI Teammates, Asana Dash, AI Studio, and AI Connectors and MCP.",
"url": "https://asana.com/product/ai",
"category": "AI work management"
},
{
"name": "Asana Service Management",
"description": "An AI-native service management platform for IT, HR, facilities, and legal teams.",
"url": "https://asana.com",
"category": "Service management"
},
{
"name": "Asana Client Management",
"description": "An AI-native platform for teams delivering client work, including agencies.",
"url": "https://asana.com",
"category": "Client and agency work management"
},
{
"name": "Command by Asana",
"description": "A work management product for developer teams to ship faster with humans and agents in sync.",
"url": "https://asana.com",
"category": "Developer team work management"
},
{
"name": "StackAI by Asana",
"description": "A no-code platform for creating agentic workflows connected to business applications with enterprise governance.",
"url": "https://asana.com",
"category": "AI workflow automation"
},
{
"name": "AI Teammates",
"description": "Prebuilt AI agents that work alongside teams inside real workflows, with shared memory, governance, and work context.",
"url": "https://asana.com/product/ai",
"category": "AI agents"
},
{
"name": "AI Studio",
"description": "A no-code automation tool for intake, task classification, routing, alerts, and other structured work processes.",
"url": "https://asana.com/product/ai",
"category": "Workflow automation"
},
{
"name": "Asana Dash",
"description": "An AI chief of staff that surfaces next actions and routes work to the appropriate AI Teammate.",
"url": "https://asana.com/product/ai",
"category": "AI productivity assistant"
},
{
"name": "Goals and reporting",
"description": "Capabilities for connecting team work to company objectives and monitoring progress through goals, portfolios, and real-time reporting dashboards.",
"url": "https://asana.com/features/goals-reporting",
"category": "Goals and performance management"
},
{
"name": "Admin and security",
"description": "Administrative, access-control, data protection, compliance, and security capabilities for managing Asana across organizations.",
"url": "https://asana.com/features/admin-security",
"category": "Enterprise administration and security"
}
],
"audiences": [
{
"name": "Cross-functional teams",
"description": "Teams coordinating shared workflows, projects, goals, and dependencies across functions."
},
{
"name": "IT teams",
"description": "IT organizations managing service delivery, enterprise applications, procurement, operations, intake, and approvals."
},
{
"name": "Service teams",
"description": "Teams in IT, HR, facilities, and legal that manage structured service requests and workflows."
},
{
"name": "Developer teams",
"description": "Developer organizations that need to coordinate work and ship faster with humans and AI agents."
},
{
"name": "Marketing and operations teams",
"description": "Teams using AI agents, automation, project management, and reporting to manage cross-functional work."
},
{
"name": "Agencies and client-service teams",
"description": "Agencies and teams delivering work for clients and managing ongoing client relationships."
},
{
"name": "Enterprise organizations",
"description": "Large organizations requiring governance, security, compliance, administration, and scalable work management."
}
],
"positioning": {
"value_proposition": "Asana helps teams and AI agents run critical workflows together from one shared plan, connecting people, tasks, projects, goals, dependencies, and operational context.",
"market_position": "An enterprise-scale work management and agentic work platform for cross-functional teams, with governance, security, integrations, and AI built in.",
"differentiators": [
"Work Graph® connects people, agents, tasks, projects, goals, and dependencies in one shared context.",
"AI Teammates, AI Studio, Asana Dash, and AI Connectors support coordinated human-agent workflows.",
"Enterprise governance includes permissions, approvals, audit trails, usage controls, and centralized administration.",
"Broad integrations connect Asana with existing business systems rather than requiring rip-and-replace.",
"Strong enterprise security, privacy, compliance, and data-residency capabilities."
]
},
"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."
]
},
"visual": {
"style": "Modern, AI-forward enterprise SaaS with a clear, collaborative, execution-focused feel. The brand emphasizes shared context, connected workflows, visibility, governance, and productivity.",
"imagery": null,
"ui_style": "Structured work-management interfaces centered on shared plans, connected tasks, goals, projects, dependencies, dashboards, reporting charts, portfolios, and governed AI workflows."
},
"links": {
"website": "https://asana.com",
"about": "https://asana.com/company",
"socials": {
"x": "https://x.com/intent/follow?screen_name=asana",
"linkedin": "https://www.linkedin.com/company/asana",
"instagram": "https://www.instagram.com/asana/",
"facebook": "https://www.facebook.com/asana",
"youtube": "https://www.youtube.com/channel/UC2BoogM0AqwOJyoSp1S4ClQ"
},
"brand_assets": null,
"pricing": "https://asana.com/pricing"
}
}Custom questions
Ask for anything the standard schema does not cover. Each question needs a key and a question, and can set a type for the answer.
| Field | Rules |
|---|---|
| key | 1 to 64 letters, digits, or underscores. Must be unique within the request. __proto__, constructor, and prototype are reserved. |
| question | Up to 500 characters. |
| type | string (default), boolean, number, string[], or object. An object answer is returned as an object, or as the raw string if the answer is not valid JSON. |
{
"questions": [
{ "key": "buying_triggers", "question": "What situations would make someone likely to buy from this company?", "type": "string[]" }
]
}
// response
{
"custom": {
"buying_triggers": ["...", "..."]
}
}When the site gives no evidence for an answer, its value is null.
Provenance
With include_meta set, the response includes _meta.sources, the pages analyzed (each with a url and a page type such as homepage, about, product, or pricing), and _meta.fields, which maps each field path to its source ids and a basis:
| basis | Meaning |
|---|---|
observed | Read directly from the site: links and brand.domain |
derived | Computed from the site markup and stylesheets: identity |
inferred | Written by the analysis from the site content, even when it reads like a quote: every other section, including brand.tagline and custom |
Caching
Results are cached for 7 days per URL and set of enabled sections. A cached response includes "is_cache": true. Set cache_ok=false to force a fresh analysis. Requests with custom questions are never cached.
Errors
Errors during analysis return an error object with a code and message. Invalid options are rejected before any work starts, and for those error is a plain string describing the problem. Check the type of error before reading its fields.
{
"error": {
"code": -4101,
"message": "Could not fetch the requested site."
}
}{
"error": "A maximum of 3 custom questions may be supplied per request."
}| HTTP Status | error.code | Meaning |
|---|---|---|
| 400 | none (string error) | Invalid options, such as an unknown format, more than 3 questions, or a bad question key |
| 400 | -4101 | The website could not be fetched |
| 504 | -4100 | The analysis did not finish in time |
| 500 | -4102 | Unexpected error during analysis |
Related
Brand Intelligence overview
What the API returns and how teams use it.
Brand Context for AI
Use this endpoint to ground LLMs and agents in a brand.
Brand Identity
Use this endpoint for logos, colors, fonts, and visual style.
Brand Voice
Keep only voice and messaging to give AI the tone and writing guidance of a brand.
Brand Colors
Keep only identity to get a brand's colors with their roles.
Company Logo
Use this endpoint to get a company's logo from its domain.
Markdown API
Convert any single page to clean Markdown.
URL Encoding
How to encode the target URL in the path.