API v3
GET /events
Your account's events from the last 30 days, newest first, as sent to your webhooks.
Addresshttps://api.voicepro.plus/v3/events
Key permissionread
Fields
| Name | In | Type | |
|---|---|---|---|
| limit | query | integer | |
| cursor | query | string | next_cursor from the previous page. |
| type | query | spend.threshold | sim.data_cap | sim.roaming | sim.suspended | trunk.asr_drop | invoice.issued | invoice.overdue | porting.updated | incident.opened | alert.rule | iot.attached | iot.detached | iot.authentication | iot.data_limit | iot.cost_alert | iot.sms | iot.sms_status | iot.bulk_job_done | number.watch_changed | Only events of this type. |
* required
Example
curl -X GET "https://api.voicepro.plus/v3/events" \ -H "Authorization: Bearer vpkey_YOUR_KEY"
Response
{
"object": "list",
"data": [
{
"object": "event",
"id": "evt_3f9c2a71b8e04d6a9c1e5b27",
"type": "invoice.issued",
"occurred_at": "2026-10-29T09:00:00Z",
"data": {
"id": "INV-26-10AB12",
"period": "2026-10",
"totalGbp": 42,
"dueAt": "2026-11-12T00:00:00.000Z"
}
}
],
"has_more": false,
"next_cursor": null
}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.
invalid_parameter400: A query parameter or body field has a bad value; param names it.
missing_parameter400: A required parameter or field is missing; param names it.
unknown_parameter400: A parameter or field that this endpoint does not accept; param names it.
invalid_json400: The body is not valid JSON.
invalid_cursor400: The cursor is malformed, expired or from a different list.
invalid_time_range400: from or to is not an ISO 8601 date-time, or to is not after from.
range_too_long400: The time range is longer than this endpoint allows (stated in the endpoint).
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.