NezhaGate
grok-imagine-video-1.5

Grok Imagine Video 1.5 · API

POST https://nezhagate.com/v1/videos/generations

Grok Imagine Video 1.5 (async): duration is any integer 4-15 seconds, resolution 480P / 720P, size 16:9 / 9:16 / 1:1 / 4:3 / 3:4; include image for image-to-video (up to 7 references; 2 or more caps the clip at 10 seconds). Returns a job id (HTTP 202); poll GET /v1/videos/jobs/{id} until status=succeeded, result in data[0].url. Billed PER CLIP: 480P $0.30 / 720P $0.40 (default 720P); within a tier the shortest and the longest clip cost the same. Fully refunded on failure.

Try in Playground →

Authentication

Header
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json

Create an API Key in the console to start.

Request body

ParameterTypeRequiredDescription
model string Yes Model ID, here grok-imagine-video-1.5.
prompt string Yes Text prompt describing the video, camera and motion. Max 5000 bytes (UTF-8; a Chinese character counts as 3).
duration integer No Length in seconds, any integer 4-15 (default 15, i.e. the longest -- billed PER CLIP, so length does not change the price); alias seconds. With 2 or more reference images the cap drops to 10 seconds.
resolution string No Resolution: 480P $0.30 / 720P $0.40 (default 720P). Price follows the resolution, not the length.
size string No Aspect ratio: 16:9 / 9:16 / 1:1 / 4:3 / 3:4 (default 16:9); alias aspect_ratio. 21:9 is not available on this model.
image string No Image-to-video: include a reference image (public URL, data: URI or base64); omit for text-to-video.
images array No Multiple reference images, up to 7. Exceeding the cap is rejected, never truncated. Alias: reference_images.

Request example

cURL
# 1) submit -> 202 {"id":"img_...","status":"queued"}
curl https://nezhagate.com/v1/videos/generations -H 'Authorization: Bearer YOUR_API_KEY' -H 'Content-Type: application/json' -d '{"model": "grok-imagine-video-1.5", "prompt": "a paper crane unfolding over a misty lake", "duration": 15, "resolution": "720P", "size": "16:9"}'
# image-to-video: also pass  "image": "https://example.com/ref.png"
# 2) poll every ~5s until status=succeeded, then read data[0].url
curl https://nezhagate.com/v1/videos/jobs/img_3f9a...c2 -H 'Authorization: Bearer YOUR_API_KEY'

Response

200 · JSON
{
  "id": "img_3f9a...c2",
  "object": "video.generation.job",
  "status": "queued",
  "model": "grok-imagine-video-1.5"
}

Async video job (submit → poll)

One model; params pick the type: tier=lite/fast/quality, resolution=720p/1080p/4k (1080p/4k need quality), size=16:9/9:16, duration=4s/6s/8s; add an image param for image-to-video (first frame). Returns HTTP 202 + a job id; poll until status=succeeded, result in data[0].url (a re-hosted mp4, ~1-2 min).

curl · submit (text-to-video)
curl https://nezhagate.com/v1/videos/generations -H 'Authorization: Bearer YOUR_API_KEY' -H 'Content-Type: application/json' -d '{"model": "grok-imagine-video-1.5", "prompt": "a cat surfing at sunset", "tier": "quality", "resolution": "1080p", "size": "16:9", "duration": "8s"}'
Image-to-video: also pass an image param (first-frame reference: a public URL, a data: URI, or base64).
Response Example
{ "id": "img_3f9a...c2", "object": "video.generation.job", "status": "queued", "model": "grok-imagine-video-1.5" }
curl · poll
curl https://nezhagate.com/v1/videos/jobs/img_3f9a...c2 -H 'Authorization: Bearer YOUR_API_KEY'
Response Example
{
  "id": "img_3f9a...c2",
  "object": "video.generation.job",
  "status": "succeeded",
  "model": "grok-imagine-video-1.5",
  "data": [{ "url": "https://img.nezhagate.com/i/9f86d081a8....mp4" }]
}

Billed per clip and fully refunded on failure; a failed or timed-out render returns the reserved credits automatically.

Error codes

CodeDescription
401API Key missing or invalid
402Insufficient balance or Key over quota
400Unsupported model or parameter
429Upstream rate limit
502All upstream routes failed