SmoothDeploy Docs
API Reference

Schedules

Read and trigger schedules with an API key

Schedules run a test or a group of tests on a cron or one-time basis. API keys can read schedules and control their execution state. Creating, editing, and deleting schedules requires a console session.

GET actions take their inputs as query parameters; POST actions take a JSON body. All actions require x-project-id. The branch is resolved from x-branch-id or the project default branch. Each action lists its scopes. schedules.trigger, schedules.enable and schedules.disable require an active subscription and otherwise return 403 { "error": "LICENSE_REQUIRED" }.

See Authentication and Scopes.


List schedules

GET /v1/actions/schedules.list

Scope: schedules:read

Returns schedules for the active project, with pagination.

Query parameters

ParameterTypeDefaultNotes
limitinteger20Results per page. Minimum 1, maximum 100.
pageinteger0Zero-based page index.
enabledboolean—Filter by enabled state.
namestring—Substring filter on schedule name.

Response

{
  "data": [
    {
      "id": "sch-uuid",
      "name": "Nightly regression",
      "scheduleType": "directory",
      "scheduleMode": "recurring",
      "targetId": "test-uuid",
      "tagId": null,
      "cronExpression": "0 2 * * *",
      "enabled": true,
      "branchId": "branch-uuid",
      "projectId": "proj-uuid",
      "organizationId": "org-uuid",
      "createdAt": "2026-09-01T00:00:00.000Z",
      "updatedAt": "2026-09-15T08:30:00.000Z"
    }
  ],
  "pagination": {
    "page": 0,
    "limit": 20,
    "total": 3,
    "totalPages": 1,
    "hasMore": false
  }
}

Get a schedule

GET /v1/actions/schedules.get

Scope: schedules:read

Returns a single schedule by ID.

Query parameters

ParameterTypeRequiredNotes
scheduleIdUUIDyesThe schedule to read.

Response

{
  "data": {
    "id": "sch-uuid",
    "name": "Nightly regression",
    "scheduleType": "directory",
    "scheduleMode": "recurring",
    "targetId": "test-uuid",
    "tagId": null,
    "cronExpression": "0 2 * * *",
    "enabled": true,
    "branchId": "branch-uuid",
    "projectId": "proj-uuid",
    "organizationId": "org-uuid"
  }
}

Status codes

StatusMeaning
200Schedule found
404Schedule not found in this project

Trigger a schedule

POST /v1/actions/schedules.trigger

Scope: schedules:run and schedules:read

Immediately executes the schedule as if it had fired on its cron, regardless of the schedule's enabled state.

Body

FieldRequiredNotes
scheduleIdyesUUID of the schedule.

Response

{
  "data": { "message": "Schedule triggered successfully" }
}

Returns 409 with the reason when the run is skipped, and 404 when the schedule is not in this project.

Example

curl -s -X POST "https://api.smoothdeploy.com/v1/actions/schedules.trigger" \
  -H "x-api-key: $SMOOTHDEPLOY_API_KEY" \
  -H "x-project-id: $PROJECT_ID" \
  -H "Content-Type: application/json" \
  -d "{\"scheduleId\":\"$SCHEDULE_ID\"}"

Enable a schedule

POST /v1/actions/schedules.enable

Scope: schedules:resume and schedules:read

Re-enables a disabled schedule so it fires on its next cron tick. Returns 400 for one-time schedules whose execution time has already passed.

Body

FieldRequiredNotes
scheduleIdyesUUID of the schedule.

Response

{
  "data": {
    "id": "sch-uuid",
    "enabled": true
  }
}

Disable a schedule

POST /v1/actions/schedules.disable

Scope: schedules:pause and schedules:read

Pauses a schedule so it no longer fires automatically. It can still be triggered manually.

Body

FieldRequiredNotes
scheduleIdyesUUID of the schedule.

Response

{
  "data": {
    "id": "sch-uuid",
    "enabled": false
  }
}