API v3

GET /spend

This month's spend by service, the projection and the spending limit.

Addresshttps://api.voicepro.plus/v3/spend
Key permissionbilling:read

Example

curl -X GET "https://api.voicepro.plus/v3/spend" \
  -H "Authorization: Bearer vpkey_YOUR_KEY"
Response
{
  "object": "spend",
  "period": "2026-10",
  "days_elapsed": 27.4,
  "days_in_month": 31,
  "lines": [
    {
      "service": "Mobile SIMs",
      "kind": "fixed",
      "month_to_date": {
        "amount": 42000,
        "currency": "GBP"
      },
      "today": null,
      "projected": {
        "amount": 42000,
        "currency": "GBP"
      },
      "note": null
    },
    {
      "service": "Voice trunk",
      "kind": "usage",
      "month_to_date": {
        "amount": 10308,
        "currency": "USD"
      },
      "today": {
        "amount": 443,
        "currency": "USD"
      },
      "projected": {
        "amount": 11660,
        "currency": "USD"
      },
      "note": null
    }
  ],
  "totals": [
    {
      "month_to_date": {
        "amount": 42000,
        "currency": "GBP"
      },
      "projected": {
        "amount": 42000,
        "currency": "GBP"
      }
    },
    {
      "month_to_date": {
        "amount": 10308,
        "currency": "USD"
      },
      "projected": {
        "amount": 11660,
        "currency": "USD"
      }
    }
  ],
  "limit": {
    "limit": {
      "amount": 250000,
      "currency": "GBP"
    },
    "used": {
      "amount": 42000,
      "currency": "GBP"
    },
    "projected": {
      "amount": 42000,
      "currency": "GBP"
    }
  }
}

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.
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.

More in Billing