# Context.dev Brand

> The request and full response of Context.dev's Brand endpoint for linear.app: named colors, logos tagged by background, backdrops, cache age and plans.

| Fact | Value | Source |
| --- | --- | --- |
| Request | `POST https://api.context.dev/v1/brand/retrieve` | [docs](https://docs.context.dev/brand/overview) |
| Context | Observed: read from the public website of the company | |
| Auth | Authentication is a bearer API key in the Authorization header. | [source](https://docs.context.dev/api-reference/brand-intelligence/brand), 11 November 2026 |
| Not charged | Context.dev does not charge for validation, authentication, permission, 408, 429, and server errors. It charges for processed 404s on priced data APIs. | [source](https://docs.context.dev/account/credits), 11 November 2026 |
| Plans | As of 11 November 2026, Context.dev has a Free plan at $0 a month, and its cheapest paid plan, Developer, is $20 a month. Prefetching is not available on the Free plan. | [source](https://www.context.dev/pricing), 11 November 2026 |
| Over MCP | The Smithery integration page lists get-brand or brand-retrieve-unified as the MCP tool for retrieving company data. | [source](https://docs.context.dev/integrations/smithery), 11 November 2026 |

One POST with a domain returns a company profile that Context.dev reads from the website of the company. The profile has a description, a slogan, colors with generated names, and logos tagged by the background that they suit. It also has backdrop images, social links, an address and industry codes. It returns no voice, rules or type. The Context.dev [Styleguide](https://brandcontextapi.com/responses/context-dev-styleguide) reads the CSS of the site in a separate call. Until March 2026, Context.dev had the name brand.dev, and its files are still on `media.brand.dev`.

## The request

```bash
curl https://api.context.dev/v1/brand/retrieve \
  -H "Authorization: Bearer $CONTEXT_DEV_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"type": "by_domain", "domain": "linear.app"}'
```

The same route can also look up a brand by name, email, ticker, page URL or card transaction. `maxAgeMs` sets the maximum age of a cached copy. By default, the maximum is about three months, and `0` gets a new read. With `timeoutOpts`, a slow first read can return partial results.

## The response

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

```json
{
  "status": "ok",
  "brand": {
    "domain": "linear.app",
    "slogan": "The product development system for teams and agents.",
    "colors": [
      { "hex": "#7170ff", "name": "Stargate Shimmer", "source": "site" },
      { "hex": "#8c9494", "name": "Millennium Silver", "source": "logo" },
      …
    ],
    "logos": [{
      "url": "https://media.brand.dev/…svg",
      "mode": "light", "type": "logo",
      "resolution": { "width": 88, "height": 22 }
    }, …],
    "socials": [{ "type": "instagram", "url": "https://instagram.com/popular/linear-app-…" }, …],
    "industries": { "eic": [{ "subindustry": "Software (B2B)" }, …] }
  },
  "cache_metadata": { "status": "hit", "age_ms": 19071504 }
}
```

1. `name`: A generated name, not from Linear.
2. `source`: Where Context.dev found the color: the site or the logo.
3. `mode`: The background that the logo suits.
4. `url`: A search page, not the account of Linear.
5. `cache_metadata`: A cached copy, about 5 hours old.

We left out `key_metadata` because it describes the account of the caller. The full response is in [/data.json](https://brandcontextapi.com/data.json) under `responses.context-dev-brand`.

## What is not in it?

- Voice, rules and positioning are not in it, apart from industry codes.
- Type and component styles are not in it. For these, call the [Styleguide](https://brandcontextapi.com/responses/context-dev-styleguide).
- The time that the file links stay valid is not in it. The Context.dev docs do not give it.

## Empty and failed responses

| Status | What it means | Charged |
| --- | --- | --- |
| 400 `NOT_FOUND` | No match for the domain | No |
| 400 `WEBSITE_BLOCKED` and similar | Context.dev failed to read the site | Not stated |
| 401 | The API key is missing or not valid | No |
| 402 `USAGE_EXCEEDED` | Not enough credits. Older deployments can answer 401 | No |
| 408 | The request timed out | No |
| 422 | The deadline is too short for a domain that is not cached yet | Not stated |
| 429 `RATE_LIMITED` | Rate limit. Wait for `Retry-After` (1 to 60 seconds) | No |

Context.dev charges for successful and partial results. The Context.dev pricing FAQ says that calls without enough credits return `401 USAGE_EXCEEDED`. The Context.dev billing docs and API reference say 402.

## Plans

As of 11 November 2026, Context.dev has a Free plan with a limit of 2 concurrent requests and 10 a minute. Its cheapest paid plan, Developer, is $20 a month. You cannot prefetch a domain on the Free plan. [Context.dev's pricing page](https://www.context.dev/pricing) shows what each plan includes. For the Model Context Protocol (MCP), the Context.dev setup page names no tools. Smithery lists `get-brand`.

## Before you use it

The Context.dev docs say to let users correct uncertain company details. They also say to make sure that addresses and contact details are correct when accuracy is important. The Instagram link above is one reason.

---

Source: https://brandcontextapi.com/responses/context-dev-brand
Last updated: 2026-11-11
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.
