WhatsApp Funding
Get WABA usage
Returns charges recorded for this project on one WABA, broken down by usage kind (currently messaging and calling).
Free messages, unposted observations, and Meta charges paid outside Kapso are excluded. A zero total means zero recorded charges, not proof of zero spend.
GET
/
whatsapp
/
accounts
/
{waba_id}
/
usage
Get WABA usage
curl --request GET \
--url https://api.kapso.ai/platform/v1/whatsapp/accounts/{waba_id}/usage \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.kapso.ai/platform/v1/whatsapp/accounts/{waba_id}/usage"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.kapso.ai/platform/v1/whatsapp/accounts/{waba_id}/usage', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.kapso.ai/platform/v1/whatsapp/accounts/{waba_id}/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 => [
"X-API-Key: <api-key>"
],
]);
$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.kapso.ai/platform/v1/whatsapp/accounts/{waba_id}/usage"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
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.kapso.ai/platform/v1/whatsapp/accounts/{waba_id}/usage")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.kapso.ai/platform/v1/whatsapp/accounts/{waba_id}/usage")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"data": {
"start_time": "2026-09-12T00:00:00Z",
"end_time": "2026-09-13T00:00:00Z",
"time_basis": "recorded_at",
"currency": "USD",
"charge_scope": "kapso_recorded_charges",
"totals": {
"customer_charge_micro_usd": 115000
},
"breakdown": [
{
"usage_kind": "messaging",
"customer_charge_micro_usd": 90000,
"billable_messages": 1,
"sync": {
"status": "delayed",
"last_synced_at": "2026-09-12T23:30:00Z",
"usage_through": "2026-09-12T23:25:00Z"
}
},
{
"usage_kind": "calling",
"customer_charge_micro_usd": 25000,
"coverage": {
"status": "supported",
"reason": null
},
"sync": {
"status": "synced",
"last_synced_at": null,
"usage_through": "2026-09-13T00:00:00Z"
}
}
]
}
}{
"error": "Use ISO 8601 start_time and end_time, at most 31 days apart."
}{
"error": "<string>"
}{
"error": "<string>"
}Authorizations
Path Parameters
Meta WhatsApp Business Account ID.
Query Parameters
Inclusive start of the window, ISO 8601 with an offset or Z.
Exclusive end of the window. At most 31 days after start_time.
Response
Recorded usage
Show child attributes
Show child attributes
Was this page helpful?
⌘I
Get WABA usage
curl --request GET \
--url https://api.kapso.ai/platform/v1/whatsapp/accounts/{waba_id}/usage \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.kapso.ai/platform/v1/whatsapp/accounts/{waba_id}/usage"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.kapso.ai/platform/v1/whatsapp/accounts/{waba_id}/usage', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.kapso.ai/platform/v1/whatsapp/accounts/{waba_id}/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 => [
"X-API-Key: <api-key>"
],
]);
$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.kapso.ai/platform/v1/whatsapp/accounts/{waba_id}/usage"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
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.kapso.ai/platform/v1/whatsapp/accounts/{waba_id}/usage")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.kapso.ai/platform/v1/whatsapp/accounts/{waba_id}/usage")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"data": {
"start_time": "2026-09-12T00:00:00Z",
"end_time": "2026-09-13T00:00:00Z",
"time_basis": "recorded_at",
"currency": "USD",
"charge_scope": "kapso_recorded_charges",
"totals": {
"customer_charge_micro_usd": 115000
},
"breakdown": [
{
"usage_kind": "messaging",
"customer_charge_micro_usd": 90000,
"billable_messages": 1,
"sync": {
"status": "delayed",
"last_synced_at": "2026-09-12T23:30:00Z",
"usage_through": "2026-09-12T23:25:00Z"
}
},
{
"usage_kind": "calling",
"customer_charge_micro_usd": 25000,
"coverage": {
"status": "supported",
"reason": null
},
"sync": {
"status": "synced",
"last_synced_at": null,
"usage_through": "2026-09-13T00:00:00Z"
}
}
]
}
}{
"error": "Use ISO 8601 start_time and end_time, at most 31 days apart."
}{
"error": "<string>"
}{
"error": "<string>"
}
