v1 API
VideoCurrent API
Use a native asynchronous task contract for all four MiniMax H3 generation modes. The API and website share the same account credits and private media. Download the OpenAPI schema.
Authentication
Create an API key in Account. Send it as a Bearer token. The full key is shown once and stored as a hash.
Authorization: Bearer vc_YOUR_KEYUpload an asset
POST /v1/assets accepts image metadata and returns a short-lived signed PUT URL. Upload the JPEG, PNG, or WebP directly to that URL, then call POST /v1/assets/{id}/complete. The confirmed asset ID can be used as a first or last frame.
Create a video
POST /v1/videos requires a unique Idempotency-Key. It returns HTTP 202 with a task ID, status, and locked credit price.
cURL
curl https://api.videocurrent.com/v1/videos \
-H "Authorization: Bearer vc_YOUR_KEY" \
-H "Idempotency-Key: campaign-shot-12" \
-H "Content-Type: application/json" \
-d '{"mode":"text_to_video","prompt":"A precise dolly shot through mist"}'JavaScript
const response = await fetch("https://api.videocurrent.com/v1/videos", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.VIDEOCURRENT_API_KEY}`,
"Idempotency-Key": crypto.randomUUID(),
"Content-Type": "application/json"
},
body: JSON.stringify({ mode: "text_to_video", prompt: "A precise dolly shot through mist" })
});
const video = await response.json();Python
import os, uuid, requests
response = requests.post(
"https://api.videocurrent.com/v1/videos",
headers={
"Authorization": f"Bearer {os.environ['VIDEOCURRENT_API_KEY']}",
"Idempotency-Key": str(uuid.uuid4()),
},
json={"mode": "text_to_video", "prompt": "A precise dolly shot through mist"},
)
video = response.json()| Mode | Required fields |
|---|---|
text_to_video | prompt |
first_frame | prompt, first_frame_asset_id |
last_frame | prompt, last_frame_asset_id |
first_last_frame | prompt, both asset IDs |
Task states
queued → running → retrying or reconciling → finalizing → completed / failed.
Use GET /v1/videos/{id} to retrieve current state and a short-lived result URL.
Webhooks
Create and revoke endpoints with POST /v1/webhooks and DELETE /v1/webhooks/{id}. The signing secret is shown once. Verify X-VideoCurrent-Signature against timestamp.raw_body before parsing JSON. Event types are video.completed, video.failed, and video.canceled.
Errors
Every error returns a stable code, an English message, and a request_id for support.
{"code":"insufficient_credits","message":"Add credits to create this video.","request_id":"..."}