# What does a brand context API return?

> What brand context APIs return, field by field: Brandfetch's Brand Context API, Context.dev, Firecrawl, Logo.dev, and Rainbrand, all called for Linear.

A brand context API returns what a model needs to write or design as a company. That includes who the company is, how it sounds, what it looks like, and what to avoid. If you do not work with the company, an API that reads its public website is enough. For work under your own brand or the brands of your customers, use context that the brand maintains. This site shows what eight APIs returned for linear.app on 11 November 2026.

Start here:

- [What is a brand context API?](https://brandcontextapi.com/what-is-a-brand-context-api)
- [Which brand context API do you need?](https://brandcontextapi.com/which-brand-context-api)
- [Observed or maintained: where does brand context come from?](https://brandcontextapi.com/observed-or-maintained-context)
- [Brandfetch Brand Context API alternatives](https://brandcontextapi.com/brandfetch-brand-context-api-alternatives)

`GET /v2/context/linear.app` (Brandfetch Brand Context API)

```json
{
  "meta": {
    "canonical_name": "Linear",
    "resolved_at": "2026-10-16T11:40:11Z"
  },
  "brand": {
    "voice": {
      "summary": "… a composed, exacting register …",
      "attributes": ["precise", "measured", "craft-focused", …],
      "avoid": ["breathless hype", "folksy banter"]
    },
    "style": { "summary": "… restrained cool accents …" }
  }
}
```

1. `resolved_at`: Read from linear.app on 16 October. We asked on 11 November and got the stored copy.
2. `summary`: Built from the public pages of Linear, not supplied by Linear.
3. `avoid`: The only things to avoid in the response.
4. `style`: Colors in words only. Other endpoints give values, and the values differ.

`GET /v2/brands/domain/linear.app` (Brandfetch Brand API)

```json
{
  "name": "Linear",
  "claimed": false,
  "logos": [{ "theme": "dark", "type": "logo", "formats": [ … ] }, …],
  "colors": [
    { "hex": "#222326", "type": "dark" },
    { "hex": "#F4F5F8", "type": "light" }
  ],
  "fonts": [{ "name": "Linear", "origin": "custom", "license": null }]
}
```

1. `claimed`: Linear did not claim this profile.
2. `hex`: The pair that Linear calls official.
3. `fonts`: A font named "Linear". No license.

`POST /v1/brand/retrieve` (Context.dev Brand)

```json
{
  "brand": {
    "slogan": "The product development system for teams and agents.",
    "colors": [
      { "hex": "#7170ff", "name": "Stargate Shimmer", "source": "site" },
      …
    ],
    "logos": [{ "mode": "light", "type": "logo", … }, …]
  },
  "cache_metadata": { "status": "hit", "age_ms": 19071504 }
}
```

1. `name`: A generated name, not a Linear name.
2. `mode`: Each logo says which background it suits.
3. `cache_metadata`: A cached copy, about 5 hours old.

`GET /v1/web/styleguide?domain=linear.app` (Context.dev Styleguide)

```json
{
  "styleguide": {
    "colors": { "accent": "#7170ff", "background": "#08090a", … },
    "typography": {
      "headings": {
        "h1": { "fontFamily": "Inter Variable", "fontSize": "72px", … }
      }
    },
    "components": { "button": { "primary": { "borderRadius": "9999px", … } } }
  }
}
```

1. `accent`: Colors by role, read from the CSS.
2. `h1`: Firecrawl read the same h1 as 64px.
3. `borderRadius`: Button and card styles for code.

`POST /v2/scrape` (Firecrawl branding format)

```json
{
  "colorScheme": "dark",
  "colors": {
    "primary": "#E4F222",
    "background": "#08090A"
  },
  "fonts": [{ "family": "Inter", "role": "body" }, …],
  "personality": { "tone": "minimalist", "energy": "low", … },
  "confidence": { "overall": 0.9216666666666666, … }
}
```

1. `primary`: In no other response for Linear.
2. `personality`: The only voice field: three words.
3. `confidence`: Not in the documented fields.

`GET /v2/brands?domain=linear.app` (Logo.dev Brand API)

```json
{
  "data": {
    "name": "Linear",
    "description": "Linear is a product development platform for …",
    "indexed_at": "2026-09-21T03:13:20.59294Z",
    "colors": [{ "hex": "#000000" }, { "hex": "#ffffff" }],
    "brandmark": {
      "url": "https://img.logo.dev/assets/U-5Jfqg…",
      "expires_at": "2026-11-12T19:00:00Z"
    }
  }
}
```

1. `indexed_at`: Last refreshed in September.
2. `expires_at`: The link stops working. Store the file.

`get_brief over MCP` (Rainbrand Brief)

```json
{
  "status": "completed",
  "skill_id": "e16b6239-d74f-4922-97c1-d65c6ae3d882",
  "created_at": "2026-11-12T00:00:04.667Z",
  "guidance": "… As of November 11, 2026, do not call it newly launched …",
  "assets": [{ "kind": "font", … }, { "kind": "logo", … }, …]
}
```

1. `skill_id`: The brand version that this Brief came from.
2. `guidance`: Claim limits written for this task.
3. `kind`: A monochrome icon, chosen for a dark section.

`get_brand over MCP` (Rainbrand Brand Skill)

```json
{
  "version_id": "e16b6239-d74f-4922-97c1-d65c6ae3d882",
  "profile": {
    "palette": [
      { "hex": "#F4F5F8", "group": "Official brand colors", … },
      { "hex": "#7170FF", "group": "Website accent", … },
      …
    ],
    "logo_catalog": { "items": [{ "form": "lockup", "contrasts_best_on": ["light"] }, …] }
  },
  "files": ["references/copywriting.md", "references/logo.md", …]
}
```

1. `group`: Says which colors are official.
2. `contrasts_best_on`: Which background each logo suits.
3. `files`: Written rules, as guidance files.

## Where does the context come from?

The source decides what a response is good for. Context that an API reads from a public website suits a prospect, or a company that you never worked with. For work under the name of a brand, find out if the response carries the brand's own guidance and files. This site calls the two kinds observed context and maintained context. The vendors do not use these terms.

| | Observed | Maintained |
| --- | --- | --- |
| What it is | Read from the public website of the company | Prepared from sources added for the brand |
| Whose brand | Any company, by its domain | Brands you or your customers add |
| Guidance | Tones to avoid, at most | For one task, or the whole brand |
| Files | Logo and image addresses from the site | Selected assets, or asset references |
| Version | A read date, or the age of a cached copy | A Brand Skill version ID |
| Endpoints | Brandfetch, Context.dev, Firecrawl, Logo.dev | Rainbrand Brief, Rainbrand Brand Skill |
| Use it for | Prospects, sales records, a first look at any company | Repeated work under your brand or the brands of your customers |

Pick observed context for prospects, sales records, and a first look at any company:

- Brandfetch Brand Context API for voice and positioning
- Brandfetch Brand API, Context.dev, or Logo.dev for logos and colors
- Context.dev Styleguide or Firecrawl for the CSS of a site

Pick maintained context for repeated work under your own brand or the brands of your customers. Use Rainbrand, with a Brief for each task or the Brand Skill for the whole brand. Rainbrand supplies the guidance and assets, and you keep your model and workflow.

The page [Which brand context API do you need?](https://brandcontextapi.com/which-brand-context-api) gives a pick for each situation.

## Which endpoint returns which field?

Each filled cell shows the key that held the field in the response of that endpoint for linear.app. An empty cell means that the response did not include the field.

Each cell is the key that holds the field in the response of that endpoint for linear.app. The word "none" means that the response did not include the field.

| Field | Brandfetch Context (observed) | Brandfetch Brand (observed) | Context.dev Brand (observed) | Context.dev Styleguide (observed) | Firecrawl branding (observed) | Logo.dev Brand (observed) | Rainbrand Brief (maintained) | Rainbrand Brand Skill (maintained) |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| Name and description | `identity.description` | `description` | `brand.description` | none | `brandName` | `data.description` | `guidance` | `profile.name` |
| Voice and tone | `brand.voice` | none | none | none | `personality.tone` | none | `guidance` | `copywriting.md` |
| Positioning | `positioning` | none | none | none | `personality.targetAudience` | none | `guidance` | `positioning.md` |
| Logos | none | `logos[]` | `brand.logos[]` | none | `images.logo` | `data.logo` | `assets[]` | `profile.logo_catalog` |
| Colors | none | `colors[]` | `brand.colors[]` | `styleguide.colors` | `colors` | `data.colors[]` | `guidance` | `profile.palette` |
| Type | none | `fonts[]` | none | `styleguide.typography` | `typography` | none | `guidance` | `profile.typography` |
| Spacing and components | none | none | none | `styleguide.components` | `components` | none | none | `interface-design.md` |
| Rules and claims | `brand.voice.avoid` | none | none | none | none | none | `guidance` | `logo.md` |
| Images and files | none | `images[]` | `brand.backdrops[]` | `styleguide.fontLinks` | `images` | `data.social_banners[]` | `assets[]` | `files[]` |
| Dates and versions | `meta.resolved_at` | none | `cache_metadata` | `cache_metadata` | none | `data.indexed_at` | `skill_id` | `version_id` |

## One company, four main colors

On the same day, the four observed vendors returned four different main colors for Linear. Only the maintained palette shows which colors Linear calls its own.

| Endpoint | Main color returned | What it is |
| --- | --- | --- |
| Firecrawl branding | #E4F222 as `primary` | A yellow-green from the page. No other response has it |
| Context.dev Brand | #7170ff, named "Stargate Shimmer" | The violet accent of the website, with a generated name |
| Brandfetch Brand API | #222326 and #F4F5F8 | A dark color and a light color, the pair that Linear calls official |
| Logo.dev Brand API | #000000 and #ffffff | Black and white |
| Rainbrand Brand Skill | #F4F5F8 and #222326 as "Official brand colors", #7170FF as "Website accent" | Grouped, with a note about the use of each color |

The [Colors](https://brandcontextapi.com/fields/colors) page shows every value and its source.

## [Responses](https://brandcontextapi.com/responses)

- [Brandfetch Brand Context API](https://brandcontextapi.com/responses/brandfetch-brand-context-api)
- [Brandfetch Brand API](https://brandcontextapi.com/responses/brandfetch-brand-api)
- [Context.dev Brand](https://brandcontextapi.com/responses/context-dev-brand)
- [Context.dev Styleguide](https://brandcontextapi.com/responses/context-dev-styleguide)
- [Firecrawl branding format](https://brandcontextapi.com/responses/firecrawl-branding)
- [Logo.dev Brand API](https://brandcontextapi.com/responses/logo-dev-brand-api)
- [Rainbrand Brief](https://brandcontextapi.com/responses/rainbrand-brief)
- [Rainbrand Brand Skill](https://brandcontextapi.com/responses/rainbrand-brand-skill)

## [Fields](https://brandcontextapi.com/fields)

- [Name and description](https://brandcontextapi.com/fields/name-and-description)
- [Voice and tone](https://brandcontextapi.com/fields/voice-and-tone)
- [Positioning, audience and competitors](https://brandcontextapi.com/fields/positioning)
- [Logos](https://brandcontextapi.com/fields/logos)
- [Colors](https://brandcontextapi.com/fields/colors)
- [Type](https://brandcontextapi.com/fields/type)
- [Spacing and components](https://brandcontextapi.com/fields/spacing-and-components)
- [Rules and claims](https://brandcontextapi.com/fields/rules-and-claims)
- [Images and files](https://brandcontextapi.com/fields/images-and-files)
- [Dates and versions](https://brandcontextapi.com/fields/dates-and-versions)

## [Recipes](https://brandcontextapi.com/recipes)

- [Brand context in a system prompt](https://brandcontextapi.com/recipes/system-prompt)
- [JSON or Markdown?](https://brandcontextapi.com/recipes/json-or-markdown)
- [Cache, refresh and pin a version](https://brandcontextapi.com/recipes/cache-refresh-and-pin)
- [Slow, empty and failed responses](https://brandcontextapi.com/recipes/slow-empty-and-failed-responses)
- [Personalize for a prospect's brand](https://brandcontextapi.com/recipes/personalize-for-a-prospect)
- [Customer brands in your product's jobs](https://brandcontextapi.com/recipes/customer-brands-in-your-product)
- [Brand context for agents over MCP](https://brandcontextapi.com/recipes/agents-over-mcp)

## [Templates](https://brandcontextapi.com/templates)

- [A brand context JSON Schema](https://brandcontextapi.com/templates/brand-context-json-schema)
- [A system prompt that takes brand context](https://brandcontextapi.com/templates/system-prompt)
- [Adapters from each response to the schema](https://brandcontextapi.com/templates/adapters)

---

Source: https://brandcontextapi.com/
Last updated: 2026-11-12
Published by The Brand Object. The Brand Object is run by Rainbrand, which makes two of the endpoints described here. Their pages follow the same rules as the others.
