API v3
GET /calls
Call records, newest first, for a range of at most 92 days (default: the last 24 hours).
Addresshttps://api.voicepro.plus/v3/calls
Key permissionread
Fields
| Name | In | Type | |
|---|---|---|---|
| limit | query | integer | |
| cursor | query | string | next_cursor from the previous page. |
| from | query | string | Default: 24 hours before to. |
| to | query | string | Default: now. |
| number | query | string | Digits matched in from or to. |
| result | query | all | ok | failed |
* required
Example
curl -X GET "https://api.voicepro.plus/v3/calls?result=answered" \ -H "Authorization: Bearer vpkey_YOUR_KEY"
Response
{
"object": "list",
"data": [
{
"object": "call",
"id": "call_mfrgg5dbgaztemrqgu",
"started_at": "2026-10-27T14:03:22Z",
"from": "+442079460123",
"to": "+33155550123",
"country": "FR",
"seconds": 184,
"result": "answered",
"charge": {
"amount": "0.0184",
"currency": "USD"
},
"data_as_of": "2026-10-28T08:55:00Z",
"sip_call_id": "a1b2c3d4e5@203.0.113.20"
}
],
"has_more": true,
"next_cursor": "eyJrIjoiMjAyNi0xMC0yN1QxNDowMzoyMloifQ"
}Errors
Every error has the same shape: { "error": { "type", "code", "message", "param", "request_id" } }.
missing_api_key401: No Authorization header, or not a Bearer key.
invalid_api_key401: The key is not recognised.
api_key_revoked401: The key was revoked in the portal.
api_key_expired401: The key passed the expiry date set on it.
missing_scope403: The key lacks the scope this endpoint needs; param names the scope.
ip_not_allowed403: The key has an IP allowlist and this request came from elsewhere.
account_not_active403: The workspace is suspended or closed.
route_not_found404: No such path in v3.
resource_not_found404: No object with that id on this account.
service_not_enabled404: The account does not have this service (voice trunk, IoT, numbers); param names it.
rate_limited429: Too many requests for this key or for the whole account (the message says which); wait Retry-After seconds.
internal_error500: Our fault. Quote the request_id to support.