Documentation Index Fetch the complete documentation index at: https://docs.tryvinci.com/llms.txt
Use this file to discover all available pages before exploring further.
Vinci uses a simple usage-based model. This guide shows how to query your balance and usage, add a quick balance guard before costly requests, and handle 402 errors.
Related:
Check balance
GET /api/v1/billing/balance
Authorization : Bearer sk-your-api-key-here
{
"balance_usd" : 25.50 ,
"total_spent_usd" : 134.75
}
cURL
check_balance.py
check_balance.js
curl -X GET "https://tryvinci.com/api/v1/billing/balance" \
-H "Authorization: Bearer sk-your-api-key-here"
Usage statistics
GET /api/v1/billing/usage?days={days}
Authorization : Bearer sk-your-api-key-here
{
"period_days" : 30 ,
"total_requests" : 156 ,
"total_seconds" : 420.5 ,
"total_cost_usd" : 21.025 ,
"current_balance_usd" : 25.50 ,
"total_spent_usd" : 134.75
}
cURL
usage_stats.py
usage_stats.js
curl -X GET "https://tryvinci.com/api/v1/billing/usage?days=7" \
-H "Authorization: Bearer sk-your-api-key-here"
Balance check helper
balance_check.py
balance_check.js
import requests
def has_sufficient_balance ( duration_seconds , api_key ):
balance_url = "https://tryvinci.com/api/v1/billing/balance"
headers = { "Authorization" : f "Bearer { api_key } " }
r = requests.get(balance_url, headers = headers)
r.raise_for_status()
balance = r.json()
estimated = duration_seconds * 0.05
return balance[ "balance_usd" ] >= estimated
Related
Handle insufficient balance (402)
{
"detail" : "Insufficient balance. Current balance: $1.25, required: $2.50"
}
import requests
def request_video ( prompt , duration , api_key ):
url = "https://tryvinci.com/api/v1/generate/text-to-video"
headers = { "Authorization" : f "Bearer { api_key } " , "Content-Type" : "application/json" }
data = { "prompt" : prompt, "duration_seconds" : duration}
r = requests.post(url, headers = headers, json = data)
if r.status_code == 402 :
print ( f "Insufficient balance: { r.json().get( 'detail' ) } " )
return None
r.raise_for_status()
return r.json()
async function requestVideo ( prompt , duration , apiKey ) {
const url = "https://tryvinci.com/api/v1/generate/text-to-video" ;
const r = await fetch ( url , {
method: "POST" ,
headers: {
"Authorization" : `Bearer ${ apiKey } ` ,
"Content-Type" : "application/json" ,
},
body: JSON . stringify ({ prompt , duration_seconds: duration }),
});
if ( r . status === 402 ) {
const err = await r . json ();
console . log ( `Insufficient balance: ${ err . detail } ` );
return null ;
}
if ( ! r . ok ) throw new Error ( `HTTP ${ r . status } ` );
return await r . json ();
}
Info
For production, add retry with exponential backoff and alerts when balance falls below a threshold.