Skip to content

Developers

Connect phone outcomes to the systems that run the business.

Havio is not positioned as a raw voice API. The developer surface exists to move call outcomes into CRMs, calendars, ticketing tools, dashboards, and internal workflows.

Event example

Call completed

{
  "event": "call.completed",
  "callId": "call_01JLC8W9Q4P2N7A6K3",
  "intent": "appointment_booking",
  "outcome": "booked",
  "summary": "Caller booked a Tuesday repair visit.",
  "handoffRequired": false,
  "consent": {
    "aiDisclosed": true,
    "recordingEnabled": false
  },
  "destinationStatus": "calendar_written"
}

Webhooks

Send call summaries, tags, booking status, transfer outcomes, and transcript links to internal systems.

Workflow events

Model the lifecycle from call started to intent detected, booking requested, transfer attempted, and call completed.

Integration briefs

Document what Havio can read and write before connecting configured CRMs, calendars, ticketing systems, sheets, and alerts.

Event contract explorer

Make every call outcome inspectable before it reaches production systems.

Developer-first competitors often show a flexible API. Havio should be clearer for SMB operators: what event is sent, what system receives it, who owns failure, and which caller-data boundaries apply.

call.completed

A handled call becomes a reviewable business record.

Use this event when the caller reached a safe outcome: answered, summarized, tagged, and routed to the right follow-up path.

Destination

CRM note, call log, sheet row, or internal workflow queue.

Owner

Operations owner reviews summaries, missed intents, and destination status.

Failure rule

If the destination rejects the write, Havio keeps the call summary and flags manual follow-up.

Security rule

Send only the useful caller fields and keep transcript or recording access behind approved permissions.

Payload preview

Minimum useful event fields

{
  "event": "call.completed",
  "intent": "lead_qualification",
  "outcome": "qualified",
  "destinationStatus": "crm_task_created",
  "aiDisclosed": true
}
callIdcaller.phoneintentoutcomesummarydestinationStatusconsent.aiDisclosed

Production readiness

0%

0 of 6 production checks complete

Integration contract

What technical buyers should confirm.

Which events are needed after each call?
Which system is the source of truth for customers, jobs, or appointments?
What fields must be written back after booking or transfer?
Who reviews failed writes, missed intents, and duplicate records?

Implementation model

Technical work starts after the call flow is real.

The right developer experience is not a blank API. It is a controlled workflow contract that says what the agent may read, what it writes, and who owns exceptions.

1. Define events

Choose the call outcomes the business needs: completed calls, bookings, transfers, failed writes, and unresolved intents.

2. Map systems

Decide which CRM, calendar, ticketing tool, sheet, alert channel, or internal API owns the final record.

3. Test failure paths

Confirm duplicate handling, retries, missing fields, permission failures, signature checks, and who reviews unresolved writes.

Production contract

The docs surface the operational rules buyers usually have to ask for.

Havio keeps the public developer surface practical: who owns access, how events are shaped, what happens when delivery fails, and where caller data is allowed to go.

Access model

Managed webhook signing secrets are copy-once and scoped to an endpoint. API keys remain Preview until a production API actually consumes them.

Schema model

Events use stable call IDs, explicit consent fields, destination status, and versionable event names so downstream systems can evolve without silent breakage.

Reliability model

Signed webhook delivery uses a stable delivery ID for automatic retries, durable terminal states, and an idempotent operator replay that creates a new delivery ID.

Data boundary

Payloads should contain the minimum useful caller fields. Secrets, private tokens, unnecessary sensitive data, and broad transcript dumps stay out by default.