> ## Documentation Index
> Fetch the complete documentation index at: https://docs.brandfetch.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Brand API (auto-detect)

> Get brand data using a Domain, Website URL, Email address, Brand ID, ISIN, Stock/ETF ticker, or Crypto symbol. Authenticate with an API key sent as `Authorization: Bearer <key>`, or pay for the single request with x402 or MPP: https://docs.brandfetch.com/agents/pay-per-request.

<Note>
  This endpoint auto-detects the identifier type. To prevent naming collisions,
  we recommend using one of the explicit type routes:

  * [By domain](/reference/brand-api-domain): `GET /v2/brands/domain/{domain}`
  * [By stock or ETF ticker](/reference/brand-api-ticker): `GET /v2/brands/ticker/{ticker}`
  * [By ISIN](/reference/brand-api-isin): `GET /v2/brands/isin/{isin}`
  * [By crypto symbol](/reference/brand-api-crypto): `GET /v2/brands/crypto/{symbol}`

  When using auto-detect, the identifier is resolved in the following order:
  domain → stock/ETF ticker → ISIN → crypto symbol.

  The API reads an identifier that contains `@` (or the percent-encoded
  `%40`) as an email address. It resolves the address to its registrable
  domain. `john@example.brandfetch.com` returns the same response as
  `brandfetch.com`. A mailbox provider's address resolves like any other
  address: a gmail.com address returns the brand of gmail.com. The API does
  not tell you whether the domain
  is the contact's company. A malformed address returns `400`, and the API does
  not bill the request. The API does not store the address. Your request logs
  show only the resolved domain. This endpoint and the
  [Brand Context API](/reference/brand-context-api) accept email addresses.
  The explicit type routes refuse an email address with a `400`.

  The API reads an identifier that starts with `http://` or `https://` (or the
  percent-encoded `https%3A%2F%2F`) as a website URL. The API also reads a
  domain with a path (`brandfetch.com/developers/pricing`) as a website URL.
  The API resolves the URL to the registrable domain of its host. The scheme,
  `www.`, port, path, and query do not change the result.

  `https://www.brandfetch.com/developers/pricing` returns the same response as
  `brandfetch.com`. A URL whose host is not a domain name returns `400`, and
  the API does not bill the request. The API does not store the URL. Your
  request logs show only the resolved domain. This endpoint and the
  [Brand Context API](/reference/brand-context-api) accept website URLs. The
  explicit type routes refuse a website URL with a `400`.
</Note>


## OpenAPI

````yaml GET /v2/brands/{identifier}
openapi: 3.0.1
info:
  title: Brandfetch 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
security: []
paths:
  /v2/brands/{identifier}:
    get:
      tags:
        - brands
      summary: Get brand data
      description: >-
        Get brand data using a Domain, Website URL, Email address, Brand ID,
        ISIN, Stock/ETF ticker, or Crypto symbol. Authenticate with an API key
        sent as `Authorization: Bearer <key>`, or pay for the single request
        with x402 or MPP: https://docs.brandfetch.com/agents/pay-per-request.
      operationId: getBrandData
      parameters:
        - name: identifier
          in: path
          description: >-
            Identifier to retrieve brand data. Accepted formats:


            - **Domain:** `nike.com`

            - **Email address:** `john@example.brandfetch.com`

            - **Website URL:** `https://www.brandfetch.com/developers/pricing`

            - **Brand ID:** `id_0dwKPKT`

            - **Stock or ETF ticker:** `NKE`

            - **ISIN:** `US6541061031`

            - **Crypto symbol:** `BTC`, `ETH`


            **Note:** When using this generic endpoint, the identifier is
            resolved in the following order: `domain` → `ticker` → `isin` →
            `crypto`. To avoid naming collisions, use explicit type routes:
            `/v2/brands/{type}/{identifier}` where `type` can be `domain`,
            `ticker`, `isin`, or `crypto`.


            **Email addresses:** The API reads an identifier that contains `@`
            (or the percent-encoded `%40`) as an email address. It resolves the
            address to its registrable domain. `john@example.brandfetch.com`
            returns the same response as `brandfetch.com`. A mailbox provider's
            address resolves like any other address: a gmail.com address returns
            the brand of gmail.com. The API does not tell you whether the domain
            is the contact's company. A malformed address returns `400`, and the
            API does not bill the request. Refused lookups do not count against
            your quota. The API does not store the address. Your request logs
            show only the resolved domain. This endpoint and the Brand Context
            API accept email addresses. The explicit type routes refuse an email
            address with a `400`.


            **Website URLs:** The API reads an identifier that starts with
            `http://` or `https://` (or the percent-encoded `https%3A%2F%2F`) as
            a website URL. The API also reads a domain with a path
            (`brandfetch.com/developers/pricing`) as a website URL. The API
            resolves the URL to the registrable domain of its host. The scheme,
            `www.`, port, path, and query do not change the result.
            `https://www.brandfetch.com/developers/pricing` returns the same
            response as `brandfetch.com`. A URL whose host is not a domain name
            returns `400`, and the API does not bill the request. Refused
            lookups do not count against your quota. The API does not store the
            URL. Your request logs show only the resolved domain. This endpoint
            and the Brand Context API accept website URLs. The explicit type
            routes refuse a website URL with a `400`.
          required: true
          schema:
            type: string
          examples:
            domain:
              summary: Domain
              value: nike.com
            email:
              summary: Email address
              value: john@example.brandfetch.com
            url:
              summary: Website URL
              value: https://www.brandfetch.com/developers/pricing
            brandId:
              summary: Brand ID
              value: id_0dwKPKT
            ISIN:
              summary: ISIN
              value: US6541061031
            stockSymbol:
              summary: Stock or ETF ticker
              value: NKE
            cryptoSymbol:
              summary: Crypto symbol
              value: BTC
        - name: allowNsfw
          in: query
          required: false
          description: >-
            Brandfetch evaluates brands for NSFW content and reserves the right
            to not return inappropriate brands. Depending on the severity, a
            brand may either not be returned at all (`404`), or be returned with
            its `isNsfw` property set to `true`. The `allowNsfw` query parameter
            lets you control this behavior:


            - **Not set** (default) — Some NSFW brands are not returned (`404`),
            others are returned with `isNsfw: true`.

            - **`true`** — Returns the brand regardless of its NSFW status.

            - **`false`** — Filters out all brands flagged as NSFW (returns
            `404`).
          schema:
            type: boolean
        - name: cachedOnly
          in: query
          description: >-
            When `true`, the Brand API answers from its store alone. A brand
            that is already indexed is returned as usual, and a brand that is
            not is answered with `204 No Content` instead of being indexed live,
            which can take several seconds. Nothing is crawled, and a ticker,
            ISIN, or crypto symbol that is not yet indexed is not resolved
            either. A `204` does not count towards your quota. Any value other
            than `true`, including omitting the parameter, keeps the default
            behaviour of indexing the brand live on a miss. Defaults to `false`.
          required: false
          schema:
            type: boolean
            default: false
          examples:
            cachedOnly:
              summary: Cached only (skip crawling)
              value: true
      responses:
        '200':
          headers:
            PAYMENT-RESPONSE:
              description: >-
                Present on responses paid with x402: the base64-encoded
                settlement receipt (`success`, `transaction`, `network`,
                `payer`).
              schema:
                type: string
            Payment-Receipt:
              description: >-
                Present on responses paid with MPP: the base64url-encoded
                receipt (`method`, `reference`, `status`, `timestamp`). Such
                responses also carry `Cache-Control: private`.
              schema:
                type: string
          description: >-
            Successful request. A request paid with MPP whose response was lost
            can be retried with the same credential for two minutes: it is
            served from the payment already taken and not charged again.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BrandResponse'
        '204':
          description: >-
            Returned when `cachedOnly=true` and the brand is not yet indexed.
            The response body is empty. Because live indexing is disabled there
            is nothing to return, and the request does not count towards your
            quota. Retry without `cachedOnly` to index the brand live.
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    enum:
                      - Bad Request
        '401':
          description: >-
            Unauthorized. Returned when the `Authorization` header is present
            but malformed. A request with no credential at all receives a `402`
            with a payment challenge instead.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    enum:
                      - Unauthorized
        '402':
          description: >-
            Payment required. Returned when the request carries no credential:
            no API key, no x402 payment, no MPP credential. The
            `PAYMENT-REQUIRED` header prices this request at $0.10 in USDC on
            Base, and each `WWW-Authenticate: Payment` challenge quotes the same
            price over MPP. Pay either way, or send an API key. Also returned,
            with a `reason`, when a `PAYMENT-SIGNATURE` or an `Authorization:
            Payment …` credential was presented but the payment was not accepted
            or could not be settled. Nothing is charged in that case. See
            https://docs.brandfetch.com/agents/pay-per-request.
          headers:
            PAYMENT-REQUIRED:
              description: >-
                The x402 v2 payment challenge: base64-encoded JSON whose
                `accepts` array lists how to pay (scheme `exact`, network
                `eip155:8453`, the USDC asset, the `amount` in USDC's six
                decimals and the receiving `payTo` address). Sign the payment
                with an x402 client and retry with the result in a
                `PAYMENT-SIGNATURE` header. See
                https://docs.brandfetch.com/agents/pay-per-request.
              schema:
                type: string
            Cache-Control:
              description: >-
                `no-store` — a challenge is issued for one request and must not
                be cached.
              schema:
                type: string
            WWW-Authenticate:
              description: >-
                The MPP challenge: one `Payment` challenge for USDC.e on Tempo,
                which settles from a cent. Answer it with an `Authorization:
                Payment …` credential. Cards start at $0.50, above this price,
                so no card challenge is issued here; a card can pay for standing
                access on `POST /v2/agents/access`.
              schema:
                type: string
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/PaymentChallenge'
                  - $ref: '#/components/schemas/PaymentRejected'
        '404':
          description: >-
            <Not Found> or <Invalid Domain Name>. With `x-bf-error:
            crawl_queued`, we did not hold the brand yet and have started
            collecting it: retry the same request in a minute or two; if the
            brand could be collected, the retry is served it, and otherwise it
            answers an ordinary `404`, which a payment is charged for. Every
            `404` consumes an API credit. A payment presented with a `404` is
            settled, except when the response carries `x-bf-error:
            crawl_queued`: that payment is not charged, the body carries a
            `payment` object saying so, and the same payment can be presented
            again for the retry while it is still valid.
          headers:
            x-bf-error:
              description: >-
                Present when the brand is being collected; a retry shortly after
                is usually served it.
              schema:
                type: string
                enum:
                  - crawl_queued
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    enum:
                      - <Not Found> or <Invalid Domain Name>
                  payment:
                    type: object
                    description: >-
                      Present on a paid request answered with `x-bf-error:
                      crawl_queued`.
                    properties:
                      charged:
                        type: boolean
                        enum:
                          - false
                      documentation:
                        type: string
                        format: uri
                      message:
                        type: string
        '429':
          description: API key quota exceeded
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    enum:
                      - API key quota exceeded
      security:
        - bearerAuth: []
        - x402Payment: []
        - mppPayment: []
components:
  schemas:
    BrandResponse:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for the brand
          nullable: false
        name:
          type: string
          description: Brand name
          nullable: true
        domain:
          type: string
          description: Brand website URL
          nullable: false
        claimed:
          type: boolean
          description: >-
            Set to true if the owner of the brand claimed its brand profile on
            [Brandfetch](https://brandfetch.com)
          nullable: false
        description:
          type: string
          description: Brand description
          nullable: true
        longDescription:
          type: string
          description: Brand long description
          nullable: true
        links:
          type: array
          items:
            type: object
            properties:
              name:
                type: string
                description: Name of the social media platform
                nullable: false
                enum:
                  - twitter
                  - facebook
                  - instagram
                  - github
                  - youtube
                  - linkedin
                  - crunchbase
              url:
                type: string
                description: URL of the social media profile
                nullable: false
          description: Social media links of the brand
          nullable: false
        logos:
          type: array
          items:
            type: object
            properties:
              theme:
                type: string
                description: >-
                  See logo theme. Possible values:

                  - **dark**: A dark logo should be displayed on a light
                  background (e.g. #ffffff)

                  - **light**: A light logo should be displayed on a dark
                  background (e.g. #000000)
                nullable: true
                enum:
                  - dark
                  - light
                  - null
              formats:
                type: array
                items:
                  $ref: '#/components/schemas/Format'
                description: A list of format objects containing files in different formats
                nullable: false
              tags:
                type: array
                items:
                  type: object
                  properties: {}
                description: >-
                  A list of string attached to the logo. For example, if the
                  logo icon is "photographic" rather than a logomark. Possible
                  values:

                  - **photographic**: The asset image is photographic in nature.
                  For example, if this tag is present on an icon or Logo asset,
                  it means the image has photographic qualities and is likely
                  not a typical brand logotype or logomark graphic.

                  - **portrait**: The asset image is a portrait or
                  portrait-like. This is often the case when a sole
                  proprietorship or small brand uses a self portrait as their
                  logo or icon.
                nullable: false
              type:
                type: string
                description: >-
                  See logo type. Possible values:

                  - **icon**: The icon that is used on social profiles (e.g.
                  [Tesla's social
                  icon](https://cdn.brandfetch.io/tesla.com/icon))

                  - **logo**: The horizontal logo, seen on large surfaces (e.g.
                  [Tesla's
                  logo](https://asset.brandfetch.io/id2S-kXbuK/idAJ5NMLPG.svg))

                  - **symbol**: The universal mark that abstractly represents
                  the brand (e.g. [Tesla's T
                  symbol](https://asset.brandfetch.io/id2S-kXbuK/idM-t614MT.svg))

                  - **other**: Other is used to refer to any type of logo that
                  is not the primary one. (e.g. Amazon Kindle Logo)
                nullable: false
                enum:
                  - icon
                  - logo
                  - symbol
                  - other
          description: Logos, symbols & icons of the brand
          nullable: false
        colors:
          type: array
          items:
            type: object
            properties:
              hex:
                type: string
                description: Color HEX code
                nullable: false
              type:
                type: string
                description: >-
                  Type of the color. Possible values:

                  - **accent**: The main color that represents the brand (used
                  to draw attention e.g. call to action button)

                  - **dark**: The darker color of the brand (used for surfaces
                  or backgrounds)

                  - **light**: The lighter color of the brand (used for surfaces
                  or backgrounds)

                  - **brand**: The full-color scheme of the brand (used to
                  create color palettes users can pick from)
                nullable: false
                enum:
                  - accent
                  - dark
                  - light
                  - brand
              brightness:
                type: number
                description: >-
                  Color brightness. Calculated based on the standard formula
                  0.2126*R + 0.7152*G + 0.0722*B
                nullable: false
                format: float
          description: Accent, dark, light & palette colors of the brand
          nullable: false
        fonts:
          type: array
          items:
            type: object
            properties:
              name:
                type: string
                description: Font family
                nullable: true
              type:
                type: string
                description: Font type
                nullable: false
                enum:
                  - title
                  - body
              origin:
                type: string
                description: >-
                  See font origin. Possible values:

                  - **google**: The font that's hosted on Google Font

                  - **custom**: The font that has been uploaded by the brand
                  itself

                  - **system**: The font that's already installed on the user's
                  operating system (see example)
                enum:
                  - google
                  - custom
                  - system
              originId:
                type: string
                description: Font origin ID
                nullable: true
              weights:
                type: array
                items:
                  type: object
                  properties: {}
          description: Title & body fonts of the brand
          nullable: false
        images:
          type: array
          items:
            type: object
            properties:
              formats:
                type: array
                items:
                  $ref: '#/components/schemas/Format'
                description: Available formats of the image
                nullable: false
              tags:
                type: array
                items:
                  type: object
                  properties: {}
                description: Tags associated with the image
                nullable: false
              type:
                type: string
                description: >-
                  Image type. `picture` entries are photography published on the
                  brand's own site and carry `pictureMetadata`.
                nullable: false
                enum:
                  - banner
                  - other
                  - picture
              pictureMetadata:
                type: object
                description: >-
                  Present on `picture` entries only. Lets you choose between a
                  brand's pictures without fetching the files first.
                properties:
                  score:
                    type: number
                    description: How representative of the brand we consider this picture
                    nullable: false
                  rank:
                    type: integer
                    description: >-
                      Position of this picture among the brand's pictures, by
                      descending score
                    nullable: false
                  naturalWidth:
                    type: integer
                    description: Intrinsic width of the image in pixels
                    nullable: false
                  naturalHeight:
                    type: integer
                    description: Intrinsic height of the image in pixels
                    nullable: false
                  alt:
                    type: string
                    description: Alt text published with the image on the brand's site
                    nullable: false
                  sourceUrl:
                    type: string
                    description: >-
                      URL of the image on the brand's own site. A `picture` can
                      arrive with an empty `formats` array, in which case this
                      is how you reach the image.
                    nullable: false
                  imageCategory:
                    type: string
                    description: Category we classified the image into
                    nullable: true
                  categoryConfidence:
                    type: number
                    description: Confidence in the assigned `imageCategory`
                    nullable: true
                nullable: false
          description: Banner, picture & other images of the brand
          nullable: false
        qualityScore:
          type: number
          description: >-
            Score between 0-1 which indicates the quality of the data for the
            given brand. Useful when you don't want to show lower quality brands
            to your users.


            Lower 3rd is poor quality, middle 3rd is OK quality, upper 3rd is
            high quality. Lower scores indicate that a brand is less likely to
            be "real". For example, where google.com will score high,
            my-random-blog.com will score between 0.3-0.4. The score factors in
            things like data-recency, whether the brand has been claimed, if it
            has been manually verified by our team, the brand's domain ranking
            on the web, as well as other factors.


            Don't rely on a fixed score for any given brand. The way we
            calculate this score may change over time as we add new factors, or
            tweak the weights of existing ones such that a score for a given
            brand may change. However, they will remain aligned such that scores
            divide quality into thirds: low, medium, high.
          nullable: false
        company:
          type: object
          properties:
            employees:
              type: integer
              description: >-
                1 employee, 2-10 employees, 11-50 employees, 51-200 employees,
                201-500 employees, 501-1,000 employees, 1,001-5,000 employees,
                5,001-10,000 employees, 10,001+ employees
              enum:
                - 1
                - 2
                - 11
                - 51
                - 201
                - 501
                - 1001
                - 5001
                - 10001
              nullable: true
            financialIdentifiers:
              type: object
              description: Object holding financial identifiers
              properties:
                isin:
                  type: array
                  description: List of ISIN codes
                  items:
                    type: string
                ticker:
                  type: array
                  description: List of Stock or ETF ticker
                  items:
                    type: string
              nullable: true
            foundedYear:
              type: integer
              description: The year the brand was founded
              nullable: true
            industries:
              type: array
              items:
                $ref: '#/components/schemas/Industry'
              description: >-
                An array of industries, sorted by descending `score`. A
                sub-industry carries its top-level industry in `parent`. See the
                full list of industries
                [here](https://docs.google.com/spreadsheets/d/1N44nMfVtPCFM4ebTcmRlqbyxjFtDAGVuqd0mh0dcOU0/edit?usp=sharing)
            kind:
              type: string
              description: Organizational Structure
              enum:
                - EDUCATIONAL
                - GOVERNMENT_AGENCY
                - NON_PROFIT
                - PARTNERSHIP
                - PRIVATELY_HELD
                - PUBLIC_COMPANY
                - SELF_EMPLOYED
                - SELF_OWNED
              nullable: true
            location:
              $ref: '#/components/schemas/Location'
          description: The company object returns firmographic data related to the brand
          nullable: false
        isNsfw:
          type: boolean
          description: true when the brand is for adult content, e.g. is not safe for work
          nullable: false
        urn:
          type: string
          description: Uniform Resource Name for the brand
          nullable: false
    PaymentChallenge:
      type: object
      description: >-
        Body of the 402 an unauthenticated request receives when the route can
        be paid for per request. The machine-readable challenges are in the
        `PAYMENT-REQUIRED` header for x402 and the `WWW-Authenticate: Payment`
        header for MPP; this body says the same in prose.
      properties:
        message:
          type: string
          example: >-
            Payment required. Either authenticate with a Brandfetch API key
            (Authorization: Bearer <key>) or pay for this request with x402:
            sign the payment described in the PAYMENT-REQUIRED header and retry
            with a PAYMENT-SIGNATURE header.
        documentation:
          type: string
          example: https://docs.brandfetch.com/agents/pay-per-request
        pricing:
          type: object
          properties:
            route:
              type: string
              example: GET /v2/brands/*
            price:
              type: string
              example: $0.10
        resource:
          type: string
          description: The URL the payment is for.
          example: https://api.brandfetch.io/v2/brands/nike.com
        standingAccess:
          type: string
          example: >-
            For many requests, POST /v2/agents/access (paid the same way)
            provisions an API key preloaded with prepaid credits.
    PaymentRejected:
      type: object
      description: >-
        Body of the 402 a request carrying a `PAYMENT-SIGNATURE`, or an
        `Authorization: Payment …` credential, receives when the payment was not
        accepted or could not be settled. The resource was not served. Nothing
        was charged, so pay afresh and retry, unless the `message` says to retry
        the exact request first (a refused settlement of a standing-access
        purchase).
      properties:
        message:
          type: string
          example: >-
            The payment was not accepted, so the request was not served and
            nothing was charged. Sign a new payment for the PAYMENT-REQUIRED
            header and retry.
        reason:
          type: string
          description: >-
            The payment service's reason code, e.g. `insufficient_funds`. An MPP
            credential adds `credential_spent` (it already paid for a request),
            `credential_in_use` (another request is settling it; retry this
            exact request in a moment) `credential_malformed` (it could not be
            read) and `challenge_invalid` (it answers a challenge this API did
            not issue; answer a fresh one). A Tempo transaction that cannot
            complete adds `nonce_already_used`, `transaction_rejected`,
            `transaction_reverted` and `transaction_expired`: the transfer did
            not happen, so answer a fresh challenge.
          example: insufficient_funds
        documentation:
          type: string
          example: https://docs.brandfetch.com/agents/pay-per-request
    Format:
      type: object
      properties:
        src:
          type: string
          description: File source
        format:
          type: string
          enum:
            - svg
            - webp
            - png
            - jpeg
          description: File format
        height:
          type: integer
          nullable: true
          description: File height in pixels
        width:
          type: integer
          nullable: true
          description: File width in pixels
        size:
          type: integer
          description: File size in bytes
        background:
          type: string
          enum:
            - transparent
          nullable: true
          description: Indicates if the file has a transparent background
    Industry:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for the industry
        score:
          type: number
          format: float
          description: >-
            Probability, between 0 and 1, that the brand belongs to this
            industry. A value of 1 marks an industry that was set rather than
            predicted, for example by a curator, an import or a content rule.
        slug:
          type: string
          description: URL friendly identifier
        name:
          type: string
          description: Name of the industry
        emoji:
          type: string
          description: An emoji for the industry
        parent:
          description: If the object is a sub-category, the parent industry
          items:
            $ref: '#/components/schemas/IndustryParent'
          nullable: true
    Location:
      type: object
      description: Company's headquarter information
      properties:
        city:
          type: string
          description: Headquarter city
          nullable: true
        country:
          type: string
          description: Headquarter country
          nullable: true
        countryCode:
          type: string
          description: Headquarter country code (ISO 3166-1 alpha-2)
          nullable: true
        region:
          type: string
          description: Headquarter region
          nullable: true
        state:
          type: string
          description: Headquarter state
          nullable: true
        subregion:
          type: string
          description: Headquarter subregion
          nullable: true
    IndustryParent:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for the industry
        slug:
          type: string
          description: URL friendly identifier
        name:
          type: string
          description: Name of the industry
        emoji:
          type: string
          description: An emoji for the industry
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
    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.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.