---
title: "List businesses"
method: GET
path: "/api/businesses"
tags: ["businesses"]
---

# List businesses

`GET /api/businesses`

## Request

- Base URL: `https://api.mymarky.ai`
- URL: `https://api.mymarky.ai/api/businesses`
- Auth: HTTP bearer

List the businesses (workspaces) you can access.

An API key sees its organization's businesses. A signed-in user sees every
business in an org they own or administer, plus only the specific businesses
they were added to in an org where they are a guest.

START HERE: every other endpoint takes a required business_id, and this is
the tool that returns them — an agent with no business_id in context begins
with this call. Returns SUMMARY rows only (id, name, description, industry,
website, language, timestamps), newest first. To read a business's full
brand profile (tone, palettes, fonts, logo, writing rules), call
get_business with the id from this list. Optional `name` narrows the list
by case-insensitive substring match. If `next` is set, keep paging with it
before concluding a business doesn't exist.

Errors:
    401 authentication_required: API key or token is missing, invalid, or revoked.
    403 permission_denied: Your plan does not include API access.
    429 rate_limit_exceeded: You sent too many requests this minute.

## Query parameters

- `limit` integer: Max results per page (1-100)
- `cursor` string, nullable: The `next` value from the previous page's response, passed back verbatim. Leave it out for the first page. When `next` is null you have every result.
- `name` string, nullable: Filter by name, case-insensitive substring (e.g. "bakery" matches "Eli's Bakery").

## Headers

- `Marky-Version` '2026-04-08' | '2026-07-17' | '2026-08-02' | '2026-08-04' | '2026-08-06'

## Response `200`

Successful Response

- PageBusinessSummaryResponse
  - `items` BusinessSummaryResponse[], required: This page of results.
    - `id` string, required: Business ID
    - `name` string, nullable: Business name
    - `description` string, nullable: Business description
    - `industry` string, nullable: Industry category
    - `website` string, nullable: Business website URL
    - `language` string: Content language as an ISO 639-1 code (e.g. 'en', 'fr', 'es').
    - `created_at` string, required: When the business was created
    - `updated_at` string, nullable: Last update time
  - `next` string, nullable: Opaque cursor for the next page; null when there are no more. Pass it back verbatim as ?cursor=. Do not construct or decode it.

## Other responses

- `400`: Bad request — the input was malformed or otherwise invalid.
- `401`: Authentication failed — the API key is missing or invalid.
- `422`: Validation error — one or more fields failed validation.
- `429`: Rate limited — retry after the window resets (see Retry-After).
- `500`: Server error — something failed on our side; retry or quote X-Request-Id.

---

[API](https://skmtc.dev/mymarky/apis/marky-public-api.md) · [All operations](https://skmtc.dev/mymarky/apis/marky-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/mymarky/apis/marky-public-api/revisions/25aeacae455c?raw)
