POST /v1/rcs/agents/{id}/submit
Submits the agent for Google / carrier review. The agent moves to PENDING_REVIEW status and becomes read-only until the review completes.

Request

Authorization
string
required
Bearer <api_key>
id
string
required
Agent ID. Must be in DRAFT or REJECTED state.
The request body is empty — all agent fields are set via POST /v1/rcs/agents (immutable fields) and PATCH /v1/rcs/agents/{id} (profile fields).

Pre-submission checklist

The platform validates required fields before forwarding the submission to Google. All of the following must be present:
  • display_name — brand name set
  • description — non-empty
  • color — valid hex with ≥ 4.5:1 contrast ratio to white
  • logo_url — reachable HTTPS URL, ≥ 224 × 224 px, ≤ 50 kB
  • banner_url — reachable HTTPS URL, 1440 × 448 px (45:14 ratio), ≤ 200 kB (recommended)
  • At least one of: phone, email, or website
  • privacy_policy_url — valid HTTPS URL
  • terms_of_service_url — valid HTTPS URL
  • region, billing_category, use_case — set at creation
If validation fails, the endpoint returns 422 with a list of missing or invalid fields.

Response

{
  "agent_id": "ag_draft_a1b2c3",
  "status": "PENDING_REVIEW",
  "submitted_at": "2026-03-28T10:00:00Z",
  "estimated_review_days": "5–10"
}
status
string
PENDING_REVIEW — Google review is in progress. The agent cannot be edited until review completes.
estimated_review_days
string
Approximate review window. Initial reviews typically take 5–10 business days; resubmissions vary by market and carrier.

Webhook notification

Subscribe to agent.approved and agent.rejected on the Webhooks API to receive real-time notification when Google completes the review, instead of polling GET /v1/rcs/agents/{id}.

Why agents get rejected

Google reviews every agent submission manually. Below are the most common rejection reasons and how to avoid them.
privacy_policy_url and terms_of_service_url must point to real, brand-specific pages hosted on your domain. Google rejects agents whose URLs lead to:
  • Generic template pages (“Lorem ipsum”, default WordPress privacy policy generators)
  • Top-level homepages with no visible privacy or terms content
  • URLs that 404 or redirect to unrelated domains
  • PDF downloads that don’t clearly identify the brand
Fix: host dedicated /privacy and /terms pages under your brand’s domain with content that names your company, describes data handling, and is written in the language of your target market.
The logo is the most visible brand element in the RCS conversation. Common issues:
  • Below minimum resolution (224 × 224 px for logo)
  • Excessive whitespace or padding around the logo mark
  • Blurry, upscaled, or watermarked images
  • Banner not matching the required 1440 × 448 px (45:14) aspect ratio
  • File exceeds size limits (50 kB logo, 200 kB banner)
Fix: export logos as sharp PNGs at exactly the required dimensions with a transparent or brand-colored background. Crop tightly — Google renders the logo in a small circle.
The description field should explain what the agent does, not market the brand. Google rejects descriptions like “Best deals on electronics!” or “Your trusted partner.”Fix: write a factual one-liner: “Order updates, delivery tracking, and customer support for [Brand] customers.”
The color hex must achieve a ≥ 4.5:1 contrast ratio against white. Light pastel or near-white brand colors are rejected because they’re invisible in the conversation UI.Fix: use WebAIM’s contrast checker and test your hex value against #FFFFFF.
If you selected TRANSACTIONAL but your description implies marketing or promotional content, Google will flag a mismatch.Fix: use MULTI_USE unless you have a specific compliance reason to restrict to a narrower use case. It covers transactional, conversational, and newsletter traffic.
At least one of phone, email, or website must be set and reachable. Google may test-call or visit the URL.Fix: provide a working customer-facing contact — not a developer email or internal Slack channel.
After rejection, read the rejection_reason field on the agent object (GET /v1/rcs/agents/{id}). Fix the flagged issues via PATCH /v1/rcs/agents/{id}, then resubmit. Resubmissions typically review faster than initial submissions.

Get agent status

Poll approval status and read rejection reasons.

Update agent

Fix rejected profile fields before resubmitting.

Carrier launch

Track which carriers have activated your approved agent.