Account
GET/v1/account
Returns the state of the account the API key belongs to: credit balance, current rate limit headroom, and recent request volume. Useful for a pre-flight balance check before a batch, and for surfacing "credits running low" in your own dashboard.
Response
200 OK
json
{
"object": "account",
"plan": {
"id": "standard",
"status": "active",
"interval": "month",
"current_period_end": "2026-09-14T00:00:00.000Z",
"cancel_at_period_end": false
},
"balance_credits": 4820,
"rate_limit": {
"limit": 60,
"remaining": 57,
"reset_at": "2026-08-30T19:45:02.113Z"
},
"usage": {
"requests_last_24h": 143,
"requests_last_30d": 2891
}
}| Field | Description |
|---|---|
plan.id | standard or pro. API access requires one of these |
plan.status | Subscription status, e.g. active or trialing |
plan.current_period_end | ISO 8601 renewal date |
plan.cancel_at_period_end | Still entitled, but will not renew. Worth alerting on |
balance_credits | Credits available. 100 credits = $1.00 |
rate_limit.limit | Requests allowed per minute for this key |
rate_limit.remaining | Requests left in the current window |
rate_limit.reset_at | ISO 8601 time the window rolls over |
usage.requests_last_24h | API requests across all your keys |
usage.requests_last_30d | API requests across all your keys |
usage counts requests, not rigs, so polling shows up here. It is an activity signal, not a billing statement; for spend, see your billing page.
Example: check before a batch
python
import requests
RIG_COST = {"fast": 2, "pro": 31}
RETARGET_COST = 13
def preflight(api_key, rigs, engine="fast", clips_per_rig=0):
account = requests.get(
"https://api.cinevva.com/v1/account",
headers={"Authorization": f"Bearer {api_key}"},
timeout=30,
).json()
# A subscription that lapses mid-batch fails every remaining call, so check
# it before spending anything.
if account["plan"]["id"] == "free":
raise RuntimeError("API access needs an active Standard or Pro subscription")
if account["plan"]["cancel_at_period_end"]:
print(f"warning: plan ends {account['plan']['current_period_end']}")
cost = rigs * (RIG_COST[engine] + clips_per_rig * RETARGET_COST)
return account["balance_credits"] >= cost, account["balance_credits"], costChecking up front is worth it for batch work: credits are reserved per job, so a batch that runs out mid-way leaves you with some rigs done and the rest failing on insufficient_credits. The same goes for the subscription, which is why the example checks both.
Errors
| Status | Code | Cause |
|---|---|---|
| 401 | unauthorized | Missing or invalid API key |