Instrumente media
Generează imagini și videoclipuri cu peste 40 de modele AI. Apelează întotdeauna get_models mai întâi pentru a vedea modelele disponibile, costurile și dacă un model necesită o imagine de intrare.
Clienți REST HTTP: aceleași limite sunt centralizate în Cerințe modele API (în engleză) și în răspunsul GET /v1/models per model.
#generate_media
Pornește o generare de imagine sau video.
Parametri:
| Parametru | Tip | Obligatoriu | Descriere |
|---|---|---|---|
| prompt | string | Da | Ce să genereze (ex. „Mașină roșie pe un drum de munte”). |
| model | string | Da | ID model (de la get_models). Exemple: nano-banana, kling-2-6-image-to-video. |
| generation_type | string | Nu | text-to-image, text-to-video, image-to-video sau image-to-image. Implicit: text-to-image. |
| negative_prompt | string | Nu | Ce să evite în output. |
| source_media_urls | string sau array | Nu | Obligatoriu pentru image-to-video și image-to-image. URL-uri către imagine(i), sau pentru unele modele (ex. Kling 2.6 Motion) imagine + video. Vezi limitele de intrare mai jos. Omitere pentru text-to-image și text-to-video. |
| aspect_ratio | string | Nu | ex. 1:1, 16:9, 9:16, 4:5, 21:9. Implicit: 1:1. Notă: fiecare model acceptă doar un subset — get_models returnează lista permisă. |
| duration | string | Nu | Durata video. Doar anumite modele video o folosesc. Vezi mai jos. |
| quality | string | Nu | ex. fast, standard, pro, ultra. Implicit: standard. |
| resolution | string | Nu | Tier-ul de rezoluție de ieșire. Doar anumite modele imagine îl folosesc — gpt-image-2 (1K/2K/4K), nano-banana-pro/nano-banana-2 (1K/2K/4K), flux-2 (1K/2K). Fiecare tier este un SKU de preț separat; get_models returnează costul în credite per tier. Ignorat de modele unde rezoluția e codificată în model_id-ul variantei (Seedance, Kling, P-Video). Vezi tabelul Tiere de rezoluție mai jos pentru constrângerile pe fiecare model. |
| sound | boolean | Nu | Când true, solicită video cu audio generat. Doar anumite modele video. Implicit: false. Vezi mai jos. |
| seed | number | Nu | Seed pentru rezultate reproductibile. |
Exemplu (text-to-image):
{
"prompt": "Un oraș futurist la apus cu mașini zburătoare",
"model": "nano-banana",
"generation_type": "text-to-image",
"aspect_ratio": "16:9",
"quality": "pro"
}
Exemplu (image-to-video, o imagine de intrare):
{
"prompt": "Mișcare blândă și subtilă",
"model": "kling-2-6-image-to-video",
"generation_type": "image-to-video",
"source_media_urls": ["https://example.com/your-image.jpg"],
"aspect_ratio": "16:9",
"duration": "5s"
}
Răspuns: Include generation_id, status (ex. pending) și adesea estimated_time_seconds și estimated_cost_credits. Interoghează cu get_generation_status până când status este completed sau failed.
Modele care suportă duration:
| Model(e) | Valori suportate | Observații |
|---|---|---|
| kling-2-6-text-to-video, kling-2-6-image-to-video | 5s, 10s | Opțional cu/fără audio (variantă model). |
| wan-2-5 (text-to-video, image-to-video) | 5s, 10s | |
| wan-2-7-720p, wan-2-7-1080p (text-to-video, image-to-video) | 2s–15s (întreg, per secundă) | Tarifare PER SECUNDĂ; rezoluția e codificată în model_id. Pasează duration (2–15) + generation_type. |
| v1-pro-fast-i2v | 5s, 10s | |
| seedance-1-5-pro | 4s, 8s, 12s | Suportă text-to-video (0–1 imagine opțional) și image-to-video (2 imagini obligatorii). |
| seedance-2 (Standard) / seedance-2-fast (Fast) | întreg 4–15 secunde | Tier-ul este chiar familia de model — folosește seedance-2-fast pentru tier-ul ieftin și rapid, seedance-2 pentru cel de calitate mai înaltă. Fiecare familie expune model_ids concrete per rezoluție și combinație cu video de referință (ex. seedance-2-fast-480p, seedance-2-480p-video-ref). Pasează variantele complete la generate_media; o etichetă de familie singură întoarce o eroare variant_required cu opțiunile. Referințe multimodale (imagini/videouri/audio) în text-to-video; keyframe în image-to-video. Facturarea se modifică când trimiți video de referință — vezi secțiunea Seedance 2. |
| gemini-omni-video (Google) | 4, 6, 8, 10 (incluse în id-ul variantei) | Doar durate discrete — parametrul duration este ignorat; rezoluția este și ea inclusă în id-ul variantei (gemini-omni-video-720p-6s, gemini-omni-video-1080p-6s, gemini-omni-video-4k-10s, etc.). Trei variante video-ref (gemini-omni-video-720p-video-ref, gemini-omni-video-1080p-video-ref, gemini-omni-video-4k-video-ref) preiau durata din clipul sursă tăiat (≤ 10s). Pasarea etichetei de familie gemini-omni-video întoarce o eroare variant_required cu cele 15 opțiuni. |
| grok-text-to-video-6s | 6s fix | Parametrul duration este ignorat. |
| grok-image-to-video, kling-2-5-image-to-video-pro, veo3-1 | Neconfigurabil | Durata nu se setează prin acest parametru. |
Pentru modele doar imagine, duration este ignorat.
Modele care suportă negative_prompt:
| Model(e) | Observații |
|---|---|
| imagen-4, imagen-4-fast, imagen-4-ultra | Text-to-image. |
| wan-2-5 (text-to-video, image-to-video) | |
| wan-2-7-720p, wan-2-7-1080p (text-to-video, image-to-video) | Până la 500 de caractere. |
| kling-2-5-image-to-video-pro |
Celelalte modele ignoră negative_prompt.
Modele care suportă quality (sau echivalent):
| Model(e) | Cum funcționează | Valori |
|---|---|---|
| imagen-4 variante | Mapat la model_variant. | standard, fast, ultra (folosește quality: standard / fast / ultra). |
| seedream-v4, seedream-v4-edit | Rezoluție prin parametrul quality. | 1K (implicit), 2K, 4K. |
| seedream-v4-5, seedream-v4-5-edit | Folosește quality direct. | basic (2K, implicit), high (4K). |
| 5-lite-text-to-image, 5-lite-image-to-image | Folosește quality direct. | basic (2K, implicit), high (4K). |
| veo3-1 vs veo3-1-fast | ID-uri de model diferite, nu un singur parametru quality. | Folosește model veo3-1 (calitate) sau veo3-1-fast (viteză). |
| flux-2, nano-banana-pro, nano-banana-2 | Rezoluție (1K/2K/4K), nu un string generic „quality”. | Pasează prin parametrul dedicat resolution — vezi mai jos. |
| gpt-image-2 (t2i + i2i) | Rezoluție prin parametrul resolution. | Vezi Tiere de rezoluție mai jos. |
Pentru celelalte modele, quality este ignorat.
<a id="tiere-rezolutie"></a>
Tiere de rezoluție (parametrul resolution):
| Model | Valori | Preț | Constrângere |
|---|---|---|---|
| gpt-image-2 (t2i + i2i) | 1K (implicit), 2K, 4K | 11 / 15 / 21 credite | 2K și 4K necesită un aspect_ratio explicit, non-pătrat, non-auto — unul dintre 9:16, 16:9, 4:3, 3:4. Apelarea 2K/4K cu aspect_ratio=auto sau aspect_ratio=1:1 returnează HTTP 400 (error: "aspect_ratio_incompatible_with_high_res") și creditele NU sunt reținute. 1K acceptă toate raporturile inclusiv auto/1:1. |
| nano-banana-2 | 1K (implicit), 2K, 4K | Vezi get_models | Fiecare tier este un SKU de preț separat. Lista aspect_ratio neschimbată între tier-uri. |
| nano-banana-pro | 1K (implicit), 2K, 4K | Vezi get_models | Același pattern ca nano-banana-2. |
| flux-2, flux-2-edit | 1K (implicit), 2K | Vezi get_models | Doar două tier-uri. |
Când să alegi fiecare tier (GPT Image 2):
1K— implicit. Folosește pentru postări social, thumbnail-uri, prototipare, preview-uri in-app, orice ≤ 1024 × 1024. Cel mai ieftin; fără probleme de aspect ratio.2K— folosește când clientul are nevoie de un hero web clar, copertă de newsletter, ilustrație in-product la densitate retină. Trebuie să alegi un aspect direcțional (landscape sau portrait).4K— folosește pentru print, out-of-home, bannere, sau orice caz în care utilizatorul cere explicit dimensiunea maximă. Confirmă aspectul cu utilizatorul întâi;1:1/autonu vor funcționa.
Modelele care nu sunt listate ignoră resolution. Pentru familiile video (Seedance, Kling, P-Video, Gemini Omni) rezoluția face parte din model_id-ul variantei concrete — pasează varianta (ex. seedance-2-fast-480p, p-video-1080p, gemini-omni-video-1080p-6s), nu acest parametru.
Limite caractere prompt:
Unele modele impun o lungime maximă a promptului. Depășirea poate returna eroare sau truncare.
| Model(e) | Caractere max |
|---|---|
| wan-2-5 | 800 |
| wan-2-7-720p, wan-2-7-1080p | 5.000 |
| kling-2-6 (text-to-video, image-to-video) | 2.500 |
| kling-2-5-image-to-video-pro | 2.500 |
| seedream-v4, seedream-v4-edit | 2.500 |
| seedance-2 (toate variantele) | 2.500 |
| seedream-v4-5, seedream-v4-5-edit | 3.000 |
| gpt-1.5-image-medium, gpt-1.5-image-high | 3.000 |
| nano-banana, imagen-4, flux-2, veo3-1, v1-pro-fast-i2v, grok (image/video), p-image-edit | 5.000 |
| nano-banana-pro (toate variantele) | 20.000 |
| nano-banana-2 (toate variantele) | 20.000 |
Altele pot să nu aibă limită documentată sau să folosească valorile implicite ale serverului.
Limite fișiere de intrare (imagini și video):
Pentru image-to-video și image-to-image, source_media_urls este o listă de URL-uri. Majoritatea modelelor acceptă doar imagini (JPEG, PNG, WebP, de obicei 10 MB max per fișier). Unele modele acceptă și intrări video; când acceptă, se aplică limite de format și mărime (ex. MP4, durată max).
| Model(e) | Tip intrare | Limită | Observații |
|---|---|---|---|
| kling-2-6-motion-control-720p, kling-2-6-motion-control-1080p | Imagine + video | 1 imagine + 1 video | Motion Control: video-ul de referință conduce mișcarea. Video max 30 s; fișier video de obicei până la 100 MB (MP4/WebM). |
| kling-3-0-motion-control-720p, kling-3-0-motion-control-1080p | Imagine + video | 1 imagine + 1 video | Kling 3.0 Motion Control: la fel ca Kling 2.6. Facturare pe secundă — vezi tabelul Motion Control mai jos. Video max 30 s; fișier video de obicei până la 100 MB (MP4/WebM). |
| kling-2-6-image-to-video, wan-2-5 (image-to-video), grok-image-to-video, v1-pro-fast-i2v | Doar imagini | 1 imagine | Exact o imagine de intrare. |
| wan-2-7-720p, wan-2-7-1080p (image-to-video) | Doar imagini | 1 imagine | Primul cadru în source_media_urls; opțional last_frame_url pentru o tranziție primul+ultimul cadru. |
| kling-2-5-image-to-video-pro | Doar imagini | 2 imagini | Cadru inițial și final. |
| kling-3-0-std, kling-3-0-pro | Doar imagini | 1–2 imagini | Cadru start, sau start + final. PNG/JPG/JPEG. Suportă elemente (vezi mai jos). |
| seedance-1-5-pro | Doar imagini | Depinde de mod | Text-to-video (generation_type: "text-to-video"): 0–1 imagini opționale. Image-to-video (generation_type: "image-to-video"): exact 2 imagini obligatorii (cadru start + final). |
| seedance-2 (Standard și Fast) | Imagini + video + audio | Depinde de mod | Text-to-video: până la 9 imagini de referință, până la 3 videouri de referință (durata combinată ≤ 15s) și până la 3 clipuri audio de referință (durata combinată ≤ 15s) — toate opționale. Image-to-video: 1 imagine obligatorie (primul frame) + 1 imagine opțională (ultimul frame) + până la 3 clipuri audio opționale; videourile de referință nu sunt permise în acest mod. Pune toate URL-urile în source_media_urls — backend-ul clasifică fiecare URL după extensie (.jpg/.png/.webp → imagine, .mp4/.mov/.webm → video, .mp3/.wav/.m4a → audio). |
| gemini-omni-video (toate variantele) | Imagini + video | 7 sloturi de referință | Un singur video de referință consumă 2 sloturi; imaginile umplu restul. Maxim 1 video pe cerere; primele 10 secunde ale clipului devin clipul-driver (fără parametri de trim expuși). Un video de referință necesită o variantă -video-ref — apelarea unei variante de durată cu un URL video întoarce variant_mismatch. URL-urile de fișiere audio nu sunt acceptate; vocea de ieșire se controlează prin parametrul voice_id (una dintre cele 29 de voci built-in). |
| seedream-v4-edit | Doar imagini | 10 | Pentru editare. |
| nano-banana, nano-banana-edit | Doar imagini | 10 | |
| nano-banana-pro (toate variantele) | Doar imagini | 8 | |
| nano-banana-2 (toate variantele) | Doar imagini | 8 | |
| p-image-edit | Doar imagini | 1–8 | P Image Edit (Pruna AI). Doar image-to-image — setează generation_type: "image-to-image". 1–8 URL-uri în source_media_urls. aspect_ratio: auto potrivește prima imagine, sau 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3. Opțional turbo (implicit activ). Implicit disable_safety_checker: true (moderare oprită); disable_safety_checker: false activează verificarea de siguranță. Opțional seed. |
| flux-2-edit (image-to-image) | Doar imagini | 8 | |
| gpt-1.5-image (image-to-image) | Doar imagini | 16 | |
| veo3-1 (image-to-video / moduri referință) | Doar imagini | 1-3 | Depinde de mod (1 referință opțională text-to-video; 2 cadru inițial+final; 3 referință). |
Folosește get_models pentru a confirma input_media_types și capabilitățile pentru un model dat. Vezi Instrumente cont pentru listă modele și prețuri.
Kling 3.0 – elemente (opțional):
Elementele permit referențierea imaginilor sau videoclipurilor în prompt cu @element_name. Trimite kling_elements ca array de obiecte cu name, description și fie element_input_urls (2–4 URL-uri imagine) fie element_input_video_urls (1 URL video). Imaginile de referință pentru fiecare element vin din element_input_urls propriu; image_urls principal poate rămâne gol pentru text-to-video, sau să țină cadre opționale de start/end pentru image-to-video. Fiecare element necesită titlu (name) și descriere. Imagini element: JPG/PNG, min 300×300px, max 10MB fiecare. Video element: MP4/MOV, max 50MB.
Seedance 1.5 Pro – două moduri (verifică generation_type înainte de a folosi imagini):
| Mod | generation_type | source_media_urls | Poate folosi imagini? |
|---|---|---|---|
| Text-to-video | "text-to-video" | Gol sau 1 URL | Opțional: 0–1 imagini. Omite pentru doar text; include 1 URL pentru a anima acea imagine. |
| Image-to-video | "image-to-video" | Exact 2 URL-uri | Obligatoriu: exact 2 imagini (cadru start + cadru final). |
Seedance 2 (ByteDance) – două familii de modele, două moduri, referințe multimodale:
Seedance 2 este livrat pe Kubeez ca două familii de modele separate — seedance-2-fast (ieftin, rapid) și seedance-2 (standard, calitate mai mare). Fiecare familie expune model_ids concrete per rezoluție și combinație cu video de referință; pasează varianta completă (ex. seedance-2-fast-480p, seedance-2-720p-video-ref) — pasarea doar a etichetei de familie întoarce o eroare variant_required cu opțiunile disponibile. Ambele tiere suportă rezoluțiile 480p și 720p (nu există 1080p), durată întreg între 4 și 15 secunde, și aspect ratios 1:1, 4:3, 3:4, 16:9, 9:16, 21:9 și adaptive. Prompt-ul maxim este 2.500 de caractere. Audio-ul se comută prin generate_audio (implicit true) și este gratuit — spre deosebire de Kling 3.0, care aplică un surcharge pentru audio.
Două moduri:
| Mod | Intrări permise | Regulă |
|---|---|---|
| Text-to-video | Până la 9 imagini de referință, până la 3 videouri de referință (durata combinată ≤ 15s), până la 3 clipuri audio de referință (durata combinată ≤ 15s). | Toate referințele sunt opționale. Pune toate URL-urile în source_media_urls; backend-ul clasifică fiecare URL după extensie (.jpg/.png/.webp → imagine, .mp4/.mov/.webm → video, .mp3/.wav/.m4a → audio) și le rutează automat către bucket-ul corect. |
| Image-to-video | 1 imagine obligatorie (primul frame) + 1 imagine opțională (ultimul frame) + până la 3 clipuri audio de referință opționale. | Videourile de referință nu sunt permise în acest mod — vor fi respinse cu o eroare clară. |
Limite stricte (aplicate ca erori 400):
-
3 videouri de referință →
too_many_videos -
3 clipuri audio de referință →
too_many_audios -
9 imagini de referință →
too_many_images - Durata combinată a videourilor de referință > 15s → respinsă
- Durata combinată a clipurilor audio de referință > 15s → respinsă
- Un singur fișier video sau audio de referință mai lung de 15s → respins
Două căi de facturare (important):
Seedance 2 are două formule de cost, alese în funcție de prezența sau absența unui video de referință:
- Fără video de referință:
credits = output_s × rate/s - Cu video de referință (ruta providerului upstream):
undecredits = (ref_s + output_s) × rate/sref_seste suma duratelor tuturor videourilor de referință, limitată la 15 secunde per cerere.
Notă importantă pentru utilizatorii MCP și REST API: Backend-ul nu poate interoga durata unui video de la distanță dintr-un URL, așa că, pentru cererile cu video de referință primite prin MCP sau REST API, facturează cel mai pesimist caz (15 secunde) pentru ref_s. Web UI-ul Kubeez măsoară durata local și facturează valorile exacte. Pentru workflow-uri sensibile la cost cu clipuri de referință scurte, recomandăm să folosești web UI-ul.
Tarife per secundă, în timp real (extrase din catalogul ai_models_config — mereu la zi):
| Model | Name | Rate | Unit |
|---|---|---|---|
| seedance-2-1080p | Seedance 2 (1080p) | 75 | credits / sec |
| seedance-2-1080p-video-ref | Seedance 2 (1080p, video ref) | 48 | credits / sec |
| seedance-2-480p | Seedance 2 (480p) | 18 | credits / sec |
| seedance-2-480p-video-ref | Seedance 2 (480p, video ref) | 13 | credits / sec |
| seedance-2-720p | Seedance 2 (720p) | 35 | credits / sec |
| seedance-2-720p-video-ref | Seedance 2 (720p, video ref) | 25 | credits / sec |
| seedance-2-fast-480p | Seedance 2.0 Fast | 16 | credits / sec |
| seedance-2-fast-480p-video-ref | Seedance 2.0 Fast (video ref) | 12 | credits / sec |
| seedance-2-fast-720p | Seedance 2.0 Fast | 29 | credits / sec |
| seedance-2-fast-720p-video-ref | Seedance 2.0 Fast (video ref) | 19 | credits / sec |
Gemini Omni Video — modelul multi-modal Google:
Gemini Omni Video produce ieșire video cu audio built-in (29 de voci) și acceptă intrări multi-modale (text, referințe de imagine, un singur video de referință opțional). Modelul vine ca 15 variante concrete — alege-o pe cea care se potrivește rezoluției și duratei dorite. 720p și 1080p au același preț; 4K este un tier de preț separat.
Id-uri variantă (pasate la generate_media ca model):
| Rezoluție | 4s | 6s | 8s | 10s | Video-ref (flat) |
|---|---|---|---|---|---|
| 720p | gemini-omni-video-720p-4s | gemini-omni-video-720p-6s | gemini-omni-video-720p-8s | gemini-omni-video-720p-10s | gemini-omni-video-720p-video-ref |
| 1080p | gemini-omni-video-1080p-4s | gemini-omni-video-1080p-6s | gemini-omni-video-1080p-8s | gemini-omni-video-1080p-10s | gemini-omni-video-1080p-video-ref |
| 4K | gemini-omni-video-4k-4s | gemini-omni-video-4k-6s | gemini-omni-video-4k-8s | gemini-omni-video-4k-10s | gemini-omni-video-4k-video-ref |
Variantele video-ref preiau durata din clipul sursă tăiat (se folosesc primele 10s; fără parametri de trim expuși). Variantele bazate pe durată acceptă 1–7 referințe de imagine; variantele video-ref acceptă 1 clip sursă (consumă 2 sloturi) + până la 5 referințe de imagine.
Tarifare flat per task. Tarife în timp real (720p și 1080p împart fiecare rând — Google le facturează identic):
| Model | Name | Rate | Unit |
|---|---|---|---|
| gemini-omni-video-4k-10s | Gemini Omni Video (4K) | 320 | credits |
| gemini-omni-video-4k-4s | Gemini Omni Video (4K) | 230 | credits |
| gemini-omni-video-4k-6s | Gemini Omni Video (4K) | 260 | credits |
| gemini-omni-video-4k-8s | Gemini Omni Video (4K) | 290 | credits |
| gemini-omni-video-4k-video-ref | Gemini Omni Video (video ref, 4K) | 380 | credits |
| gemini-omni-video-hd-10s | Gemini Omni Video | 200 | credits |
| gemini-omni-video-hd-4s | Gemini Omni Video | 110 | credits |
| gemini-omni-video-hd-6s | Gemini Omni Video | 140 | credits |
| gemini-omni-video-hd-8s | Gemini Omni Video | 170 | credits |
| gemini-omni-video-hd-video-ref | Gemini Omni Video (video ref) | 260 | credits |
Parametri specifici Gemini Omni:
| Parametru | Tip | Observații |
|---|---|---|
resolution | — | Ignorat — inclus în id-ul variantei. |
duration | — | Ignorat — inclus în id-ul variantei. Variantele video-ref preiau durata din clipul sursă tăiat. |
aspect_ratio | string | Strict 16:9 sau 9:16. Orice altă valoare întoarce aspect_ratio_invalid_for_model. |
voice_id | string (opțional) | Una dintre cele 29 de voci built-in (ex. kore, puck, achernar, zephyr). Descoperă lista completă prin tool-ul list_gemini_omni_voices — id-urile necunoscute sunt respinse client-side înainte de a se factura vreun credit. Omite pentru vocea implicită a modelului. |
character_ids | string[] (opțional) | Unul sau mai multe personaje salvate din biblioteca utilizatorului (create prin manage_library(kind="character", action="create", ...), listate prin list_gemini_omni_characters). Fiecare consumă 1 din cele 7 sloturi de referință. Providerul randează o identitate consistentă pe mai multe clipuri. |
video_trim_start_s | number (opțional) | Începutul ferestrei de trim (secunde) pentru video-ul de referință. Implicit 0. |
video_trim_end_s | number (opțional) | Sfârșitul ferestrei de trim (secunde) pentru video-ul de referință. Implicit: min(durata_sursei, start+10) când URL-ul există în media_upload_metadata, altfel start+10. Limite stricte de la provider: range ≤ 10s, ends ≤ 30s. |
seed | number (opțional) | Pentru rezultate reproductibile. |
negative_prompt | — | Nu este suportat. Eliminat tacit. |
sound | — | Nu este suportat — audio-ul este intrinsec fiecărei ieșiri. |
Media sursă (source_media_urls): 7 sloturi de referință în total. Un singur video de referință consumă 2 sloturi; fiecare character_id consumă 1 slot; imaginile umplu restul. Maxim 1 video pe cerere; pasarea unui URL video necesită o variantă -video-ref (variantă de durată + video → variant_mismatch). Fereastra clipului-driver este implicit primele 10 secunde; suprascrie cu video_trim_start_s / video_trim_end_s. URL-urile de fișiere audio nu sunt acceptate (returnează unsupported_audio_url); folosește voice_id în schimb.
Tool-uri companion (folosește-le alături de generările Gemini Omni):
| Tool | Scop |
|---|---|
list_gemini_omni_voices | Catalog static al celor 30 de voci (id, label, gen, caracter, preview_url către un sample mp3 de ~7s). Gratuit. |
play_gemini_omni_voice | Returnează preview_url-ul pentru un singur id de voce — mai rapid decât a aduce întregul catalog când știi deja vocea. Afișează URL-ul utilizatorului ca să o asculte înainte de a o folosi. |
list_gemini_omni_characters | Listează personajele salvate ale utilizatorului. Fiecare rând are un character_id de pasat la generate_media și un id intern pentru ștergere. |
manage_library(kind="character", action="create", ...) | Persistă un personaj nou dintr-o imagine de referință + descriere (+ opțional character_name, voice_id). Returnează character_id-ul opac al providerului. |
manage_library(kind="character", action="delete", character_id=...) | Ștergere locală (providerul nu are endpoint de delete). Generările anterioare care au folosit acel personaj își păstrează ieșirile. |
trim_video | Taie un video sursă lung la fereastra de ≤10s pe care Gemini Omni o cere pentru variantele -video-ref. Returnează un URL găzduit, gata de folosit ca source_media_urls. |
Exemplu de cerere (1080p, 6s, vertical, refolosind un personaj salvat + voce aleasă):
{
"model": "gemini-omni-video-1080p-6s",
"prompt": "Un barista face un espresso perfect, povestește procesul",
"aspect_ratio": "9:16",
"voice_id": "kore",
"character_ids": ["char_4f2a9b7c"],
"source_media_urls": ["https://media.kubeez.com/cafe-shot.jpg"]
}
Audio la video (două concepte):
capabilities.video_audioîn get_models — dacă ieșirea are sunet:included— ieșirea include de obicei pistă audio fără parametrulsound(ex. Veo, Wan, Grok, Kling 2.5 image-to-video, Motion Control, Gemini Omni Video — acesta expune parametrulvoice_idpentru alegerea uneia dintre cele 29 de voci built-in).toggle_via_sound_param— audio generat se pornește/oprește cusound: true/false(Kling 2.6, Kling 3.0, Seedance 1.5 Pro, Seedance 2). Pentru Seedance 2 comutatorul este gratuit (implicittrue); pentru celelalte modele prețul poate diferi. Kling 3.0 ruteazăsound: truecătre rânduri dedicate-audioîn catalog — continui să foloseștikling-3-0-std/kling-3-0-proca model id și doar comuțisound; serverul alege rândul cu tariful corect. Tarife în timp real:
| Model | Name | Rate | Unit |
|---|---|---|---|
| kling-3-0-pro | Kling 3.0 Pro | 21 | credits / sec |
| kling-3-0-pro-audio | Kling 3.0 Pro (with audio) | 30 | credits / sec |
| kling-3-0-std | Kling 3.0 | 17 | credits / sec |
| kling-3-0-std-audio | Kling 3.0 Std (with audio) | 23 | credits / sec |
Tarife per secundă de Motion Control (Kling 3.0 și Kling 2.6):
kling-3-0-motion-control,kling-2-6-motion-controlsilent— fără audio generat (doar Seedance 1.0 /v1-pro-fast-i2v).
supports_sound— înseamnă doar că API-ul acceptă comutatorulsoundpentru acel model; nu înseamnă că celelalte modele video sunt fără sunet; majoritatea auvideo_audio: included.
Modelele doar imagine ignoră sound.
#API REST: URL-uri pentru fișiere locale sau din browser
Dacă folosești API-ul HTTP (POST /v1/generate/media) și intrările sunt fișiere pe disc sau selectate în browser—nu URL-uri publice deja—încarcă mai întâi fiecare fișier cu POST /v1/upload/media. Folosește valorile din urls ca source_media_urls.
<a id="trim_video"></a>
#trim_video
Taie o fereastră din orice URL video accesibil public și găzduiește clipul tăiat. Kubeez gestionează trim-ul server-side și returnează un url public pe care îl pasezi direct la generate_media ca valoare în source_media_urls.
Când să folosești acest tool:
- Video-ul sursă al utilizatorului este mai lung decât limita modelului pentru clipul de referință și vrei rezultate deterministe în loc să te bazezi pe trim-ul providerului.
- Vrei să folosești o fereastră specifică dintr-un asset mai lung (ex. „folosește secundele 5–12, nu primele 10").
- Înlănțuiești mai multe generări și vrei un singur URL canonic tăiat reutilizabil în mai multe apeluri.
Limite per model (sari peste trim când sursa deja se încadrează):
| Model | Limită clip referință | Note |
|---|---|---|
Gemini Omni Video (variante -video-ref) | ≤ 10s fereastră din primele 30s ale sursei | Necesar când o variantă de durată + ref video întoarce variant_mismatch. |
| Kling 2.6 / 3.0 Motion Control | ≤ 30s video de referință | Providerul trunchiează clipurile mai lungi; taie explicit pentru încadrare predictibilă. |
| Seedance 2 / 2 Fast | ≤ 15s timp combinat video referință | Dacă pasezi mai multe ref videouri, taie fiecare ca suma să se încadreze. |
Parametri:
| Parametru | Tip | Obligatoriu | Descriere |
|---|---|---|---|
source_url | string | Da | URL video sursă accesibil public (URL Kubeez upload, R2/S3, orice CDN public). |
end_s | number | Da | Sfârșitul ferestrei de trim, în secunde. Trebuie să fie > start_s; intervalul rezultat end_s − start_s este plafonat la 60s. |
start_s | number | Nu | Începutul ferestrei de trim, în secunde. Implicit 0. |
Returnează: { url, size_bytes, duration_s, start_s, end_s, elapsed_s }. url este un link public găzduit Kubeez care indică spre bucket-ul media-inputs din Supabase storage, safe de folosit ca valoare source_media_urls. Clipurile tăiate stau în același bucket cu inputurile încărcate de utilizator și împart aceeași curățare automată săptămânală — tratează-le ca efemere, nu ca asset permanent.
Flux tipic (Gemini Omni Video cu sursă lungă de la utilizator):
1. get_upload_url(model_id="gemini-omni-video-1080p-video-ref")
→ pagină upload presemnată
2. (utilizatorul încarcă clipul de 25s prin link)
3. get_upload_session(token) → { media_urls: ["https://.../source.mp4"] }
4. trim_video(source_url=media_urls[0], start_s=5, end_s=15)
→ { url: "https://.../trims/<uuid>.mp4", duration_s: 10 }
5. generate_media(
model="gemini-omni-video-1080p-video-ref",
prompt="...",
source_media_urls=[<url-ul tăiat>]
)
Trim standalone (URL-ul sursă e deja public — fără pas de upload):
trim_video(source_url="https://media.kubeez.com/<asset>.mp4", start_s=0, end_s=8)
→ { url, duration_s: 8 }
generate_media(model="kling-3-0-motion-control-1080p", source_media_urls=[<imagine>, <url-ul tăiat>], ...)
Erori:
| Cod eroare | Cauză |
|---|---|
missing_source_url | source_url nu a fost furnizat. |
unsafe_source_url | source_url folosește o schemă non-http(s), conține credențiale embedate sau se rezolvă la un IP privat/loopback/metadata. Kubeez refuză să acceseze host-uri interne — folosește un URL public. |
invalid_trim_range | end_s ≤ start_s, start_s negativ sau valori non-numerice. |
trim_too_long | end_s − start_s > 60s. |
source_too_large | Video sursă > 500 MB. |
source_fetch_failed | URL-ul sursă a întors 4xx, 5xx, a fost inaccesibil sau a depășit plafonul de redirect-uri. |
ffmpeg_failed | ffmpeg a respins fișierul (codec nesuportat / container corupt). |
processor_timeout | Serviciul de trim a depășit bugetul de download/procesare. |
processor_unavailable | Serviciul de trim este temporar indisponibil. Reîncearcă mai târziu sau contactează suportul dacă persistă. |
Exemplu de cerere:
{
"source_url": "https://media.kubeez.com/u123/uploads/long-take.mp4",
"start_s": 5.2,
"end_s": 14.7
}
Exemplu de răspuns:
{
"url": "https://<project>.supabase.co/storage/v1/object/public/media-inputs/u123/trims/abc.mp4",
"size_bytes": 1245678,
"duration_s": 9.5,
"start_s": 5.2,
"end_s": 14.7,
"elapsed_s": 1.83
}
Precizie pe frame:
-c copyaliniază startul efectiv la cel mai apropiat keyframe precedent (deplasare ≤ 1 GOP, de obicei ≤ 1s). Comportament identic cu stream-copy-ul nativ MP4 din web UI. Pentru tăieri precise pe frame, re-encodează sursa în prealabil — compromisul fiind o operațiune mai lentă și cu pierderi, pe care o evităm deliberat aici.
Nu păstra output-ul: URL-ul indică spre bucket-ul
media-inputscare e curățat săptămânal. Dacă ai nevoie ca clipul tăiat să supraviețuiască următoarei generări, foloseștemanage_library(kind="asset", action="add", ...)pentru a-l copia în Biblioteca de Assets permanentă a utilizatorului.
#get_generation_status
Verifică statusul unei generări media și obține URL-urile de output când e gata.
Parametri:
| Parametru | Tip | Obligatoriu | Descriere |
|---|---|---|---|
| generation_id | string | Da | ID returnat de generate_media. |
Răspuns: Include status (pending, queued, processing, completed, failed), progress și când e finalizat un array outputs cu url, thumbnail_url, optimized_url, media_type, dimensiuni etc.
#get_generation_estimate
Obține un timp estimat de procesare în funcție de parametri pentru un model și opțiuni dat (nu se pornește niciun job). Pentru o durată estimată per model într-un singur apel, folosește get_models; fiecare model include estimated_time_seconds. Folosește get_generation_estimate când ai nevoie de o estimare care depinde de lungimea promptului, durată sau alți parametri.
Parametri:
| Parametru | Tip | Obligatoriu | Descriere |
|---|---|---|---|
| model | string | Da | ID model. |
| generation_type | string | Nu | La fel ca în generate_media. Implicit: text-to-image. |
| prompt | string | Nu | Opțional; poate afecta estimarea. |
| negative_prompt | string | Nu | Opțional. |
| parameters | object | Nu | Parametri suplimentari opționali. |
Răspuns: Timp estimat (și opțional încredere/dimensiune eșantion) pentru a seta așteptările utilizatorului înainte de generate_media.
#Reguli modele
- Text-to-image și text-to-video: Nu trimite
source_media_urls(decât dacă modelul suportă o imagine de referință opțională). Excepție: seedance-1-5-pro în mod text-to-video acceptă 0–1 imagini opționale. - Image-to-video și image-to-image: Trimite URL-uri imagine (și când e suportat, video) în
source_media_urls. Majoritatea modelelor au nevoie doar de imagini; unele (ex. Kling 2.6 Motion Control) necesită 1 imagine + 1 video. seedance-1-5-pro în mod image-to-video necesită exact 2 imagini (cadru start + final). Respectă limitele de intrare ale fiecărui model de mai sus. - Audio video: Folosește
capabilities.video_audiodin get_models.included— audio fără parametrulsound.toggle_via_sound_param— foloseștesounddoar cândsupports_sounde true.silent— fără audio generat (doar Seedance 1.0). Nu deduce „fără audio” doar dinsupports_sound: false. - Folosește get_models pentru a vedea ce modele suportă ce tipuri de generare,
input_media_types(ex. image, video) și numărul necesar de intrări.
Vezi Limitări pentru limite de rată și credite. Pentru un singur tabel cu valorile implicite API (prompt, intrări, durată, flag-uri), vezi Cerințe modele API.
