---
title: "Get Custom Agent For Review"
method: GET
path: "/agent/custom/{custom_agent_id}/review"
---

# Get Custom Agent For Review

`GET /agent/custom/{custom_agent_id}/review`

## 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/agent/custom/{custom_agent_id}/review`
- Auth: none declared

Everything needed to judge one pending assistant.

Every asset the prompt names comes back with a presigned URL meant for
*viewing*: no filename is attached, so S3 sends no Content-Disposition and
a browser renders it in place rather than saving it. The asset's folder
comes with it. An id the prompt names that no longer resolves is reported
as ``missing`` rather than dropped — a prompt pointing at a deleted asset
is what review is for.

## Path parameters

- `custom_agent_id` string, uuid, required

## Headers

- `x-api-key` string, nullable
- `authorization` string, nullable

## Response `200`

Successful Response

- APICustomAgentReviewDetail: Everything a reviewer needs to judge one pending assistant. The assistant itself — prompt included, unredacted, because a prompt that cannot be read cannot be reviewed — plus every asset that prompt refers to, in the order the prompt names them.
  - `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
  - `data` APICustomAgentData, required
    - `prompt` string
    - `preselected_tools` string[], nullable
    - `available_tools` string[], nullable
    - `demo_asset_url` string, nullable
    - `demo_asset_mime_type` string, nullable
    - `demo_asset_thumbnail_url` string, nullable
    - `demo_asset_status` 'PROCESSING' | 'READY' | 'OPTIMIZED' | 'FAILED'
  - `owner_email` string, nullable
  - `prompt_assets` APICustomAgentReviewAsset[]
    - `asset_id` string, required
    - `path` string, nullable
    - `folder` string, nullable
    - `file_type` string, nullable
    - `url` string, nullable
    - `missing` boolean
  - `approve_url` string
  - `reject_with_comment_url` string

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