---
title: "Get Public Custom Agents"
method: GET
path: "/preview/agent/custom/list"
---

# Get Public Custom Agents

`GET /preview/agent/custom/list`

## Request

- Base URL: `https://api.tellers.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.tellers.ai/preview/agent/custom/list`
- Auth: none declared

List custom agents marked as public (is_public_read=True).

## Query parameters

- `offset` integer, nullable
- `limit` integer
- `cursor` string, nullable
- `presigned_url_ttl_seconds` integer
- `labels` string[], nullable: Only assistants carrying every one of these labels. Repeat the parameter to require more than one.

## Headers

- `X-Preview-Key` string, nullable
- `x-api-key` string, nullable
- `authorization` string, nullable

## Response `200`

Successful Response

- PreviewCustomAgentListResponse
  - `items` APICustomAgentWithoutData[], required
    - `id` string, required
    - `name` string, required
    - `description` string, required
    - `created_at` string, date-time, required
    - `updated_at` string, date-time, required
    - `last_edit` string, date-time, nullable
    - `logo_url` string, nullable, required
    - `logo_mime_type` string, nullable
    - `logo_status` 'PROCESSING' | 'READY' | 'OPTIMIZED' | 'FAILED'
    - `demo_url` string, nullable
    - `demo_mime_type` string, nullable
    - `is_public_read` boolean
    - `publication_status` 'ORIGINAL' | 'PENDING' | 'POSTED': Where a ``ta_custom_agent`` row sits in the publication flow. An assistant is ORIGINAL and stays editable for its whole life. Publishing freezes a copy of it as PENDING; approving that copy makes it POSTED and retires whichever copy was POSTED before. An assistant can therefore have a live copy and a copy under review at the same time — which is the point, since otherwise submitting an update would mean taking the live one down.
    - `needs_changes` boolean
    - `slug_id` string, nullable
    - `created_from_custom_agent_id` string, nullable
    - `pending_custom_agent_id` string, nullable
    - `pending_needs_changes` boolean, nullable
    - `pending_reviewer_comment` string, nullable
    - `posted_custom_agent_id` string, nullable
    - `labels` string[]
    - `likes_count` integer
    - `dislikes_count` integer
    - `my_vote` boolean, nullable
    - `review` APICustomAgentReview
      - `status` 'REVIEW_PENDING' | 'REVIEW_APPROVED' | 'REVIEW_CHANGE_REQUESTED', required
      - `reviewer_comment` string, nullable
      - `requested_at` string, date-time, nullable
      - `reviewed_at` string, date-time, nullable
    - `role` CustomAgentRole[]
    - `is_owner` boolean, nullable
    - `author_email` string, nullable
  - `next_cursor` string, nullable

## Other responses

- `422`: Validation Error

---

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