Skip to main content
GET
Get Credits

Authorizations

Authorization
string
header
required

API key from Settings > Developer > REST API

Headers

Moda-Version
enum<string>
default:2026-05-01

Calendar-dated API version pin. New integrations should pin 2026-05-01 to opt into the newest response shapes. For back-compat the server also accepts requests with no header and resolves them to the current default (today: 2026-04-12); that default advances on each sunset date. Any unsupported value returns 400 unsupported_version.

Available options:
2026-04-12,
2026-05-01
Example:

"2026-05-01"

Response

Successful Response

plan
string | null
required

Current billing plan identifier (e.g. 'free', 'paid', 'ultra', 'enterprise'). Returns 'unlimited' when billing is not enabled. For a Voyager-billed workspace (billing_product 'voyager'), 'free', 'starter', 'creator', 'ultra' or 'gigamax', or null when it has no Voyager plan; its credits are Voyager credits (1 credit = 1 cent of provider cost).

credits_remaining
integer | null

Current credit balance. Null if the billing service is unavailable or billing is not enabled for this account.

credits_limit
integer | null

Total credit allowance for the current billing period. Null if billing is not enabled.

credits_reset_date
string | null

ISO 8601 date when credits reset for the current billing period. Null if billing is not enabled or reset date is unavailable.

billing_product
enum<string> | null

Whose credits these are: 'voyager' when this credential bills the workspace's Voyager account, otherwise 'moda'. Remedies (upgrade_url) follow it.

Available options:
moda,
voyager
billing_org_id
string | null

The organization that pays.

upgrade_url
string | null

Where the payer manages billing.

min_hold_credits
integer | null

The least a provider-proxy generation holds before it runs, in this payer's credits: 1 for a Voyager-billed workspace, whose every hold is the job's expected cost (its request-sized price, else its model's fallback rate: estimate_basis fallback on a credit check), and Moda's floor (300) otherwise (an unpriced Moda video holds 750, capped at five times its dearest settled charge when it has one to four).

credits_per_usd
integer | null

Credits this payer is charged per dollar of provider cost, as settlement converts it: 100 for a Voyager-billed workspace, and for Moda the plan's rate (100 for a paid plan in the credit-discount experiment whose subscription started paying before the discount's cutoff, 300 otherwise). Null when the payer or plan could not be read.

effective_dollars_per_credit
number | null

Estimated user USD per credit for billing_product/billing_org_id, distinct from provider accounting credits_per_usd. While plan/bonus credits remain, selected per-seat list price divided by monthly included credits (annual price / 12 first); otherwise pack price $0.011. Discounts, coupons and comps are not applied. Voyager Free uses $0.01 by convention; Moda uses its configured purchase rate. Null when unavailable: consumers must not infer zero cost or bypass spend confirmation. Advisory base rate, not a blended quote across grant boundaries.

Required range: x > 0
effective_dollars_per_credit_source
enum<string>
default:unknown

Source of the effective user purchase rate; unknown when unavailable.

Available options:
plan,
pack,
free,
moda,
unknown
effective_dollars_per_credit_upper_bound
number | null

Maximum configured Individual/Team monthly and annual-per-month credit purchase rate, including packs. Present only with configured_tariff proof and an unavailable actual rate. An upper estimate, never the actual rate or a commercial ceiling; actual effective_dollars_per_credit remains authoritative when known.

Required range: x > 0
effective_dollars_per_credit_upper_bound_source
string | null

Provenance of the validated upper estimate; null without configured tariff proof.

Allowed value: "voyager_catalog_max"
configured_tariff
boolean
default:false

True only when this payer's selected immutable plan price ID, USD amount, currency and interval match the canonical purchasable catalogue. When the actual effective rate is unavailable, this proof permits a catalogue-derived maximum estimate. False or absent is no proof; plan names, offline state and missing rates cannot establish it. A known effective rate remains authoritative.

internal
boolean | null

Voyager-billed only (null otherwise, or when unreadable): the workspace's plan is a comped internal one (100% off, overage and chat included), as on the dashboard's billing status, and the caller holds a seat on it: false for a member without one (refused no_voyager_seat; chat.seated is false).

overage_enabled
boolean | null

Voyager-billed only (null otherwise). Voyager credits are prepaid, with no overage: false for every paying workspace. True only for a comped internal plan, which may run its internal allowance below zero. Kept for older desktop builds.

overage_remaining_credits
integer | null

Voyager-billed only: 0 for every paying workspace (prepaid, no overage); a comped internal plan's remaining internal allowance. Null for a Moda-billed workspace or when unreadable.

auto_reload
CreditAutoReloadState · object | null

Voyager-billed only (null otherwise, or when unreadable): the workspace's auto-reload, so a client can word an out-of-credits refusal: reloading (a charge in flight now), paused (and paused_reason), cap_reached, or off.

chat
CreditChatState · object | null

Voyager-billed only (omitted otherwise): agent chat's persistent gates, as chat admission would decide them now (read-only: nothing is reserved). Null as well when they could not be read.

plan_status
enum<string> | null

Voyager-billed only (null otherwise): 'active' when the workspace has a Voyager plan, 'none' when Stripe answered that it has none, 'unavailable' when the plan could not be read right now (never reported as no plan). With 'unavailable', plan is 'unknown' and the plan-derived fields are null; credits_remaining is still the balance when the credit ledger keeps it.

Available options:
active,
none,
unavailable
free_plan_refused
boolean | null

Voyager-billed with no plan only (null otherwise, or when unreadable): true when this workspace would be refused the Free plan now because its creator (or this person) already has Free in another workspace, so a client says it has no plan instead of 'setting up your free plan'; false otherwise.

free_plan
enum<string> | null

Voyager-billed with no plan only (null otherwise, with the Free plan off, or when unreadable): whether the Free plan is still coming. 'refused' when it will not: the case free_plan_refused names, or a recorded denial or revocation that is not due for a recheck (it was decided, or re-judged and denied again, within the hour); a client says the workspace has no plan. 'pending' when it may: undecided, or a recheck is due.

Available options:
pending,
refused
model_access
Model Access · object | null

The workspace's access to each gated media model, by access key (wan-spicy: every Wan Spicy model): 'granted', 'requested' (waiting for review), 'denied', or 'none' (never asked, or revoked). A grant counts only on a plan that reaches the model (Creator and up), so a client combines it with plan. Ask with POST /v1/model-access/{access_key}/request. Null when it could not be read.

trialing
boolean | null

Voyager-billed only (null otherwise, with no plan, or when unreadable): the workspace's Voyager plan is in its trial, so a client can say so before the first paid generation.

trial_ends_at
string | null

ISO 8601 end of the Voyager plan's trial while trialing; null otherwise.

limits
CreditLimits · object | null

Voyager-billed only: the plan's spend limits (monthly for every plan; window, the Free plan's rolling 5 hours, null on a paid plan). Null with no plan, for a Moda-billed workspace, or when unreadable.