---
title: "GET /v2/agent/setup"
method: GET
path: "/v2/agent/setup"
tags: ["agent-setup-v2"]
---

# GET /v2/agent/setup

`GET /v2/agent/setup`

## Request

- Base URL: `https://api.tracklysms.com/api`
- URL: `https://api.tracklysms.com/api/v2/agent/setup`
- Auth: API key in header `X-Api-Key`

## Response `200`

Stored setup evidence; preflight and send admission remain authoritative

- AgentSetupResponse
  - `setup` AgentSetupEvidence
    - `account_id` integer
    - `advisory` boolean
    - `billing` AgentSetupBilling
      - `configured` object: True when a billing row exists, null when absent; not payment or funding eligibility
      - `source` 'stored_configuration'
      - `status` 'active' | 'payment_failed' | 'suspended' | 'unknown'
    - `connection` AgentSetupConnection
      - `active_count` integer: Active unexpired delegated grants observed; not an authority check
      - `api_key_id` string, nullable
      - `authenticated` boolean
      - `count_limited` boolean: Count is a lower bound from at most 100 rows
      - `sandbox` boolean
      - `scope` 'account' | 'api_key'
    - `latest_hold` AgentSetupHold
      - `error_count` integer: Stored refused recipient count for a completed bulk submission
      - `id` string
      - `outcome` 'simulation_completed' | 'submitted' | 'unknown' | 'not_completed'
      - `recipient_count` integer
      - `sandbox` boolean
      - `status` string
      - `submitted_count` integer: Stored successful submission count; never a delivery receipt
    - `next_steps` AgentSetupNextStep[]
      - `code` 'connect_agent' | 'review_senders' | 'review_billing' | 'review_messaging_requirements' | 'run_preflight' | 'prepare_held_send' | 'review_held_send' | 'read_back_execution'
      - `url` string: Fixed trusted Trackly destination; opening it does not complete the step
    - `recent_hold_search_limited` boolean: Only the newest 100 holds for this key were searched; absence is not proof of no earlier send
    - `senders` AgentSetupSenders
      - `active_count` integer: Observed active account-owned lists; may be forbidden by current key policy
      - `count_limited` boolean: Count is a lower bound from at most 100 account lists
      - `eligibility` 'requires_preflight'
      - `scope` 'account_owned'

## Other responses

- `401`: Invalid credentials
- `403`: Account or key authority denied
- `429`: Authentication rate limit
- `503`: Setup evidence unavailable

---

[API](https://skmtc.dev/tracklysms/apis/trackly-sms-api.md) · [All operations](https://skmtc.dev/tracklysms/apis/trackly-sms-api/llms.txt) · [OpenAPI document](https://skmtc.dev/tracklysms/apis/trackly-sms-api/revisions/ac1ad22cb2a9?raw)
