---
title: "Resolve a brand"
method: GET
path: "/v1/web/brand"
tags: ["Brand"]
---

# Resolve a brand

`GET /v1/web/brand`

## Request

- Base URL: `https://api.hydrafetch.com`
- URL: `https://api.hydrafetch.com/v1/web/brand`
- Auth: API key in header `X-API-Key`

Everything needed to render a company: logos that suit light and dark backgrounds, its real colours, name, description and social presence. Resolved on the spot if we have never seen the domain, and served from storage after that. Every field states whether the company declared it or we harvested it.

## Query parameters

- `domain` string, required

## Response `200`

The resolved brand.

- BrandResponseDto
  - `data` WebBrandDataDto, required
    - `domain` string, required: The canonical domain for this company.
    - `queriedDomain` string: Only when you asked for a different domain that resolved here.
    - `aliases` string[]: Only when this brand is known by more than its canonical domain.
    - `name` object, nullable, required
    - `description` object, nullable, required
    - `tagline` object, nullable, required
    - `naics` BrandNaicsDto
      - `code` string, required
      - `title` string, required
      - `level` 'sector' | 'industry_group' | 'national_industry', required: How specific the answer is. `industry_group` is the 4-digit level, `national_industry` the 6-digit one.
      - `sector` BrandNaicsSectorDto, required
        - `code` string, required
        - `title` string, required
      - `confidence` number, required: How much evidence the classification found, not a model's self-report.
    - `assets` BrandAssetDto[], required
      - `kind` 'wordmark' | 'symbol' | 'favicon' | 'backdrop', required: What kind of mark this is.
      - `variant` 'light' | 'dark' | 'mono', required: Which background the asset is legible on. `mono` is a single-colour mark that works on both.
      - `url` string, required: Public and immutable, so it can be embedded anywhere.
      - `format` string, required
      - `resolution` BrandResolutionDto, required
        - `width` number, required
        - `height` number, required
        - `aspectRatio` number, required: Width over height — what a caller reserves layout space with.
      - `colors` BrandColorDto[], required: The colours in the asset itself. A logo's own palette is the brand's, by definition.
        - `hex` string, required
        - `name` string: Nearest CSS colour name, so a swatch reads as something and not only as six digits.
        - `weight` number, required: How much the site itself uses it — the ranking that makes this the brand's colour.
        - `role` 'primary' | 'accent' | 'background' | 'text'
      - `blurhash` object, nullable, required: Tiny placeholder hash, so a client can render something before the image lands.
    - `colors` BrandColorDto[], required
      - `hex` string, required
      - `name` string: Nearest CSS colour name, so a swatch reads as something and not only as six digits.
      - `weight` number, required: How much the site itself uses it — the ranking that makes this the brand's colour.
      - `role` 'primary' | 'accent' | 'background' | 'text'
    - `fonts` BrandFontDto[], required
      - `family` string, required
      - `weight` number, required: How much of the site's type this face sets, 1 for the most-used one.
      - `role` 'heading' | 'body': Absent when the page does not say which the face is.
    - `socials` BrandSocialDto[], required
      - `platform` string, required
      - `url` string, required
      - `handle` string: The account name, without the `@`.
    - `links` BrandLinksDto, required
      - `pricing` string
      - `blog` string
      - `careers` string
      - `contact` string
      - `privacy` string
      - `terms` string
      - `docs` string
    - `email` string
    - `legalName` string
    - `sources` object, required: Per-field provenance, keyed by field name. Lets you tell "their markup says this" from "a model guessed this".
    - `resolvedAt` object, nullable, required

## Other responses

- `400`: The request body or query failed validation.
- `401`: The X-API-Key header is missing, malformed, or names a key that no longer exists.
- `402`: The workspace has no credits left for this request. Nothing was charged and nothing was fetched.
- `403`: The key is valid but the workspace may not make this request.
- `404`: No such job, or the id belongs to another workspace.
- `422`: The target site did not respond, or we could not read that page. This is a fact about that URL rather than a fault on our side, and retrying it will not change the answer. When details.retryAfterSeconds is present, asking again before then returns this same answer. Nothing was charged.
- `429`: The workspace exceeded its per-minute request limit. Read the RateLimit headers, or Retry-After on this response, and retry after the window resets.
- `500`: Unexpected server error. Nothing was charged.
- `503`: A dependency needed for the requested formats is unavailable. Safe to retry.

---

[API](https://skmtc.dev/hydrafetch/apis/hydrafetch-api.md) · [All operations](https://skmtc.dev/hydrafetch/apis/hydrafetch-api/llms.txt) · [OpenAPI document](https://skmtc.dev/hydrafetch/apis/hydrafetch-api/revisions/b28322984b4b?raw)
