Skip to main content
GET
/
usage
cURL
# Get org-wide usage for this month
curl "https://api.arkhq.io/v1/usage" \
  -H "Authorization: Bearer YOUR_API_KEY"

# Get usage for last month
curl "https://api.arkhq.io/v1/usage?period=last_month" \
  -H "Authorization: Bearer YOUR_API_KEY"
const ark = new Ark({ apiKey: process.env.ARK_API_KEY });

const usage = await ark.usage.retrieve({
period: 'this_month'
});

console.log(`Total emails sent: ${usage.emails.sent}`);
console.log(`Delivery rate: ${(usage.rates.delivery_rate * 100).toFixed(1)}%`);
console.log(`Active tenants: ${usage.tenants.active} of ${usage.tenants.total}`);
from ark import Ark

ark = Ark(api_key="YOUR_API_KEY")
usage = ark.usage.retrieve(period="this_month")

print(f"Total emails sent: {usage.emails.sent}")
print(f"Delivery rate: {usage.rates.delivery_rate * 100:.1f}%")
print(f"Tenants with activity: {usage.tenants.with_activity}")
<?php

$curl = curl_init();

curl_setopt_array($curl, [
CURLOPT_URL => "https://api.arkhq.io/v1/usage",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
package main

import (
"fmt"
"net/http"
"io"
)

func main() {

url := "https://api.arkhq.io/v1/usage"

req, _ := http.NewRequest("GET", url, nil)

req.Header.Add("Authorization", "Bearer <token>")

res, _ := http.DefaultClient.Do(req)

defer res.Body.Close()
body, _ := io.ReadAll(res.Body)

fmt.Println(string(body))

}
HttpResponse<String> response = Unirest.get("https://api.arkhq.io/v1/usage")
.header("Authorization", "Bearer <token>")
.asString();
require 'uri'
require 'net/http'

url = URI("https://api.arkhq.io/v1/usage")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'

response = http.request(request)
puts response.read_body
{
  "success": true,
  "data": {
    "period": {
      "start": "2024-01-01T00:00:00.000Z",
      "end": "2024-01-31T23:59:59.999Z"
    },
    "emails": {
      "sent": 50000,
      "delivered": 48500,
      "soft_failed": 500,
      "hard_failed": 300,
      "bounced": 500,
      "held": 200
    },
    "rates": {
      "delivery_rate": 0.97,
      "bounce_rate": 0.016
    },
    "tenants": {
      "total": 25,
      "active": 20,
      "withActivity": 18
    }
  },
  "meta": {
    "requestId": "req_abc123xyz"
  }
}
{
"success": false,
"error": {
"code": "authentication_required",
"message": "API key is required",
"suggestion": "Include your API key in the Authorization header: Bearer YOUR_API_KEY"
},
"meta": {
"requestId": "req_V1StGXR8_Z5jdHi6"
}
}
{
"success": false,
"error": {
"code": "rate_limit_exceeded",
"message": "Rate limit exceeded. Please slow down your requests.",
"suggestion": "Wait 60 seconds before retrying, or contact support for higher limits"
},
"meta": {
"requestId": "req_V1StGXR8_Z5jdHi6"
}
}
{
"success": false,
"error": {
"code": "internal_error",
"message": "An unexpected error occurred",
"suggestion": "Please try again. If the problem persists, contact hi@arkhq.io"
},
"meta": {
"requestId": "req_V1StGXR8_Z5jdHi6"
}
}
{
"success": false,
"error": {
"code": "validation_error",
"message": "The 'to' field must contain valid email addresses",
"field": "to",
"suggestion": "Check that all email addresses are correctly formatted",
"hint": "The rawMessage must be base64-encoded. Encode your MIME message using Base64 before sending. See https://docs.arkhq.io/sdks for examples."
},
"meta": {
"requestId": "req_V1StGXR8_Z5jdHi6"
}
}

Authorizations

Authorization
string
header
required

Use your API key from arkhq.io/org/credentials

Authorization: Bearer YOUR_API_KEY

Query Parameters

period
string
default:this_month

Time period for usage data.

Shortcuts: today, yesterday, this_week, last_week, this_month, last_month, last_7_days, last_30_days, last_90_days

Month format: 2024-01 (YYYY-MM)

Custom range: 2024-01-01..2024-01-15

timezone
string
default:UTC

Timezone for period calculations (IANA format)

Response

Org-wide usage summary

Org-wide usage summary response

success
boolean
required
data
object
required
meta
object
required