---
title: "Read the bounded, customer-scoped Agents aggregate"
method: GET
path: "/v1/dashboard/agents"
---

# Read the bounded, customer-scoped Agents aggregate

`GET /v1/dashboard/agents`

## Request

- Base URL: `https://api.skysay.ai`
- URL: `https://api.skysay.ai/v1/dashboard/agents`
- Auth: none declared

Returns one tenant-bound Agents DTO for SSR. It includes resolved static voice-stack display data, which components the customer actually configured (as opposed to the catalog defaults the resolved stack fills in), every language each agent answers in (`selected_languages`, which is the agent's own `language` alone for an agent whose owner never chose a language set -- `language` remains the one that OPENS the call), an inbound-admission verdict per agent, attached number routing, exact UTC-day activity, each agent's measured reply time (the median of its recorded worker-side reply turns, or an explicit unavailable when nothing was measured -- never a component-constant estimate presented as an observation), and wallet currency without provider or catalog API calls, verification, invoice, SMS, or webhook service reads. The admission verdict is a pure read of workspace state: `admits`/`readiness` reflect only conditions the inbound call path itself would refuse over; `blockers` is not a strict subset of those -- a small, explicitly declared set of codes (currently a misconfigured transfer_to_human destination) is real and actionable but does not affect `admits`/`readiness`, because invoking that tool mid-call fails gracefully rather than refusing the call. `unevaluated` lists the conditions the read could not evaluate before a call exists, and `readiness` is blocked or indeterminate — never ready, because the gates that need the agent's number are not run here. A line-scoped readiness is reported by the Overview aggregate's primary_line. An agent answered by the customer's own service is judged on the endpoints it needs rather than on the managed stack it does not use. Soft-deleted agents are not part of the workspace: they are excluded from `agents` and from `total_agents`. The `component_catalog` is a display-only `selected_agent_display` projection: only listed selections and selected voices already visible under the metered catalogue caps are included, with raw-ID fallback unchanged. Its voice counts/truncation describe that original visibility window, not the complete picker inventory. Creation-only `stack_catalog`, `component_credentials`, `presets`, `voice_library`, and `audio_environments` are absent. Use `/v1/dashboard/agent-create?step=voice` for creation and its gallery, retaining `project_id` and optional pinned `voice`; `voice_library=1` on this list returns 400.

## Response `200`

Agents workspace aggregate

---

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