List Plan Meters
Returns every metered price attached to a plan.
GET
/
subscriptions
/
plans
/
{plan_id}
/
meters
List Plan Meters
curl --request GET \
--url https://api-sandbox.y.uno/v1/subscriptions/plans/{plan_id}/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/plans/{plan_id}/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/plans/{plan_id}/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/plans/{plan_id}/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/plans/{plan_id}/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/plans/{plan_id}/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/plans/{plan_id}/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": "77777777-7777-7777-7777-777777777777",
"plan_id": "00000000-0000-4000-8000-000000000001",
"meter_id": "66666666-6666-6666-6666-666666666666",
"credits": 100.5,
"pricing_strategy": "PER_UNIT",
"price_per_credit": {
"currency": "USD",
"value": 0.05
},
"country_prices": [
{
"country": "US",
"amount": {
"currency": "USD",
"value": 0.06
}
}
],
"created_at": "2026-08-18T09:00:04.000000Z",
"updated_at": "2026-08-18T09:00:04.000000Z"
},
{
"id": "88888888-8888-8888-8888-888888888888",
"plan_id": "00000000-0000-4000-8000-000000000001",
"meter_id": "55555555-5555-5555-5555-555555555555",
"credits": 10000,
"pricing_strategy": "PER_UNIT",
"price_per_credit": null,
"country_prices": [],
"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": "PLAN_NOT_FOUND",
"messages": [
"The plan does not exist or is not linked to this account."
]
}{
"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.data with a pagination object (total, limit, offset, has_more). The same list is returned as meters[] on Retrieve Plan — always an array, empty for a plan without metered prices.Authorizations
Headers
The account_id found in your Yuno Dashboard (UUID). Required — omitting it returns 400 BAD_REQUEST ("Invalid x-account-code header.").
Path Parameters
The unique identifier of the plan.
Was this page helpful?
⌘I
List Plan Meters
curl --request GET \
--url https://api-sandbox.y.uno/v1/subscriptions/plans/{plan_id}/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/plans/{plan_id}/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/plans/{plan_id}/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/plans/{plan_id}/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/plans/{plan_id}/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/plans/{plan_id}/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/plans/{plan_id}/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": "77777777-7777-7777-7777-777777777777",
"plan_id": "00000000-0000-4000-8000-000000000001",
"meter_id": "66666666-6666-6666-6666-666666666666",
"credits": 100.5,
"pricing_strategy": "PER_UNIT",
"price_per_credit": {
"currency": "USD",
"value": 0.05
},
"country_prices": [
{
"country": "US",
"amount": {
"currency": "USD",
"value": 0.06
}
}
],
"created_at": "2026-08-18T09:00:04.000000Z",
"updated_at": "2026-08-18T09:00:04.000000Z"
},
{
"id": "88888888-8888-8888-8888-888888888888",
"plan_id": "00000000-0000-4000-8000-000000000001",
"meter_id": "55555555-5555-5555-5555-555555555555",
"credits": 10000,
"pricing_strategy": "PER_UNIT",
"price_per_credit": null,
"country_prices": [],
"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": "PLAN_NOT_FOUND",
"messages": [
"The plan does not exist or is not linked to this account."
]
}{
"code": "PRODUCT_NOT_ENABLED",
"messages": [
"Usage-based billing is not enabled for this organization"
]
}