Read the ledger-backed usage and current-plan projection for a call
const url = 'https://api.vocapable.com/v1/calls/example/billing';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://api.vocapable.com/v1/calls/example/billing \ --header 'Authorization: Bearer <token>'One tenant-owned call’s exact recorded usage and conservative cost visibility.
A live call receives completed: false. Its live_projection is populated only
for a verified managed prepaid test-call receipt; every other active lane is explicitly
pending rather than a partial carrier cost. For a completed call, meters combines
direct runtime attribution with a managed carrier’s attempt-linked minute row. That
carrier row may still be absent while the callback is in flight; an empty list means no
usage row has landed, not that a future invoice is $0.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Responses
Section titled “Responses”Successful Response
Ledger-backed usage and a deliberately limited estimate for one call.
rated_usage_amount_minor is never an inferred cost: it stays null until every
linked ledger event has a final Stripe allocation. The projection is instead the
current-period marginal plan/ledger estimate - the difference between the current
billing-period estimate with this call’s rows and without them. It excludes the base
subscription fee, tax, credits, discounts, proration, and Stripe-side adjustments; the
Stripe invoice remains authoritative.
object
The exact ledger quantity currently attributable to one finished call.
The list is intentionally sparse. An absent telephony_minutes row does not mean
the carrier charged zero: carrier usage arrives through an asynchronous status callback
and can appear after the call teardown. rated_amount_minor is non-null only once
every event for this meter has a final Stripe per-call allocation.
A bounded elapsed-time estimate for the one live lane with a frozen platform rate.
It is available only while a platform-managed, prepaid, campaignless test call holds a
durable authorization. connected_at is the redeemed live-session receipt’s trusted
start, while the carrier’s terminal callback remains the authority for the actual debit.
BYO carrier prices and ordinary production-call carrier amounts are intentionally absent.
object
Example
{ "meters": [ { "meter": "telephony_minutes", "prepaid_event_count": 0 } ], "rating_status": "no_usage_recorded", "projection_status": "not_available", "projection_unpriced_meters": [ "telephony_minutes" ], "prepaid_authorization_status": "not_applicable", "live_projection": { "status": "not_available", "basis": "managed_test_call_prepaid" }}Validation Error
object
object
object
Examplegenerated
{ "detail": [ { "loc": [ "example" ], "msg": "example", "type": "example", "input": "example", "ctx": {} } ]}