Summarize usage
curl --request GET \
--url https://api.visor.vin/v1/usage \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.visor.vin/v1/usage"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.visor.vin/v1/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.visor.vin/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.visor.vin/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.visor.vin/v1/usage")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.visor.vin/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{
"data": [
{
"date": "2026-06-09",
"metering_class": "listing_search",
"requests": 1,
"charged_micros": 2000
}
],
"totals": {
"requests": 1,
"charged_micros": 2000
},
"meta": {
"start_date": "2026-05-11",
"end_date": "2026-06-09",
"interval": "day",
"currency": "USD",
"source": "public_api_usage_events",
"freshness": "Usage analytics are eventually consistent with the billing ledger."
}
}{
"_tag": "PublicApiValidationError",
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"current_version": "<string>",
"minimum_supported_version": "<string>",
"reason_code": "<string>",
"update_url": "<string>",
"update_command": "<string>"
}
}{
"_tag": "PublicApiAuthenticationError",
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"current_version": "<string>",
"minimum_supported_version": "<string>",
"reason_code": "<string>",
"update_url": "<string>",
"update_command": "<string>"
}
}{
"_tag": "PublicApiBillingError",
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"current_version": "<string>",
"minimum_supported_version": "<string>",
"reason_code": "<string>",
"update_url": "<string>",
"update_command": "<string>"
}
}{
"_tag": "PublicApiPermissionError",
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"current_version": "<string>",
"minimum_supported_version": "<string>",
"reason_code": "<string>",
"update_url": "<string>",
"update_command": "<string>"
}
}{
"_tag": "PublicApiRateLimitError",
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"current_version": "<string>",
"minimum_supported_version": "<string>",
"reason_code": "<string>",
"update_url": "<string>",
"update_command": "<string>"
},
"retryAfter": 123
}{
"_tag": "PublicApiPlatformError",
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"current_version": "<string>",
"minimum_supported_version": "<string>",
"reason_code": "<string>",
"update_url": "<string>",
"update_command": "<string>"
}
}Usage
Summarize usage
Returns daily billable usage totals for the authenticated API account. Usage analytics are eventually consistent with the billing ledger and are intended for customer dashboards and reconciliation.
GET
/
v1
/
usage
Summarize usage
curl --request GET \
--url https://api.visor.vin/v1/usage \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.visor.vin/v1/usage"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.visor.vin/v1/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.visor.vin/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.visor.vin/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.visor.vin/v1/usage")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.visor.vin/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{
"data": [
{
"date": "2026-06-09",
"metering_class": "listing_search",
"requests": 1,
"charged_micros": 2000
}
],
"totals": {
"requests": 1,
"charged_micros": 2000
},
"meta": {
"start_date": "2026-05-11",
"end_date": "2026-06-09",
"interval": "day",
"currency": "USD",
"source": "public_api_usage_events",
"freshness": "Usage analytics are eventually consistent with the billing ledger."
}
}{
"_tag": "PublicApiValidationError",
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"current_version": "<string>",
"minimum_supported_version": "<string>",
"reason_code": "<string>",
"update_url": "<string>",
"update_command": "<string>"
}
}{
"_tag": "PublicApiAuthenticationError",
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"current_version": "<string>",
"minimum_supported_version": "<string>",
"reason_code": "<string>",
"update_url": "<string>",
"update_command": "<string>"
}
}{
"_tag": "PublicApiBillingError",
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"current_version": "<string>",
"minimum_supported_version": "<string>",
"reason_code": "<string>",
"update_url": "<string>",
"update_command": "<string>"
}
}{
"_tag": "PublicApiPermissionError",
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"current_version": "<string>",
"minimum_supported_version": "<string>",
"reason_code": "<string>",
"update_url": "<string>",
"update_command": "<string>"
}
}{
"_tag": "PublicApiRateLimitError",
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"current_version": "<string>",
"minimum_supported_version": "<string>",
"reason_code": "<string>",
"update_url": "<string>",
"update_command": "<string>"
},
"retryAfter": 123
}{
"_tag": "PublicApiPlatformError",
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"current_version": "<string>",
"minimum_supported_version": "<string>",
"reason_code": "<string>",
"update_url": "<string>",
"update_command": "<string>"
}
}Authorizations
Send API keys as Authorization: Bearer <api_key>. Query-string API keys are rejected.
Query Parameters
Inclusive UTC start date in YYYY-MM-DD format. Defaults to 29 days before end_date.
Inclusive UTC end date in YYYY-MM-DD format. Defaults to today.
Optional comma-separated metering classes to include.
⌘I
