List Meters
Returns a paginated (limit/offset) list of the meters that belong to your account, including archived ones.
GET
/
subscriptions
/
meters
List Meters
curl --request GET \
--url https://api-sandbox.y.uno/v1/subscriptions/meters \
--header 'X-Account-Code: <x-account-code>' \
--header 'private-secret-key: <api-key>' \
--header 'public-api-key: <api-key>'import requests
url = "https://api-sandbox.y.uno/v1/subscriptions/meters"
headers = {
"X-Account-Code": "<x-account-code>",
"public-api-key": "<api-key>",
"private-secret-key": "<api-key>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {
'X-Account-Code': '<x-account-code>',
'public-api-key': '<api-key>',
'private-secret-key': '<api-key>'
}
};
fetch('https://api-sandbox.y.uno/v1/subscriptions/meters', 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-sandbox.y.uno/v1/subscriptions/meters",
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-Account-Code: <x-account-code>",
"private-secret-key: <api-key>",
"public-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-sandbox.y.uno/v1/subscriptions/meters"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-Account-Code", "<x-account-code>")
req.Header.Add("public-api-key", "<api-key>")
req.Header.Add("private-secret-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-sandbox.y.uno/v1/subscriptions/meters")
.header("X-Account-Code", "<x-account-code>")
.header("public-api-key", "<api-key>")
.header("private-secret-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-sandbox.y.uno/v1/subscriptions/meters")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-Account-Code"] = '<x-account-code>'
request["public-api-key"] = '<api-key>'
request["private-secret-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"data": [
{
"id": "55555555-5555-5555-5555-555555555555",
"account_id": "00000000-0000-4000-8000-000000000002",
"name": "AI tokens",
"description": "LLM tokens consumed by model responses, reported once per response",
"event_name": "ai_tokens",
"aggregation": "SUM",
"unit_label": "token",
"plural_unit_label": "tokens",
"default_price": {
"currency": "USD",
"value": 0.002
},
"metadata": [
{
"key": "team",
"value": "platform"
}
],
"status": "ACTIVE",
"created_at": "2026-08-18T09:00:04.000000Z",
"updated_at": "2026-08-18T09:00:04.000000Z"
},
{
"id": "66666666-6666-6666-6666-666666666666",
"account_id": "00000000-0000-4000-8000-000000000002",
"name": "API Requests",
"description": "Calls to the public API, one event per authenticated request",
"event_name": "api_request",
"aggregation": "COUNT",
"unit_label": "request",
"plural_unit_label": "requests",
"default_price": {
"currency": "USD",
"value": 0.001
},
"metadata": [],
"status": "ACTIVE",
"created_at": "2026-08-18T09:00:04.000000Z",
"updated_at": "2026-08-18T09:00:04.000000Z"
}
],
"pagination": {
"total": 2,
"limit": 20,
"offset": 0,
"has_more": false
}
}{
"code": "INVALID_PARAMETERS",
"messages": [
"The limit must be greater than or equal to 1"
]
}{
"code": "PRODUCT_NOT_ENABLED",
"messages": [
"Usage-based billing is not enabled for this organization"
]
}Enabled per organizationUsage-based billing must be enabled for your organization before these endpoints accept requests. Contact your Yuno account manager to enable it. Requests from an organization where it is not enabled return
403 PRODUCT_NOT_ENABLED.The list includes
INACTIVE (archived) meters. Filter on status client-side if you only want the meters currently accepting usage events. Pagination is limit/offset, and the response wraps the meters in data with a pagination object (total, limit, offset, has_more).Authorizations
Headers
The account_id found in your Yuno Dashboard (UUID). Required — omitting it returns 400 BAD_REQUEST ("Invalid x-account-code header.").
Query Parameters
The unique identifier of the account whose meters to list (UUID, 36 chars).
Maximum number of meters to return. Must be >= 1, else 400 INVALID_PARAMETERS. Defaults to 20.
Required range:
x >= 1Number of meters to skip. Must be >= 0. Defaults to 0.
Required range:
x >= 0Was this page helpful?
⌘I
List Meters
curl --request GET \
--url https://api-sandbox.y.uno/v1/subscriptions/meters \
--header 'X-Account-Code: <x-account-code>' \
--header 'private-secret-key: <api-key>' \
--header 'public-api-key: <api-key>'import requests
url = "https://api-sandbox.y.uno/v1/subscriptions/meters"
headers = {
"X-Account-Code": "<x-account-code>",
"public-api-key": "<api-key>",
"private-secret-key": "<api-key>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {
'X-Account-Code': '<x-account-code>',
'public-api-key': '<api-key>',
'private-secret-key': '<api-key>'
}
};
fetch('https://api-sandbox.y.uno/v1/subscriptions/meters', 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-sandbox.y.uno/v1/subscriptions/meters",
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-Account-Code: <x-account-code>",
"private-secret-key: <api-key>",
"public-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-sandbox.y.uno/v1/subscriptions/meters"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-Account-Code", "<x-account-code>")
req.Header.Add("public-api-key", "<api-key>")
req.Header.Add("private-secret-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-sandbox.y.uno/v1/subscriptions/meters")
.header("X-Account-Code", "<x-account-code>")
.header("public-api-key", "<api-key>")
.header("private-secret-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-sandbox.y.uno/v1/subscriptions/meters")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-Account-Code"] = '<x-account-code>'
request["public-api-key"] = '<api-key>'
request["private-secret-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"data": [
{
"id": "55555555-5555-5555-5555-555555555555",
"account_id": "00000000-0000-4000-8000-000000000002",
"name": "AI tokens",
"description": "LLM tokens consumed by model responses, reported once per response",
"event_name": "ai_tokens",
"aggregation": "SUM",
"unit_label": "token",
"plural_unit_label": "tokens",
"default_price": {
"currency": "USD",
"value": 0.002
},
"metadata": [
{
"key": "team",
"value": "platform"
}
],
"status": "ACTIVE",
"created_at": "2026-08-18T09:00:04.000000Z",
"updated_at": "2026-08-18T09:00:04.000000Z"
},
{
"id": "66666666-6666-6666-6666-666666666666",
"account_id": "00000000-0000-4000-8000-000000000002",
"name": "API Requests",
"description": "Calls to the public API, one event per authenticated request",
"event_name": "api_request",
"aggregation": "COUNT",
"unit_label": "request",
"plural_unit_label": "requests",
"default_price": {
"currency": "USD",
"value": 0.001
},
"metadata": [],
"status": "ACTIVE",
"created_at": "2026-08-18T09:00:04.000000Z",
"updated_at": "2026-08-18T09:00:04.000000Z"
}
],
"pagination": {
"total": 2,
"limit": 20,
"offset": 0,
"has_more": false
}
}{
"code": "INVALID_PARAMETERS",
"messages": [
"The limit must be greater than or equal to 1"
]
}{
"code": "PRODUCT_NOT_ENABLED",
"messages": [
"Usage-based billing is not enabled for this organization"
]
}