Cookies keep FreeInd working. Optional analytics require your permission; ads for free accounts are served by Google, which shows its own consent message where required. Read our cookie policy.
Generations are priced in credits. Subscribed workspaces pay with plan credits; everyone else can use the pay-as-you-go wallet. This page covers both.
Every model has a per-generation credit cost, shown on its catalog page and in GET /v1/models (creditsPerGeneration). The estimated credits for a job are reserved when it is created and the actual credits are settled on completion.
1 credit = $0.01. Each deposit is valid for 30 days after it is credited and is spent oldest-first; any unused balance is forfeited after that.GET /v1/workspaces/:workspaceId/credits.Caution
Free-tier users also see weekly/monthly per-model generation limits — check weeklyGenerationLimit and monthlyGenerationLimit in the model catalog.
Monthly plans renew by invoice and include seats (active members), concurrent job limits, storage, and queue priority. A renewal invoice with a payment link is issued before each period ends, and new period credits are granted when it is paid. See the live pricing page for current plans: free.ind.in/pricing. Plan entitlements are returned in GET /v1/plans and enforced per workspace.
The wallet is a prepaid balance for workspaces without a subscription (or as an overflow). Deposit with POST /v1/wallet/top-ups:
curl -X POST https://free.ind.in/v1/wallet/top-ups \
-H "Authorization: Bearer fi_live_..." \
-H "Content-Type: application/json" \
-d '{
"workspaceId": "<workspace-id>",
"amountUsd": 25
}'GET /v1/wallet; history: GET /v1/wallet/transactions and GET /v1/wallet/deposits.wallet_pending_minimum otherwise).By default generations bill plan credits. Pass "paymentMode": "wallet" in POST /v1/generations to pay from the wallet instead:
{
"workspaceId": "<workspace-id>",
"modelId": "<model-id>",
"paymentMode": "wallet",
"params": { "mode": "text_to_image", "prompt": "a red fox in snow" }
}The estimated charge (credits × $0.01) is reserved before the job starts and settled on completion. If the reserved amount can't be covered, the request fails with wallet_insufficient_balance.
A job that the workspace cannot cover with plan credits or an active wallet can be paid for with a one-time checkout. Pass "paymentMode": "direct" plus a provider:
{
"workspaceId": "<workspace-id>",
"modelId": "<model-id>",
"paymentMode": "direct",
"provider": "cashfree",
"tosAccepted": true,
"params": { "mode": "text_to_image", "prompt": "a red fox in snow" }
}201 with the job in awaiting_payment and a payment object (checkoutUrl or Cashfree paymentSessionId).direct request is downgraded to that mode and the response's paymentMode reports what was actually used.max(ceil(credits × (1 + markup/100)), minimum-credits) × $0.01, surfaced on the insufficient_credits error details as directCredits / directChargeUsd.POST /v1/generations/:id/payment (or POST /v1/runs/:id/payment for workflow runs).Track spend per workspace with GET /v1/usage — credits used, customer cost, generations, and output bytes, filterable by date range. Subscriptions and payments are managed via POST /v1/billing/checkout, POST /v1/billing/portal, and POST /v1/billing/cancel (dashboard-first; see API reference).