An image-to-video API turns a starting image into a moving clip using model-specific motion instructions. On Raywake, inspect the chosen model's schema, quote the complete input, submit an approved generation and poll the job. The API and studio share the same USD balance.
This workflow is for developers adding animation to an app. For a creative walkthrough, read turn an image into a video. The instructions below describe the current Raywake contract; they do not promise a particular creative result.
Start from an approved image
Choose a still whose subject, composition and text you already accept. Animation is not a reliable way to repair a distorted product label or an unsuitable crop. Decide on one primary subject movement and one camera movement before selecting the endpoint.
A useful brief is: “Keep the bottle centered and upright. Move the camera slowly forward while soft reflections move across the glass.” It is a suggested prompt, not a measured result. Check identity, typography and framing throughout the eventual clip.
Inspect the model and prepare the input
Use GET /v1/models to discover current model IDs and GET /v1/models/{model_id} to read required fields and supported options. Different models use different image field names, durations and aspect-ratio controls; do not guess them from the model family name. Model API reference
The Kling 3 Pro guide and WAN 3.0 Prime guide describe available operations. The WAN page includes multiple modes; choose the actual image-to-video execution ID and schema rather than passing an image to a text-only operation.
Put the complete, schema-validated request in request.json, with top-level model and input. Keep uploaded media available for the job and follow the media input requirements. Store your API key on the server.
Quote before starting a paid job
This call reads the cost for request.json; it does not submit generation:
curl --fail-with-body https://api.raywake.com/v1/quotes \
-H "Authorization: Bearer $RAYWAKE_API_KEY" \
-H "Content-Type: application/json" \
--data-binary @request.json
Check the returned quote_id, price_usd and expires_at. Show that amount to the person approving the run. For usage-based billing, explain that it is a maximum reservation and settlement can release the difference. If the input changes or the quote expires, obtain a new quote before submitting. Quote reference
Submit once, then follow the job
After approval, save a unique idempotency key for this intended job. Add the returned quote_id to the unchanged model/input object and save it as approved-request.json. The following call starts a paid generation:
curl --fail-with-body https://api.raywake.com/v1/generate \
-H "Authorization: Bearer $RAYWAKE_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $SAVED_JOB_KEY" \
--data-binary @approved-request.json
Persist the returned job_id. Read it without creating another generation:
curl --fail-with-body "https://api.raywake.com/v1/jobs/$JOB_ID" \
-H "Authorization: Bearer $RAYWAKE_API_KEY"
Poll with a bounded interval and handle rate limits. If submission times out, recover with the saved key and identical body. If a job requires review or reconciliation, keep following it instead of starting a replacement. Job states
Watch a real output
The dedicated watch page records this example. It demonstrates one outcome and is not a promise of typical results for another input. Review the entire output, not just its poster frame, before accepting a run.
Common questions
How much does image-to-video cost?
There is no single price for every model and setting. Use the current input-specific quote, then track final charges separately from held funds. Cost guide
Does a timeout release the funds?
A timeout alone does not prove failure. A failed Raywake job releases its reservation; an unresolved submission remains held while its outcome is established.
How long can I keep the output link?
Raywake stores media for 30 days. Signed links expire separately; read the owned job again to refresh a link while the file remains stored. Download accepted clips to storage you control. Storage reference
Read the full API quickstart