RCS Setup Wizard: Brand and First Agent in One Form
The Messages → RCS → Setup page is a one-shot setup form for a workspace that has not registered an RCS brand yet. It collects the brand identity and the first agent (bot) together and submits both in a single request, so there is no draft-brand step to manage and no approval to wait on between the brand and the agent. Behind it sits the combinedPOST /api/v1/rcs/setup endpoint — one call instead of the two-step POST /api/v1/rcs/brands then POST /api/v1/rcs/bots sequence the RCS onboarding guide walks.
You need an owner, admin, or developer role to open the page.
1. Where the wizard lives
Open Messages → RCS → Setup from the RCS section of the dashboard. It is the first-stop path for a brand-new workspace: when no brand exists yet, the page offers one form that registers the brand and creates the first agent on it.2. One-shot wizard vs the split flow
Two entry points cover the same registration:- The one-shot wizard (this page). Brand and first agent in one submission, one validation pass, one success screen. Everything the agent needs it borrows from the same form — the agent logo is the brand logo. Use it for a workspace’s very first setup.
- The split flow. Create the brand under Messages → RCS → Brands or with
POST /api/v1/rcs/brands, then create agents withPOST /api/v1/rcs/bots(or the wizard under Settings → Channels → RCS). Use it for every agent after the first, and when you want the API path the RCS onboarding guide covers.
422 BRAND_ALREADY_EXISTS; from then on, later agents attach to the existing brand through the split flow. The one-shot submission runs the same brand-then-agent chain server-side: if the agent submission fails, the brand it created is rolled back, so a retry is always a clean first-setup attempt rather than a partial two-step dead-end.
3. The form, card by card
The page validates against the sharedrcsSetupSchema before anything posts and names the first failing field inline — a blank submission never reaches the API.
Brand identity
Contact person
Company address
State or province is required on every registration (up to 128 characters) — the provider’s required-field table carries it, and a missing value is refused before the form submits. Address line 1, city, country, and postal code are likewise required; address line 2 is optional. For KYC-mandatory countries (India, Brazil, and others) the full address block is screened at registration, so fill every line rather than leaving blanks for a later request. The country picker uses ISO two-letter codes.First agent
The submit button stays disabled until every required field is filled and at least one of the agent contact channels is present.
4. What the submission does
One click of Submit brand + first agent sends a singlePOST /api/v1/rcs/setup with everything above. The endpoint creates the brand, records it as submitted, and registers the agent with the brand bundled into the same upstream request — then returns 201 with both records. Success routes to a confirmation screen naming the brand, with shortcuts to Messages → RCS and the Brands list.
A 422 response names the fields that failed validation; a provider-side failure returns its own actionable error — and either way the brand created during the attempt is rolled back, so the next submit starts clean. The logo is required here for two reasons at once: it registers the brand and doubles as the first agent’s logo, and the aggregator rejects an agent submission without one. state_province is required too (up to 128 characters) — it lands in the provider’s required state field, so a blank one is refused before the form submits. Here the logo is collected as a hosted HTTPS URL (brand_logo_url), because it is also forwarded as the first agent’s logo; the file-upload path lives on the Brands console create form (see that guide).
The same combined contract is available to API-first teams:
data.brand is the registered brand, recorded as submitted; data.bot is the first agent, with one pending entry per MCCMNC you sent in carrier_mccmnc. Store data.bot.id — the verify, launch, and quality reads in §5 all take it.
8f2c41ab-9d4e-4c1a-b2e0-1a2b3c4d5e6f) is rolled back before this error returns, and details.retryable marks the retry as safe: resubmitting the same body is a clean first-setup attempt, never a BRAND_ALREADY_EXISTS trap left over from the failed one. A content rejection (an unknown carrier code, a missing asset) arrives the same way as a 422 VALIDATION_ERROR whose details.rejected_reason quotes the directory’s reason — and the rollback applies there too.
GET /api/v1/rcs/bots/:id/quality reads:
verification_status moves to verified; after POST /api/v1/rcs/bots/:id/launch, carrier_statuses."310260".status flips to launched and carriers_launched reaches 1 — the bot is sendable from that point.
5. After the submit
Verification starts the moment the setup posts:- The agent goes straight into carrier review. There is no Devotel-side approval wait for RCS — the aggregator and the carriers review the brand and the agent together from the single submission. Watch the verdict on Messages → RCS → Bots or by polling
GET /api/v1/rcs/bots/:id/qualityforverification_status. - Complete verification the same way as the split flow. Screenshots and KYC documents go through
POST /api/v1/rcs/bots/:id/verify; the walk-through is in the RCS onboarding guide and the verification/KYC guide. - Launch per carrier once verified.
POST /api/v1/rcs/bots/:id/launchasks the carriers to take the agent live; the bot is sendable whencarrier_statusesshowslaunchedon at least one carrier. - Add later agents to the same brand. Use Settings → Channels → RCS or
POST /api/v1/rcs/bots— the setup wizard stays closed once any brand exists.
Troubleshooting
Related
- RCS onboarding — the full API path from brand to launch, plus verification, per-carrier launch, and reach sizing.
- RCS brands console — the granular Messages → RCS → Brands surface for later brands and agents.
- RCS channel page — message shapes, rich cards, and channel behavior.