---
title: "List recipes"
method: GET
path: "/api/businesses/{business_id}/recipes"
tags: ["businesses"]
---

# List recipes

`GET /api/businesses/{business_id}/recipes`

## Request

- Base URL: `https://api.mymarky.ai`
- URL: `https://api.mymarky.ai/api/businesses/{business_id}/recipes`
- Auth: HTTP bearer

List a business's saved generation recipes (presets).

Errors:
    400 invalid_value: The business_id is not a valid UUID.
    401 authentication_required: API key or token is missing, invalid, or revoked.
    403 permission_denied: Your plan does not include API access, or this business is not in your org.
    404 resource_not_found: No business with that ID exists.
    429 rate_limit_exceeded: You sent too many requests this minute.

## Path parameters

- `business_id` string, required: A UUID identifier.

## 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.

## Headers

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

## Response `200`

Successful Response

- PageRecipeResponse
  - `items` RecipeResponse[], required: This page of results.
    - `name` string, nullable: Recipe name.
    - `saved` boolean, nullable: Whether the preset is saved/pinned.
    - `prompt` string, nullable: Freeform brief the preset generates from.
    - `creative_type` string, nullable: Default creative type (e.g. 'design', 'carousel', 'meme').
    - `template_ids` string[], nullable: Templates the preset generates with.
    - `aspect_ratio` string, nullable: Aspect ratio, e.g. '1:1', '9:16', '4:5'.
    - `palettes` Palette[], nullable: Color palettes for generated designs.
      - `name` string: Label for this palette
      - `colors` string[]: Hex color codes in the palette, e.g. ['#0d0c0c', '#FFFFFF', '#121212'].
      - `text_color` string, nullable: Hex color used for body text on designs
      - `accent_color` string, nullable: Hex accent/brand color
      - `background_color` string, nullable: Hex background color for designs
    - `voice` string, nullable: Brand voice override for this preset.
    - `caption_suffix` string, nullable: Text appended to every generated caption.
    - `caption_instructions` string, nullable: Extra caption-writing instructions.
    - `custom_caption_prompt` string, nullable: Custom caption-generation prompt.
    - `custom_meme_prompt` string, nullable: Custom meme-generation prompt.
    - `custom_carousel_prompt` string, nullable: Custom carousel-generation prompt.
    - `ctas` string[], nullable: Call-to-action phrases for designs.
    - `include_stock` boolean, nullable: Whether stock photos may be used.
    - `logo_enabled` boolean, nullable: Whether the logo is placed on designs.
    - `header_font` FontSetting
      - `name` string, required: Font family name, e.g. 'Montserrat'. Must be a font Marky can load (a Google Font, or one with a direct url below).
      - `url` string, nullable: Direct font file URL. Leave null for a Google Font (Marky resolves it by name).
    - `body_font` FontSetting
      - `name` string, required: Font family name, e.g. 'Montserrat'. Must be a font Marky can load (a Google Font, or one with a direct url below).
      - `url` string, nullable: Direct font file URL. Leave null for a Google Font (Marky resolves it by name).
    - `audio_tags` string[], nullable: Audio tags for video generation.
    - `ai_image_model` string, nullable: AI image model to use.
    - `post_count` integer, nullable: How many posts a run generates.
    - `auto_context_enabled` boolean, nullable: Whether auto-context is on.
    - `id` string, required: Recipe ID
    - `business_id` string, nullable: Business this recipe belongs to
    - `created_at` string, required: When the recipe 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.
- `403`: Forbidden — the key is valid but may not access this resource.
- `404`: Not found — no resource matches the id in the path.
- `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)
