Skip to main content
Your outbound, receipted.

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 started

Three steps · one signed-in session

From purpose to proof

A server-approved request becomes an account-scoped lifecycle record.

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.

  1. 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.”
    GET
    GET · /api/dashboard/sandbox-call
    const 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);
  2. 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.
    POST
    POST · completed scenario
    const 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.
  3. 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.
    DETAIL

    The 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.

    Open · returned callId
    window.location.assign(
      '/dashboard/calls/' + encodeURIComponent(call.callId),
    );
    View the synthetic public sample receipt

Straightforward usage tiers

Pricing for outbound minutes

Each plan includes the listed monthly minutes. Additional usage is $0.25/minute.

Starter

$49/month
250 minutes included

Growth

750 minutes
$149/month
750 minutes included

Scale

$399/month
2,000 minutes included

$0.25/minute overage

Outbound calling with a signed, reviewable lifecycle record.

Get started

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.