Skip to main content

Voice Signatures (Verbal Contracts)

Regulated tele-sales, lending, and insurance operations must keep the exact moment a customer verbally agreed to a contract — the spoken “yes, I agree to the terms” — as a discrete, retrievable piece of evidence. A voice signature marks that moment on a call recording: a timed segment start_ms/end_ms bound to your external transaction reference (order id, loan-application id, policy number).
This page describes Orbit’s platform controls. It is not legal advice. Whether a verbal agreement is binding, what a disclosure script must contain, and how long evidence must be retained varies by jurisdiction and by sector (tele-sales, lending, insurance, debt collection carry their own rules). Confirm obligations with qualified counsel before you rely on voice signatures in a dispute.

The discrete artifact

A voice signature is a segment marker on an existing recording — not a separate media file and not a free-text note. Each capture stores:
  • Segment boundariesstart_ms / end_ms offsets into the parent recording, so the isolated moment can be played back through the recording playback surface.
  • Transaction referencetransaction_ref, your external id for the order, loan, or policy the customer agreed to. It is a fast lookup key, not a foreign key to any Orbit entity.
  • Classificationagreement_type (tele_sales, lending, insurance, debt_collection, subscription, or other) and outcome (agreed or declined), so a compliance report can group evidence per regulated vertical.
  • Optional context — the verbatim script_text read to the customer, a transcript_excerpt of what the customer said, the language of the agreement, and the jurisdiction it governs.
Bounds are validated server-side: end_ms must exceed start_ms, and when the recording’s duration is known the segment must fall inside it (a one-second tolerance applies because duration is stored at second granularity). A single recording can hold up to 100 voice signatures — enough for bundled policies or add-ons captured on one call.

Endpoints

All three endpoints live under your tenant’s /compliance namespace and require an authenticated session (any role that can read recordings can read voice signatures).

Capture a voice signature

POST /compliance/voice-signatures
The capture returns 201 with the persisted descriptor. Every capture is recorded in your audit log as compliance.voice_signature_captured with the recording id, transaction reference, agreement type, outcome, and segment boundaries. Errors. 404 VOICE_SIGNATURE_RECORDING_NOT_FOUND when no recording matches the id for your tenant. 422 VOICE_SIGNATURE_INVALID_RANGE when the offsets are incoherent or exceed the recording duration. 422 VOICE_SIGNATURE_LIMIT_REACHED when the recording already holds the maximum of 100 signatures.

List a recording’s voice signatures

GET /compliance/voice-signatures?recording_id=<id> Returns every clip captured against the recording, newest first — an empty array when the recording exists but none were captured. Returns 404 when the recording id does not resolve for your tenant.

Retrieve one voice signature

GET /compliance/voice-signatures/<signature_id>?recording_id=<id> Returns the clip descriptor plus a segment block carrying the parent recording id, the ms boundaries, and the computed duration — pass the recording id and the boundaries to your existing recording playback or signed-URL surface to play or download exactly the isolated moment. Returns 404 VOICE_SIGNATURE_NOT_FOUND when neither the recording nor the clip id matches for your tenant.
Neither retrieval endpoint re-derives media. The voice signature is a marker; playback continues through the recording playback surface you already use, so no second copy of the audio is ever minted.

Persistence and lifecycle

Voice signatures persist under the voice_signatures key of the recording’s existing metadata — no separate table and no migration. That placement is deliberate: a clip inherits the parent recording’s lifecycle for free.
  • Retention. Your recording retention window deletes a signature with its recording; there is no second TTL to configure.
  • Legal hold. Holding the recording holds its signatures — a hold can never be bypassed by deleting a clip independently.
  • GDPR erasure. Erasing a recording erases its signatures in the same operation, so a data-subject deletion request cannot strand verbal-contract evidence.
  • Tenant isolation. Clips resolve only against your own organization id; a recording id from another tenant returns 404.

Orbit holds three separate consent-adjacent artifacts. They answer different questions and none substitutes for another: Recording consent makes the recording lawful; a voice signature makes the content of the agreement retrievable. Capture both in regulated flows — the first gates the media, the second proves the contract.

Role gating and audit

Reading and writing voice signatures requires the same authenticated session as the recordings they annotate. Writes are validated server-side against the parent recording — a session that cannot reach the recording cannot attach a signature to it. Every capture writes an audit log entry (compliance.voice_signature_captured) with the actor, the recording id, the transaction reference, the agreement type, the outcome, and the segment boundaries, so a reviewer can reconstruct who marked which moment on which recording.

Tenant-owned posture

The voice-signature surface is a control, not a conclusion. You decide which calls need a verbal-contract artifact, what disclosure your agents read, which external systems supply the transaction reference, and how long evidence is retained. Orbit stores and indexes the marker and enforces tenant isolation, bounds, and audit — the regulatory judgement about whether a given capture satisfies a specific obligation stays with you and your counsel.