Skip to content

Polling Jobs

POST /sessions returns immediately with a job_id. Poll the status endpoint until the job reaches a terminal state.

Status endpoint

http
GET https://api.motion.so/api/motion/sessions/{job_id}
Authorization: Bearer motion_your_api_key

Status values

StatusMeaning
queuedThe job was accepted and is waiting to start.
createdThe backing Mosaic Motion session exists and is preparing to run.
runningThe job is actively generating.
awaiting_user_inputThe job is waiting on user input. API initiated runs auto approve planning stages where possible.
completedThe job finished successfully.
failedThe job failed. Check the error field.

Polling interval

Start with a 2 to 5 second interval. Increase the interval for long-running jobs.

js
async function waitForMotionJob(jobId, apiKey) {
  while (true) {
    const response = await fetch(
      `https://api.motion.so/api/motion/sessions/${jobId}`,
      {
        headers: {
          Authorization: `Bearer ${apiKey}`,
        },
      },
    )
    const job = await response.json()
    if (job.status === 'completed' || job.status === 'failed') {
      return job
    }
    await new Promise((resolve) => setTimeout(resolve, 3000))
  }
}

Mosaic Motion documentation.