Get wallet
curl --request GET \
--url https://agent.tinyfish.ai/v1/wallet \
--header 'X-API-Key: <api-key>'import requests
url = "https://agent.tinyfish.ai/v1/wallet"
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://agent.tinyfish.ai/v1/wallet', 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://agent.tinyfish.ai/v1/wallet",
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://agent.tinyfish.ai/v1/wallet"
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://agent.tinyfish.ai/v1/wallet")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://agent.tinyfish.ai/v1/wallet")
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{
"available_balance": "21.44",
"currency": "USD",
"as_of": "2026-08-10T18:04:11.220Z",
"auto_reload": {
"state": "unconfigured"
},
"pending_top_up": {
"amount": "50.00",
"started_at": "2026-08-10T18:02:55.000Z"
},
"rates": {
"meters": [
{
"product_id": "prod_agent",
"label": "Agent steps",
"unit_amount": "0.016000",
"currency": "USD",
"per": "step"
}
],
"as_of": "2026-08-10T18:04:11.220Z",
"source": "metronome-contract"
}
}{
"error": {
"code": "INVALID_INPUT",
"message": "Field \"url\" is required and must be a string",
"details": "<unknown>"
},
"request_id": "8f9dba20-e37b-4749-a919-2269e28b4a2c"
}{
"error": {
"code": "INVALID_INPUT",
"message": "Field \"url\" is required and must be a string",
"details": "<unknown>"
},
"request_id": "8f9dba20-e37b-4749-a919-2269e28b4a2c"
}{
"error": {
"code": "INVALID_INPUT",
"message": "Field \"url\" is required and must be a string",
"details": "<unknown>"
},
"request_id": "8f9dba20-e37b-4749-a919-2269e28b4a2c"
}{
"error": {
"code": "INVALID_INPUT",
"message": "Field \"url\" is required and must be a string",
"details": "<unknown>"
},
"request_id": "8f9dba20-e37b-4749-a919-2269e28b4a2c"
}Wallet
Get wallet
Get the caller’s wallet: current balance, auto-reload configuration, per-product Metronome contract rates, and any in-flight top-up.
GET
/
v1
/
wallet
Get wallet
curl --request GET \
--url https://agent.tinyfish.ai/v1/wallet \
--header 'X-API-Key: <api-key>'import requests
url = "https://agent.tinyfish.ai/v1/wallet"
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://agent.tinyfish.ai/v1/wallet', 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://agent.tinyfish.ai/v1/wallet",
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://agent.tinyfish.ai/v1/wallet"
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://agent.tinyfish.ai/v1/wallet")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://agent.tinyfish.ai/v1/wallet")
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{
"available_balance": "21.44",
"currency": "USD",
"as_of": "2026-08-10T18:04:11.220Z",
"auto_reload": {
"state": "unconfigured"
},
"pending_top_up": {
"amount": "50.00",
"started_at": "2026-08-10T18:02:55.000Z"
},
"rates": {
"meters": [
{
"product_id": "prod_agent",
"label": "Agent steps",
"unit_amount": "0.016000",
"currency": "USD",
"per": "step"
}
],
"as_of": "2026-08-10T18:04:11.220Z",
"source": "metronome-contract"
}
}{
"error": {
"code": "INVALID_INPUT",
"message": "Field \"url\" is required and must be a string",
"details": "<unknown>"
},
"request_id": "8f9dba20-e37b-4749-a919-2269e28b4a2c"
}{
"error": {
"code": "INVALID_INPUT",
"message": "Field \"url\" is required and must be a string",
"details": "<unknown>"
},
"request_id": "8f9dba20-e37b-4749-a919-2269e28b4a2c"
}{
"error": {
"code": "INVALID_INPUT",
"message": "Field \"url\" is required and must be a string",
"details": "<unknown>"
},
"request_id": "8f9dba20-e37b-4749-a919-2269e28b4a2c"
}{
"error": {
"code": "INVALID_INPUT",
"message": "Field \"url\" is required and must be a string",
"details": "<unknown>"
},
"request_id": "8f9dba20-e37b-4749-a919-2269e28b4a2c"
}Authorizations
API key for authentication. Get your key from the API Keys page.
Response
Wallet details
Wallet balance, auto-reload, per-product rates, and any in-flight top-up.
Current spendable balance, denominated in currency. A negative value means the wallet is overdrawn.
Pattern:
^-?(?:0|[1-9]\d{0,11})(?:\.\d{1,6})?$Example:
"21.44"
Available options:
USD Example:
"USD"
Example:
"2026-08-10T18:04:11.220Z"
auto_reload
Option 1 · objectOption 2 · objectOption 3 · objectOption 4 · objectOption 5 · objectOption 6 · any
required
null means the auto-reload contract read failed, not that it is unconfigured.
Show child attributes
Show child attributes
null means no in-flight top-up, or the ledger read failed.
Show child attributes
Show child attributes
null means the rates read failed, or the wallet has no Metronome contract yet.
Show child attributes
Show child attributes
Was this page helpful?
⌘I