VIGGLE_API_KEY before using these examples. Replace all sample IDs with the complete IDs returned by your account.
Credits — GET /v1/credits
Create Character — POST /v1/characters
-F "type=vsplat" to also extract a 3D vsplat (all keeps the render too):
cURL
List, get, delete, and export Characters
GET /v1/characters; for deletion, change the request method to DELETE. See Characters for every request and response field.
Create Motion (from Video) — POST /v1/motions
-F "type=glb" to also extract a 3D animation.
Create Motion (from Text) — POST /v1/motions
The endpoint is the same, but text-to-motion uses application/json instead of multipart form data.
Import Motion — POST /v1/motions/import
List, get, delete, and export Motions
Create, list, get, and download a Render
GET /v1/videos / GET /v1/videos/{video_id} — see List Videos and Get Video. The equivalent GET /v1/renders and GET /v1/renders/{render_id} are retired (405).
There is no cancel endpoint. See Renders for parameter combinations and response fields.
Create a Render from a prepared draft
kind: "upload", PUT the bytes to each uploads[].url from the prepare response before calling POST /v1/renders. See Prepare Render for the full flow.
Watch a Render over Server-Sent Events
Generate a Video — POST /v1/videos
Text-to-video, first-frame-to-video, and first+last-frame-to-video all share this endpoint — which mode runs depends on which frame fields you send.
200 with the same {id, status, progress, created_at} acceptance shape. See Generate Video (from Text), Generate Video (from First Frame and/or Text), and Generate Video (from First-Last Frames and/or Text) for the full field reference and common validation errors.
Endpoint-by-endpoint request examples
The following compact examples show the exact HTTP method, path, and request shape for every endpoint. In the Go snippets,client is an http.Client; in JavaScript, apiKey is your API key; in Python, headers is {"Authorization": "Bearer ..."}.
GET /v1/characters
GET /v1/characters/{character_id}
DELETE /v1/characters/{character_id}
GET /v1/characters/{character_id}/export
GET /v1/motions
GET /v1/motions/{motion_id}
DELETE /v1/motions/{motion_id}
GET /v1/motions/{motion_id}/export
GET /v1/videos
Replaces the retired GET /v1/renders (now 405 Method Not Allowed). Lists Renders and H3 text-to-video generations merged into one feed.
GET /v1/videos/{video_id}
Replaces the retired GET /v1/renders/{render_id} (now 405 Method Not Allowed). Accepts a render_ or vid_ prefixed ID.

