Skip to content

Jobs API (REST) ​

Create and schedule work using a deployed job package. See Job Plugins for custom implementations and Provided Job Plugins for connector configuration.

Endpoints ​

MethodPathPurposeRights
GET/jobList jobsRead or Admin
POST/jobCreate a jobWrite or Admin
PUT/jobUpdate a jobWrite or Admin
GET/job/{id}Read a job by reference ULIDRead or Admin
DELETE/job/{id}Undeploy a job by reference ULIDWrite or Admin
POST/job/stateRead scheduler statesRead or Admin
DELETE/job/continuation/{id}/{jobId}Remove a continuation; reference ULID plus scheduler GUIDWrite or Admin

Create a background job ​

Replace packageId with an installed job package's ULID. This example runs after 30 minutes:

json
{
  "name": "Example Background Job",
  "packageId": "01J00000000000000000000000",
  "jobType": "Background",
  "priority": "Medium",
  "configuration": null,
  "configurationLanguage": null,
  "timeZone": "Etc/UTC",
  "misfireHandling": "Relaxed",
  "backgroundJob": {
    "durationType": "AfterSpecificPeriod",
    "periodInDays": 0,
    "periodInHours": 0,
    "periodInMinutes": 30,
    "continuations": [],
    "removedContinuations": []
  }
}

Download the background request.

The request explicitly supplies priority, timeZone, and misfireHandling. For a job without configuration, send both configuration and configurationLanguage as null. For provided connectors, set configurationLanguage to Toml and put the completed TOML text in the configuration JSON string. JSON-encode that string with your client serializer.

Create a recurring job ​

This example uses the built-in daily schedule in UTC:

json
{
  "name": "Example Recurring Job",
  "packageId": "01J00000000000000000000000",
  "jobType": "Recurring",
  "priority": "Medium",
  "configuration": null,
  "configurationLanguage": null,
  "timeZone": "Etc/UTC",
  "misfireHandling": "Relaxed",
  "recurringJob": {
    "cronType": "Day",
    "cronExpression": null
  }
}

Download the recurring request.

Built-in cronType values are Minute, Hour, Day, Week, Month, and Year. Keep cronExpression null for these schedules. The current request validator rejects non-null custom cron expressions; use a built-in schedule until your deployment supports custom expressions.

Submit either request with POST /job, Content-Type: application/json, and the authentication headers.

Responses and job state ​

Successful creation returns HTTP 200 with { "status": true, "id": "..." }. The returned id is the job reference ULID. Job creation does not return a task identifier. A duplicate name can return 409, request validation returns 400, and a scheduling failure returns 500.

Job details expose the reference ID and scheduler IDs. Use scheduler GUIDs in the jobIds array sent to POST /job/state. The response maps scheduler IDs to states such as Scheduled, Enqueued, Processing, Succeeded, Failed, Deleted, and Awaiting. These scheduler states differ from the Tasks API lifecycle.

Next: Stopwords API