AI generation API reference
All public v1 endpoints, grouped by resource. Auth is a Bearer API key or session cookie; scope names map to key scopes. dashboard/auth scopes are dashboard-only.
Note
A machine-readable OpenAPI document with request/response schemas is served at free.ind.in/api/docs.
Meta & public
| Method | Path | Scope | Purpose |
|---|---|---|---|
| GET | /v1 | public | Service identity, version, and docs link. |
| GET | /health/ready | public | Liveness/readiness probe. |
| GET | /v1/plans | public | Plan catalog with entitlements and pricing. |
| GET | /v1/models/public | public | Public model showcase (no auth). |
| GET | /v1/catalog/public | public | Public catalog: models, samples, makers. |
| GET | /v1/stats/public | public | Public platform statistics. |
Generations & models
Generation modes: text_to_text, text_to_image, text_to_video, text_to_audio, image_to_image, image_to_video, video_to_video. Params are validated against the model's parameterSchema (visible in GET /v1/models). Common params: prompt, negativePrompt, seed, aspectRatio (1:1, 16:9, 9:16, 4:3, 3:4, 21:9), durationSeconds, strength, numImages, for audio voice, speed, format (mp3/wav/ogg), and for text systemPrompt, temperature (0–2), maxTokens. Text generations return the answer in the generation's textOutput field. For image_to_image, image_to_video, and video_to_video, the source file is passed in inputs — either uploaded asset ids (imageAssetIds / videoAssetIds) or a direct file reference (imageUrls / videoUrls) as an http(s) URL or a base64 data URL. Data URLs must declare a matching mime type (data:image/… for image modes, data:video/… for video-to-video).
| Method | Path | Scope | Purpose |
|---|---|---|---|
| GET | /v1/models | generations.read | Plan-aware model catalog with per-model credits and parameter schema. |
| POST | /v1/generations | generations.write | Create a generation. Supports Idempotency-Key and paymentMode. |
| GET | /v1/generations | generations.read | List generations with pagination and filters (mode, status, model, project, date). |
| GET | /v1/generations/:id | generations.read | Generation detail with event timeline. |
| POST | /v1/generations/:id/cancel | generations.write | Cancel a queued/running job. |
| GET | /v1/generations/emergency-stop | api | Whether generation is paused platform-wide. |
Generation lifecycle:
| queued | Awaiting capacity | Initial state after creation |
| reserved | Worker reserved | Scheduled on a worker |
| submitted | Sent to provider | Provider request accepted |
| running | Provider processing | Generating |
| succeeded | Done | Output assets available |
| failed | Failed | errorCode / errorMessage set |
| cancelled | Cancelled | By user or operator |
| expired | Expired | Timed out in queue |
Files & assets
Input files can be referenced in generation inputs two ways: upload (private, stored on the platform) or a direct URL (public http(s) URL or base64 data URL). Upload flow: 1) request a presigned URL, 2) PUT the file to it, 3) confirm with upload-complete, then 4) pass the returned asset id in inputs.imageAssetIds / inputs.videoAssetIds. Direct references skip the upload entirely — pass the URL in inputs.imageUrls / inputs.videoUrls.
| Method | Path | Scope | Purpose |
|---|---|---|---|
| POST | /v1/files/upload-url | files.write | Get a presigned upload URL for an input file. |
| POST | /v1/files/upload-complete | files.write | Finalize an upload and create the asset. |
| GET | /v1/assets | assets.read | Asset library with filters (favorite, mediaType, sourceGenerationId). |
| GET | /v1/assets/:id | assets.read | Single asset detail. |
| GET | /v1/assets/:id/download | assets.read | Short-lived presigned download URL. |
| PATCH | /v1/assets/:id | files.write | Update asset metadata (e.g. favorite). |
| DELETE | /v1/assets/:id | files.write | Delete an asset. |
| GET | /v1/workspaces/:workspaceId/storage | usage.read | Workspace storage usage and limits. |
Usage & credits
| Method | Path | Scope | Purpose |
|---|---|---|---|
| GET | /v1/usage | usage.read | Usage summary: credits, cost, generations, output bytes, filtered by date. |
| GET | /v1/workspaces/:workspaceId/credits | usage.read | Available credit balance and recent credit ledger. |
| POST | /v1/credits/top-ups | wallet.write | Create a pending credit top-up order. |
| GET | /v1/credits/top-ups | usage.read | List credit top-up orders. |
Wallet
| Method | Path | Scope | Purpose |
|---|---|---|---|
| GET | /v1/wallet | wallet.read | Pay-as-you-go wallet balance. |
| PATCH | /v1/wallet | wallet.write | Update wallet settings. |
| POST | /v1/wallet/top-ups | wallet.write | Deposit funds (minimum $10). |
| GET | /v1/wallet/transactions | wallet.read | Wallet transaction history. |
| GET | /v1/wallet/deposits | wallet.read | Deposit history. |
Webhooks
| Method | Path | Scope | Purpose |
|---|---|---|---|
| GET | /v1/webhooks | webhooks.manage | List delivery endpoints. |
| POST | /v1/webhooks | webhooks.manage | Create an endpoint with events and signing secret. |
| PATCH | /v1/webhooks/:id | webhooks.manage | Update endpoint settings. |
| DELETE | /v1/webhooks/:id | webhooks.manage | Delete an endpoint. |
| GET | /v1/webhooks/:id/deliveries | webhooks.manage | Delivery history with attempts and status. |
API keys
| Method | Path | Scope | Purpose |
|---|---|---|---|
| GET | /v1/api-keys | dashboard | List API keys. |
| POST | /v1/api-keys | dashboard | Create a key (plaintext shown once). |
| PATCH | /v1/api-keys/:id | dashboard | Update name, scopes, expiry, or revoke. |
| DELETE | /v1/api-keys/:id | dashboard | Revoke a key. |
| GET | /v1/api-keys/:id/usage | dashboard | Per-key usage reporting. |
Billing
| Method | Path | Scope | Purpose |
|---|---|---|---|
| POST | /v1/billing/checkout | auth | Start checkout for a plan. |
| GET | /v1/billing/subscription | auth | Current subscription and entitlements. |
| GET | /v1/billing/payments | auth | Recent payments. |
| POST | /v1/billing/portal | auth | Customer billing portal session. |
| POST | /v1/billing/cancel | auth | Cancel a subscription. |
Workspaces & members
| Method | Path | Scope | Purpose |
|---|---|---|---|
| GET | /v1/workspaces | auth | List workspaces. |
| POST | /v1/workspaces | auth | Create a workspace. |
| GET | /v1/workspaces/:workspaceId | auth | Workspace detail. |
| PATCH | /v1/workspaces/:workspaceId | auth | Update workspace settings. |
| DELETE | /v1/workspaces/:workspaceId | auth | Delete a workspace (with ownership guards). |
| POST | /v1/workspaces/:workspaceId/invitations | auth | Invite a member by email. |
| GET | /v1/workspaces/:workspaceId/invitations | auth | List pending invitations. |
| DELETE | /v1/workspaces/:workspaceId/invitations/:invitationId | auth | Cancel an invitation. |
| POST | /v1/invitations/accept | auth | Accept an invitation. |
| PATCH | /v1/workspaces/:workspaceId/members/:userId | auth | Change a member role. |
| DELETE | /v1/workspaces/:workspaceId/members/:userId | auth | Remove a member. |
| POST | /v1/workspaces/:workspaceId/transfer | auth | Transfer workspace ownership. |
| POST | /v1/workspaces/:workspaceId/leave | auth | Leave a workspace. |
Account
| Method | Path | Scope | Purpose |
|---|---|---|---|
| GET | /v1/me | auth | Current user profile. |
| PATCH | /v1/me | auth | Update profile. |
| POST | /v1/me/change-password | auth | Change password. |
| POST | /v1/me/export-request | auth | Request a data export. |
| GET | /v1/me/accounts | auth | Linked accounts (social logins). |
| DELETE | /v1/me/accounts/:providerId | auth | Unlink an account provider. |
| DELETE | /v1/me | auth | Delete the account. |