---
title: "Record launch-questionnaire answers"
method: PATCH
path: "/v1/agents/{id}/launch-info"
tags: ["Agents"]
---

# Record launch-questionnaire answers

`PATCH /v1/agents/{id}/launch-info`

## Request

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

Held here because Google's launch questionnaire **cannot be edited after submission** — this is what lets you check the answers while they are still changeable. Accepts snake_case or camelCase for each field.

## Path parameters

- `id` string, required

## Request body

- object
  - `launch_video_url` string: A recording of the full flow, including a STOP exchange.
  - `reviewer_instructions` string: How a reviewer reaches the agent.
  - `trigger_description` string: What causes a message to be sent.
  - `interaction_types` string: What the conversation does.
  - `contact_name` string: A named individual at the brand.
  - `contact_email` string: That person's individual mailbox — **not** a shared alias. Google emails it a mandatory authorisation request, and a role mailbox is a rejection.
  - `contact_phone` string
  - `contact_title` string: Google's schema marks this optional and their launch endpoint refuses without it.
  - `optin_description` string: How consent is captured.
  - `second_use_case` string
  - `rbm_service_id` string: The agent's `bot@…` address, from the Console overview page. Cannot be read back from Google's API; every deep link is built from it.
  - `deeplink_phone` string: Default phone number for generated deep links.

## Response `200`

Updated.

- object
  - `ok` boolean, required
  - `updated` number, required: How many fields changed.
  - `agent` Agent: An agent as the API describes it. The webhook plumbing (`webhook_integration_id`, `webhook_uri`, token version) is deliberately not on the wire; `hasOwnWebhook` is the part worth knowing.
    - `id` string, required
    - `brand_id` string, required
    - `display_name` string, required
    - `rbm_agent_id` string, nullable: The agent's id at Google. Null until sync-google or link-google.
    - `use_case` string, nullable
    - `hosting_region` string, nullable: `NORTH_AMERICA` | `EUROPE` | `ASIA_PACIFIC`. **Permanent** once the agent exists at Google.
    - `billing_category` string, nullable: `CONVERSATIONAL` | `NON_CONVERSATIONAL`. Fixed at launch; only CONVERSATIONAL gets 24-hour session billing.
    - `region` string: Derived API endpoint prefix, not Google's hosting region.
    - `status` 'draft' | 'created' | 'submitted' | 'verified' | 'launching' | 'launched' | 'rejected', required: `created` reaches accepted test devices only. `launched` reaches real recipients, per carrier.
    - `hasOwnWebhook` boolean: Whether this agent overrides the partner-level inbound webhook at Google.
    - `rbm_service_id` string, nullable: The agent's messaging address (`bot@…`). Not readable from Google's API — copied by hand from the Console.
    - `deeplink_phone` string, nullable
    - `launch_video_url` string, nullable
    - `reviewer_instructions` string, nullable
    - `trigger_description` string, nullable
    - `interaction_types` string, nullable
    - `contact_name` string, nullable
    - `contact_email` string, nullable
    - `contact_phone` string, nullable
    - `contact_title` string, nullable
    - `optin_description` string, nullable
    - `second_use_case` string, nullable
    - `submitted_at` string, nullable
    - `verified_at` string, nullable
    - `reject_reason` string, nullable
    - `created_at` string

## Other responses

- `400`: No recognised fields in the body.
- `401`: Not signed in, and no account-linked API key was sent.
- `404`: No such agent on this account.
- `500`: Unexpected server error. The body is always JSON.

---

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