Skip to content

List brands

The brands.list operation: GET /api/v1/brands in the REST API and the brands_list tool in the MCP server.

GET/api/v1/brands

Lists brands, newest first. What a request sees depends on its scope: an organization-level request every brand of every entity (filter with entityId), a request inside one entity all of that entity's brands, and a request inside one brand only that brand.

Paginate with limit (1–100, default 10) and starting_after (the next_cursor of the previous page).

At a glance

  • REST: GET /api/v1/brands
  • MCP tool: brands_list
  • Operation ID: brands.list
  • 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
  • Pagination: limit (at most 100) and starting_after
  • Authentication: API key with the brands:read scope
  • Since: M1

Request

Query parameters

FieldTypeRequiredDescription
entityIdent_… IDNo
limitinteger (1 to 100)No
starting_afterbrd_… IDNo

Response

200 OK with a JSON object, a page of the list (newest first):

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

Examples

Every brand of one entity

HTTP
GET /api/v1/brands?entityId=ent_01m4tx5nj8emwbyf7y9vcf47x2
Authorization: Bearer or_test_…

Response (200):

JSON
{
  "object": "list",
  "data": [
    {
      "id": "brd_01m4tx5nj8emwbyf7y9vcf47x5",
      "object": "brand",
      "orgId": "org_01m4tx5nj7ekd958x53w4bntcg",
      "entityId": "ent_01m4tx5nj8emwbyf7y9vcf47x2",
      "slug": "acme-labs",
      "name": "Acme Labs",
      "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": "LAB",
        "creditNote": "LAB-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"
    },
    {
      "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"
    }
  ],
  "has_more": false,
  "next_cursor": null
}

Errors

CodeHTTP statusWhenWhat to do
validation_failed400A filter or pagination value is malformed.Fix the fields listed in details.issues and send the request again.
scope_mismatch403entityId names an entity outside the request's scope.Use credentials scoped to that organization, entity or brand, or leave the scope fields out of the request.
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: api_version_unsupported, authentication_required, api_key_invalid, resource_not_found, dry_run_not_supported, rate_limited, internal_error.