---
title: List Brands
api: GET /brands
description: "List all brands registered under your account."
---

> **For AI agents:** the complete documentation index is at [llms.txt](https://docs.boringmarketing.com/llms.txt). Append `.md` to any page URL for its markdown version.

Returns all brands for the authenticated user as a bare JSON array. Optionally filter by domain.

## Query parameters

<ParamField query="domain" type="string">
  Filter by exact domain match.
</ParamField>

## Response

A bare JSON array (not wrapped in an envelope):

```json
[
  {
    "id": "ea502f67-338b-47e4-a245-5c4eea8bd8d2",
    "domain": "yourdomain.com",
    "name": "Your Brand",
    "created_at": "2026-04-01T12:00:00Z",
    "is_managed": false
  },
  {
    "id": "ea49b3eb-bfba-4a73-8ae8-e9c320ca68cd",
    "domain": "otherbrand.com",
    "name": "Other Brand",
    "created_at": "2026-04-02T15:30:00Z",
    "is_managed": false
  }
]
```

| Field | Type | Notes |
|---|---|---|
| `is_managed` | `boolean` | Always `false` for brands the caller owns directly. **Admin callers** (accounts in `ADMIN_EMAILS`) additionally see a union with every managed-account brand, where those entries have `is_managed: true`. Non-admin callers never see managed brands from other accounts. |

## Example

<CodeGroup>
```bash cURL
curl -H "X-API-Key: $BM_API_KEY" \
  https://api.boringmarketing.com/brands
```

```python Python
brands = httpx.get(
    "https://api.boringmarketing.com/brands",
    headers={"X-API-Key": api_key},
).json()
for b in brands:
    managed = " [managed]" if b.get("is_managed") else ""
    print(f"{b['name']} ({b['domain']}){managed}")
```
</CodeGroup>
