---
title: "Every account, newest first, searchable. Owner only."
method: GET
path: "/v1/admin/accounts"
tags: ["admin"]
---

# Every account, newest first, searchable. Owner only.

`GET /v1/admin/accounts`

## Request

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

Every account, newest first: id, the person's email and name (null for a key-only
account), label, credits, created_at, last_seen_at, runs, hooks, charged_total,
is_admin, admitted_by (the prefix of the access code that admitted it) and
keys_active; total counts every match. Needs the admin scope and an admin account.
MCP: admin_list_accounts.

## Query parameters

- `q` string, nullable: up to 200 characters: part of an email or label (any case), or the start of an id
- `limit` integer, nullable: page size, 1 to 200 (default 50)
- `offset` integer, nullable: how many to skip

## Headers

- `authorization` string, nullable: Bearer hd_... from POST /v1/accounts or POST /v1/keys

## Response `200`

Successful Response

- AdminAccountList
  - `total` integer, required: accounts matching q, across every page
  - `accounts` AdminAccountItem[], required: newest first
    - `id` string, required
    - `email` string, nullable, required: the person using it, null for a key-only account
    - `name` string, nullable, required
    - `label` string, nullable, required
    - `credits` integer, required
    - `created_at` string, required
    - `last_seen_at` string, nullable, required
    - `runs` integer, required
    - `hooks` integer, required
    - `charged_total` integer, required
    - `is_admin` boolean, required
    - `admitted_by` string, nullable, required: the prefix of the access code that admitted it, null when none did
    - `keys_active` integer, required

## Other responses

- `401`: missing, invalid, revoked or expired API key (code key_expired)
- `403`: the key lacks the admin scope (insufficient_scope), or its account is not the owner's (admin_required)
- `413`: request body over the size cap
- `422`: invalid input
- `500`: our fault; names the request id

---

[API](https://skmtc.dev/hookdetector/apis/hook-detector.md) · [All operations](https://skmtc.dev/hookdetector/apis/hook-detector/llms.txt) · [OpenAPI document](https://skmtc.dev/hookdetector/apis/hook-detector/revisions/b136a2804d2b?raw)
