Changelog
#Billing fixes (2026-04-20)
- Per-second pricing is now consistent across MCP / REST API / edge functions / web UI. A single shared helper (
_shared/pricing.ts+server/*/services/pricing.py) readsbase_creditsandbilling_unitfromai_models_configand applies the same formula everywhere. Admin price changes propagate in real time to the frontend via the catalog subscription and on every call to server layers — no code deploy required. - Fixed an MCP / REST under-charge on per-second models. Previously, calls to
seedance-2-*,seedance-2-fast-*,kling-3-0-motion-control-*, andkling-2-6-motion-control-*via the MCP or REST API were charging a single second of cost regardless of requested duration (the pricing path silently ignored thebilling_unit). These now chargebase_credits × durationas intended. Existing web UI billing was unaffected. - Kling 3.0 audio pricing is now a dedicated catalog row.
kling-3-0-std-audio(23 cr/s) andkling-3-0-pro-audio(30 cr/s) replace the previously-hardcoded+6/+9audio surcharge. You keep callingkling-3-0-std/kling-3-0-proas the model id and just togglesound: true/false— the server picks the right priced row. - Refunds now read from the ledger, not the row.
refund_generation_creditssums the actualcredit_transactions.usageentries tied to a generation_id instead of readingmedia_generations.credits_deducted. Self-heals against row/ledger drift on future failures. - New
variant_requirederror. Passing a family label (e.g.seedance-2-fast,p-video,kling-3-0-motion-control) asmodelnow returnsvariant_requiredwith theavailable_variantslist — no credit deduction — instead of the misleadingmodel_disabled. Ask the user which variant they want, then re-call with the concrete model_id. See Generate Media Tool → Family-name disambiguation.
#New models
- Seedance 2 (ByteDance) — Flagship multimodal video model. Text-to-video and image-to-video with reference video support and on-by-default audio. Standard and Fast tiers, billed per second. Available via
generate_mediaand the Available models catalog. - P-Video (Pruna AI) — Very fast image-to-video and audio-to-video for talking-avatar pipelines. 720p and 1080p, optional draft mode for the cheapest per-second tier. Audio-driven runs are billed by reference audio duration.
- Music Separation (MVSEP) — New
generate_separationtool. Splits an uploaded track into vocals + instrumental stems for karaoke / acapella / remixing workflows. Async withget_separation_status; billed per second of source audio.
#Documentation
- Available models — Page rebuilt as a card grid grouped by family with type filter chips, per-variant price ranges, and the Kubeez K mark as a fallback background. The "Copy page" button now serializes the live catalog as a markdown table.
- How it works — Opens with a five-step visual stepper for the canonical
get_upload_url → upload → get_upload_session → estimate_generation_cost → generate_*flow. - Limitations — Per-tool rate limits and common errors are now stat cards instead of a table; long-form prose stays below.
- MCP overview — Landing page reorganized: official Cursor install badge at the top, three quick-action cards (Connect / Quick start / Browse models), worked tool sequences for Music Separation / Motion control / AutoCaptions, and four tip cards for the things AI assistants get wrong on the first try.
- REST API reference — Hosted Swagger UI at api.kubeez.com/docs is the source of truth for HTTP clients. Linked from the sidebar.
- Initial release — MCP documentation published. Covers overview, quick start, getting connected, media/music/ads/account tools, limitations, and how it works.
For product updates and status, visit Kubeez. For support, use the contact options on the Kubeez website.
