NinjaChat
ModelsAPIPricingToolsBlog
Sign inDashboard→
ModelsAPIPricingToolsBlog
Dashboard →
  1. Home›
  2. API models›
  3. Runway Gen-4.5

Runway Gen-4.5

Runway/
Reference images
Get an API key

Runway's Gen-4.5 text- and image-to-video model.

Modalities
textimage→video
Price
$1.2/video
Providers
Live
PlaygroundProvidersAPIRecipesPricingRequest logs

Playground

Preparing playground

Providers

API

POST/api/v1/videosasync jobpoll · GET /api/v1/videos/{id}
runway-gen4.5
# 1 · start the render
curl https://www.ninjachat.ai/api/v1/videos \
  -H "Authorization: Bearer $NINJACHAT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "model": "runway-gen4.5", "prompt": "a paper boat drifting down a neon rain stream", "duration": 8, "aspect_ratio": "16:9" }'

# 2 · poll until it is ready
curl "https://www.ninjachat.ai/api/v1/videos/JOB_ID" \
  -H "Authorization: Bearer $NINJACHAT_API_KEY"
promptmodeldurationaspect_ratioimage_urlreference_imagesreference_videoreference_audiowatermark

Recipes for Runway Gen-4.5

Each request below is generated from what Runway Gen-4.5 serves on NinjaChat today — the same capabilities and parameters that GET /models reports — so it runs as written with your key.

Submit and poll

Rendering takes minutes, so the API returns a job id and you poll it until the file is ready.

runway-gen4.5· submit and poll
# export NINJACHAT_API_KEY="nj_sk_..."   (Developers → Keys)
curl https://www.ninjachat.ai/api/v1/videos \
  -H "Authorization: Bearer $NINJACHAT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "runway-gen4.5",
    "prompt": "a paper boat drifting down a neon rain stream, slow dolly-in",
    "duration": 5,
    "aspect_ratio": "16:9"
  }'
# → { "id": "JOB_ID", "status": "processing" }

curl https://www.ninjachat.ai/api/v1/videos/JOB_ID \
  -H "Authorization: Bearer $NINJACHAT_API_KEY"
# → { "id": "JOB_ID", "status": "completed", "video_url": "https://..." }
  • POST /videos charges the flat per-video price up front and returns a job. GET /videos/{id} reports processing, then completed with video_url, or failed — a failed render is refunded automatically.
  • duration is in seconds; this model accepts 4–10 seconds. aspect_ratio is 16:9 or 9:16.

Animate a still image

Start from a photo or a generated frame and let the prompt describe the motion.

runway-gen4.5· animate a still image
# export NINJACHAT_API_KEY="nj_sk_..."   (Developers → Keys)
curl https://www.ninjachat.ai/api/v1/videos \
  -H "Authorization: Bearer $NINJACHAT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "runway-gen4.5",
    "prompt": "the camera pulls back slowly as steam rises from the cup",
    "image_url": "https://example.com/espresso.jpg",
    "duration": 5,
    "aspect_ratio": "16:9"
  }'
  • image_url becomes the first frame. Write the prompt as motion and camera direction — the image already fixes subject and composition.
  • The URL must be publicly reachable; a first frame generated with POST /images/generations can be passed straight through.

Get a webhook instead of polling

Register an HTTPS endpoint once and receive a signed event when each render finishes or fails.

runway-gen4.5· get a webhook instead of polling
# export NINJACHAT_API_KEY="nj_sk_..."   (Developers → Keys)
curl https://www.ninjachat.ai/api/v1/webhooks \
  -H "Authorization: Bearer $NINJACHAT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "url": "https://example.com/hooks/ninjachat", "events": ["video.completed", "video.failed"] }'
# → { "id": "...", "secret": "whsec_..." }   (the secret is shown once)

curl https://www.ninjachat.ai/api/v1/videos \
  -H "Authorization: Bearer $NINJACHAT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "model": "runway-gen4.5", "prompt": "a paper boat drifting down a neon rain stream", "duration": 5 }'
# your endpoint receives POST { "type": "video.completed", "data": { "id": "...", "video_url": "..." } }
  • The signature is a hex HMAC-SHA256 of {timestamp}.{rawBody} with the endpoint's secret, sent as X-Ninja-Signature next to X-Ninja-Timestamp. Verify against the raw request body, not a re-serialized copy.
  • Deliveries retry up to 6 times, so make the handler idempotent on the job id. POST /webhooks/test sends one synthetic event to check the wiring before a real render.
  • You can also register the endpoint in the console under Developers → Keys → Webhooks; the same secret rule applies.

Pricing

Per video
$1.2/video

More from Runway

Model
ProvidersContextLatencyUptime30d volumePrice · in / out
Runway Gen-4 Image Turbo
runway-gen4-image-turbo
$0.02/image
Grok Imagine Video
grok-imagine-video
$0.75/video
Grok Imagine Video 1.5
grok-imagine-video-1.5
$1.2/video
Kling 2.6 Pro
kling-video
$1.4/video
Seedance 1 Lite
seedance-lite
$0.432/video
Seedance 1 Pro
seedance-pro
$1.8/video
NinjaChat

Every AI. One app.

Download on the App Store

Product

  • Dashboard
  • ninja for iMessage
  • Pricing
  • Free AI Tools
  • Affiliate Program
  • iOS App

Developers

  • API
  • API Models
  • MCP / Agents
  • API Docs

Models

  • Model Council
  • Seed 1.8
  • Gemini 2.5 Flash
  • Gemini 2.5 Pro
  • Gemini 3 Flash Preview
  • View All Models

Company

  • Blog
  • Uncensored AI
  • Community
  • Careers
  • Support
  • Privacy Policy
  • Terms of Service

Copyright © 2026 NinjaChat AI. Product of Bloon All Rights Reserved.