Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/gratitude5dee/wzrd-studio-desktopfinal/llms.txt

Use this file to discover all available pages before exploring further.

Credits are WZRD Studio’s internal billing unit. Every time you generate an image, produce a video clip, synthesize audio, or run a Director’s Cut, a fixed number of credits is deducted from your account balance. Credit costs are defined per model in the studio model catalog (src/lib/studio-model-constants.ts) and surfaced throughout the UI so you always know the cost before you click generate.

How Credits Are Charged

Each generation operation maps to a specific credit cost determined by the model you select. The cost is fixed per call — it does not vary with output length except where noted.

Image Generation

Charged once per generation request, regardless of how many images are returned. Default model Nano Banana 2 costs 4 credits.

Video Generation

Charged once per video clip. Default model Kling O3 Standard T2V costs 20 credits. Premium models like Sora 2 Pro cost up to 50 credits.

Audio & TTS

Charged per synthesis call. ElevenLabs TTS Turbo costs 4 credits; most TTS models range from 2–4 credits.

Director's Cut

A fixed 12 credits per run, corresponding to the fal-ai/ffmpeg-api/compose model used to assemble the final video.

Credit Cost Reference

Image Models

ModelIDCreditsSpeed
FLUX Schnellfal-ai/flux/schnell3~3s
Nano Banana 2 (default)fal-ai/nano-banana-24~4s
Flux 2 Flashfal-ai/flux-2/flash4~3s
FLUX Devfal-ai/flux/dev5~8s
Ideogram V3fal-ai/ideogram/v35~8s
Seedream 5 Litefal-ai/seedream/v5/lite/text-to-image5~8s
Qwen Image 2fal-ai/qwen-image-2/text-to-image5~7s
Flux 2 Turbofal-ai/flux-2/turbo5~4s
Flux 2fal-ai/flux-26~7s
Qwen Image 2512fal-ai/qwen-image-25126~8s
HiDream I1fal-ai/hidream-i1-full6~10s
Nano Banana Profal-ai/nano-banana-pro7~8s
Qwen Image 2 Profal-ai/qwen-image-2/pro/text-to-image7~10s
FLUX Kontext Profal-ai/flux-pro/kontext/text-to-image7~9s
FLUX Pro Ultrafal-ai/flux-pro/v1.1-ultra8~10s
Flux 2 Profal-ai/flux-2-pro8~10s
GPT-Image 1.5fal-ai/gpt-image-1.58~10s
Flux 2 Maxfal-ai/flux-2-max10~12s
Imagen 4 Ultrafal-ai/imagen4/preview/ultra10~12s
ModelIDCreditsSpeed
Seedream 5 Litegmi/seedream-5.0-lite2~6s
Seedream 5.0gmi/seedream-5.03~8s
Gemini 3.1 Flash Imagegmi/gemini-3.1-flash-image-preview4~10s

Video Models

ModelIDCreditsSpeed
LTX Videofal-ai/ltx-video16~40s
Seedance Lite T2Vfal-ai/bytedance/seedance/v1/lite/text-to-video18~45s
Kling O3 Standard T2V (default)fal-ai/kling-video/o3/standard/text-to-video20~45s
Veo 3 Fastfal-ai/veo3/fast25~50s
Kling 2.5 Turbo Pro I2Vfal-ai/kling-video/v2.5-turbo/pro/image-to-video22~55s
LTX 2.3 Pro T2Vfal-ai/ltx-2.3/text-to-video22~60s
Kling O3 Standard I2Vfal-ai/kling-video/o3/standard/image-to-video24~60s
MiniMax Video-01 Livefal-ai/minimax/video-01-live25~60s
Veo 3fal-ai/veo335~100s
Kling O3 Pro T2Vfal-ai/kling-video/o3/pro/text-to-video30~90s
Sora 2fal-ai/sora-2/text-to-video35~120s
Kling O3 Pro I2Vfal-ai/kling-video/o3/pro/image-to-video32~100s
Veo 3.1fal-ai/veo3.140~120s
Sora 2 Profal-ai/sora-2/text-to-video/pro50~150s

Audio Models

ModelIDCreditsCategory
MiniMax 2.8 Turbofal-ai/minimax/speech-2.8-turbo2TTS
MiniMax Turbofal-ai/minimax/speech-02-turbo2TTS
Chatterboxfal-ai/chatterbox/text-to-speech2TTS
Qwen 3 TTSfal-ai/qwen-3-tts/text-to-speech/1.7b2TTS
MiniMax Speech HDfal-ai/minimax/speech-02-hd3TTS
Kling TTSfal-ai/kling-video/v1/tts3TTS
ElevenLabs TTS Turbo (default)fal-ai/elevenlabs/tts/turbo-v2.54TTS
CassetteAI Musiccassetteai/music-generator5Music
Lyria 2fal-ai/lyria26Music

Text & Storyline Models

ModelIDCredits
Gemini 3.1 Flash-Litegmi/gemini-3.1-flash-lite1
Llama 3.3 70B / 3.1 8Bllama-3.3-70b-versatile / llama-3.1-8b-instant1
GLM 5.1gmi/glm-5.12
OpenAI o4 Minigmi/openai-o4-mini3
DeepSeek R1 (default text)gmi/deepseek-r14
Claude Opus 4.7gmi/claude-opus-4.75

Special Operations

OperationCreditsNotes
Director’s Cut12Runs fal-ai/ffmpeg-api/compose to assemble the final video from all shot assets
Shot image (default model)4Uses getShotImageCredits() — falls back to default image model cost if none selected
Shot video (default model)20Uses getShotVideoCredits() — falls back to default video model cost if none selected
DIRECTORS_CUT_CREDITS is derived at runtime from getModelCredits('fal-ai/ffmpeg-api/compose') with a hard fallback of 12. The shot helper functions getShotImageCredits(modelId) and getShotVideoCredits(modelId) perform the same lookup, falling back to the catalog defaults for the first image or video model respectively.

Checking Your Balance

Your credit balance is visible in several places:
  • Dashboard stats bar — the Credits stat card on /home shows your available balance, updated on every page load via the useCredits() hook.
  • Settings → Billing — navigate to /settings/billing for a detailed breakdown of usage history, current plan, and top-up options.
  • API — call GET /functions/v1/billing-catalog to retrieve { subscription, wallet, plans, credit_packs } programmatically. The wallet field contains your current credit balance.
// Using the useCredits hook inside any React component
import { useCredits } from '@/hooks/useCredits';

const { availableCredits } = useCredits();
console.log(`Available: ${availableCredits} credits`);

What Happens at 0 Credits

If a generation request is submitted when your balance is insufficient, the server returns HTTP 402 Payment Required with the following JSON body:
{
  "code": "insufficient_credits",
  "required": 20,
  "available": 3,
  "top_up_url": "https://..."
}
On the client side, unifiedGenerationService catches this and throws an InsufficientCreditsError:
import { InsufficientCreditsError } from '@/services/unifiedGenerationService';

try {
  const result = await unifiedGenerationService.generate(input);
} catch (error) {
  if (error instanceof InsufficientCreditsError) {
    console.log(`Need ${error.required} credits, have ${error.available}`);
    // The service automatically routes to the billing top-up page
  }
}
Generation requests are not queued when credits run out — they fail immediately. Top up your balance before submitting large batch operations like bulk shot generation or a Director’s Cut.

Topping Up Credits

1

Navigate to Billing

Go to Settings → Billing at /settings/billing, or click Billing & Credits in the dashboard settings dropdown.
2

Choose a plan or credit pack

Select a subscription plan (checkout_mode: "subscription") or a one-time credit pack (checkout_mode: "pack"). Example plan codes include pro for the Pro plan; example pack codes include pack_100 for a 100-credit top-up.
3

Complete Stripe checkout

WZRD creates a Stripe Checkout session and opens it in your browser. Payment is handled entirely by Stripe — WZRD never stores card details.
4

Credits are applied instantly

Once payment completes, your balance updates immediately. Call GET /functions/v1/billing-catalog and check the wallet.available_total field to confirm the new credit total.

Billing API

You can initiate a checkout session directly via the Supabase Edge Function if you are building an integration or automation:
# Start a Stripe checkout for a credit pack
curl -X POST https://<project>.supabase.co/functions/v1/billing-checkout \
  -H "Authorization: Bearer <supabase-jwt>" \
  -H "Content-Type: application/json" \
  -d '{ "checkout_mode": "pack", "pack_code": "pack_100" }'

# Response
{ "checkout_url": "https://checkout.stripe.com/..." }
# Start a Stripe checkout for a subscription plan
curl -X POST https://<project>.supabase.co/functions/v1/billing-checkout \
  -H "Authorization: Bearer <supabase-jwt>" \
  -H "Content-Type: application/json" \
  -d '{ "checkout_mode": "subscription", "plan_code": "pro" }'

# Response
{ "checkout_url": "https://checkout.stripe.com/..." }
# Retrieve plan status and credit balance
curl https://<project>.supabase.co/functions/v1/billing-catalog \
  -H "Authorization: Bearer <supabase-jwt>"

# Response (abbreviated)
{ "subscription": { ... }, "wallet": { "available_total": 97 }, "plans": [...], "credit_packs": [...] }
The billing-checkout agent skill wraps this endpoint for use in automated workflows. Pass { "checkout_mode": "pack", "pack_code": "pack_100" } or { "checkout_mode": "subscription", "plan_code": "pro" } and open the returned checkout_url in a browser window.

Credit Cost Helpers

The src/lib/constants/credits.ts module exports convenience functions for looking up and formatting credit costs anywhere in the codebase:
import {
  getModelCredits,
  formatModelLabel,
  formatModelLabelById,
  getShotImageCredits,
  getShotVideoCredits,
  DIRECTORS_CUT_CREDITS,
  IMAGE_CREDITS,
  VIDEO_CREDITS,
} from '@/lib/constants/credits';

// Look up a model's credit cost by ID
getModelCredits('fal-ai/flux/schnell');          // → 3
getModelCredits('fal-ai/kling-video/o3/standard/text-to-video'); // → 20

// Format for display in a dropdown
formatModelLabelById('fal-ai/flux/schnell');     // → "FLUX Schnell (3 credits)"

// Shot-level helpers (fall back to catalog defaults when no model selected)
getShotImageCredits('fal-ai/nano-banana-2');     // → 4
getShotVideoCredits();                           // → 20 (default video model)

// Director's Cut cost
console.log(DIRECTORS_CUT_CREDITS);             // → 12

// Pre-built lookup maps (model ID → credits)
console.log(IMAGE_CREDITS['fal-ai/flux/schnell']); // → 3

Build docs developers (and LLMs) love