List two-party telephony bridge sessions
Enumerate this organization's bridge sessions so they can be pulled into your own reporting/backoffice. Keyset (cursor) paginated on (created_at, id): follow meta.next_cursor until meta.has_more is false. Do NOT page by offset, rows are inserted continuously and an offset scan silently skips sessions. Keep order and the filters identical for every page of a walk; a cursor issued for one direction is refused for the other. Phone numbers are returned unmasked: this endpoint is authenticated with an org-scoped API key and returns only your own sessions. Rows that are not ordinary production traffic (sandbox magic-number tests, seeded sample data, briefing-only test calls) are RETURNED and flagged rather than hidden, exclude them yourself with the sandbox / mock / briefing_only booleans. For the state-transition timeline (and transcript, where enabled) fetch the single session at status_url. By default only the trailing 30 days are returned. Check meta.range.defaulted: when it is true you are seeing a window we bounded for you, and meta.has_more:false means "this window is exhausted", NOT "this is all your data". For a full backfill pass an explicit from. For billing use /voice/bridge/usage, which carries billed/amount_cents. That feed no longer needs to be cross-referenced against this one: every row now carries a three-valued mode (live / sandbox / demo) and an invoiceable boolean, and seeded demo rows come back billed:false. Filter on invoiceable for revenue, or on mode == "live" if you want the wider set including rows an evidence rule flagged. Briefing-only rows are still excluded from that feed entirely, here as well as from its total.
Request
- Base URL: https://corebee.ai/api/v1
- URL: https://corebee.ai/api/v1/voice/bridge
- Auth: HTTP bearer
Query parameters
Page size. HARD maximum 500; a larger value is a 400, never a silent clamp.
Opaque keyset cursor from the previous page (meta.next_cursor). Omit for the first page. Treat it as opaque: it encodes (created_at, id, order) and is refused if tampered with or if order changes mid-walk.
Sort direction on created_at (id breaks ties). desc = newest first, for incremental polling. asc = oldest first, for a resumable initial backfill.
Inclusive lower bound on created_at (YYYY-MM-DD or ISO-8601). Defaults to 30 days ago, so an unparameterized pull is bounded rather than scanning all history.
Inclusive upper bound on created_at (YYYY-MM-DD or ISO-8601). Defaults to now.
Filter to one or more states. Repeat the parameter or pass a comma-separated list. An unknown state is a 400.
Filter to one or more failure_reason values (repeatable or comma-separated). Deliberately not validated against a closed list, failure_reason is an OPEN set, but must be lowercase [a-z0-9_], 1-64 characters.
Exact match on the customer_ref you supplied in metadata at create time.
Response
OK
Example response
{
"data": [
{
"id": 4021,
"state": "completed",
"business_number": "+15551230000",
"consumer_number": "+15559874444",
"from_number": "+17635550123",
"recording_duration_sec": 41,
"joined_seconds": 45.2,
"status_url": "/api/v1/voice/bridge/4021"
}
],
"meta": {
"limit": 100,
"returned": 100
}
}Changes
No recorded changes to this operation across all 1 revision of this API.