Skip to main content

Onboarding API

Onboarding endpoints exposed by the Devotel CPaaS API Base path: /api/v1/onboarding Endpoint count: 6

Get workspace provisioning progress

GET /api/v1/onboarding/provisioning-status
Real-time provisioning signals polled by the post-signup provisioning panel: whether the operator’s email is verified, the tenant schema has been created, trial credits have been granted (informational only), and at least one API key has been seeded. readyCount and allReady are computed from the three blocking signals (email, schema, API key). Poll at ~2s intervals during signup; responses are cached 5s so the panel advances rows with sub-second lag.
string (enum: true|false)
Sandbox opt-in for Clerk-session-authenticated requests. Set to true to route the call through the test-mode pipeline: no real provider delivery, no credits deducted, response meta.test_mode: true. Ignored for live API keys (dv_live_sk_*) — server-to-server clients must use a test-prefixed key (dv_test_sk_*) to exercise sandbox. Test-prefixed keys unconditionally enable sandbox regardless of this header.

Get the SMS getting-started checklist

GET /api/v1/onboarding/sms-checklist
Channel-scoped fast-path for the SMS surface’s 5-item getting-started panel: whether the org has an active API key, a purchased number, an approved SMS sender ID, a sent SMS message, and an active webhook endpoint. Collapses six dashboard queries into one round-trip; results are cached 30s. Use it to render the SMS onboarding progress header (completedCount of 5) without hitting six endpoints.
string (enum: true|false)
Sandbox opt-in for Clerk-session-authenticated requests. Set to true to route the call through the test-mode pipeline: no real provider delivery, no credits deducted, response meta.test_mode: true. Ignored for live API keys (dv_live_sk_*) — server-to-server clients must use a test-prefixed key (dv_test_sk_*) to exercise sandbox. Test-prefixed keys unconditionally enable sandbox regardless of this header.

Get the getting-started checklist

GET /api/v1/onboarding/status
Server-derived 9-step getting-started checklist (verify email, create + name the workspace, add a payment method, receive the trial credit, buy a number, send a message, add a contact, and build a campaign/agent/invite). Each step reports completed, completedAt, and whether completion came from the platform’s own probes (system) or a manual override (user), plus the next incomplete step for the resume banner. Poll this to render or hide the dashboard checklist — responses are cached 60s per (org, user) and degrade to an all-incomplete 200 when the backend is briefly unavailable, so the UI never throws on a transient miss.
string (enum: true|false)
Sandbox opt-in for Clerk-session-authenticated requests. Set to true to route the call through the test-mode pipeline: no real provider delivery, no credits deducted, response meta.test_mode: true. Ignored for live API keys (dv_live_sk_*) — server-to-server clients must use a test-prefixed key (dv_test_sk_*) to exercise sandbox. Test-prefixed keys unconditionally enable sandbox regardless of this header.

Get the compliance status timeline

GET /api/v1/onboarding/status-timeline
Aggregated self-service verification timeline across account KYC, US 10DLC brands + campaigns, per-country compliance profiles, and per-number compliance state. Each row reports a folded state (pending / in_review / approved / rejected / not_applicable), submitted and updated timestamps, a documented SLA + computed ETA when the underlying service defines one (KYC only: 24h), the current blocker line, and a deep-link resolveUrl to fix it. Use it to power one where-verification-is-stuck view instead of polling five services; cached 60s per org.
string (enum: true|false)
Sandbox opt-in for Clerk-session-authenticated requests. Set to true to route the call through the test-mode pipeline: no real provider delivery, no credits deducted, response meta.test_mode: true. Ignored for live API keys (dv_live_sk_*) — server-to-server clients must use a test-prefixed key (dv_test_sk_*) to exercise sandbox. Test-prefixed keys unconditionally enable sandbox regardless of this header.

Mark an onboarding step complete

POST /api/v1/onboarding/complete-step
Manually mark one of the nine canonical onboarding steps as done for the calling user: stores a per-(org, user, step) override that the status derivation merges on top of its automatic probes, so a step that isn’t auto-detectable (e.g. a step completed in the operator’s own tooling) still clears from the checklist. Powers the dashboard’s Mark-as-done affordance; admin-or-higher only and audit-logged.
string
Stripe-style idempotency token. Pass a stable, client-generated value (1-255 chars) to dedupe retries on transient timeouts. The same key+credential+path replays the original response for 24h on 2xx (5min on 4xx, 30s on 5xx). Returns 409 if a concurrent request with the same key is already in flight; replayed responses include the Idempotency-Replay: true response header.
string (enum: true|false)
Sandbox opt-in for Clerk-session-authenticated requests. Set to true to route the call through the test-mode pipeline: no real provider delivery, no credits deducted, response meta.test_mode: true. Ignored for live API keys (dv_live_sk_*) — server-to-server clients must use a test-prefixed key (dv_test_sk_*) to exercise sandbox. Test-prefixed keys unconditionally enable sandbox regardless of this header.
string (enum: email_verified|org_created|org_named|payment_method_added|trial_credit_granted|first_number_purchased|…)
required
One of the nine canonical onboarding step ids (e.g. first_number_purchased).

Skip an onboarding step

POST /api/v1/onboarding/skip-step
Dismiss one of the nine canonical onboarding steps that does not apply to the org (e.g. payment_method_added on a sandbox-only workspace). Behaves exactly like completing the step — the override row is marked skipped, the step surfaces as completed with completedBy: 'user' in the status response, and the distinction is retained for product analytics. Admin-or-higher only; the change is audit-logged.
string
Stripe-style idempotency token. Pass a stable, client-generated value (1-255 chars) to dedupe retries on transient timeouts. The same key+credential+path replays the original response for 24h on 2xx (5min on 4xx, 30s on 5xx). Returns 409 if a concurrent request with the same key is already in flight; replayed responses include the Idempotency-Replay: true response header.
string (enum: true|false)
Sandbox opt-in for Clerk-session-authenticated requests. Set to true to route the call through the test-mode pipeline: no real provider delivery, no credits deducted, response meta.test_mode: true. Ignored for live API keys (dv_live_sk_*) — server-to-server clients must use a test-prefixed key (dv_test_sk_*) to exercise sandbox. Test-prefixed keys unconditionally enable sandbox regardless of this header.
string (enum: email_verified|org_created|org_named|payment_method_added|trial_credit_granted|first_number_purchased|…)
required
One of the nine canonical onboarding step ids (e.g. first_number_purchased).