Skip to content

Motion API

Base URL:

txt
https://api.motion.so/api/motion

Create a Mosaic Motion job

http
POST /sessions
Authorization: Bearer motion_your_api_key
Content-Type: application/json

Creates a Mosaic Motion job from a prompt. The response returns a job_id immediately.

API initiated runs:

  • Are owned by the user who owns the API key.
  • Auto approve planning stages where possible.
  • Require available Mosaic Motion credits on the API key owner's account.
  • Can include one optional YouTube style reference.
  • Can include up to 10 public signed URL attachments.

Credits, purchases, and auto top-ups are managed in the Motion frontend at motion.so. They are not managed through this API.

Request body

FieldTypeRequiredDescription
promptstringYesGeneration prompt. 1 to 12000 characters.
style_reference_urlstringNoYouTube URL to use as a style reference.
attachmentsarrayNoUp to 10 public signed URL attachments.

Credit requirements

Creating and running a job requires available Mosaic Motion credits. The API key owner is the billing and ownership subject for API initiated runs.

If credits are insufficient, the API can return 402 with an insufficient_credits error. Purchase credits or configure auto top-ups from motion.so, then retry when credits are available.

Attachment object

FieldTypeRequiredDescription
urlstringYesPublicly accessible signed URL.
namestringNoLabel for the attachment.
typestringNoimage, video, audio, or file.
content_typestringNoMIME type hint.

Example request

json
{
  "prompt": "Create a 15 second product launch video for a new AI calendar app.",
  "style_reference_url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
  "attachments": [
    {
      "url": "https://storage.example.com/signed/hero-image.png",
      "name": "Hero image",
      "type": "image",
      "content_type": "image/png"
    }
  ]
}

Example response

json
{
  "job_id": "405d47cf-f72b-4852-b570-0de2446dbba1",
  "status": "queued",
  "status_url": "/api/motion/sessions/405d47cf-f72b-4852-b570-0de2446dbba1"
}

Create a followup

http
POST /sessions/{job_id}/followups
Authorization: Bearer motion_your_api_key
Content-Type: application/json

Creates a followup run on an existing completed Mosaic Motion job. Followups use the same request body as POST /sessions.

Followups are only allowed when the current job status is completed. If the job is still queued, created, running, awaiting_user_input, or failed, the API returns 409.

Example request

json
{
  "prompt": "Make the pacing faster and add a stronger call to action.",
  "style_reference_url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
}

Example response

json
{
  "job_id": "405d47cf-f72b-4852-b570-0de2446dbba1",
  "status": "queued",
  "status_url": "/api/motion/sessions/405d47cf-f72b-4852-b570-0de2446dbba1"
}

Get job status

http
GET /sessions/{job_id}
Authorization: Bearer motion_your_api_key

Returns status for a job owned by the API key user.

Path parameters

ParameterTypeDescription
job_idstringJob ID returned by POST /sessions.

Example response

json
{
  "job_id": "405d47cf-f72b-4852-b570-0de2446dbba1",
  "status": "running",
  "created_at": "2026-04-28T23:01:04.198Z",
  "updated_at": "2026-04-28T23:01:23.695Z",
  "completed_at": null,
  "error": null,
  "pending_user_input": false
}

Response fields

FieldTypeDescription
job_idstringMosaic Motion job ID.
statusstringCurrent job status.
created_atstringISO timestamp for creation.
updated_atstringISO timestamp for last update.
completed_atstring or nullISO timestamp when the job completed.
errorstring or nullFailure detail when status is failed.
pending_user_inputbooleanWhether the job is waiting on user input.

Mosaic Motion documentation.