---
title: "Poll per-carrier launch state"
method: GET
path: "/v1/agents/{id}/launch"
tags: ["Google & carriers"]
---

# Poll per-carrier launch state

`GET /v1/agents/{id}/launch`

## Request

- Base URL: `https://api.cadencercs.com`
- URL: `https://api.cadencercs.com/v1/agents/{id}/launch`
- Auth: HTTP bearer

Reconciles our records with Google's in both directions. `needsAttention` names the rejected and suspended carriers explicitly — they used to read as `launching`, so nobody would ever have gone looking.

## Path parameters

- `id` string, required

## Response `200`

Per-carrier state.

- object
  - `agentStatus` string, required
  - `carriers` object[], required
    - `carrier` string, required
    - `status` 'pending' | 'launching' | 'launched' | 'rejected' | 'suspended', required
    - `googleState` string, nullable
  - `reach` string: Plain-language summary of who can actually be reached.
  - `needsAttention` object[]: Rejected or suspended carriers — these need a human.
    - `carrier` string
    - `status` string

## Other responses

- `401`: Not signed in, and no account-linked API key was sent.
- `404`: No such agent on this account.
- `409`: This agent doesn't exist at Google yet.
- `500`: Unexpected server error. The body is always JSON.
- `502`: Google rejected the request.
- `503`: RBM not configured.

---

[API](https://skmtc.dev/cadencercs/apis/cadence-api.md) · [All operations](https://skmtc.dev/cadencercs/apis/cadence-api/llms.txt) · [OpenAPI document](https://skmtc.dev/cadencercs/apis/cadence-api/revisions/9438443c2081?raw)
