Tutoriale
API video Grok Imagine: da immagine a video e da testo a video con 1.0 e 1.5
Quale dei tre endpoint video di Grok Imagine chiamare, quanto costa una singola clip, esempi reali di output con prompt e codice curl e Python pronto all'uso.
TL;DR
- L'API video Grok Imagine su HiAPI ha tre endpoint: 1.0 da testo a video, 1.0 da immagine a video e 1.5 da immagine a video. Tutti e tre hanno lo stesso prezzo: $0,015 al secondo a 480p, $0,0282 al secondo a 720p, e ogni clip include gli effetti sonori generati senza costi aggiuntivi.
- 1.0 dura da 6 a 30 secondi e accetta fino a 7 immagini di riferimento. 1.5 dura da 1 a 15 secondi, accetta una sola immagine e con
aspect_ratio: "auto"l'output segue la forma dell'immagine. - Una clip bozza da 6 secondi a 480p costa $0,09. Apri la pagina del modello da immagine a video per provarlo; i nuovi account ricevono 200 crediti gratuiti.
Quale endpoint usare
| ID modello | Input | Durata | Proporzioni | Extra |
|---|---|---|---|---|
grok-imagine/text-to-video |
prompt | 6–30 secondi (predefinito 6) | 2:3 (predefinito), 3:2, 1:1, 16:9, 9:16 |
mode: normal o fun |
grok-imagine/image-to-video |
1–7 immagini + prompt facoltativo | 6–30 secondi (predefinito 6) | come sopra | mode; usa @image1, @image2 per fare riferimento alle immagini |
grok-imagine-1.5/image-to-video |
esattamente 1 immagine + prompt facoltativo | 1–15 secondi (predefinito 8) | auto (predefinito), 1:1, 16:9, 9:16, 3:2, 2:3 |
nessun mode |
Tutti e tre gli endpoint fatturano al secondo: $0,015 (480p, predefinito) o $0,0282 (720p). Prezzi HiAPI in tempo reale, rilevati il 19 ottobre 2026. Le attività fallite non vengono addebitate.
Come scegliere:
- Durata superiore a 15 secondi o necessità di più immagini di prodotto come riferimento: 1.0 da immagine a video.
- Una sola immagine fissa, clip breve e output che deve mantenere la forma dell'immagine: 1.5 da immagine a video. È anche l'unico endpoint che scende sotto i 6 secondi, quindi una clip in loop da 4 secondi costa meno.
- Nessuna immagine: 1.0 da testo a video.
| Clip | 480p | 720p |
|---|---|---|
| 4 secondi (solo 1.5) | $0,06 | $0,11 |
| 6 secondi | $0,09 | $0,17 |
| 15 secondi | $0,23 | $0,42 |
| 30 secondi (solo 1.0) | $0,45 | $0,85 |
Output reale
1.0 da immagine a video, un'immagine di riferimento. Un'immagine fissa da catalogo di una borsa da viaggio per il fine settimana:

Orbita cinematografica lenta attorno alla borsa da viaggio in tela arancio bruciato, la camera ruota dolcemente dalla vista frontale a quella a tre quarti, l'illuminazione da studio fa brillare le cerniere in ottone, lo sfondo bianco uniforme resta pulito e senza ombre, il prodotto è perfettamente nitido e invariato, sottile energia da e-commerce premium.
grok-imagine/image-to-video, 6 secondi, 720p, un'immagine di riferimento, $0,17. Abbiamo richiesto 9:16, ma da un'immagine sorgente quadrata l'output è rimasto quadrato (960×960).
1.0 da immagine a video, due immagini di riferimento. Passando insieme un'immagine di scena reale e un'immagine di prodotto, la borsa mantiene lo stesso aspetto nella nuova scena:
grok-imagine/image-to-video, 6 secondi, 720p, 9:16, due immagini di riferimento, $0,17.
1.5 da immagine a video, stessa immagine fissa, due movimenti di camera. Il movimento di camera è nel prompt. Cambiando il verbo si ottiene un'inquadratura diversa:

Lento e costante carrello in avanti lungo la strada del mercato bagnata dalla pioggia verso la bancarella di noodle luminosa, il vapore sale e si arriccia dalle pentole, la pioggia cade in sottili strisce, i riflessi delle insegne al neon brillano sul selciato bagnato, i passanti si allontanano lentamente sotto gli ombrelli, velocità di camera costante e fluida, un'unica ripresa continua, nessun taglio, ritmo cinematografico
Apri la pagina del modello con questo prompt (carica prima la tua immagine fissa) →
grok-imagine-1.5/image-to-video, 6 secondi, 720p, 16:9, $0,17.
La camera scivola lentamente verso sinistra con un fluido movimento di carrellata laterale, forte parallasse tra le bancarelle vicine e il fondo della strada, la pioggia continua a cadere, i riflessi al neon scivolano sul terreno bagnato, il cuoco continua a mescolare dietro il bancone, il vapore si sposta lateralmente, un unico movimento continuo, nessun taglio, nessuno zoom
grok-imagine-1.5/image-to-video, 6 secondi, 720p, 16:9, $0,17.
1.5, un loop ambientale di 4 secondi. Con la camera fissa, tutto il movimento viene dalla scena stessa:
grok-imagine-1.5/image-to-video, 4 secondi, 720p, 16:9, $0,11.
curl
Da immagine a video con 1.0:
curl -s -X POST https://api.hiapi.ai/v1/tasks \
-H "Authorization: Bearer $HIAPI_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "grok-imagine/image-to-video",
"input": {
"image_urls": ["https://your-cdn.example.com/product.jpg"],
"prompt": "Slow orbit around the product, studio light, background stays clean",
"duration": 6,
"resolution": "480p",
"aspect_ratio": "9:16"
}
}'
Riceverai un taskId. Esegui il polling su GET https://api.hiapi.ai/v1/tasks/{taskId} finché data.status non è success, poi scarica data.output[0].url. I link scadono, salva subito il file.
Per il testo a video cambia il modello in grok-imagine/text-to-video e rimuovi image_urls. Per usare 1.5, cambia il modello in grok-imagine-1.5/image-to-video, mantieni una sola immagine e rimuovi mode.
Python: invio, polling, download
# pip install requests; export HIAPI_KEY=your-key first
import os, time, uuid, requests
API = "https://api.hiapi.ai/v1/tasks"
H = {"Authorization": f"Bearer {os.environ['HIAPI_KEY']}"}
def generate(model, timeout_s=900, **inp):
body = {"model": model, "input": inp}
# Reuse the same Idempotency-Key if you retry a submit, so a retry never bills twice
r = requests.post(API, json=body, headers={**H, "Idempotency-Key": str(uuid.uuid4())}, timeout=30)
res = r.json()
if res.get("code") != 200:
raise RuntimeError(res) # 400s list every invalid field
task_id = res["data"]["taskId"]
deadline = time.time() + timeout_s
while time.time() < deadline:
d = requests.get(f"{API}/{task_id}", headers=H, timeout=30).json()["data"]
if d["status"] == "success":
return d["output"][0]["url"]
if d["status"] == "fail":
raise RuntimeError(d)
time.sleep(10)
raise TimeoutError(task_id)
still = "https://your-cdn.example.com/still.jpg"
# Draft cheaply on 1.5 at 480p, then re-render the keeper at 720p
draft = generate("grok-imagine-1.5/image-to-video", image_urls=[still],
prompt="slow push-in, steam rising, camera steady", duration=4, resolution="480p")
final = generate("grok-imagine-1.5/image-to-video", image_urls=[still],
prompt="slow push-in, steam rising, camera steady", duration=6, resolution="720p")
# A 20-second clip needs 1.0
long_clip = generate("grok-imagine/image-to-video", image_urls=[still],
prompt="slow push-in, steam rising, camera steady", duration=20, resolution="480p")
with open("clip.mp4", "wb") as f:
f.write(requests.get(final).content)
Parametri
| Campo | 1.0 testo a video | 1.0 immagine a video | 1.5 immagine a video |
|---|---|---|---|
prompt |
obbligatorio, massimo 5.000 caratteri | facoltativo | facoltativo, massimo 4.096 caratteri |
image_urls |
non accettato | 1–7 immagini, jpeg/png/webp, massimo 10 MB ciascuna | esattamente 1 immagine, jpeg/png/webp, massimo 20 MB |
duration |
6–30 | 6–30 | 1–15 |
resolution |
480p (predefinito) / 720p |
come sopra | come sopra |
aspect_ratio |
2:3 predefinito |
2:3 predefinito |
auto predefinito (segue l'immagine) |
mode |
normal (predefinito) / fun |
come sopra | non accettato |
Errori che incontrerai
Tutti i seguenti errori restituiscono HTTP 400 al momento dell'invio, quindi non viene creata alcuna attività e non vengono addebitati costi:
duration: minimum: got 4, want 6: 1.0 parte da 6 secondi. Per clip più brevi usa 1.5.duration: maximum: got 20, want 15: 1.5 arriva a un massimo di 15 secondi. Per clip più lunghe usa 1.0.image_urls: maxItems: got 2, want 1: 1.5 accetta una sola immagine.additional properties 'mode' not allowed: 1.5 non hamode.resolution: value must be one of '480p', '720p': non esiste il 1080p e il valore deve essere in minuscolo.
FAQ
Meglio 1.0 o 1.5?
Il prezzo al secondo è identico. Scegli in base all'input e alla durata: con più immagini di riferimento o oltre 15 secondi usa 1.0; con una sola immagine fissa e clip brevi usa 1.5. Se sei indeciso, genera la stessa immagine fissa su entrambi gli endpoint a 480p per 6 secondi: costa in tutto $0,18.
C'è l'audio?
Sì. Ognuna delle clip sopra ha restituito una traccia audio generata; nel loop del faro si sentono chiaramente le onde. Non esiste un interruttore per disattivarlo (generate_audio e audio vengono rifiutati come campi sconosciuti) e l'audio non influisce sul prezzo. Se non lo vuoi, puoi rimuovere la traccia in montaggio.
Si può avere il 1080p?
No. La risoluzione massima di tutti e tre gli endpoint è 720p.
A cosa serve mode: "fun"?
È un'opzione di 1.0 che rende il movimento più vivace ed esagerato. normal è il valore predefinito ed è la scelta più sicura per le clip di prodotto.
Altri esempi: Grok Imagine 1.5 per i video brevi. Per i prezzi dell'intera serie, consulta Prezzi dell'API Grok Imagine. Per generare immagini statiche, consulta La guida all'API immagini di Grok Imagine.
Articoli correlati
Vedi tutti gli articoli →-
Tutoriale
Come chiamare hailuo-2.3-fast/image-to-video tramite l'API HiAPI: pratica con curl e Python
La prima richiesta funzionante per il livello image-to-video veloce ed economico — dall'ID del modello al download di un MP4
-
Tutoriale
Come chiamare hailuo-2.3/text-to-video tramite l'API HiAPI: curl, Python ed esempi di richiesta eseguibili
-
Tutoriale
Utilizzare Kandinsky 6.0 Pro su HiAPI per la generazione di video da testo: tutorial con curl e Python
Dimostrazione pratica guidata dalla richiesta: costruire la chiamata da prompt a clip video, inviare la richiesta, monitorare lo stato di completamento e scaricare il risultato