Channels and ingest tokens
Model your phone lines, bots and queues as channels, issue ingest tokens for integrations, configure sampling, providers and test calls.
A channel is a source of calls: a phone number, an AI agent deployment, a team's queue. Every call belongs to exactly one channel, and the channel decides which rubric grades it, which language to expect, and how much of the traffic to analyse. Create one channel per thing you want to compare.
Channel settings
| Setting | Meaning |
|---|---|
| Name | Shown everywhere calls are listed and in webhook payloads. |
| Phone number | Optional E.164 number, for your own reference and for provider integrations. |
| Provider | none, twilio, plivo, vonage or custom. Twilio unlocks the recording callback and test calls. |
| Provider account and auth token | Credentials for the provider. The auth token is write-only: it can be replaced but never read back. |
| Rubric template | The template used to grade this channel's calls. Falls back to the workspace default when empty. |
| Language | A BCP-47 tag (en, de, es-ES) or automatic detection. Pinned to the transcription engine and sets the lexicons used by the fault detectors. A single upload can override it with its own language, so a multilingual channel can stay on detection. Detection recognises fewer languages than transcription supports, so set this when the channel's calls are in one language. |
| Sample percent | 1 to 100. Grade only this share of incoming calls; the rest are stored as Skipped and are not metered. |
| Minimum duration | Calls shorter than this many seconds are skipped. Pass durationHintSec in the ingest metadata so the check runs before transcription. |
| Status | Active or paused. Paused channels reject ingest requests. |
| Notes | Free text for your team. |
Channels do not carry latency thresholds or an agent type. Thresholds are part of the rubric; the agent type (ai or human) is metadata on each call, so one channel can receive both if that is how your telephony is wired.
Ingest tokens
An ingest token authenticates an integration that sends calls into one channel. Tokens are:
- Prefixed with
vk_and shown once, at creation. Store the plaintext in your secret manager. - Bound to their channel: a token for channel A cannot post to channel B.
- Optionally restricted to IP ranges (CIDR allowlist) and given an expiry.
- Tracked: last used, last IP and usage count are visible in the channel view.
A channel can have several tokens, which makes rotation painless: create the new one, switch the integration, revoke the old one. Creating and revoking tokens requires the Admin role.
Present the token as X-Ingest-Token: vk_… or as Authorization: Bearer vk_…. See the ingest API reference for the endpoints it unlocks.
Twilio recording callback
With the provider set to Twilio and credentials entered, VoiceLens accepts Twilio's recording status callback directly:
Copy the callback URL from the channel view
It has the form
https://voicelens.app/api/ingest/{channelId}/twilio/recording-status.Configure it in Twilio
Set it as the
recordingStatusCallback(TwiML<Record>,<Dial record>, or the Recordings API) for thecompletedevent.Done
VoiceLens verifies
X-Twilio-Signatureagainst the channel's auth token, checks the Account SID when one is configured, downloads the recording from Twilio and grades it. TheCallSidbecomes the call'sexternalCallId; theRecordingSidis used for deduplication.
Test calls
For AI agents and IVRs reachable by phone, a channel can place test calls: VoiceLens dials the target through your Twilio account, plays a scripted persona, records the conversation and grades it like any other call. Enable it on the channel, provide the caller ID and the target address, and optionally a disclosure to play at the start. Defaults limit test calls to 50 a day per workspace, 2 at a time and 10 minutes each. Test calls are flagged isTestCall and excluded from analytics unless you ask for them.
Channel analytics
The channel page aggregates the channel's completed calls: average health, danger-call rate, coverage, P95 agent latency, top faults and the trend over time. Compare two channels to compare two agents, two bots or a bot and a team on identical criteria.
Recommendations
- One channel per thing you want to compare: each bot version, each team, each phone line.
- Put the rubric on the channel rather than relying on the workspace default, so changing the default later does not silently regrade a line.
- Start with
samplePercentat 100 while you calibrate, then reduce it on very high-volume channels if you want to manage minutes. - Use one token per integration and name it after the system that holds it.