---
title: "Browse public agents without signing in"
method: GET
path: "/api/v1/agent_marketplace"
tags: ["agent_marketplace", "Agent Marketplace"]
---

# Browse public agents without signing in

`GET /api/v1/agent_marketplace`

## Request

- Base URL: `https://composal.com` (the document declares no server; this is the origin it was published from)
- URL: `https://composal.com/api/v1/agent_marketplace`
- Auth: none required

Backs composal.com/marketplace, signed in or not. Signed out it lists public listings only and `can_manage` is false. With a browser session whose active organization has agents on, it reads as that organization (its own listings and management too, and `scope=mine`). `viewer` says which.

## Query parameters

- `q` string
- `category` string
- `scope` 'composal' | 'mine'
- `page` integer

## Response `200`

Public marketplace listings

- PublicAgentMarketplaceCatalog
  - `listings` AgentListing[], required
    - `id` string, required
    - `slug` string, required: Readable, permanent address segment: /marketplace/<slug>.
    - `name` string, required
    - `summary` string, required
    - `category` string, required
    - `visibility` 'organization' | 'link' | 'public', required
    - `installs_count` integer, required
    - `featured` boolean, required
    - `version` integer, required
    - `publisher_name` string, required: "Composal" on listings Composal publishes.
    - `from_composal` boolean, required: One of Composal's ready-made listings.
    - `catalog_key` string, nullable, required: Stable key of a Composal listing, which names its character; null for other listings.
    - `publisher_avatar_url` string, nullable, required: The publisher's own profile picture; null for Composal's listings and publishers without one.
    - `organization_name` string, required
    - `counts` object, required
      - `memories` integer, required
      - `skills` integer, required
      - `integrations` integer, required
    - `integration_toolkits` string[], required
    - `can_manage` boolean, required
    - `created_at` string, date-time, required
    - `updated_at` string, date-time, required
  - `featured` AgentListing[], required
    - `id` string, required
    - `slug` string, required: Readable, permanent address segment: /marketplace/<slug>.
    - `name` string, required
    - `summary` string, required
    - `category` string, required
    - `visibility` 'organization' | 'link' | 'public', required
    - `installs_count` integer, required
    - `featured` boolean, required
    - `version` integer, required
    - `publisher_name` string, required: "Composal" on listings Composal publishes.
    - `from_composal` boolean, required: One of Composal's ready-made listings.
    - `catalog_key` string, nullable, required: Stable key of a Composal listing, which names its character; null for other listings.
    - `publisher_avatar_url` string, nullable, required: The publisher's own profile picture; null for Composal's listings and publishers without one.
    - `organization_name` string, required
    - `counts` object, required
      - `memories` integer, required
      - `skills` integer, required
      - `integrations` integer, required
    - `integration_toolkits` string[], required
    - `can_manage` boolean, required
    - `created_at` string, date-time, required
    - `updated_at` string, date-time, required
  - `sections` object[], required
    - `category` string, required: The section's category; "composal" names the section of Composal's own listings.
    - `scope` 'composal', nullable, required: The catalog scope that opens this section in full; null when its category does.
    - `listings` AgentListing[], required
      - `id` string, required
      - `slug` string, required: Readable, permanent address segment: /marketplace/<slug>.
      - `name` string, required
      - `summary` string, required
      - `category` string, required
      - `visibility` 'organization' | 'link' | 'public', required
      - `installs_count` integer, required
      - `featured` boolean, required
      - `version` integer, required
      - `publisher_name` string, required: "Composal" on listings Composal publishes.
      - `from_composal` boolean, required: One of Composal's ready-made listings.
      - `catalog_key` string, nullable, required: Stable key of a Composal listing, which names its character; null for other listings.
      - `publisher_avatar_url` string, nullable, required: The publisher's own profile picture; null for Composal's listings and publishers without one.
      - `organization_name` string, required
      - `counts` object, required
        - `memories` integer, required
        - `skills` integer, required
        - `integrations` integer, required
      - `integration_toolkits` string[], required
      - `can_manage` boolean, required
      - `created_at` string, date-time, required
      - `updated_at` string, date-time, required
    - `has_more` boolean, required
  - `next_page` integer, nullable, required
  - `categories` string[], required
  - `viewer` MarketplaceViewer, required: Who a public marketplace response was read for.
    - `signed_in` boolean, required
    - `organization` object, nullable, required: The organization the visitor browses as; null signed out or when agents are off there.
      - `slug` string, required
      - `name` string, required

## Other responses

- `401`: Unauthorized
- `403`: Forbidden
- `404`: Not found
- `422`: Unprocessable entity
- `502`: Bad gateway

---

[API](https://skmtc.dev/composal/apis/vex-api.md) - [All operations](https://skmtc.dev/composal/apis/vex-api/llms.txt) - [OpenAPI document](https://skmtc.dev/composal/apis/vex-api/revisions/74298a24e040?raw)
