Your first receipted call in 5 minutes.
A copyable walkthrough for agent builders: inspect the approved purpose, run a safe sandbox scenario, and open the signed lifecycle record.
Bellwrit supports outbound calling only; it is not an inbound calling service, a receptionist replacement, or a receptionist overlay.
Get startedThree steps · one signed-in session
From purpose to proof
Step 01
Inspect the approved purpose
Read the fixed purpose first.
Step 02
Run the completed scenario
Record and simulate the scenario.
Step 03
Open the signed lifecycle record
Inspect signed events in your dashboard.
Use the session-backed sandbox
This example requires a signed-in Bellwrit session. The sandbox accepts a fixed, server-approved request and records a provider-free simulation. Self-serve customer API keys are available from Dashboard > API keys; the plaintext appears only once when the key is created. The bearer-key POST /api/v1/calls endpoint calls Retell and can place a real outbound call; it is not a sandbox endpoint.
Agent-readable product resources
Bellwrit's REST API supports authorized outbound call requests, account-scoped lifecycle records, and receipt verification. Live call placement can dial a real destination and requires an entitled account; Bellwrit remains outbound-only.
Copyable walkthrough
Three requests from purpose to receipt
Run these same-origin snippets in a signed-in Bellwrit browser session. The detail route is scoped to your account; “recorded” means persisted by Bellwrit, not delivered to an external webhook receiver.
Step 01
Inspect the approved purpose
The sandbox GET returns its server-owned request before you run anything. The approved purpose is “Confirm whether the clinic has an opening next Tuesday.”GETGET · /api/dashboard/sandbox-callconst response = await fetch('/api/dashboard/sandbox-call', { credentials: 'same-origin', }); if (!response.ok) throw new Error('Sign in to inspect the sandbox purpose.'); const sandbox = await response.json(); console.log(sandbox.request.task.purpose);Step 02
Run the completed scenario
POST the fixed completed scenario. The API creates the record and simulates its lifecycle in one response; it does not contact a telephony provider.POSTPOST · completed scenarioconst response = await fetch('/api/dashboard/sandbox-call', { method: 'POST', credentials: 'same-origin', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ scenario: 'completed' }), }); if (!response.ok) throw new Error('The sandbox scenario could not be recorded.'); const call = await response.json(); console.log(call.outcome.kind, call.outcome.liveCallPlaced); // sandbox false — no live telephony call was placed.Step 03
Open the signed lifecycle record
Use the returned callId to open its protected detail page. Review the canonical event payloads and HMAC-SHA256 signatures stored for your account.DETAILThe public sample receipt below is separate synthetic demo data; its signature strings are illustrative and not live or verifiable. It is not the receipt for this sandbox run.
View the synthetic public sample receiptOpen · returned callIdwindow.location.assign( '/dashboard/calls/' + encodeURIComponent(call.callId), );
Straightforward usage tiers
Pricing for outbound minutes
Each plan includes the listed monthly minutes. Additional usage is $0.25/minute.
Starter
Growth
Scale
$0.25/minute overage
Outbound calling with a signed, reviewable lifecycle record.
The sandbox flow shown here is account-backed and provider-free. A call-specific public receipt and public bearer-key sandbox are not currently available.