Prepare asset
Idempotent — same opts return the same asset_id. First call enqueues generation.
POST
/api/v1/prepare
Authentication
API Key (cookie: better-auth.session_token)
Request Body
application/jsonproject_id
string
REQUIRED
src
string (uri)
REQUIRED
motion
string
Enum:
subtle, medium, kineticdur_seconds
integer
mode
string
Enum:
loop, animate-in, animate-on-hoverprompt_override
string
seed
integer
Responses
200
Asset state
application/jsonasset_id
string
REQUIRED
status
string
REQUIRED
Enum:
pending, ready, failedeta_seconds
number
mp4_url
string
poster_url
string
curl -X POST 'https://motioness.com/api/v1/prepare' \ -H 'Content-Type: application/json' \ -d '{ "project_id": "string", "src": "https://example.com", "motion": "subtle", "dur_seconds": 2, "mode": "loop", "prompt_override": "string", "seed": 0}'
const response = await fetch('https://motioness.com/api/v1/prepare', { method: 'POST', headers: { "Content-Type": "application/json" }, body: JSON.stringify({ "project_id": "string", "src": "https://example.com", "motion": "subtle", "dur_seconds": 2, "mode": "loop", "prompt_override": "string", "seed": 0 })});const data = await response.json();console.log(data);
import requestsresponse = requests.post('https://motioness.com/api/v1/prepare', json={ "project_id": "string", "src": "https://example.com", "motion": "subtle", "dur_seconds": 2, "mode": "loop", "prompt_override": "string", "seed": 0})print(response.json())
200
Response
{ "asset_id": "<string>", "status": "pending", "eta_seconds": 123, "mp4_url": "<string>", "poster_url": "<string>"}
API Playground
Try this endpoint
POST
/api/v1/prepare