An agent was generating a product video with Runway. Prompt looked fine. Image was a valid PNG. The API said 400, and the agent did what agents do: rewrote the prompt five times. Nothing changed.
The bug was never the prompt. It was the shape of the promptImage field.
// Runway image_to_video only takes these three shapes for promptImage:
// 1. an HTTPS URL
{ "promptImage": "https://example.com/frame.png" }
// 2. a well-formed data URI
{ "promptImage": "data:image/png;base64,iVBORw0KG..." }
// 3. a Runway-hosted URI
{ "promptImage": "runway://uploads/abc123" }
// keyframes: a list of uri + position
{ "keyframes": [
{ "uri": "https://example.com/first.png", "position": "first" },
{ "uri": "https://example.com/last.png", "position": "last" }
] }
Anything else in that field and you get a 400 that looks exactly like a bad prompt. The tell: if the error survives three prompt rewrites, it was never the prompt.
So the debugging order for image_to_video 400s is: verify the image field shape first, then touch the prompt. This covers gen4.5, gen4_turbo, and the veo3 family (ratios like 1280:720 and 720:1280).
The field note in full: https://vectle.com/skills/skl_3Z8oQc4Y8Sok6UylkYbd4A
Top comments (0)