The system tracks usage of paid service on an hourly basis. It doesn't track how much to charge for any particular product, but it will report for each instance, IP address and snapshot the amount of hours it's in use for.

Listing charges

The request should be a GET request to the https://api.civo.com/v2/charges resource.


This request doesn't require any parameters, but you can specify a time range (maximum of 31 days) with:

Name Description
from (optional) The from date in RFC 3339 format (default to the start of the current month)
to (optional) the to date in RFC 3339 format (defaults to the current time)


The response from the server will be a list of chargeable resources. The size_gb attribute currently only returns a value for volume related charges as they as charged on a per GB basis as opposed to hourly.

        "code": "instance-g3.small",
        "product_id": "3cd8e85f-259f-4e57-86e0-941ff75320c9",
        "label": "foo.com-9cdd7e2f",
        "from": "2021-09-01T03:59:57+01:00",
        "to": "2021-09-01T04:03:00+01:00",
        "num_hours": 1,
        "size_gb": null,
        "region": "NYC1"
        "code": "volume",
        "product_id": "b4a2b8d0-15ef-4dfe-8230-1b09c0d682ed",
        "label": "Volume pvc-15775bd7-f4c0-4343-b756-d6511a7e0c3b (10GB)",
        "from": "2021-09-01T09:54:09+01:00",
        "to": "2021-09-02T04:01:01+01:00",
        "num_hours": 18,
        "size_gb": 10,
        "region": "LON1"
    // ...

Example of listing the charges

curl -H "Authorization: bearer 12345" \
// At a shell prompt run:
// npm init -y
// npm i --save request

var request = require('request');

  function (error, response, body) {
    if (!error && response.statusCode == 200) {
).auth(null, null, true, '12345');
require 'net/http'

http = Net::HTTP.new('api.civo.com', 443)
http.use_ssl = true

headers = {
  'Authorization' => 'bearer 12345',
  'Content-Type' => 'application/x-www-form-urlencoded'

resp, data = http.get('/v2/charges', '', headers)