Billing
Payments
Renders are billed against a prepaid credit balance on your key. There are two ways to fund deliveries today — prepaid credits and pay.sh / USDC — plus a documented x402 mock for machine-payment integration.
Prepaid credits
The default model. Your key holds a balance in US cents; each delivered render debits the tier price. When the balance is too low for the next render, the call returns 402 insufficient_credits with your balance_cents and the price_cents needed — top up and retry.
Top up in advance with Stripe from the developer dashboard — pick a key, choose an amount, and your balance updates once payment clears. GET /v1/account shows the live balance.
Test mode never bills real money
Use a mvg_test_ key to build and test everything except the paid render — auth, create, photo upload, status, and error handling — for free. Rendering a real film requires a mvg_live_ key with credits (a test render returns test_key_cannot_render).
pay.sh / USDC (external billing)
The render endpoint is shaped for pay-per-request settlement, which lets a payment gateway sit in front of it. Through pay.sh (Solana × USDC), an agent pays USDC for a call, the gateway settles on-chain and proxies the already-paid request to the API. Externally-billed gifts render at the signature tier and are not charged against internal credits.
Because there are no internal credits to refund on that path, a failed or held delivery is made good with a free re-render rather than an internal refund.
x402-direct is a mock for now
When enabled, an insufficient_credits response can carry an x402 PaymentRequirements-shaped body so clients and marketplaces can integrate against the format. It is a documented mock — there is no on-chain verification or settlement on the direct path yet, and live-mode keys can never mock-settle. Real machine payments go through pay.sh.
MCP server
An MCP server that wraps these endpoints as agent tools (list occasions, create a gift, add photos, render, get status) is coming soon. Until then, use the HTTP API directly.
Last updated 2026-07-11.