{
"message": "usd must be a whole number of US dollars between 1 and 500."
}
{
"message": "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": "https://docs.brandfetch.com/agents/pay-per-request",
"pricing": {
"route": "GET /v2/brands/*",
"price": "$0.10"
},
"resource": "https://api.brandfetch.io/v2/brands/nike.com",
"standingAccess": "For many requests, POST /v2/agents/access (paid the same way) provisions an API key preloaded with prepaid credits."
}
{
"message": "Provisioning failed after your payment was accepted. Retry this exact request to receive your credential, or contact support with the payment reference.",
"paymentReference": "<string>"
}
Pay a whole number of US dollars to receive a Brandfetch organization, an API key holding 20 prepaid API credits per dollar, and an MCP bearer token. One credit is one Brand API, Brand Context API or Transaction API request. Call once without a payment to receive the 402: its PAYMENT-REQUIRED header is the x402 challenge (USDC on Base), its WWW-Authenticate header the MPP challenges (USDC.e on Tempo, or a card through a Stripe shared payment token). Pay one and repeat the request with the result — PAYMENT-SIGNATURE for x402, Authorization: Payment … for MPP. A wallet owns the organization it buys: paying again from the same wallet adds credits to the same key, and rotateKey=true replaces the key while doing so. A card names no wallet, so each card payment buys its own organization and key. The API key and MCP token are returned once, in the response that completes the purchase, and a payment is never charged twice. A later request carrying the same payment is answered 409 without them: a settled payment is public (an x402 signature is on-chain), so presenting it proves nothing about who sent it. If the purchase is answered with a 500 that says to retry, or with no response at all, retry the exact request at once: the first retry to succeed within three minutes of the payment receives the credential, unless it was already returned in a response the client lost, which is answered 409credential_already_delivered. The credits are granted whether or not the credential is returned. See https://docs.brandfetch.com/agents/overview.
POST
/
v2
/
agents
/
access
Buy standing access with an x402 or MPP payment
curl --request POST \ --url https://api.brandfetch.io/v2/agents/access \ --header 'PAYMENT-SIGNATURE: <api-key>'
{
"message": "usd must be a whole number of US dollars between 1 and 500."
}
{
"message": "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": "https://docs.brandfetch.com/agents/pay-per-request",
"pricing": {
"route": "GET /v2/brands/*",
"price": "$0.10"
},
"resource": "https://api.brandfetch.io/v2/brands/nike.com",
"standingAccess": "For many requests, POST /v2/agents/access (paid the same way) provisions an API key preloaded with prepaid credits."
}
{
"message": "Provisioning failed after your payment was accepted. Retry this exact request to receive your credential, or contact support with the payment reference.",
"paymentReference": "<string>"
}
Payment is an x402 payment in USDC on Base, or an MPP payment (USDC.e on Tempo, or a card through Stripe) — not an API key: call once without a credential to receive the 402 with both challenges, pay one, and repeat the request with PAYMENT-SIGNATURE or Authorization: Payment …. Pay per request walks through it with code.
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.
When true on a top-up, issues a new key holding the combined balance, returned once like any other. The wallet's earlier keys stop working once the new key has been returned, even if the client never receives that response. If the rotation is answered with an error instead of the new key, they keep working. A retry answered 409credential_already_delivered means the rotation completed: pay again with rotateKey=true for a new key.
Response
Topped up: the wallet already owned an organization. The credential is returned once, in this response.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Brandfetch","colors":{"primary":"#0084FF","light":"#FFFFFF","dark":"#0084FF"},"logo":{"light":"https://mintcdn.com/brandfetch-d7fb5329/-v6e41qD3Fxu16r-/logo/light.svg?fit=max\u0026auto=format\u0026n=-v6e41qD3Fxu16r-\u0026q=85\u0026s=4f8ea49e20e0d743c9a7754b14f01924","dark":"https://mintcdn.com/brandfetch-d7fb5329/-v6e41qD3Fxu16r-/logo/dark.svg?fit=max\u0026auto=format\u0026n=-v6e41qD3Fxu16r-\u0026q=85\u0026s=a447e4997a5b774c621a6b318290592f"},"favicon":"https://mintcdn.com/brandfetch-d7fb5329/XKUNPCS3k4Mv8APc/favicon.svg?fit=max\u0026auto=format\u0026n=XKUNPCS3k4Mv8APc\u0026q=85\u0026s=265eef38a8f076aea2e159f8e89605f9","api":{"openapi":"openapi.json"},"appearance":{"default":"dark"},"background":{"color":{"light":"#FAFAFA","dark":"#08090A"}},"navbar":{"links":[{"href":"https://brandfetch.com/developers/pricing","label":"Pricing"},{"href":"https://brandfetch.com/developers/contact/sales","label":"Contact sales"}],"primary":{"type":"button","label":"Dashboard","href":"https://developers.brandfetch.com"}},"footer":{"socials":{"x":"https://x.com/brandfetch","linkedin":"https://linkedin.com/company/brandfetch","instagram":"https://instagram.com/brandfetch"}},"seo":{"metatags":{"og:image":"https://developers.brandfetch.com/og_docs.webp"},"indexing":"navigable"},"fonts":{"heading":{"family":"Poppins"},"body":{"family":"Inter"}},"styling":{"eyebrows":"breadcrumbs","latex":true},"integrations":{"gtm":{"tagId":"GTM-MMMXMV7"}},"contextual":{"options":["copy","view","chatgpt","claude","cursor"],"display":"header"},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"brandfetch-d7fb5329","hasAudioNarration":false,"actualSubdomain":"brandfetch-d7fb5329","customDomains":["docs.brandfetch.com"],"gitSource":{"type":"github","owner":"brandfetch","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae47d2ff49f5b7aedfd7d00","collectionId":"de7850ff-094f-449c-a848-4aa89ea6051d","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae47d2ff49f5b7aedfd7d00"},"feedback":{"thumbs":true,"edits":false},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae47d2ff49f5b7aedfd7d00","clientVersion":"0.0.4054","searchFilterCounts":[{"language":"default","tag":"Documentation","count":27},{"language":"default","tag":"API References","count":14},{"language":"default","tag":"Resources","count":12},{"language":"default","tag":"Use cases","count":10},{"language":"default","tag":"Delivery methods","count":8},{"language":"default","tag":"Brand API","count":8},{"language":"default","tag":"Products","count":7},{"language":"default","tag":"Support","count":6},{"language":"default","tag":"Comparisons","count":5},{"language":"default","tag":"Webhooks","count":5}]},"assistantConfig":{"deflection":{"enabled":true}},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[],"privacy":{"consentBanner":{"enabled":false}},"googleFontsInlined":true},"customCss":[{"filePath":"style.css","content":"body::before{content:\"\";position:absolute;top:-192px;left:50%;z-index:-1;width:calc(100% + 128px);height:528px;background:linear-gradient(92deg,#369eff 0,#75bcff 14%,#9747ff 26%,#ef4c77 34%,#ff7510 48%,#ffda00 56%,#ffda00 72%,#76cc4b 88%,#375d96 96%,#1c4686 100%);filter:blur(100px);opacity:.075;transform:translateX(-50%);pointer-events:none}.dark body::before{background:linear-gradient(-90deg,#000 -9.95%,#1ed2ed -1.71%,#92caff 16.58%,#503957 43.26%,#ed4aff 73.47%,#ff5836 111.54%,#1c4686 130.11%);opacity:.25}body{overflow-x:clip}#sidebar .sticky.top-0.pointer-events-none{background:0 0!important;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);mask-image:linear-gradient(to bottom,#000,transparent);-webkit-mask-image:linear-gradient(to bottom,#000,transparent)}html.dark{--gray-100:248 248 248;--gray-200:236 236 236;--gray-300:222 222 222;--gray-400:184 184 184;--gray-500:140 140 140;--gray-600:104 104 104}.dark #navbar a.dark\\:text-gray-400,.dark .nav-tabs-item:not([data-active=true]){color:rgba(255,255,255,.72)!important}.dark #navbar a.dark\\:text-gray-400:hover,.dark .nav-tabs-item:not([data-active=true]):hover{color:#fff!important}.dark .nav-tabs-item[data-active=true]{color:#fff!important}.dark .nav-tabs-item:not([data-active=true]):hover>.absolute.bottom-0{background-color:rgba(255,255,255,.45)!important}.card{background-color:#f7f7f8!important}.dark .card{background-color:#1a1a1a60!important}.prompt{background-color:#f4f4f5!important;border-color:#e4e4e7!important}.dark .prompt{background-color:#1d1e20!important;border-color:rgba(255,255,255,.08)!important}@media (min-width:1024px){#sidebar{width:19rem;min-width:19rem}#content-side-layout{max-width:25rem}#content-side-layout>div{width:25rem}#table-of-contents-layout{max-width:20rem}#table-of-contents-layout>div{width:20rem}}"}],"page":{"pagePath":"reference/agents-access-purchase","slug":"/reference/agents-access-purchase","pageMetadata":{"title":"Buy agent access","sidebarTitle":"POST /v2/agents/access","openapi":"POST /v2/agents/access","description":"Pay a whole number of US dollars to receive a Brandfetch organization, an API key holding 20 prepaid API credits per dollar, and an MCP bearer token. One credit is one Brand API, Brand Context API or Transaction API request. Call once without a payment to receive the 402: its `PAYMENT-REQUIRED` header is the x402 challenge (USDC on Base), its `WWW-Authenticate` header the MPP challenges (USDC.e on Tempo, or a card through a Stripe shared payment token). Pay one and repeat the request with the result — `PAYMENT-SIGNATURE` for x402, `Authorization: Payment …` for MPP. A wallet owns the organization it buys: paying again from the same wallet adds credits to the same key, and `rotateKey=true` replaces the key while doing so. A card names no wallet, so each card payment buys its own organization and key. The API key and MCP token are returned once, in the response that completes the purchase, and a payment is never charged twice. A later request carrying the same payment is answered `409` without them: a settled payment is public (an x402 signature is on-chain), so presenting it proves nothing about who sent it. If the purchase is answered with a `500` that says to retry, or with no response at all, retry the exact request at once: the first retry to succeed within three minutes of the payment receives the credential, unless it was already returned in a response the client lost, which is answered `409` `credential_already_delivered`. The credits are granted whether or not the credential is returned. See https://docs.brandfetch.com/agents/overview.","href":"/reference/agents-access-purchase"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n a: \"a\",\n code: \"code\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_components.p, {\n children: [\"Pay a whole number of US dollars to receive a Brandfetch organization, an API key holding 20 prepaid API credits per dollar, and an MCP bearer token. One credit is one Brand API, Brand Context API or Transaction API request. Call once without a payment to receive the 402: its \", _jsx(_components.code, {\n children: \"PAYMENT-REQUIRED\"\n }), \" header is the x402 challenge (USDC on Base), its \", _jsx(_components.code, {\n children: \"WWW-Authenticate\"\n }), \" header the MPP challenges (USDC.e on Tempo, or a card through a Stripe shared payment token). Pay one and repeat the request with the result — \", _jsx(_components.code, {\n children: \"PAYMENT-SIGNATURE\"\n }), \" for x402, \", _jsx(_components.code, {\n children: \"Authorization: Payment …\"\n }), \" for MPP. A wallet owns the organization it buys: paying again from the same wallet adds credits to the same key, and \", _jsx(_components.code, {\n children: \"rotateKey=true\"\n }), \" replaces the key while doing so. A card names no wallet, so each card payment buys its own organization and key. The API key and MCP token are returned once, in the response that completes the purchase, and a payment is never charged twice. A later request carrying the same payment is answered \", _jsx(_components.code, {\n children: \"409\"\n }), \" without them: a settled payment is public (an x402 signature is on-chain), so presenting it proves nothing about who sent it. If the purchase is answered with a \", _jsx(_components.code, {\n children: \"500\"\n }), \" that says to retry, or with no response at all, retry the exact request at once: the first retry to succeed within three minutes of the payment receives the credential, unless it was already returned in a response the client lost, which is answered \", _jsx(_components.code, {\n children: \"409\"\n }), \" \", _jsx(_components.code, {\n children: \"credential_already_delivered\"\n }), \". The credits are granted whether or not the credential is returned. See \", _jsx(_components.a, {\n href: \"https://docs.brandfetch.com/agents/overview\",\n children: \"https://docs.brandfetch.com/agents/overview\"\n }), \".\"]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,p:`p`,..._provideComponents(),...props.components},{Note}=_components;if(!Note)_missingMdxReference(`Note`,true);return _jsx(Note,{children:_jsxs(_components.p,{children:[`Payment is an `,_jsx(_components.a,{href:`https://x402.org`,children:`x402`}),` payment in USDC on Base, or an `,_jsx(_components.a,{href:`https://mpp.dev`,children:`MPP`}),` payment (USDC.e on Tempo, or a card through Stripe) — not an API key: call once without a credential to receive the `,_jsx(_components.code,{children:`402`}),` with both challenges, pay one, and repeat the request with `,_jsx(_components.code,{children:`PAYMENT-SIGNATURE`}),` or `,_jsx(_components.code,{children:`Authorization: Payment …`}),`. `,_jsx(_components.a,{href:`/agents/pay-per-request#standing-access`,children:`Pay per request`}),` walks through it with code.`]})})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Buy agent access","sidebarTitle":"POST /v2/agents/access","openapi":"POST /v2/agents/access","description":"Pay a whole number of US dollars to receive a Brandfetch organization, an API key holding 20 prepaid API credits per dollar, and an MCP bearer token. One credit is one Brand API, Brand Context API or Transaction API request. Call once without a payment to receive the 402: its `PAYMENT-REQUIRED` header is the x402 challenge (USDC on Base), its `WWW-Authenticate` header the MPP challenges (USDC.e on Tempo, or a card through a Stripe shared payment token). Pay one and repeat the request with the result — `PAYMENT-SIGNATURE` for x402, `Authorization: Payment …` for MPP. A wallet owns the organization it buys: paying again from the same wallet adds credits to the same key, and `rotateKey=true` replaces the key while doing so. A card names no wallet, so each card payment buys its own organization and key. The API key and MCP token are returned once, in the response that completes the purchase, and a payment is never charged twice. A later request carrying the same payment is answered `409` without them: a settled payment is public (an x402 signature is on-chain), so presenting it proves nothing about who sent it. If the purchase is answered with a `500` that says to retry, or with no response at all, retry the exact request at once: the first retry to succeed within three minutes of the payment receives the credential, unless it was already returned in a response the client lost, which is answered `409` `credential_already_delivered`. The credits are granted whether or not the credential is returned. See https://docs.brandfetch.com/agents/overview.","href":"/reference/agents-access-purchase"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"summary":"Buy standing access with an x402 or MPP payment","description":"Pay a whole number of US dollars to receive a Brandfetch organization, an API key holding 20 prepaid API credits per dollar, and an MCP bearer token. One credit is one Brand API, Brand Context API or Transaction API request. Call once without a payment to receive the 402: its `PAYMENT-REQUIRED` header is the x402 challenge (USDC on Base), its `WWW-Authenticate` header the MPP challenges (USDC.e on Tempo, or a card through a Stripe shared payment token). Pay one and repeat the request with the result — `PAYMENT-SIGNATURE` for x402, `Authorization: Payment …` for MPP. A wallet owns the organization it buys: paying again from the same wallet adds credits to the same key, and `rotateKey=true` replaces the key while doing so. A card names no wallet, so each card payment buys its own organization and key. The API key and MCP token are returned once, in the response that completes the purchase, and a payment is never charged twice. A later request carrying the same payment is answered `409` without them: a settled payment is public (an x402 signature is on-chain), so presenting it proves nothing about who sent it. If the purchase is answered with a `500` that says to retry, or with no response at all, retry the exact request at once: the first retry to succeed within three minutes of the payment receives the credential, unless it was already returned in a response the client lost, which is answered `409` `credential_already_delivered`. The credits are granted whether or not the credential is returned. See https://docs.brandfetch.com/agents/overview.","operationId":"purchaseAgentAccess","tags":["agents"],"security":["377035f0-e487-4998-8574-6504ac705fd0","7ec07ff5-4103-47b8-94a2-cfb66859a3b5"],"x-payment-info":{"price":{"mode":"dynamic","currency":"USD","min":"1","max":"500"},"protocols":[{"x402":{}},{"mpp":{"method":"tempo","intent":"charge","currency":"0x20C000000000000000000000b9537d11c60E8b50"}},{"mpp":{"method":"stripe","intent":"charge","currency":"usd"}}],"offers":[{"amount":null,"currency":"0x20C000000000000000000000b9537d11c60E8b50","description":"Standing Brandfetch API access: prepaid credits for the whole dollars named by ?usd=","intent":"charge","method":"tempo"},{"amount":null,"currency":"usd","description":"Standing Brandfetch API access: prepaid credits for the whole dollars named by ?usd=","intent":"charge","method":"stripe"}]},"parameters":["0a51211f-5732-4b6b-8e2d-e518661c6c26","87e860ac-1889-4607-b63d-c5baa9046507"],"responses":{"200":"c4235b2c-6d30-44ae-ae1b-28c8f8067a3a","201":"77933c9e-1c96-48fb-b994-c6b19847dedb","400":"f28d5612-de45-44d7-9466-24b761eddd49","402":"8ca00426-6a74-4ad1-b55b-1f6da08ceaef","409":"b9a0f841-f25f-4c28-b121-88753e51865c","500":"2a582ab2-45df-4888-a3f2-e89278ffe8af","503":"4f947099-9108-474a-a48c-3e1a48a4560c"},"method":"post","type":"path","servers":["7b0d6084-1738-4fb2-bc03-db3e71596d0a"],"path":"/v2/agents/access","baseUrlOptions":["https://api.brandfetch.io"],"title":"Buy standing access with an x402 or MPP payment","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"0a51211f-5732-4b6b-8e2d-e518661c6c26":{"name":"usd","in":"query","required":true,"description":"Whole US dollars to pay, between 1 and 500. Buys `usd × 20` credits.","schema":{"type":"integer","minimum":1,"maximum":500,"isRequired":true,"description":"Whole US dollars to pay, between 1 and 500. Buys `usd × 20` credits.","uniqueKey":"","typeLabel":"integer"},"examples":{"usd":{"summary":"Five dollars","value":5}}},"87e860ac-1889-4607-b63d-c5baa9046507":{"name":"rotateKey","in":"query","required":false,"description":"When `true` on a top-up, issues a new key holding the combined balance, returned once like any other. The wallet's earlier keys stop working once the new key has been returned, even if the client never receives that response. If the rotation is answered with an error instead of the new key, they keep working. A retry answered `409` `credential_already_delivered` means the rotation completed: pay again with `rotateKey=true` for a new key.","schema":{"type":"boolean","default":false,"isRequired":false,"description":"When `true` on a top-up, issues a new key holding the combined balance, returned once like any other. The wallet's earlier keys stop working once the new key has been returned, even if the client never receives that response. If the rotation is answered with an error instead of the new key, they keep working. A retry answered `409` `credential_already_delivered` means the rotation completed: pay again with `rotateKey=true` for a new key.","uniqueKey":"","typeLabel":"boolean"}}},"responses":{"c4235b2c-6d30-44ae-ae1b-28c8f8067a3a":{"description":"Topped up: the wallet already owned an organization. The credential is returned once, in this response.","headers":{"Cache-Control":{"description":"`private` — the response carries a credential, so no shared cache may store it.","schema":{"type":"string"}},"PAYMENT-RESPONSE":{"description":"On the response to the request that settled an x402 payment: the base64-encoded settlement receipt (`success`, `transaction`, `network`, `payer`). A retry that delivers the credential after a failed response does not carry it.","schema":{"type":"string"}},"Payment-Receipt":{"description":"On the response to the request that settled an MPP payment: the base64url-encoded receipt (`method`, `reference`, `status`, `timestamp`). A retry that delivers the credential after a failed response does not carry it.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"organization":{"type":"object","properties":{"id":{"type":"string","uniqueKey":"organization.id","typeLabel":"string"},"urn":{"type":"string","example":"urn:brandfetch:organization:xig9b54wddtihs0dktyhau0i","uniqueKey":"organization.urn","typeLabel":"string"}},"uniqueKey":"organization","typeLabel":"object"},"apiKey":{"type":"object","description":"The API key. Returned once, in the response that completes the purchase: store it.","properties":{"id":{"type":"string","uniqueKey":"apiKey.id","typeLabel":"string"},"key":{"type":"string","description":"Send as `Authorization: Bearer \u003ckey>`.","uniqueKey":"apiKey.key","typeLabel":"string"},"name":{"type":"string","example":"Agent Key","uniqueKey":"apiKey.name","typeLabel":"string"}},"uniqueKey":"apiKey","typeLabel":"object"},"apiClient":{"oneOf":[{"type":"object","description":"The Logo API client, for `cdn.brandfetch.io` URLs.","properties":{"clientId":{"type":"string","uniqueKey":"apiClient.oneOf.0.clientId","typeLabel":"string"}},"uniqueKey":"apiClient.oneOf.0","typeLabel":"object"},{"type":"null","description":"The Logo API client, for `cdn.brandfetch.io` URLs.","properties":{"clientId":{"type":"string"}},"uniqueKey":"apiClient.oneOf.1","typeLabel":"null"}],"uniqueKey":"apiClient","typeLabel":"object | null"},"mcp":{"type":"object","properties":{"url":{"type":"string","example":"https://mcp.brandfetch.io/mcp","uniqueKey":"mcp.url","typeLabel":"string"},"token":{"type":"string","description":"Bearer token for the Brandfetch MCP server; starts with `bf1.`.","uniqueKey":"mcp.token","typeLabel":"string"}},"uniqueKey":"mcp","typeLabel":"object"},"credits":{"type":"object","properties":{"granted":{"type":"integer","description":"Credits this payment bought.","example":20,"uniqueKey":"credits.granted","typeLabel":"integer"},"balance":{"type":"integer","description":"Credits the key holds now.","example":20,"uniqueKey":"credits.balance","typeLabel":"integer"},"creditsPerUsd":{"type":"integer","example":20,"uniqueKey":"credits.creditsPerUsd","typeLabel":"integer"},"usdPaid":{"type":"number","example":1,"uniqueKey":"credits.usdPaid","typeLabel":"number"},"deduplicated":{"type":"boolean","description":"`false` when this request granted the credits. `true` when an earlier attempt at the same purchase had already granted them, before its response failed: they are granted once either way.","uniqueKey":"credits.deduplicated","typeLabel":"boolean"}},"uniqueKey":"credits","typeLabel":"object"},"usage":{"type":"object","properties":{"authorization":{"type":"string","example":"Bearer \u003ckey>","uniqueKey":"usage.authorization","typeLabel":"string"},"note":{"type":"string","uniqueKey":"usage.note","typeLabel":"string"}},"uniqueKey":"usage","typeLabel":"object"},"topUp":{"type":"object","properties":{"method":{"type":"string","example":"POST","uniqueKey":"topUp.method","typeLabel":"string"},"url":{"type":"string","uniqueKey":"topUp.url","typeLabel":"string"},"note":{"type":"string","uniqueKey":"topUp.note","typeLabel":"string"}},"uniqueKey":"topUp","typeLabel":"object"},"documentation":{"type":"string","example":"https://docs.brandfetch.com/agents/overview","uniqueKey":"documentation","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"organization":{"id":"\u003cstring>","urn":"urn:brandfetch:organization:xig9b54wddtihs0dktyhau0i"},"apiKey":{"id":"\u003cstring>","key":"\u003cstring>","name":"Agent Key"},"apiClient":{"clientId":"\u003cstring>"},"mcp":{"url":"https://mcp.brandfetch.io/mcp","token":"\u003cstring>"},"credits":{"granted":20,"balance":20,"creditsPerUsd":20,"usdPaid":1,"deduplicated":true},"usage":{"authorization":"Bearer \u003ckey>","note":"\u003cstring>"},"topUp":{"method":"POST","url":"\u003cstring>","note":"\u003cstring>"},"documentation":"https://docs.brandfetch.com/agents/overview"}}},"exampleType":"generated"}},"exampleType":"generated"},"77933c9e-1c96-48fb-b994-c6b19847dedb":{"description":"Provisioned: this wallet's first purchase, or a card purchase, created its organization and key. The credential is returned once, in this response.","headers":{"Cache-Control":{"description":"`private` — the response carries a credential, so no shared cache may store it.","schema":{"type":"string"}},"PAYMENT-RESPONSE":{"description":"On the response to the request that settled an x402 payment: the base64-encoded settlement receipt (`success`, `transaction`, `network`, `payer`). A retry that delivers the credential after a failed response does not carry it.","schema":{"type":"string"}},"Payment-Receipt":{"description":"On the response to the request that settled an MPP payment: the base64url-encoded receipt (`method`, `reference`, `status`, `timestamp`). A retry that delivers the credential after a failed response does not carry it.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"organization":{"type":"object","properties":{"id":{"type":"string","uniqueKey":"organization.id","typeLabel":"string"},"urn":{"type":"string","example":"urn:brandfetch:organization:xig9b54wddtihs0dktyhau0i","uniqueKey":"organization.urn","typeLabel":"string"}},"uniqueKey":"organization","typeLabel":"object"},"apiKey":{"type":"object","description":"The API key. Returned once, in the response that completes the purchase: store it.","properties":{"id":{"type":"string","uniqueKey":"apiKey.id","typeLabel":"string"},"key":{"type":"string","description":"Send as `Authorization: Bearer \u003ckey>`.","uniqueKey":"apiKey.key","typeLabel":"string"},"name":{"type":"string","example":"Agent Key","uniqueKey":"apiKey.name","typeLabel":"string"}},"uniqueKey":"apiKey","typeLabel":"object"},"apiClient":{"oneOf":[{"type":"object","description":"The Logo API client, for `cdn.brandfetch.io` URLs.","properties":{"clientId":{"type":"string","uniqueKey":"apiClient.oneOf.0.clientId","typeLabel":"string"}},"uniqueKey":"apiClient.oneOf.0","typeLabel":"object"},{"type":"null","description":"The Logo API client, for `cdn.brandfetch.io` URLs.","properties":{"clientId":{"type":"string"}},"uniqueKey":"apiClient.oneOf.1","typeLabel":"null"}],"uniqueKey":"apiClient","typeLabel":"object | null"},"mcp":{"type":"object","properties":{"url":{"type":"string","example":"https://mcp.brandfetch.io/mcp","uniqueKey":"mcp.url","typeLabel":"string"},"token":{"type":"string","description":"Bearer token for the Brandfetch MCP server; starts with `bf1.`.","uniqueKey":"mcp.token","typeLabel":"string"}},"uniqueKey":"mcp","typeLabel":"object"},"credits":{"type":"object","properties":{"granted":{"type":"integer","description":"Credits this payment bought.","example":20,"uniqueKey":"credits.granted","typeLabel":"integer"},"balance":{"type":"integer","description":"Credits the key holds now.","example":20,"uniqueKey":"credits.balance","typeLabel":"integer"},"creditsPerUsd":{"type":"integer","example":20,"uniqueKey":"credits.creditsPerUsd","typeLabel":"integer"},"usdPaid":{"type":"number","example":1,"uniqueKey":"credits.usdPaid","typeLabel":"number"},"deduplicated":{"type":"boolean","description":"`false` when this request granted the credits. `true` when an earlier attempt at the same purchase had already granted them, before its response failed: they are granted once either way.","uniqueKey":"credits.deduplicated","typeLabel":"boolean"}},"uniqueKey":"credits","typeLabel":"object"},"usage":{"type":"object","properties":{"authorization":{"type":"string","example":"Bearer \u003ckey>","uniqueKey":"usage.authorization","typeLabel":"string"},"note":{"type":"string","uniqueKey":"usage.note","typeLabel":"string"}},"uniqueKey":"usage","typeLabel":"object"},"topUp":{"type":"object","properties":{"method":{"type":"string","example":"POST","uniqueKey":"topUp.method","typeLabel":"string"},"url":{"type":"string","uniqueKey":"topUp.url","typeLabel":"string"},"note":{"type":"string","uniqueKey":"topUp.note","typeLabel":"string"}},"uniqueKey":"topUp","typeLabel":"object"},"documentation":{"type":"string","example":"https://docs.brandfetch.com/agents/overview","uniqueKey":"documentation","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"organization":{"id":"\u003cstring>","urn":"urn:brandfetch:organization:xig9b54wddtihs0dktyhau0i"},"apiKey":{"id":"\u003cstring>","key":"\u003cstring>","name":"Agent Key"},"apiClient":{"clientId":"\u003cstring>"},"mcp":{"url":"https://mcp.brandfetch.io/mcp","token":"\u003cstring>"},"credits":{"granted":20,"balance":20,"creditsPerUsd":20,"usdPaid":1,"deduplicated":true},"usage":{"authorization":"Bearer \u003ckey>","note":"\u003cstring>"},"topUp":{"method":"POST","url":"\u003cstring>","note":"\u003cstring>"},"documentation":"https://docs.brandfetch.com/agents/overview"}}},"exampleType":"generated"}},"exampleType":"generated"},"f28d5612-de45-44d7-9466-24b761eddd49":{"description":"The `usd` parameter is missing, not a whole number, or outside the bounds; or the payment does not name the paying wallet.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","enum":["usd must be a whole number of US dollars between 1 and 500."],"uniqueKey":"message","typeLabel":"enum\u003cstring>"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"message":"usd must be a whole number of US dollars between 1 and 500."}}},"exampleType":"generated"}},"exampleType":"generated"},"8ca00426-6a74-4ad1-b55b-1f6da08ceaef":{"description":"Payment required. Without a credential, the quote for `usd` dollars: the `PAYMENT-REQUIRED` header describes the x402 payment (USDC on Base) and `WWW-Authenticate` the MPP challenges. A settlement that was refused says so in the `message`: retry the exact request once before signing a new payment, since the retry is answered from the payment if another attempt settled it; refused again, request a fresh challenge and pay afresh. Otherwise, with a credential that was not accepted, the `reason` — nothing was charged; pay afresh and retry (a `credential_in_use` reason means another request of yours is settling the same credential: retry the exact request in a moment instead; a `challenge_invalid` reason means the MPP credential does not answer a challenge this API issued: answer one of the fresh challenges, unless this retries an MPP purchase already paid for: that purchase is complete and its credits are on the organization, so a Tempo wallet pays again with `rotateKey=true` for a working key and a card purchase contacts support).","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":"One `Payment` challenge per payment method Stripe offers for the amount (USDC.e on Tempo from a cent; cards via shared payment tokens from $0.50), comma-separated. Answer one with an `Authorization: Payment …` credential.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"oneOf":[{"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 \u003ckey>) or pay for this request with x402: sign the payment described in the PAYMENT-REQUIRED header and retry with a PAYMENT-SIGNATURE header.","uniqueKey":"oneOf.0.message","typeLabel":"string"},"documentation":{"type":"string","example":"https://docs.brandfetch.com/agents/pay-per-request","uniqueKey":"oneOf.0.documentation","typeLabel":"string"},"pricing":{"type":"object","properties":{"route":{"type":"string","example":"GET /v2/brands/*","uniqueKey":"oneOf.0.pricing.route","typeLabel":"string"},"price":{"type":"string","example":"$0.10","uniqueKey":"oneOf.0.pricing.price","typeLabel":"string"}},"uniqueKey":"oneOf.0.pricing","typeLabel":"object"},"resource":{"type":"string","description":"The URL the payment is for.","example":"https://api.brandfetch.io/v2/brands/nike.com","uniqueKey":"oneOf.0.resource","typeLabel":"string"},"standingAccess":{"type":"string","example":"For many requests, POST /v2/agents/access (paid the same way) provisions an API key preloaded with prepaid credits.","uniqueKey":"oneOf.0.standingAccess","typeLabel":"string"}},"uniqueKey":"oneOf.0","typeLabel":"object"},{"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.","uniqueKey":"oneOf.1.message","typeLabel":"string"},"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","uniqueKey":"oneOf.1.reason","typeLabel":"string"},"documentation":{"type":"string","example":"https://docs.brandfetch.com/agents/pay-per-request","uniqueKey":"oneOf.1.documentation","typeLabel":"string"}},"uniqueKey":"oneOf.1","typeLabel":"object"}],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"message":"Payment required. Either authenticate with a Brandfetch API key (Authorization: Bearer \u003ckey>) or pay for this request with x402: sign the payment described in the PAYMENT-REQUIRED header and retry with a PAYMENT-SIGNATURE header.","documentation":"https://docs.brandfetch.com/agents/pay-per-request","pricing":{"route":"GET /v2/brands/*","price":"$0.10"},"resource":"https://api.brandfetch.io/v2/brands/nike.com","standingAccess":"For many requests, POST /v2/agents/access (paid the same way) provisions an API key preloaded with prepaid credits."}}},"exampleType":"generated"}},"exampleType":"generated"},"b9a0f841-f25f-4c28-b121-88753e51865c":{"description":"The request carries a payment that is already being completed, or whose purchase is complete; it carries no credential and no challenge, and the payment is not charged again. `payment_in_progress`: another request carrying the same payment is completing the purchase and its response carries the credential; retry the exact request after `Retry-After` if it does not arrive, and never pay again. `credential_already_delivered`: the credential was returned with the response that completed the purchase and is not returned again; the credits are on the organization named in the body. To replace a lost key, pay again from the same wallet with `rotateKey=true`; a card purchase cannot be recovered, so make a new one. `credential_replaced`: a later rotation replaced the key this payment bought; the organization's credits, these included, are intact. Pay again from the same wallet with `rotateKey=true` for a working key; for a card purchase, contact support with the `paymentReference`.","headers":{"Retry-After":{"description":"Seconds to wait before retrying, on `payment_in_progress`.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"What happened and what to do next, for whoever is reading.","uniqueKey":"message","typeLabel":"string"},"reason":{"type":"string","enum":["payment_in_progress","credential_already_delivered","credential_replaced"],"uniqueKey":"reason","typeLabel":"enum\u003cstring>"},"paymentReference":{"type":"string","description":"Identifies the payment; quote it to support.","uniqueKey":"paymentReference","typeLabel":"string"},"organization":{"type":"object","description":"The organization the purchase credited. Present on `credential_already_delivered` and `credential_replaced`.","properties":{"id":{"type":"string","uniqueKey":"organization.id","typeLabel":"string"},"urn":{"type":"string","example":"urn:brandfetch:organization:xig9b54wddtihs0dktyhau0i","uniqueKey":"organization.urn","typeLabel":"string"}},"uniqueKey":"organization","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"message":"\u003cstring>","reason":"payment_in_progress","paymentReference":"\u003cstring>","organization":{"id":"\u003cstring>","urn":"urn:brandfetch:organization:xig9b54wddtihs0dktyhau0i"}}}},"exampleType":"generated"}},"exampleType":"generated"},"2a582ab2-45df-4888-a3f2-e89278ffe8af":{"description":"The purchase did not finish, and the payment may have been taken. With a `paymentReference`, the `message` says which of two cases applies. If it says to retry, retry this exact request (same `PAYMENT-SIGNATURE` or `Authorization: Payment` header) at once: the first retry to succeed within three minutes of the payment receives the credential, and no later request does. If it says not to pay again, the credential can no longer be delivered automatically: do not pay again, and contact support with the `paymentReference`. Without a `paymentReference`, an unexpected error: retry the exact request, which never charges the payment twice, and do not pay again.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Says whether to retry this exact request or not to pay again, for instance: This payment may already have been taken, but what it bought could not be delivered automatically. Do not pay again for it: contact support with the payment reference.","example":"Provisioning failed after your payment was accepted. Retry this exact request to receive your credential, or contact support with the payment reference.","uniqueKey":"message","typeLabel":"string"},"paymentReference":{"type":"string","description":"Identifies the payment; quote it to support.","uniqueKey":"paymentReference","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"message":"Provisioning failed after your payment was accepted. Retry this exact request to receive your credential, or contact support with the payment reference.","paymentReference":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"4f947099-9108-474a-a48c-3e1a48a4560c":{"description":"The request was not served. Without a `reason`, the payment service could not be reached and nothing was charged: retry after the `Retry-After` interval. With `reason: payment_outcome_unknown`, whether the payment went through is not known yet: retry the exact request after the interval, and do not sign a new payment for it.","headers":{"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","uniqueKey":"message","typeLabel":"string"},"reason":{"type":"string","enum":["payment_outcome_unknown"],"uniqueKey":"reason","typeLabel":"enum\u003cstring>"},"paymentReference":{"type":"string","description":"Present with `reason: payment_outcome_unknown`.","uniqueKey":"paymentReference","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"message":"\u003cstring>","reason":"payment_outcome_unknown","paymentReference":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"377035f0-e487-4998-8574-6504ac705fd0":{"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.","scopes":[],"schemeName":"x402Payment"}},"7ec07ff5-4103-47b8-94a2-cfb66859a3b5":{"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.","scopes":[],"schemeName":"mppPayment"}}},"servers":{"7b0d6084-1738-4fb2-bc03-db3e71596d0a":{"url":"https://api.brandfetch.io"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"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.","scopes":[],"schemeName":"x402Payment"},"schema":{"title":"PAYMENT-SIGNATURE","type":"string","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.","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"x402Payment","name":"PAYMENT-SIGNATURE"}],"title":"x402Payment"},{"schemes":[{"scheme":{"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.","scopes":[],"schemeName":"mppPayment"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"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.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"mppPayment","name":"Authorization"}],"title":"mppPayment"}]},"originalFileLocation":"openapi.json"},"subdomain":"brandfetch-d7fb5329","siteName":"Brandfetch","title":"Buy agent access - Brandfetch","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-09-25T12:38:17.231Z","originalFileLocation":"reference/agents-access-purchase.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"dark\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Pay a whole number of US dollars to receive a Brandfetch organization, an API key holding 20 prepaid API credits per dollar, and an MCP bearer token. One credit is one Brand API, Brand Context API or Transaction API request. Call once without a payment to receive the 402: its PAYMENT-REQUIRED header is the x402 challenge (USDC on Base), its WWW-Authenticate header the MPP challenges (USDC.e on Tempo, or a card through a Stripe shared payment token). Pay one and repeat the request with the result — PAYMENT-SIGNATURE for x402, Authorization: Payment … for MPP. A wallet owns the organization it buys: paying again from the same wallet adds credits to the same key, and rotateKey=true replaces the key while doing so. A card names no wallet, so each card payment buys its own organization and key. The API key and MCP token are returned once, in the response that completes the purchase, and a payment is never charged twice. A later request carrying the same payment is answered 409 without them: a settled payment is public (an x402 signature is on-chain), so presenting it proves nothing about who sent it. If the purchase is answered with a 500 that says to retry, or with no response at all, retry the exact request at once: the first retry to succeed within three minutes of the payment receives the credential, unless it was already returned in a response the client lost, which is answered 409 credential_already_delivered. The credits are granted whether or not the credential is returned. See https://docs.brandfetch.com/agents/overview.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Brandfetch\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/brandfetch-d7fb5329/D3XFukFFOrKC-_RS/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/brandfetch-d7fb5329/D3XFukFFOrKC-_RS/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/brandfetch-d7fb5329/D3XFukFFOrKC-_RS/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/brandfetch-d7fb5329/D3XFukFFOrKC-_RS/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/brandfetch-d7fb5329/D3XFukFFOrKC-_RS/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/brandfetch-d7fb5329/D3XFukFFOrKC-_RS/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/brandfetch-d7fb5329/D3XFukFFOrKC-_RS/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/brandfetch-d7fb5329/D3XFukFFOrKC-_RS/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/brandfetch-d7fb5329/D3XFukFFOrKC-_RS/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Buy agent access - Brandfetch\">\u003cmeta data-mint-head property=\"og:description\" content=\"Pay a whole number of US dollars to receive a Brandfetch organization, an API key holding 20 prepaid API credits per dollar, and an MCP bearer token. One credit is one Brand API, Brand Context API or Transaction API request. Call once without a payment to receive the 402: its PAYMENT-REQUIRED header is the x402 challenge (USDC on Base), its WWW-Authenticate header the MPP challenges (USDC.e on Tempo, or a card through a Stripe shared payment token). Pay one and repeat the request with the result — PAYMENT-SIGNATURE for x402, Authorization: Payment … for MPP. A wallet owns the organization it buys: paying again from the same wallet adds credits to the same key, and rotateKey=true replaces the key while doing so. A card names no wallet, so each card payment buys its own organization and key. The API key and MCP token are returned once, in the response that completes the purchase, and a payment is never charged twice. A later request carrying the same payment is answered 409 without them: a settled payment is public (an x402 signature is on-chain), so presenting it proves nothing about who sent it. If the purchase is answered with a 500 that says to retry, or with no response at all, retry the exact request at once: the first retry to succeed within three minutes of the payment receives the credential, unless it was already returned in a response the client lost, which is answered 409 credential_already_delivered. The credits are granted whether or not the credential is returned. See https://docs.brandfetch.com/agents/overview.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Brandfetch\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.brandfetch.com/reference/agents-access-purchase\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://developers.brandfetch.com/og_docs.webp\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Buy agent access - Brandfetch\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Pay a whole number of US dollars to receive a Brandfetch organization, an API key holding 20 prepaid API credits per dollar, and an MCP bearer token. One credit is one Brand API, Brand Context API or Transaction API request. Call once without a payment to receive the 402: its PAYMENT-REQUIRED header is the x402 challenge (USDC on Base), its WWW-Authenticate header the MPP challenges (USDC.e on Tempo, or a card through a Stripe shared payment token). Pay one and repeat the request with the result — PAYMENT-SIGNATURE for x402, Authorization: Payment … for MPP. A wallet owns the organization it buys: paying again from the same wallet adds credits to the same key, and rotateKey=true replaces the key while doing so. A card names no wallet, so each card payment buys its own organization and key. The API key and MCP token are returned once, in the response that completes the purchase, and a payment is never charged twice. A later request carrying the same payment is answered 409 without them: a settled payment is public (an x402 signature is on-chain), so presenting it proves nothing about who sent it. If the purchase is answered with a 500 that says to retry, or with no response at all, retry the exact request at once: the first retry to succeed within three minutes of the payment receives the credential, unless it was already returned in a response the client lost, which is answered 409 credential_already_delivered. The credits are granted whether or not the credential is returned. See https://docs.brandfetch.com/agents/overview.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://developers.brandfetch.com/og_docs.webp\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/brandfetch-d7fb5329/D3XFukFFOrKC-_RS/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Brandfetch\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#0084FF\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.brandfetch.com/reference/agents-access-purchase\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/reference/agents-access-purchase.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.brandfetch.com/#organization\",\"name\":\"Brandfetch\",\"url\":\"https://docs.brandfetch.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/brandfetch-d7fb5329/-v6e41qD3Fxu16r-/logo/light.svg?fit=max\u0026auto=format\u0026n=-v6e41qD3Fxu16r-\u0026q=85\u0026s=4f8ea49e20e0d743c9a7754b14f01924\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.brandfetch.com#website\",\"name\":\"Brandfetch\",\"url\":\"https://docs.brandfetch.com\",\"publisher\":{\"@id\":\"https://docs.brandfetch.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.brandfetch.com/reference/agents-access-purchase#webpage\",\"url\":\"https://docs.brandfetch.com/reference/agents-access-purchase\",\"name\":\"Buy agent access\",\"description\":\"Pay a whole number of US dollars to receive a Brandfetch organization, an API key holding 20 prepaid API credits per dollar, and an MCP bearer token. One credit is one Brand API, Brand Context API or Transaction API request. Call once without a payment to receive the 402: its PAYMENT-REQUIRED header is the x402 challenge (USDC on Base), its WWW-Authenticate header the MPP challenges (USDC.e on Tempo, or a card through a Stripe shared payment token). Pay one and repeat the request with the result — PAYMENT-SIGNATURE for x402, Authorization: Payment … for MPP. A wallet owns the organization it buys: paying again from the same wallet adds credits to the same key, and rotateKey=true replaces the key while doing so. A card names no wallet, so each card payment buys its own organization and key. The API key and MCP token are returned once, in the response that completes the purchase, and a payment is never charged twice. A later request carrying the same payment is answered 409 without them: a settled payment is public (an x402 signature is on-chain), so presenting it proves nothing about who sent it. If the purchase is answered with a 500 that says to retry, or with no response at all, retry the exact request at once: the first retry to succeed within three minutes of the payment receives the credential, unless it was already returned in a response the client lost, which is answered 409 credential_already_delivered. The credits are granted whether or not the credential is returned. See https://docs.brandfetch.com/agents/overview.\",\"dateModified\":\"2026-09-25T12:38:17.231Z\",\"isPartOf\":{\"@id\":\"https://docs.brandfetch.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.brandfetch.com/reference/agents-access-purchase#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.brandfetch.com/reference/agents-access-purchase#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Agent access\",\"item\":\"https://docs.brandfetch.com/reference/agents-access-offer\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Buy agent access\",\"item\":\"https://docs.brandfetch.com/reference/agents-access-purchase\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.brandfetch.com/reference/agents-access-purchase#apireference\",\"headline\":\"Buy agent access\",\"name\":\"Buy agent access\",\"description\":\"Pay a whole number of US dollars to receive a Brandfetch organization, an API key holding 20 prepaid API credits per dollar, and an MCP bearer token. One credit is one Brand API, Brand Context API or Transaction API request. Call once without a payment to receive the 402: its PAYMENT-REQUIRED header is the x402 challenge (USDC on Base), its WWW-Authenticate header the MPP challenges (USDC.e on Tempo, or a card through a Stripe shared payment token). Pay one and repeat the request with the result — PAYMENT-SIGNATURE for x402, Authorization: Payment … for MPP. A wallet owns the organization it buys: paying again from the same wallet adds credits to the same key, and rotateKey=true replaces the key while doing so. A card names no wallet, so each card payment buys its own organization and key. The API key and MCP token are returned once, in the response that completes the purchase, and a payment is never charged twice. A later request carrying the same payment is answered 409 without them: a settled payment is public (an x402 signature is on-chain), so presenting it proves nothing about who sent it. If the purchase is answered with a 500 that says to retry, or with no response at all, retry the exact request at once: the first retry to succeed within three minutes of the payment receives the credential, unless it was already returned in a response the client lost, which is answered 409 credential_already_delivered. The credits are granted whether or not the credential is returned. See https://docs.brandfetch.com/agents/overview.\",\"url\":\"https://docs.brandfetch.com/reference/agents-access-purchase\",\"mainEntityOfPage\":{\"@id\":\"https://docs.brandfetch.com/reference/agents-access-purchase#webpage\"},\"image\":\"https://developers.brandfetch.com/og_docs.webp\",\"dateModified\":\"2026-09-25T12:38:17.231Z\",\"publisher\":{\"@id\":\"https://docs.brandfetch.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.brandfetch.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Brandfetch\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Brandfetch","nav":{"global":null,"tabs":[{"tab":"Documentation","pages":[{"title":"Documentation","href":"/get-started"}]},{"tab":"API References","groups":[{"group":"Brand API","pages":[{"title":"Brand API by domain","sidebarTitle":"/v2/brands/domain/{domain}","openapi":"GET /v2/brands/domain/{domain}","href":"/reference/brand-api-domain"},{"title":"Brand API by ticker","sidebarTitle":"/v2/brands/ticker/{ticker}","openapi":"GET /v2/brands/ticker/{ticker}","href":"/reference/brand-api-ticker"},{"title":"Brand API by ISIN","sidebarTitle":"/v2/brands/isin/{isin}","openapi":"GET /v2/brands/isin/{isin}","href":"/reference/brand-api-isin"},{"title":"Brand API by crypto","sidebarTitle":"/v2/brands/crypto/{symbol}","openapi":"GET /v2/brands/crypto/{symbol}","href":"/reference/brand-api-crypto"},{"title":"Brand API (auto-detect)","sidebarTitle":"/v2/brands/{identifier}","openapi":"GET /v2/brands/{identifier}","href":"/reference/brand-api"},{"title":"Brand API batch","sidebarTitle":"/v2/brands/batch","openapi":"POST /v2/brands/batch","href":"/reference/brand-api-batch"},{"title":"Brand API prefetch (HEAD)","sidebarTitle":"/v2/brands/{identifier}","openapi":"HEAD /v2/brands/{identifier}","href":"/reference/brand-api-prefetch"},{"title":"Brand API prefetch by domain (HEAD)","sidebarTitle":"/v2/brands/domain/{domain}","openapi":"HEAD /v2/brands/domain/{domain}","href":"/reference/brand-api-prefetch-domain"}]},{"group":"Brand Context API","pages":[{"title":"Brand Context API","sidebarTitle":"/v2/context/{domain}","openapi":"GET /v2/context/{domain}","href":"/reference/brand-context-api"}]},{"group":"Brand Search API","pages":[{"title":"Brand Search API","sidebarTitle":"/v2/search/{name}","openapi":"GET /v2/search/{name}?c={clientId}","href":"/reference/brand-search-api"}]},{"group":"Transaction API","pages":[{"title":"Transaction API","sidebarTitle":"/v2/brands/transaction","openapi":"POST /v2/brands/transaction","href":"/reference/transaction-api"}]},{"group":"Viewer API","pages":[{"title":"Viewer API","sidebarTitle":"/v2/viewer","openapi":"GET /v2/viewer","href":"/reference/viewer-api"}]},{"group":"Agent access","pages":[{"title":"Agent access offer","sidebarTitle":"GET /v2/agents/access","openapi":"GET /v2/agents/access","description":"What an agent can buy and how to pay for it: standing API access — an organization, an API key preloaded with prepaid credits and an MCP token — sold for one x402 or MPP payment. Needs no credential. Written for an agent that will act on it. See https://docs.brandfetch.com/agents/overview.","href":"/reference/agents-access-offer"},{"title":"Buy agent access","sidebarTitle":"POST /v2/agents/access","openapi":"POST /v2/agents/access","href":"/reference/agents-access-purchase"}]}]},{"tab":"Resources","pages":[{"title":"Resources","href":"/integrations/overview"}]},{"tab":"Use cases","pages":[{"title":"Use cases","href":"/use-cases/overview"}]},{"tab":"Changelog","pages":[{"title":"Changelog","href":"/changelog/overview"}]}]},"basePath":"","title":"Buy agent access - Brandfetch","buildId":"dpl_345ReqzYaAjzS9QpeJemsKdb7KDj","deploymentId":"dpl_345ReqzYaAjzS9QpeJemsKdb7KDj","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-C8RPHPxo.js","utils-0BK-9q6z.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-DfjzsUJT.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-B4v9psJ4.js","snippetPresets-CpTQv-Ez.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-BNP-Fvr0.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-BSgu6h1D.js","shallow-Biv1i9Gs.js","getApiPlaygroundDisplay-BoGOXhtF.js","CodeSnippet-DvQoT18_.js","CodeSnippets-Dnpa15xT.js","Page-Buji1S4J.js","getPastedJson-xAIyhUFE.js","icon-S6FBih11.js","MethodPill-SaYeUZyk.js","DuplicateIcon-Cs-p3v2Q.js","createIcon-DjCFEoHq.js","DynamicMarkdown-BcnBltEQ.js","SectionHeading-BUBl0eEF.js","axios-vUo_bRtp.js","Markdown-h4cOoD8d.js","clsx-B2v50t8t.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-DJnKvr0g.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-BHrrjR1K.js"]}