AI Generation overview — what you can create
5 generation types: images / videos / avatars / TTS / compositing. Async: POST 202 + job_id → poll GET /generate/jobs/:id. Provider catalog 6+6+3+3+1. Cost tracked per job.
Written By Salvatore Sinigaglia
Last updated About 1 hour ago
5 generation types: images / videos / avatars / TTS / compositing. Async: POST 202 + job_id → poll GET /generate/jobs/:id. Provider catalog 6+6+3+3+1. Cost tracked per job.
AI Generation overview — what you can create
Wevion's Creative Hub supports 5 generation types. The provider catalog (in
providers/creative/types.ts) is 6 image + 6 video + 3 avatar + 3 TTS + 1 compositing; the legacy/generate/*route exposes only a subset (see each type below). All generation is async:POSTreturns202 Acceptedwith ajob_id; client pollsGET /api/v1/creative-hub/generate/jobs/:iduntil status =completed. Output stored in your Drive folder + recorded to thecreative_jobtable for credit accounting.
Who is this for
Anyone considering AI generation. Reference page for what's possible and which provider to pick.
The 5 generation types
1. Images
Static images for feed / Stories / posters.
Catalog: seedream_4 (default photoreal), seedream_4_5, nano_banana_pro, nano_banana (image edit), flux_2_pro, gpt_image_1_5 (text-aware).
Endpoint: POST /api/v1/creative-hub/generate/image — the legacy route accepts only flux_2_pro / gpt_image_1_5 (default flux_2_pro). See ch-113.
2. Videos
Short videos for Reels / TikTok / in-stream.
Catalog: luma_ray3, runway_gen4, kling_2_6, kling_3_0, veo_3_1, seedance_pro.
Endpoint: POST /api/v1/creative-hub/generate/video — the legacy route accepts only luma_ray3 / runway_gen4. See ch-114.
3. Avatars (UGC videos)
Lip-synced spokesperson videos.
Catalog: heygen, kling_avatar, veed.
Endpoint: POST /api/v1/creative-hub/generate/avatar — the legacy route runs via HeyGen. See ch-115.
4. Text-to-speech (TTS)
Voice narration / multilingual VO.
Catalog: elevenlabs (high quality, multilingual, voice cloning), openai_tts (good baseline, faster + cheaper), heygen.
Endpoint: POST /api/v1/creative-hub/generate/tts — the legacy route accepts elevenlabs / openai_tts. See ch-116.
5. Compositing
Assemble clips + text + audio into final ad.
Endpoint: POST /api/v1/creative-hub/generate/composite. See ch-117.
The async job pattern
All generation endpoints behave identically at the lifecycle level:
- Submit:
POST /api/v1/creative-hub/generate/{type}with params → returns202 Accepted+{job_id, status: "pending"} - Process: SQS worker picks up; status flips
pending→processing - Complete: worker writes the result + marks
status: completed - Or fail: on error,
status: failed+error_messagepopulated - Poll: client polls
GET /api/v1/creative-hub/generate/jobs/:idevery 5-10 sec - Download: once
completed, client fetches the result
Generation time varies:
- Images: 10-60 sec
- Short videos (5-10s clips): 1-5 min
- Avatar videos: 2-10 min (longer scripts = longer)
- TTS: 5-30 sec
- Compositing: 30 sec - 5 min depending on complexity
creative_job table
Each generation creates a creative_job row with:
id(UUID),user_id,team_idtype(image / video / avatar / tts / composite)status(pending / processing / completed / failed)provider(one of the catalog providers)prompt(text input)settings(JSON — provider-specific params)result_urls(JSON array of output file URLs)cost_cents(Int — charged amount)drive_folder_id(where output stored)metadata(JSON),error_message(on failure)created_at,completed_at
Used by /jobs/:id for status + by Jobs panel UI.
Cost accounting
Each generation deducts from team credit balance:
- Cost varies by provider + type + duration + resolution
- Recorded in
cost_cents(integer cents) - Ledger entry in
credit_transaction(debit) - Failed jobs do not charge (cost_cents = 0)
View balance + transactions at /settings/team/billing. See ch-112 AI credits.
Choosing a provider
For images
- Photoreal default:
seedream_4 - Product photography:
flux_2_pro - Posters with text:
gpt_image_1_5 - Image edit (e.g. product-in-hand):
nano_banana_pro/nano_banana
For videos
- Cinematic ads:
luma_ray3 - Text-to-video first try:
runway_gen4 - Physics-heavy scenes:
kling_2_6/kling_3_0 - Highest quality (Google):
veo_3_1 - Additional model:
seedance_pro
For avatars
heygen,kling_avatar, orveed. Pick the avatar + voice in the provider's library first.
For TTS
- Premium / cloned voice:
elevenlabs - Baseline / multilingual default:
openai_tts
Best practices
Generate variants
AI is cheap relative to manual. Generate 3-5 per concept, pick winners.
Match aspect ratio to placement
- 9:16 for Reels / Stories / TikTok
- 1:1 for feed
- 16:9 for in-stream
Pair generations
- TTS narration + video (compositing in ch-117)
- AI image background + uploaded logo (compositing)
- Multiple language variants of same avatar (different
voice_idper locale)
Watch your credit balance
Generations add up. Set alerts at /settings/team/billing for low-balance warnings.
Common mistakes
- Picking provider blindly: each has strengths; match to use case
- Generating long videos for short ad placements: 30s video for a 6s placement = waste of credits; generate target duration
- Forgetting failed jobs are free: don't over-engineer retries
- Polling too aggressively: every 5-10 sec is plenty; faster polling doesn't speed up generation
FAQ
What can I create with Wevion's AI generation?
Wevion's Creative Hub supports 5 generation types: images (feed, Stories, posters), videos (Reels, TikTok, in-stream), avatars (lip-synced UGC spokesperson videos), text-to-speech narration, and compositing that assembles clips, text, and audio into a final ad. The provider catalog is 6 image + 6 video + 3 avatar + 3 TTS + 1 compositing, though the legacy /generate/* route exposes only a subset. Each type has its own endpoint under /api/v1/creative-hub/generate/.
Why doesn't my generated file appear immediately?
All Wevion AI generation is async. A POST returns 202 Accepted with a job_id and status pending, then an SQS worker processes it before writing the results. Your client polls GET /api/v1/creative-hub/generate/jobs/:id every 5-10 seconds until status is completed. Images take 10-60 seconds, short videos 1-5 minutes, and avatar videos 2-10 minutes.
Am I charged if an AI generation fails?
No. Failed jobs do not charge — their cost_cents is 0. Successful generations deduct from your team credit balance, with the cost varying by provider, type, duration, and resolution, recorded as a debit in the credit_transaction ledger. You can view your balance and transactions at /settings/team/billing.
Which provider should I choose for images?
The photoreal default is seedream_4; for product photography use flux_2_pro; for posters with text on the image use gpt_image_1_5 (text-aware); for image editing like product-in-hand use nano_banana_pro / nano_banana. Note the legacy /generate/image route accepts only flux_2_pro / gpt_image_1_5 (default flux_2_pro). Match the provider to your use case rather than picking blindly.
FAQ
What can I create with Wevion's AI generation?
Wevion's Creative Hub supports 5 generation types: images (feed, Stories, posters), videos (Reels, TikTok, in-stream), avatars (lip-synced UGC spokesperson videos), text-to-speech narration, and compositing that assembles clips, text, and audio into a final ad. The provider catalog is 6 image + 6 video + 3 avatar + 3 TTS + 1 compositing, though the legacy /generate/* route exposes only a subset. Each type has its own endpoint under /api/v1/creative-hub/generate/.
Why doesn't my generated file appear immediately?
All Wevion AI generation is async. A POST returns 202 Accepted with a job_id and status pending, then an SQS worker processes it before writing the results. Your client polls GET /api/v1/creative-hub/generate/jobs/:id every 5-10 seconds until status is completed. Images take 10-60 seconds, short videos 1-5 minutes, and avatar videos 2-10 minutes.
Am I charged if an AI generation fails?
No. Failed jobs do not charge — their costcents is 0. Successful generations deduct from your team credit balance, with the cost varying by provider, type, duration, and resolution, recorded as a debit in the credittransaction ledger. You can view your balance and transactions at /settings/team/billing.
Which provider should I choose for images?
The photoreal default is seedream4; for product photography use flux2pro; for posters with text on the image use gptimage15 (text-aware); for image editing like product-in-hand use nanobananapro / nanobanana. Note the legacy /generate/image route accepts only flux2pro / gptimage15 (default flux2pro). Match the provider to your use case rather than picking blindly.
Steps
- Submit: POST /api/v1/creative-hub/generate/{type} with params → returns 202 Accepted + {job_id, status: "pending"}
- Process: SQS worker picks up; status flips pending → processing
- Complete: worker writes the result + marks status: completed
- Or fail: on error, status: failed + error_message populated
- Poll: client polls GET /api/v1/creative-hub/generate/jobs/:id every 5-10 sec
- Download: once completed, client fetches the result
Last updated: 2026-05-17