Brand API (Brandfetch) Viewer API
The viewer API from Brand API (Brandfetch) — 1 operation(s) for viewer.
The viewer API from Brand API (Brandfetch) — 1 operation(s) for viewer.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/brand-api:brand-api-viewer-api"
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Brandfetch Viewer API
description: Our APIs help you personalize your customer journey through unique branded experiences.
license:
name: MIT
version: 1.0.0
contact:
name: Brandfetch Support
url: https://brandfetch.com
email: support@brandfetch.io
servers:
- url: https://api.brandfetch.io
tags:
- name: viewer
paths:
/v2/viewer:
get:
summary: Get the authenticated viewer
description: 'Returns the identity of the credential used to authenticate the request: an API key or a user session token (JWT). Use it to verify a credential during integration setup (a `200` response means the credential is valid; `401`/`403` means it is missing, unknown, or revoked) and to display which API key and organization are connected. A key an agent bought also says how it was paid for and how to add credits. Requests to this endpoint are free: they never consume API credits.'
operationId: getViewer
tags:
- viewer
security:
- bearerAuth: []
responses:
'200':
description: The presented credential is valid. The `type` property indicates which kind of credential authenticated the request and determines the response shape.
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/ViewerApiKeyResponse'
- $ref: '#/components/schemas/ViewerUserResponse'
discriminator:
propertyName: type
mapping:
api-key: '#/components/schemas/ViewerApiKeyResponse'
user: '#/components/schemas/ViewerUserResponse'
examples:
apiKey:
summary: Authenticated with an API key
value:
type: api-key
id: id5ZQvmz9A
urn: urn:brandfetch:organization:cl5s9fps1275071ol9h7gs072m:api-key:id5ZQvmz9A
name: Production key
createdAt: '2026-05-12T09:14:07.000Z'
usage:
used: 1234
quota: 250000
organization:
id: cl5s9fps1275071ol9h7gs072m
urn: urn:brandfetch:organization:cl5s9fps1275071ol9h7gs072m
name: Acme Inc.
agentKey:
summary: Authenticated with an API key an agent bought
value:
type: api-key
id: idA9kR2mXw
urn: urn:brandfetch:organization:cm1q8x0b2000308l4f9ae2k7d:api-key:idA9kR2mXw
name: Agent Key
createdAt: '2026-09-24T18:02:51.000Z'
usage:
used: 37
quota: 2000
organization:
id: cm1q8x0b2000308l4f9ae2k7d
urn: urn:brandfetch:organization:cm1q8x0b2000308l4f9ae2k7d
name: Agent 0x0000…0a11
agent:
payer:
type: wallet
network: eip155:8453
address: '0x0000000000000000000000000000000000000a11'
topUp:
method: POST
url: https://api.brandfetch.io/v2/agents/access
note: Pay again from the same wallet to add credits to this key. Add rotateKey=true to replace the key while doing so, which is also how to recover a lost key.
user:
summary: Authenticated with a user session token
value:
type: user
id: cl2xkl6h90007w135197r5abc
urn: urn:brandfetch:user:cl2xkl6h90007w135197r5abc
name: Jane Doe
email: jane@acme.com
createdAt: '2025-11-02T16:41:12.000Z'
'401':
description: Unauthorized. The request carries no Authorization header. The body points an agent without a key at how to get access.
content:
application/json:
schema:
type: object
required:
- message
- agentAccess
properties:
message:
type: string
enum:
- Unauthorized
agentAccess:
type: object
description: 'Where an agent without an API key can get access: buy a key with an x402 or MPP payment, or pay for each request individually.'
required:
- description
- documentation
- offer
properties:
description:
type: string
description: The two ways in, in prose.
documentation:
type: string
format: uri
description: The agent access guide.
offer:
type: string
format: uri
description: 'The agent access endpoint. `GET` it to read the offer: the price, how to pay with each protocol, and the per-request alternative.'
example:
message: Unauthorized
agentAccess:
description: An agent without an API key can buy one with an x402 or MPP payment, or pay for each Brand API, Brand Context API and Transaction API request individually. The offer describes both.
documentation: https://docs.brandfetch.com/agents/overview
offer: https://api.brandfetch.io/v2/agents/access
'403':
description: Forbidden. The credential was rejected, e.g. an empty or unknown credential, a revoked API key or an expired session token.
components:
schemas:
ViewerApiKeyResponse:
type: object
title: API key
description: The authenticated API key.
required:
- type
- id
- urn
- name
- createdAt
- usage
- organization
properties:
type:
type: string
enum:
- api-key
description: The kind of credential that authenticated the request.
id:
type: string
description: Id of the API key.
urn:
type: string
description: URN of the API key, e.g. `urn:brandfetch:organization:{organization.id}:api-key:{id}`.
name:
type:
- string
- 'null'
description: Display name of the API key, as set in the dashboard.
createdAt:
type:
- string
- 'null'
format: date-time
description: When the API key was created.
usage:
type: object
description: API credit consumption for the current billing period, mirroring the `x-api-key-quota` and `x-api-key-approximate-usage` response headers of billable endpoints. Because this endpoint is free, `used` is the exact count, not approximated one ahead like the header.
required:
- used
- quota
properties:
used:
type: integer
description: API credits consumed so far in the current billing period.
quota:
type: integer
description: API credit allowance for the current billing period.
organization:
type: object
description: The organization the API key belongs to.
required:
- id
- urn
- name
properties:
id:
type: string
description: Id of the organization.
urn:
type: string
description: URN of the organization, e.g. `urn:brandfetch:organization:{id}`.
name:
type:
- string
- 'null'
description: Display name of the organization.
agent:
type: object
description: 'Present only on a key an agent bought through `POST /v2/agents/access`: how it was paid for, and how to add credits.'
required:
- payer
- topUp
properties:
payer:
description: 'What paid for the key: an x402 or Tempo wallet, which can pay again to add credits to this key, or a card, which buys a new key with every payment.'
oneOf:
- type: object
title: Wallet
required:
- type
- network
- address
properties:
type:
type: string
enum:
- wallet
network:
type: string
description: CAIP-2 network the wallet paid on, e.g. `eip155:8453` for x402 on Base.
address:
type: string
description: The wallet's address, in lowercase.
- type: object
title: Card
required:
- type
properties:
type:
type: string
enum:
- card
discriminator:
propertyName: type
topUp:
type: object
description: How to add credits.
required:
- method
- url
- note
properties:
method:
type: string
enum:
- POST
url:
type: string
format: uri
description: The agent access endpoint.
note:
type: string
description: What paying again does for this key.
ViewerUserResponse:
type: object
title: User
description: The authenticated user (dashboard session token).
required:
- type
- id
- urn
- name
- email
- createdAt
properties:
type:
type: string
enum:
- user
description: The kind of credential that authenticated the request.
id:
type: string
description: Id of the user.
urn:
type: string
description: URN of the user, e.g. `urn:brandfetch:user:{id}`.
name:
type:
- string
- 'null'
description: Full name of the user.
email:
type:
- string
- 'null'
description: Email address of the user.
createdAt:
type:
- string
- 'null'
format: date-time
description: When the user account was created.
securitySchemes:
bearerAuth:
type: http
scheme: bearer
clientId:
type: apiKey
in: query
name: c
description: Your Brand Search client ID, sent as the `c` query parameter. Get one at https://developers.brandfetch.com.
x402Payment:
type: apiKey
in: header
name: PAYMENT-SIGNATURE
description: 'An x402 payment for this one request: the signed payment for the challenge a bare request receives in its `PAYMENT-REQUIRED` header. Alternative to the bearer API key. See https://docs.brandfetch.com/agents/pay-per-request.'
mppPayment:
type: http
scheme: Payment
description: 'An MPP (Machine Payments Protocol) payment, settled through Stripe: the credential answering one of the `WWW-Authenticate: Payment` challenges a bare request receives. Alternative to the bearer API key. See https://docs.brandfetch.com/agents/pay-per-request#paying-with-mpp.'
x-service-info:
categories:
- brand-data
- company-data
- logos
docs:
homepage: https://docs.brandfetch.com
apiReference: https://docs.brandfetch.com/reference/brand-api
llms: https://brandfetch.com/llms.txt
x-provenance:
method: harvested
publisher: Brand API (Brandfetch)
source: https://api.brandfetch.io/openapi.json
note: split by refine-openapis from the provider's own published document, verified by fetch (openapi/_original/*.fetch.json);
stamped by stamp-openapi-provenance.py (roadmap#793)