Recording and transcription
Smart Recording records the conversation from the moment the lead is connected to your agent. The lead's location decides whether both sides are recorded from the start or only the agent's side until the lead gives consent.
What is recorded
- Recording starts when the lead is connected to the agent and ends at hang-up.
- Ringing, voicemail and machine audio are never recorded.
- Agent and lead are on separate tracks.
- Recordings are kept for 1 year by default. Storage is part of the per-minute rate.
- We use recordings and transcripts only to provide the service to the account that made the call. We do not use them to train models.
In New York, sales calls must say at the start whether the call is recorded. The agent says it in the opening line. A recorded announcement plays instead only with consent_method=announcement and a consent record with recorded_voice: true.
The lead's location sets the rule
We use the state you send on the lead, or the state from the address you send. Without either, we use the area code and rate center of the lead's number. A lead with no known state is treated as all-party.
- One-party consent state: both sides are recorded from the moment the lead is connected.
- All-party consent state: only the agent's side is recorded until the lead gives consent. From that point both sides are recorded.
Set before_consent=none to record nothing on all-party calls until consent is given.
Consent on all-party calls
- The lead is connected.
recording.startedarrives withsidesset toagent. - The agent asks in their own words. This is the default,
consent_method=agent_ask. A recorded announcement plays instead only withconsent_method=announcementand a lead whose consent record hasrecorded_voice: true. - The lead agrees. The agent marks it in the console, or your app calls the consent endpoint.
- Both sides are recorded from that moment. We store who consented, when, and the audio of the consent.
If the lead says no, do not mark consent. Their side is not recorded on that call.
POST/v1/calls/{id}/recording/consent
| Parameters | Type | Description |
|---|---|---|
consented_byrequired | string | Who gave consent, usually the lead's name as they said it. |
methodrequired | announcement | agent_ask | How consent was asked for. |
at_ms | integer | Milliseconds from the bridge when consent was given. Defaults to the time of the request. |
curl https://api.liveleg.dev/v1/calls/cal_8Jq2mT4x/recording/consent \
-H "Authorization: Bearer $LIVELEG_API_KEY" \
-d consented_by="Dana Ruiz" \
-d method=agent_askconst res = await fetch('https://api.liveleg.dev/v1/calls/cal_8Jq2mT4x/recording/consent', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.LIVELEG_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ consented_by: 'Dana Ruiz', method: 'agent_ask' }),
});
const consent = await res.json();import os, requests
consent = requests.post(
"https://api.liveleg.dev/v1/calls/cal_8Jq2mT4x/recording/consent",
headers={"Authorization": f"Bearer {os.environ['LIVELEG_API_KEY']}"},
json={"consented_by": "Dana Ruiz", "method": "agent_ask"},
).json() {
"id": "evt_4Kr10Pa2",
"type": "recording.started",
"created_at": "2026-11-03T15:42:07.520Z",
"livemode": true,
"data": {
"recording_id": "rec_0Hy3k",
"call_id": "cal_8Jq2mT4x",
"lead_state": "FL",
"state_source": "lead",
"rule": "all_party",
"sides": "agent"
}
} {
"id": "evt_4Kr13Zx9",
"type": "recording.consent_given",
"created_at": "2026-11-03T15:42:13.180Z",
"livemode": true,
"data": {
"recording_id": "rec_0Hy3k",
"call_id": "cal_8Jq2mT4x",
"consented_by": "Dana Ruiz",
"method": "agent_ask",
"marked_by": "agt_114",
"at_ms": 5660,
"consent_audio_url": "https://api.liveleg.dev/v1/recordings/rec_0Hy3k/consent_audio"
}
} All-party consent states
We treat these 14 states as all-party for phone calls, plus any lead whose state is unknown. All other states are one-party. This is not legal advice.
| State | Statute | Phone calls | Note |
|---|---|---|---|
| California | Cal. Penal Code §§ 632, 632.7 | All parties must consent to recording a confidential call. Calls with a cell or cordless phone need all-party consent whether or not they are confidential. | Smith v. LoanMe (Cal. 2021) applies § 632.7 to the people on the call. Gruber v. Yelp (Cal. Ct. App. 2020) held that recording only your own side can also violate § 632 and § 632.7. |
| Connecticut | Conn. Gen. Stat. § 52-570d; §§ 53a-187, 53a-189 | All parties must consent to recording a phone call, in writing, verbally on the recording, or after a recorded warning. | The all-party rule is in the civil statute. The criminal statutes need one party's consent. |
| Delaware | Del. Code tit. 11, § 1335(a)(4); § 2402(c)(4) | § 1335 makes it a crime to intercept a private phone message without the consent of all parties. | The statutes conflict. § 2402 allows one-party consent, and United States v. Vespe (D. Del. 1975) let a party record. We treat Delaware as all-party. |
| Florida | Fla. Stat. § 934.03(2)(d) | All parties must consent to recording a phone call. | |
| Illinois | 720 ILCS 5/14-2 | All parties must consent to recording a private phone call. | Since 2014 the law covers only conversations that a party reasonably expects to be private. |
| Maryland | Md. Code, Cts. & Jud. Proc. § 10-402(c)(3) | All parties must consent to recording a phone call. | |
| Massachusetts | Mass. Gen. Laws ch. 272, § 99 | Secretly recording a phone call without the permission of all parties is a crime. | The law covers secret recordings. A recording that every party knows about is not secret. |
| Michigan | Mich. Comp. Laws § 750.539c | The statute requires the consent of all parties to eavesdrop on a private conversation. | Sullivan v. Gray (Mich. Ct. App. 1982) held that a participant may record their own conversation. The Michigan Supreme Court has not ruled. We treat Michigan as all-party. |
| Montana | Mont. Code Ann. § 45-8-213(1)(c) | Recording a conversation with a hidden device is a crime unless all parties know about it. | A warning given by one party lets either party record. |
| Nevada | Nev. Rev. Stat. § 200.620 | All parties must consent to recording a phone call. | The statute text reads as one-party. Lane v. Allstate (Nev. 1998) held that phone calls need the consent of all parties. |
| New Hampshire | N.H. Rev. Stat. § 570-A:2 | All parties must consent to recording a phone call. | When a party to the call records it without consent, the offense is a misdemeanor. For anyone else it is a felony. |
| Oregon | Or. Rev. Stat. § 165.540 | One party's consent is enough to record a phone call. | The statute is one-party for phone calls (ORS 165.540(1)(a)). All participants must be told before an in-person conversation is recorded. We keep Oregon on the all-party list as the safer choice. |
| Pennsylvania | 18 Pa. Cons. Stat. §§ 5703, 5704(4) | All parties must consent to recording a phone call. | |
| Washington | Rev. Code Wash. § 9.73.030 | All parties must consent to recording a phone call. | A recorded announcement at the start of the call that it is being recorded counts as consent. Recorded messages never play on sales calls to Washington numbers, so the agent says it live. |
Hawaii and Vermont sometimes appear on all-party lists. Hawaii requires one party's consent for phone calls (Haw. Rev. Stat. § 803-42). Its all-party rule covers recording in private places (§ 711-1111). Vermont has no recording statute, and the federal one-party rule applies (18 U.S.C. § 2511). We treat both as one-party.
Settings
PATCH/v1/recording_settings
| Parameters | Type | Description |
|---|---|---|
mode | smart | off | smart records from the moment the lead is connected to the agent. Default smart. |
consent_rule | by_lead_location | all_party | by_lead_location applies the rule for the lead's state. all_party treats every call as all-party. Default by_lead_location. |
consent_method | announcement | agent_ask | How consent is asked for on all-party calls. agent_ask has the agent ask on the call. announcement plays a recorded announcement, only to leads whose consent record has recorded_voice true. Other leads get agent_ask. Default agent_ask. |
announcement_id | string | Your recorded consent announcement for consent_method=announcement. A standard one is used if you leave it out. |
before_consent | agent_side | none | What is recorded on an all-party call before consent. Default agent_side. |
redact | payment_card | Removes spoken card numbers from the audio and the transcript. |
retention_days | integer | 30 to 3653 (10 years). Default 365. |
transcription | off | post_call | live | Default off. |
tonality | boolean | Tonality analysis on transcribed calls. Default false. |
curl -X PATCH https://api.liveleg.dev/v1/recording_settings \
-H "Authorization: Bearer $LIVELEG_API_KEY" \
-d mode=smart \
-d consent_rule=by_lead_location \
-d consent_method=agent_ask \
-d redact=payment_card \
-d transcription=post_callconst res = await fetch('https://api.liveleg.dev/v1/recording_settings', {
method: 'PATCH',
headers: {
Authorization: `Bearer ${process.env.LIVELEG_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
mode: 'smart',
consent_rule: 'by_lead_location',
consent_method: 'agent_ask',
redact: 'payment_card',
transcription: 'post_call',
}),
});
const settings = await res.json();import os, requests
settings = requests.patch(
"https://api.liveleg.dev/v1/recording_settings",
headers={"Authorization": f"Bearer {os.environ['LIVELEG_API_KEY']}"},
json={
"mode": "smart",
"consent_rule": "by_lead_location",
"consent_method": "agent_ask",
"redact": "payment_card",
"transcription": "post_call",
},
).json() Pause, resume and redact
Pause recording while a card number is read out, then resume. With redact=payment_card, spoken card numbers are removed from the audio and the transcript. Each pause and resume sends recording.sides_changed.
curl -X POST https://api.liveleg.dev/v1/calls/cal_8Jq2mT4x/recording/pause \
-H "Authorization: Bearer $LIVELEG_API_KEY"
curl -X POST https://api.liveleg.dev/v1/calls/cal_8Jq2mT4x/recording/resume \
-H "Authorization: Bearer $LIVELEG_API_KEY" Files and retention
recording.ready arrives after hang-up with the file URL and the sides recorded over time. The URL needs your API key. Recordings are kept for 1 year by default. Retention can be set from 30 days to 10 years. Medicare sales calls must be kept 6 years and collections calls 3 years. Health care accounts sign a business associate agreement before recording. Delete one with DELETE /v1/recordings/{id}. Each deletion sends recording.deleted. Deleted recordings and transcripts are removed from our systems, except where the law requires us to keep a copy.
{
"id": "evt_4Kr7Qm31",
"type": "recording.ready",
"created_at": "2026-11-03T15:46:31.870Z",
"livemode": true,
"data": {
"recording_id": "rec_0Hy3k",
"call_id": "cal_8Jq2mT4x",
"duration_seconds": 262,
"channels": {"left": "agent", "right": "prospect"},
"sides_timeline": [
{"from_ms": 0, "sides": "agent"},
{"from_ms": 5660, "sides": "both"}
],
"consent": {
"rule": "all_party",
"method": "agent_ask",
"consented_by": "Dana Ruiz",
"at_ms": 5660
},
"redactions": 1,
"delete_after": "2027-11-03",
"url": "https://api.liveleg.dev/v1/recordings/rec_0Hy3k/audio"
}
} Transcription and tonality
Recorded calls can be transcribed after the call or live, with a summary, outcome fields and tonality analysis. Transcripts cover the recorded audio only. Settings, events and the live stream are in Transcription.
Prices
Recording is part of the per-minute rate. Transcription and tonality are billed per minute.
| Transcript, after the callSpeaker-labelled, with summary and outcome fields. | $0.02/ min |
| Live transcript, during the callStreamed in real time. | $0.04/ min |
| Tonality analysisTone, energy, sentiment and talk/listen ratio per speaker. | $0.03/ min analyzed |