---
title: "List Marketplace Playbooks"
method: GET
path: "/api/v1/playbooks/marketplace"
tags: ["playbooks"]
---

# List Marketplace Playbooks

`GET /api/v1/playbooks/marketplace`

## Request

- Base URL: `https://api.badgeia.com`
- URL: `https://api.badgeia.com/api/v1/playbooks/marketplace`
- Auth: none declared

RES-014-ITER-1 MINOR 11 — `/playbooks/marketplace` alias of
`/playbooks/public`.

The persona test hit `/playbooks/marketplace` (the natural name for the
public playbook listing) and got a **422**: with no literal `/marketplace`
route, the request fell through to `GET /playbooks/{playbook_id}`, where
"marketplace" failed UUID parsing → Unprocessable Entity. That's the
CLAUDE.md rule-5 collision family (a literal path losing to the `{id}`
catch-all) AND rule-4 (a confusing 422 where a real resource should
answer).

This literal route is DEFINED ABOVE `/{playbook_id}` in this same router,
so it wins. It delegates to the existing public-listing handler — one
behaviour, two URLs — rather than duplicating the query.

## Query parameters

- `domain` string, nullable
- `sort` string
- `page` integer
- `page_size` integer

## Response `200`

Successful Response

- PaginatedResponsePlaybookPublicRead
  - `items` PlaybookPublicRead[], required
    - `id` string, uuid, required
    - `agent_id` string, uuid, required
    - `name` string, required
    - `version` integer, required
    - `parent_id` string, uuid, nullable, required
    - `is_active` boolean, required
    - `is_default` boolean, required
    - `is_public` boolean, required
    - `playbook_type` string, required
    - `system_prompt` string, nullable
    - `model` string, nullable
    - `temperature` number, nullable
    - `max_tokens` integer, nullable
    - `top_p` number, nullable
    - `few_shot_examples` object[], nullable
    - `tools_config` object, nullable
    - `notes` string, nullable
    - `description` string, nullable
    - `created_at` string, date-time, required
    - `pricing_model` string
    - `price_usd_cents` integer
    - `total_clones` integer
    - `total_revenue_usd_cents` integer
    - `already_hired` boolean
    - `configuration_available` boolean
  - `total` integer, required
  - `page` integer, required
  - `page_size` integer, required
  - `pages` integer, required

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/badgeia/apis/badge.md) · [All operations](https://skmtc.dev/badgeia/apis/badge/llms.txt) · [OpenAPI document](https://skmtc.dev/badgeia/apis/badge/revisions/7e7f7fee8b77?raw)
