---
title: "ADMIN-OPS-001 — search ALL agents incl. private/inactive (admin-gated)"
method: GET
path: "/api/v1/admin/agents"
tags: ["admin"]
---

# ADMIN-OPS-001 — search ALL agents incl. private/inactive (admin-gated)

`GET /api/v1/admin/agents`

## Request

- Base URL: `https://api.badgeia.com`
- URL: `https://api.badgeia.com/api/v1/admin/agents`
- Auth: none declared

List every agent — including private (is_public=False) and soft-deleted
(is_active=False) rows the public list can't reach.

Per row: id, name, owner_email, is_public, is_active, connection_mode,
composite_score (latest overall score, may be null), registry_status,
verified_at, description. Owner emails + latest scores are batched (no N+1).

Filters (all optional, AND-combined): `search` (name substring),
`owner_email` (exact personal-owner email, case-insensitive), and `team_id`
(exact workspace UUID).

Auth: anonymous → 401, non-admin → 403, admin → 200. Flag-off → 404.
Pagination caps at 100 (rule #9).

## Query parameters

- `page` integer
- `page_size` integer
- `search` string, nullable: Case-insensitive name substring filter.
- `owner_email` string, nullable: Filter to agents owned by this exact email (case-insensitive). Backs the Accounts tab's 'view this account's agents' row action.
- `team_id` string, uuid, nullable: Filter to agents owned by this exact workspace UUID.

## Response `200`

Successful Response

- object

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