One Click Videos · Developers

Your first video request
in about 60 seconds.

With an API key ready, submit a brief and get a job ID. Video rendering continues asynchronously.

1. Prepare your account

Use an active paid subscription, enough credits, and an API key from the Developer page. Set JEMSU_API_KEY in your server or shell environment using your secret manager. Do not put it in source code or a public browser.

2. Check your credits

curl --fail-with-body https://app.jemsu.ai/api/v1/credits \
  -H "Authorization: Bearer $JEMSU_API_KEY"

3. Submit the video

This example requests a silent, 10-second portrait video. Running it spends credits. Send it once.

curl --fail-with-body https://app.jemsu.ai/api/v1/videos \
  -H "Authorization: Bearer $JEMSU_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "video_idea": "A small paper boat drifts across a sunlit pond. Gentle ripples, a low camera angle and a peaceful ending.",
  "video_length_sec": 10,
  "speech": "no",
  "music": "no",
  "aspectratio": "9:16"
}'

A successful response contains ok, jobId, conversationId, creditsReserved and costSource. Optional warnings describe mapped or ignored fields. Save the job ID before continuing.

4. Check the result

Set JEMSU_JOB_ID to the returned job ID and run:

curl --fail-with-body "https://app.jemsu.ai/api/v1/videos/$JEMSU_JOB_ID" \
  -H "Authorization: Bearer $JEMSU_API_KEY"

Check periodically. When status is completed, use videoUrl. When it is failed, inspect error.code and error.message. Other statuses mean the job has not reached one of those outcomes yet.

The 60-second target is for setup and request submission after credentials are ready. It is not a render-time guarantee. If the create request times out, check recent jobs before resubmitting; another POST can spend credits again.

JavaScript with polling → · Python with polling →