Skip to content

Account

GET /v1/me

Cost · Free (control-plane endpoint)

{
"data": {
"id": "...", "email": "you@company.com",
"plan_id": "monthly", "current_period_start": "2026-05-01T00:00:00.000Z",
"status": "active",
"plan": { "id": "monthly", "credits_per_cycle": 1000, "rate_limit_per_minute": 200 },
"credits": { "balance": 842, "granted_this_cycle": 1000 }
},
"request_id": "..."
}

There is no usage: { this_period, remaining } object on /v1/me. Your remaining-quota signal is data.credits.balance (credits left this cycle); data.credits.granted_this_cycle is what the cycle started with, and data.plan.credits_per_cycle / data.plan.rate_limit_per_minute describe the plan’s caps.

GET /v1/usage

Cost · Free (control-plane endpoint)

QueryTypeNotes
sinceISO timestampcreated_at >= since
limitintdefault 100, max 1000
{
"data": [
{
"id": 91234, "endpoint": "/v1/properties/by-url",
"actor": "detail", "units": 1, "status_code": 200,
"created_at": "..."
}
],
"request_id": "..."
}

Credit balance

Programmatically, read your remaining balance from GET /v1/medata.credits.balance. The dashboard reads the same live balance via the Supabase RPC credit_balance(p_account_id); you can also read your account row

  • recent ledger via supabase-js (signed in with your dashboard user JWT, not your API key). When balance hits zero the worker returns 402 out_of_credits , that’s the signal to top up.

Billing actions

Subscription and top-up purchases are dashboard-only flows. Sign in at https://zillapi.com/app/billing to:

  • See current plan + balance + recent ledger
  • Switch plans (Stripe Checkout)
  • Buy top-up packs (paid plans only)
  • Manage payment method / cancel (Stripe Customer Portal)