Skip to content

Get a brand

The brands.get operation: GET /api/v1/brands/{id} in the REST API and the brands_get tool in the MCP server.

GET/api/v1/brands/{id}

Returns one brand by its ID (brd_…): name, slug, status, branding, statement descriptor and invoice series. A brand outside the request's scope (another organization, another entity of an entity-scoped request, or a sibling of a brand-scoped one) is resource_not_found.

At a glance

  • REST: GET /api/v1/brands/{id}
  • MCP tool: brands_get
  • Operation ID: brands.get
  • Scope: Organization, or one of its legal entities or brands
  • Permission: brands:read
  • Risk tier: read
  • Dry run: Not supported
  • Idempotency: Not needed (read only)
  • Modes: Test and live
  • Authentication: API key with the brands:read scope
  • Since: M1

Request

Path parameters

FieldTypeDescription
idbrd_… ID

Query parameters

This operation takes no query parameters.

Response

200 OK with a JSON object:

FieldTypeDescription
idbrd_… ID
object"brand"
orgIdorg_… ID
entityIdent_… ID
slugstring
namestring
statusone of draft, test_only, live, suspended
isPlatformBrandboolean
brandingobject
branding.logoUrlstring or null
branding.iconUrlstring or null
branding.primaryColorstring or null
branding.accentColorstring or null
branding.supportEmailstring or null
branding.supportUrlstring or null
branding.termsUrlstring or null
branding.privacyUrlstring or null
statementDescriptorstring
statementDescriptorSuffixstring or null
invoiceSeriesobject
invoiceSeries.invoicestring
invoiceSeries.creditNotestring
billingSettingsobject
billingSettings.dunningobject
billingSettings.dunning.retryOffsetsDaysarray of integer
billingSettings.dunning.finalActionone of unpaid, canceled
billingSettings.entitlementGraceDaysinteger
billingSettings.sendInvoiceobject
billingSettings.sendInvoice.graceDaysinteger
billingSettings.cardExpiryRemindersboolean
billingSettings.pausedEntitlementsboolean
billingSettings.paymentBehaviorone of allow_incomplete, pending_if_incomplete
policiesobject
policies.breakageRecognitionone of at_expiry, manualat_expiry (the default) or manual (held as expired credits until recognised).
policies.supportRefundLimitsarray of objectThe support role's refund limit per currency (M8); a currency not listed has the default of 100 of it.
policies.supportRefundLimits[].amountstringInteger micros as a string.
policies.supportRefundLimits[].currencystring
policies.disputeWalletFreezebooleanFreeze the customer's wallets when a dispute opens (default true; §19.2, M8).
policies.taxIdUnavailableone of charge_as_b2c, blockWhat a sale does when a tax ID couldn't be checked (§9.1 step 1; M13): charge_as_b2c (the default) or block.
portalSettingsobject
portalSettings.allowPlanChangesbooleanCustomers may switch plans along planChangeMatrix (no row: no switch).
portalSettings.planChangeMatrixarray of objectOne row per price: a subscription item on fromPriceId may switch to any of toPriceIds (same mode and currency).
portalSettings.planChangeMatrix[].fromPriceIdprice_… ID
portalSettings.planChangeMatrix[].toPriceIdsarray of price_… ID
portalSettings.allowCancelbooleanCustomers may cancel their subscriptions.
portalSettings.cancelBehaviorone of period_end, immediateA portal cancellation ends the subscription at the period end (default) or at once.
portalSettings.collectCancelReasonbooleanThe portal asks why the customer cancels.
portalSettings.allowQuantityChangesbooleanCustomers may change the quantity (seats) of licensed items.
checkoutSettingsobject
checkoutSettings.localesarray of stringThe brand's languages, its default first. A default, not a restriction: a customer's own language comes first.
checkoutSettings.collectPhoneboolean
checkoutSettings.requireBusinessDetailsone of auto, always, never
createdAtdate-time
updatedAtdate-time

Examples

Read a brand

HTTP
GET /api/v1/brands/brd_01m4tx5nj8emwbyf7y9vcf47x4
Authorization: Bearer or_test_…

Response (200):

JSON
{
  "id": "brd_01m4tx5nj8emwbyf7y9vcf47x4",
  "object": "brand",
  "orgId": "org_01m4tx5nj7ekd958x53w4bntcg",
  "entityId": "ent_01m4tx5nj8emwbyf7y9vcf47x2",
  "slug": "acme-app",
  "name": "Acme App",
  "status": "test_only",
  "isPlatformBrand": false,
  "branding": {
    "logoUrl": null,
    "iconUrl": null,
    "primaryColor": null,
    "accentColor": null,
    "supportEmail": null,
    "supportUrl": null,
    "termsUrl": null,
    "privacyUrl": null
  },
  "statementDescriptor": "ACME APP",
  "statementDescriptorSuffix": null,
  "invoiceSeries": {
    "invoice": "ACM",
    "creditNote": "ACM-CN"
  },
  "billingSettings": {
    "dunning": {
      "retryOffsetsDays": [1, 3, 5, 7],
      "finalAction": "unpaid"
    },
    "entitlementGraceDays": 7,
    "sendInvoice": {
      "graceDays": 14
    },
    "cardExpiryReminders": true,
    "pausedEntitlements": false,
    "paymentBehavior": "allow_incomplete"
  },
  "policies": {
    "breakageRecognition": "at_expiry",
    "supportRefundLimits": [],
    "disputeWalletFreeze": true,
    "taxIdUnavailable": "charge_as_b2c"
  },
  "portalSettings": {
    "allowPlanChanges": true,
    "planChangeMatrix": [],
    "allowCancel": true,
    "cancelBehavior": "period_end",
    "collectCancelReason": true,
    "allowQuantityChanges": false
  },
  "checkoutSettings": {
    "locales": ["en", "hr"],
    "collectPhone": false,
    "requireBusinessDetails": "auto"
  },
  "createdAt": "2026-10-13T12:00:00.000Z",
  "updatedAt": "2026-10-13T12:00:00.000Z"
}

Errors

CodeHTTP statusWhenWhat to do
resource_not_found404No brand with this ID is visible to the request.Check the ID and that your credentials are scoped to the right organization, entity, brand and mode.
permission_denied403You can't see brands here.Ask an organization owner or admin for a role or scope that allows this action.

It can also return these common errors: validation_failed, api_version_unsupported, authentication_required, api_key_invalid, dry_run_not_supported, rate_limited, internal_error.