Grok Imagine ignores aspect_ratio on image-to-video; Sume rejects it
xAI says image-to-video output matches the input image and ignores aspect_ratio. Sume's Grok row goes further and rejects the field. Crop the still first.

On Grok Imagine image-to-video the input picture sets the output shape, and xAI's docs say aspect_ratio is ignored (read 2026-10-10). On Sume the grok-imagine-video-1.5 row is stricter: its request schema rejects aspect_ratio outright, so a script that sends it will fail validation instead of being silently ignored.
The fix is the same on both sides. Crop or pad the still to the shape you want before you upload it.
What xAI says
The xAI video page (read 2026-10-10) states that image-to-video output always matches the input image's aspect ratio and that aspect_ratio is ignored in that mode. For modes without an image, it lists nine ratios: 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3, 21:9 and 5:2.
So at xAI, sending aspect_ratio with a start image is harmless but pointless. A pipeline that always sends the field works there by accident.
What Sume does
Sume's Grok row only has an image-to-video slot. The schema refinements require exactly one image, supplied as image_url, first_frame_url or a single reference image, and they reject end_image_url, last_frame_url, reference video or audio, bitrate_mode, generate_audio and aspect_ratio. The Video Router capability entry for the row lists no aspect ratios at all.
If your code builds a generic request and adds aspect_ratio for every model, add a branch that omits it for this id. The Video Generation docs say to read each row's supported_aspect_ratios from GET /v1/videos/models before you send the field.
| Where | What happens to aspect_ratio | Output shape comes from |
|---|---|---|
| xAI API | Ignored | The input image |
| Sume grok-imagine-video-1.5 | Rejected by validation | The input image |
Crop sizes that give the ratio you want
Because the picture decides, produce the still at the target ratio. The sizes below are simple pixel arithmetic for a 1080-pixel short side, not Sume requirements, and the model's output resolution is set separately with resolution.
Crop rather than stretch. Cropping a wide product shot to 9:16 removes the sides, so check that the subject sits in the middle third before you animate it.
| Target ratio | Crop to | Typical use |
|---|---|---|
| 16:9 | 1920 x 1080 | Landscape video |
| 9:16 | 1080 x 1920 | Vertical shorts |
| 1:1 | 1080 x 1080 | Square feed |
| 4:3 | 1440 x 1080 | Presentation |
| 3:4 | 1080 x 1440 | Portrait feed |
If you need a ratio the still cannot give
If you must choose a ratio the picture does not have, the Grok row is the wrong tool on Sume. Seedance 2.5 accepts 21:9, 16:9, 4:3, 1:1, 3:4 and 9:16 in its capability entry, Wan 3.0 accepts 16:9, 4:3, 1:1, 3:4 and 9:16, and Gemini Omni Flash 1.1 accepts 16:9 and 9:16. None of the Sume rows lists 4:5, which another post in this series covers.
Cost is the trade. The Grok row bills a flat $0.0125 per second, while a 5-second Wan 3.0 clip at 720p bills $0.625. A cheap loop with a pre-cropped still is usually the better deal when the framing is under your control.
- Prepare the still at the final ratio.
- Omit
aspect_ratioforgrok-imagine-video-1.5. - Use
resolutionfor 480p, 720p or 1080p.
Where the error shows up in real pipelines
The failure usually appears when a team reuses one request builder for several models. A builder written against Seedance or Wan adds aspect_ratio for every call, because those rows accept it. When the same builder targets the Grok row, validation rejects the request before any money is reserved, so the cost of the mistake is a failed call, not a bill.
Put the rule in data rather than in an if-statement: keep a per-model list of allowed fields, seeded from GET /v1/videos/models, and drop anything not on it. That also protects you from size and seed, which Sume rejects for every video model.
Sources
Related posts
More in Developers
- Grok Imagine Lite's 10 requests per second vs Sume plan concurrency
xAI lists a 10 requests per second limit and Batch API for Grok Imagine 1.5 Lite. On Sume, a clip batch is bounded by plan concurrency and queue capacity.
- How many Format runs per minute can my Sume plan start?
Sume limits writes per minute by plan, from 120 on Free to 1200 on Scale, with reads at 40 times that. Read the rate-limit headers and back off on 429.
- HyperFrames check via the Sume API: caption collisions pre-render
Send check with caption_zone to POST /v1/hyperframes-previews and get findings, contrast and overlap reports. A failing check is still a completed job.
- image_not_fetchable on a Sume image edit: reference URL checklist
A Sume image edit failed with image_not_fetchable or input_media_unreachable. What the docs say the error means and a checklist for the reference URL.
Written by Sume