usage.availableCredits
Returns the credit balance and refresh information for the API key’s caller. For an API key that belongs to a team sub-account, the team’s shared pool balance is returned; for a personal account, the personal balance is returned.
curl --request GET \
--url https://api.manus.ai/v2/usage.availableCredits \
--header 'x-manus-api-key: <x-manus-api-key>'import requests
url = "https://api.manus.ai/v2/usage.availableCredits"
headers = {"x-manus-api-key": "<x-manus-api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-manus-api-key': '<x-manus-api-key>'}};
fetch('https://api.manus.ai/v2/usage.availableCredits', 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.manus.ai/v2/usage.availableCredits",
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-manus-api-key: <x-manus-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.manus.ai/v2/usage.availableCredits"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-manus-api-key", "<x-manus-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.manus.ai/v2/usage.availableCredits")
.header("x-manus-api-key", "<x-manus-api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.manus.ai/v2/usage.availableCredits")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-manus-api-key"] = '<x-manus-api-key>'
response = http.request(request)
puts response.read_body{
"ok": true,
"request_id": "<string>",
"data": {
"total_credits": 123,
"free_credits": 123,
"periodic_credits": 123,
"addon_credits": 123,
"pro_monthly_credits": 123,
"event_credits": 123,
"refresh_credits": 123,
"max_refresh_credits": 123,
"next_refresh_time": 123
}
}{
"ok": false,
"request_id": "<string>",
"error": {
"code": "<string>",
"message": "<string>"
}
}total_credits is authoritative: Treat total_credits as the single source of truth for spendable balance. Other fields break down where the credits come from but do not always sum to total_credits — when the membership has lapsed, periodic_credits and addon_credits are excluded from the total even though addon_credits still reports its real (non-zero) balance.pro_monthly_credits and max_refresh_credits describe how much will be issued; periodic_credits and refresh_credits are how much currently remains.max_refresh_credits, next_refresh_time, and refresh_interval are populated only for personal accounts. Team accounts have no daily/weekly refresh, so these return 0 / 0 / "". Time fields are Unix timestamps in seconds (UTC), not milliseconds.Headers
API key for authentication. This endpoint does not support OAuth2 tokens. See Authentication.
Response
Available credits retrieved successfully.
Whether the request was successful.
true
Unique identifier for this API request.
Credit balance and refresh information for the API key's caller. All credit fields are 32-bit integers in credit points. total_credits is the authoritative spendable balance — see the field descriptions for how it is composed.
Hide child attributes
Hide child attributes
Total available credits — the actual spendable wallet balance. Equals free_credits + periodic_credits + addon_credits + event_credits + refresh_credits, minus team overflow credits, where periodic_credits and addon_credits are counted as 0 when the membership has lapsed and event_credits is 0 when no event is active. Always treat this as the single authoritative value for how many credits can be spent.
Free credits unrelated to any subscription, such as sign-up gifts and system grants.
Remaining periodic subscription credits issued in the current billing cycle and not yet spent. Returns 0 when the membership has lapsed.
Remaining add-on / credit-pack credits that were purchased separately and do not reset with the subscription cycle. In team scenarios this already accounts for deducted-but-unpaid overflow credits.
VIP monthly periodic-credit quota — how many periodic credits the current membership tier issues each month. This is a quota, not a current balance. 0 for non-VIP accounts.
Remaining event (live event) credits. Returns the real value only while the account's bound campaign is still active; otherwise 0.
Remaining auto-refresh credits accumulated on the account (daily/weekly) and not yet spent.
Amount granted by a single refresh — the cap the next auto-refresh will issue. Only present for personal accounts; 0 for team accounts.
Time of the next refresh as a Unix timestamp in seconds (UTC). Only present for personal accounts; 0 when there is no upcoming refresh.
Refresh cadence: daily or weekly. Empty string when there is no refresh schedule (e.g., team accounts).
daily, weekly, Was this page helpful?
curl --request GET \
--url https://api.manus.ai/v2/usage.availableCredits \
--header 'x-manus-api-key: <x-manus-api-key>'import requests
url = "https://api.manus.ai/v2/usage.availableCredits"
headers = {"x-manus-api-key": "<x-manus-api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-manus-api-key': '<x-manus-api-key>'}};
fetch('https://api.manus.ai/v2/usage.availableCredits', 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.manus.ai/v2/usage.availableCredits",
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-manus-api-key: <x-manus-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.manus.ai/v2/usage.availableCredits"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-manus-api-key", "<x-manus-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.manus.ai/v2/usage.availableCredits")
.header("x-manus-api-key", "<x-manus-api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.manus.ai/v2/usage.availableCredits")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-manus-api-key"] = '<x-manus-api-key>'
response = http.request(request)
puts response.read_body{
"ok": true,
"request_id": "<string>",
"data": {
"total_credits": 123,
"free_credits": 123,
"periodic_credits": 123,
"addon_credits": 123,
"pro_monthly_credits": 123,
"event_credits": 123,
"refresh_credits": 123,
"max_refresh_credits": 123,
"next_refresh_time": 123
}
}{
"ok": false,
"request_id": "<string>",
"error": {
"code": "<string>",
"message": "<string>"
}
}