curl --request GET \
--url 'https://toapis.com/v1/user/balance' \
--header 'Authorization: Bearer <token>'
import requests
API_BASE = 'https://toapis.com'
API_KEY = 'sk-xxxxxxxxxxxxxxxxxxxxxx'
headers = {
'Authorization': f'Bearer {API_KEY}'
}
def get_user_balance():
response = requests.get(f'{API_BASE}/v1/user/balance', headers=headers)
data = response.json()
if data.get('success'):
if data.get('unlimited_quota'):
print("User quota: Unlimited")
else:
print(f"User remaining balance: {data['remain_balance']}")
print(f"User remaining credits: {data['remain_credits']}")
print(f"User used: {data['used_balance']}")
print(f"User used credits: {data['used_credits']}")
else:
print(f"Query failed: {data.get('message')}")
return data
get_user_balance()
const API_BASE = 'https://toapis.com';
const API_KEY = 'sk-xxxxxxxxxxxxxxxxxxxxxx';
async function getUserBalance() {
const response = await fetch(`${API_BASE}/v1/user/balance`, {
headers: {
'Authorization': `Bearer ${API_KEY}`
}
});
const data = await response.json();
if (data.success) {
if (data.unlimited_quota) {
console.log('User quota: Unlimited');
} else {
console.log(`User remaining balance: ${data.remain_balance}`);
console.log(`User remaining credits: ${data.remain_credits}`);
}
console.log(`User used: ${data.used_balance}`);
console.log(`User used credits: ${data.used_credits}`);
} else {
console.error('Query failed:', data.message);
}
return data;
}
getUserBalance();
package main
import (
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
)
type UserBalanceResponse struct {
Success bool `json:"success"`
Message string `json:"message,omitempty"`
RemainBalance float64 `json:"remain_balance"`
UsedBalance float64 `json:"used_balance"`
RemainCredits float64 `json:"remain_credits"`
UsedCredits float64 `json:"used_credits"`
CreditsPerUSD float64 `json:"credits_per_usd"`
UnlimitedQuota bool `json:"unlimited_quota"`
}
func main() {
url := "https://toapis.com/v1/user/balance"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Set("Authorization", "Bearer <token>")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := ioutil.ReadAll(resp.Body)
var result UserBalanceResponse
json.Unmarshal(body, &result)
if result.Success {
if result.UnlimitedQuota {
fmt.Println("Quota: Unlimited")
} else {
fmt.Printf("Remaining balance: %.2f\n", result.RemainBalance)
fmt.Printf("Remaining credits: %.2f\n", result.RemainCredits)
}
fmt.Printf("Used: %.2f\n", result.UsedBalance)
fmt.Printf("Used credits: %.2f\n", result.UsedCredits)
}
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
public class Main {
public static void main(String[] args) throws Exception {
String url = "https://toapis.com/v1/user/balance";
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(url))
.header("Authorization", "Bearer <token>")
.GET()
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}
<?php
$api_key = 'sk-xxxxxxxxxxxxxxxxxxxxxx';
$ch = curl_init('https://toapis.com/v1/user/balance');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer $api_key"
]);
$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true);
if ($data['success']) {
if ($data['unlimited_quota']) {
echo "Quota: Unlimited\n";
} else {
echo "Remaining balance: " . $data['remain_balance'] . "\n";
}
echo "Used: " . $data['used_balance'] . "\n";
} else {
echo "Query failed: " . $data['message'] . "\n";
}
?>
require 'net/http'
require 'json'
require 'uri'
api_key = 'sk-xxxxxxxxxxxxxxxxxxxxxx'
url = URI("https://toapis.com/v1/user/balance")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = "Bearer #{api_key}"
response = http.request(request)
data = JSON.parse(response.body)
if data['success']
if data['unlimited_quota']
puts "Quota: Unlimited"
else
puts "Remaining balance: #{data['remain_balance']}"
end
puts "Used: #{data['used_balance']}"
else
puts "Query failed: #{data['message']}"
end
import Foundation
let apiKey = "sk-xxxxxxxxxxxxxxxxxxxxxx"
let url = URL(string: "https://toapis.com/v1/user/balance")!
var request = URLRequest(url: url)
request.httpMethod = "GET"
request.setValue("Bearer \(apiKey)", forHTTPHeaderField: "Authorization")
let task = URLSession.shared.dataTask(with: request) { data, response, error in
if let error = error {
print("Error: \(error)")
return
}
if let data = data, let responseString = String(data: data, encoding: .utf8) {
print(responseString)
}
}
task.resume()
{
"success": true,
"remain_balance": 100.0,
"used_balance": 25.5,
"remain_credits": 20000,
"used_credits": 5100,
"credits_per_usd": 200,
"unlimited_quota": false
}
{
"success": true,
"remain_balance": -1,
"used_balance": 25.5,
"remain_credits": 20000,
"used_credits": 5100,
"credits_per_usd": 200,
"unlimited_quota": true
}
{
"success": false,
"message": "Failed to get user quota"
}
{
"success": false,
"message": "Failed to get used quota"
}
{
"error": {
"code": 401,
"message": "Authentication failed, please check your API key",
"type": "authentication_error"
}
}
{
"error": {
"code": 429,
"message": "Too many requests, please try again later",
"type": "rate_limit_error"
}
}
Account
Query User Balance
Query the remaining and used quota of the current user account
GET
/
v1
/
user
/
balance
curl --request GET \
--url 'https://toapis.com/v1/user/balance' \
--header 'Authorization: Bearer <token>'
import requests
API_BASE = 'https://toapis.com'
API_KEY = 'sk-xxxxxxxxxxxxxxxxxxxxxx'
headers = {
'Authorization': f'Bearer {API_KEY}'
}
def get_user_balance():
response = requests.get(f'{API_BASE}/v1/user/balance', headers=headers)
data = response.json()
if data.get('success'):
if data.get('unlimited_quota'):
print("User quota: Unlimited")
else:
print(f"User remaining balance: {data['remain_balance']}")
print(f"User remaining credits: {data['remain_credits']}")
print(f"User used: {data['used_balance']}")
print(f"User used credits: {data['used_credits']}")
else:
print(f"Query failed: {data.get('message')}")
return data
get_user_balance()
const API_BASE = 'https://toapis.com';
const API_KEY = 'sk-xxxxxxxxxxxxxxxxxxxxxx';
async function getUserBalance() {
const response = await fetch(`${API_BASE}/v1/user/balance`, {
headers: {
'Authorization': `Bearer ${API_KEY}`
}
});
const data = await response.json();
if (data.success) {
if (data.unlimited_quota) {
console.log('User quota: Unlimited');
} else {
console.log(`User remaining balance: ${data.remain_balance}`);
console.log(`User remaining credits: ${data.remain_credits}`);
}
console.log(`User used: ${data.used_balance}`);
console.log(`User used credits: ${data.used_credits}`);
} else {
console.error('Query failed:', data.message);
}
return data;
}
getUserBalance();
package main
import (
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
)
type UserBalanceResponse struct {
Success bool `json:"success"`
Message string `json:"message,omitempty"`
RemainBalance float64 `json:"remain_balance"`
UsedBalance float64 `json:"used_balance"`
RemainCredits float64 `json:"remain_credits"`
UsedCredits float64 `json:"used_credits"`
CreditsPerUSD float64 `json:"credits_per_usd"`
UnlimitedQuota bool `json:"unlimited_quota"`
}
func main() {
url := "https://toapis.com/v1/user/balance"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Set("Authorization", "Bearer <token>")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := ioutil.ReadAll(resp.Body)
var result UserBalanceResponse
json.Unmarshal(body, &result)
if result.Success {
if result.UnlimitedQuota {
fmt.Println("Quota: Unlimited")
} else {
fmt.Printf("Remaining balance: %.2f\n", result.RemainBalance)
fmt.Printf("Remaining credits: %.2f\n", result.RemainCredits)
}
fmt.Printf("Used: %.2f\n", result.UsedBalance)
fmt.Printf("Used credits: %.2f\n", result.UsedCredits)
}
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
public class Main {
public static void main(String[] args) throws Exception {
String url = "https://toapis.com/v1/user/balance";
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(url))
.header("Authorization", "Bearer <token>")
.GET()
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}
<?php
$api_key = 'sk-xxxxxxxxxxxxxxxxxxxxxx';
$ch = curl_init('https://toapis.com/v1/user/balance');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer $api_key"
]);
$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true);
if ($data['success']) {
if ($data['unlimited_quota']) {
echo "Quota: Unlimited\n";
} else {
echo "Remaining balance: " . $data['remain_balance'] . "\n";
}
echo "Used: " . $data['used_balance'] . "\n";
} else {
echo "Query failed: " . $data['message'] . "\n";
}
?>
require 'net/http'
require 'json'
require 'uri'
api_key = 'sk-xxxxxxxxxxxxxxxxxxxxxx'
url = URI("https://toapis.com/v1/user/balance")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = "Bearer #{api_key}"
response = http.request(request)
data = JSON.parse(response.body)
if data['success']
if data['unlimited_quota']
puts "Quota: Unlimited"
else
puts "Remaining balance: #{data['remain_balance']}"
end
puts "Used: #{data['used_balance']}"
else
puts "Query failed: #{data['message']}"
end
import Foundation
let apiKey = "sk-xxxxxxxxxxxxxxxxxxxxxx"
let url = URL(string: "https://toapis.com/v1/user/balance")!
var request = URLRequest(url: url)
request.httpMethod = "GET"
request.setValue("Bearer \(apiKey)", forHTTPHeaderField: "Authorization")
let task = URLSession.shared.dataTask(with: request) { data, response, error in
if let error = error {
print("Error: \(error)")
return
}
if let data = data, let responseString = String(data: data, encoding: .utf8) {
print(responseString)
}
}
task.resume()
{
"success": true,
"remain_balance": 100.0,
"used_balance": 25.5,
"remain_credits": 20000,
"used_credits": 5100,
"credits_per_usd": 200,
"unlimited_quota": false
}
{
"success": true,
"remain_balance": -1,
"used_balance": 25.5,
"remain_credits": 20000,
"used_credits": 5100,
"credits_per_usd": 200,
"unlimited_quota": true
}
{
"success": false,
"message": "Failed to get user quota"
}
{
"success": false,
"message": "Failed to get used quota"
}
{
"error": {
"code": 401,
"message": "Authentication failed, please check your API key",
"type": "authentication_error"
}
}
{
"error": {
"code": 429,
"message": "Too many requests, please try again later",
"type": "rate_limit_error"
}
}
- Query the overall balance of the current user account
- Monitor user-level usage
- CORS cross-origin support
- Real-time balance monitoring
1 USD = 200 credits.
Authorizations
string
required
All endpoints require Bearer Token authenticationGet your API Key:Visit the API Key Management Page to get your API KeyAdd it to the request header:
Authorization: Bearer YOUR_API_KEY
Endpoints
GET /v1/user/balance
GET /user/balance
curl --request GET \
--url 'https://toapis.com/v1/user/balance' \
--header 'Authorization: Bearer <token>'
import requests
API_BASE = 'https://toapis.com'
API_KEY = 'sk-xxxxxxxxxxxxxxxxxxxxxx'
headers = {
'Authorization': f'Bearer {API_KEY}'
}
def get_user_balance():
response = requests.get(f'{API_BASE}/v1/user/balance', headers=headers)
data = response.json()
if data.get('success'):
if data.get('unlimited_quota'):
print("User quota: Unlimited")
else:
print(f"User remaining balance: {data['remain_balance']}")
print(f"User remaining credits: {data['remain_credits']}")
print(f"User used: {data['used_balance']}")
print(f"User used credits: {data['used_credits']}")
else:
print(f"Query failed: {data.get('message')}")
return data
get_user_balance()
const API_BASE = 'https://toapis.com';
const API_KEY = 'sk-xxxxxxxxxxxxxxxxxxxxxx';
async function getUserBalance() {
const response = await fetch(`${API_BASE}/v1/user/balance`, {
headers: {
'Authorization': `Bearer ${API_KEY}`
}
});
const data = await response.json();
if (data.success) {
if (data.unlimited_quota) {
console.log('User quota: Unlimited');
} else {
console.log(`User remaining balance: ${data.remain_balance}`);
console.log(`User remaining credits: ${data.remain_credits}`);
}
console.log(`User used: ${data.used_balance}`);
console.log(`User used credits: ${data.used_credits}`);
} else {
console.error('Query failed:', data.message);
}
return data;
}
getUserBalance();
package main
import (
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
)
type UserBalanceResponse struct {
Success bool `json:"success"`
Message string `json:"message,omitempty"`
RemainBalance float64 `json:"remain_balance"`
UsedBalance float64 `json:"used_balance"`
RemainCredits float64 `json:"remain_credits"`
UsedCredits float64 `json:"used_credits"`
CreditsPerUSD float64 `json:"credits_per_usd"`
UnlimitedQuota bool `json:"unlimited_quota"`
}
func main() {
url := "https://toapis.com/v1/user/balance"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Set("Authorization", "Bearer <token>")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := ioutil.ReadAll(resp.Body)
var result UserBalanceResponse
json.Unmarshal(body, &result)
if result.Success {
if result.UnlimitedQuota {
fmt.Println("Quota: Unlimited")
} else {
fmt.Printf("Remaining balance: %.2f\n", result.RemainBalance)
fmt.Printf("Remaining credits: %.2f\n", result.RemainCredits)
}
fmt.Printf("Used: %.2f\n", result.UsedBalance)
fmt.Printf("Used credits: %.2f\n", result.UsedCredits)
}
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
public class Main {
public static void main(String[] args) throws Exception {
String url = "https://toapis.com/v1/user/balance";
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(url))
.header("Authorization", "Bearer <token>")
.GET()
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}
<?php
$api_key = 'sk-xxxxxxxxxxxxxxxxxxxxxx';
$ch = curl_init('https://toapis.com/v1/user/balance');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer $api_key"
]);
$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true);
if ($data['success']) {
if ($data['unlimited_quota']) {
echo "Quota: Unlimited\n";
} else {
echo "Remaining balance: " . $data['remain_balance'] . "\n";
}
echo "Used: " . $data['used_balance'] . "\n";
} else {
echo "Query failed: " . $data['message'] . "\n";
}
?>
require 'net/http'
require 'json'
require 'uri'
api_key = 'sk-xxxxxxxxxxxxxxxxxxxxxx'
url = URI("https://toapis.com/v1/user/balance")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = "Bearer #{api_key}"
response = http.request(request)
data = JSON.parse(response.body)
if data['success']
if data['unlimited_quota']
puts "Quota: Unlimited"
else
puts "Remaining balance: #{data['remain_balance']}"
end
puts "Used: #{data['used_balance']}"
else
puts "Query failed: #{data['message']}"
end
import Foundation
let apiKey = "sk-xxxxxxxxxxxxxxxxxxxxxx"
let url = URL(string: "https://toapis.com/v1/user/balance")!
var request = URLRequest(url: url)
request.httpMethod = "GET"
request.setValue("Bearer \(apiKey)", forHTTPHeaderField: "Authorization")
let task = URLSession.shared.dataTask(with: request) { data, response, error in
if let error = error {
print("Error: \(error)")
return
}
if let data = data, let responseString = String(data: data, encoding: .utf8) {
print(responseString)
}
}
task.resume()
{
"success": true,
"remain_balance": 100.0,
"used_balance": 25.5,
"remain_credits": 20000,
"used_credits": 5100,
"credits_per_usd": 200,
"unlimited_quota": false
}
{
"success": true,
"remain_balance": -1,
"used_balance": 25.5,
"remain_credits": 20000,
"used_credits": 5100,
"credits_per_usd": 200,
"unlimited_quota": true
}
{
"success": false,
"message": "Failed to get user quota"
}
{
"success": false,
"message": "Failed to get used quota"
}
{
"error": {
"code": 401,
"message": "Authentication failed, please check your API key",
"type": "authentication_error"
}
}
{
"error": {
"code": 429,
"message": "Too many requests, please try again later",
"type": "rate_limit_error"
}
}
Response
boolean
Whether the request was successful
string
Error message (only returned on failure)
float
User remaining balance (returned on success). Returns
-1 when unlimited_quota is truefloat
User used balance (returned on success)
float
User remaining credits (returned on success). Credits are calculated with
1 USD = 200 creditsfloat
User used credits (returned on success)
float
Credit conversion rate. Currently returns
200boolean
Whether the user has unlimited quota.
true means unlimited, false means limitedToken Balance vs User Balance
| Comparison | Token Balance (/v1/balance) | User Balance (/v1/user/balance) |
|---|---|---|
| Scope | Single token | Entire user account |
| Data Source | Token’s RemainQuota and UsedQuota | User’s quota and used_quota |
| Use Case | Monitor single API Key usage | View overall account balance |
| Limited By | Token-level quota limits | User-level quota limits |
Use Cases
- View overall user account balance
- Set up recharge reminders and balance alerts
- Display account balance in user dashboard
Balance Unit InformationThe unit of the balance value depends on system configuration:
- USD - US Dollars
- CNY - Chinese Yuan
- Tokens - Token count
remain_credits and used_credits when you need credit values. These fields always use 1 USD = 200 credits and do not depend on the balance display configuration.Unlimited Quota UserWhen a user is set to unlimited quota:
unlimited_quotafield returnstrueremain_balancefield returns-1- The user has no quota restrictions and can use the API without limits
Common Errors
| Error Message | Cause | Solution |
|---|---|---|
| No Authorization header | Authorization header not provided | Add Authorization: Bearer sk-xxxxx header |
| Failed to get user quota | User doesn’t exist | Check if the user associated with the token exists |
| Failed to get used quota | Database query error | Contact admin to check system status |
Security NoteYour API Key is like a password. Keep it secure and don’t share it with others. Always use HTTPS in production.
⌘I