sandpi/ platform

Automation

Scheduled Runs

Set up one-time or recurring tasks and inspect occurrences.

On this page

Choose a target

Create an Environment and Session with your own native model connection first. A Platform schedule selects that Session and a model ID served by your provider or gateway, then submits an ordinary Run when due. Provider availability, runtime credit, Project budgets, serial execution and checkpoints apply to scheduled work too.

Create a recurring schedule

Create an Environment schedule

POST /v1/environments/{environmentId}/schedules

Schedules submit ordinary Platform Runs into an existing Session using the selected model. Runs retain normal credit, budget, queue, recovery and checkpoint behavior. Missed cron intervals coalesce to the latest occurrence; an overlapping occurrence is skipped. Admission failures are recorded without retrying side effects.

Authentication: Platform API bearer token

Parameters and headers
FieldType and constraintsRequiredDescription
path: environmentIdstringYesEnvironment identifier. It must belong to the caller’s account or Project.

Request example

sh
curl -X POST \
    "https://api.sandpi.ai/v1/environments/$ENVIRONMENT_ID/schedules" \
    -H "Authorization: Bearer $SANDPI_API_TOKEN" \
    -H "Content-Type: application/json" \
    -d '{
  "name": "Daily review",
  "prompt": "Review recent changes and summarize findings.",
  "timing": {
    "kind": "cron",
    "expression": "0 9 * * *",
    "timeZone": "Asia/Shanghai"
  },
  "target": {
    "kind": "platform",
    "sessionId": "YOUR_SESSION_ID",
    "model": "YOUR_SUPPORTED_MODEL_ID"
  },
  "enabled": true
}'
Request body · required application/json

Saved timed task, target, due-time policy and enabled state.

FieldType and constraintsRequiredDescription
namestring · min length 1; max length 80YesHuman-readable name for this resource.
promptstring · min length 1; max length 100000YesSaved instructions used for each scheduled Run.
timingone of the variants belowYesOne future Unix timestamp or a recurring five-field cron expression with an IANA time zone.
timingobject · extra fields rejectedYeskind = "once"—
timing.kindstring · values: "once"Yeskind = "once"Selects the resource or operation variant described by the allowed values.
timing.runAtnumber · > 0Yeskind = "once"Unix timestamp in seconds.
timingobject · extra fields rejectedYeskind = "cron"—
timing.kindstring · values: "cron"Yeskind = "cron"Selects the resource or operation variant described by the allowed values.
timing.expressionstring · min length 1; max length 200Yeskind = "cron"Five-field cron expression; evaluated in the configured time zone.
timing.timeZonestring · min length 1; max length 100Yeskind = "cron"IANA time zone, such as Asia/Shanghai or UTC.
targetobject · extra fields rejectedYesExisting Platform Session and model used for scheduled execution.
target.kindstring · values: "platform"Yeswithin targetSelects the resource or operation variant described by the allowed values.
target.sessionIdstring · min length 1Yeswithin targetExisting Session identifier within the named Environment.
target.modelstring · min length 1Yeswithin targetExact native model ID served by your provider or gateway.
enabledbooleanYesWhether this configuration is enabled for future use.
Example
Example
{
  "name": "Daily review",
  "prompt": "Review recent changes and summarize findings.",
  "timing": {
    "kind": "cron",
    "expression": "0 9 * * *",
    "timeZone": "Asia/Shanghai"
  },
  "target": {
    "kind": "platform",
    "sessionId": "YOUR_SESSION_ID",
    "model": "YOUR_SUPPORTED_MODEL_ID"
  },
  "enabled": true
}

Responses

201 Success
Response body application/json
FieldType and constraintsRequiredDescription
dataobject · extra fields rejectedYesSchedule definition, next due time and latest occurrence outcome.
data.namestring · min length 1; max length 80Yeswithin dataHuman-readable name for this resource.
data.promptstring · min length 1; max length 100000Yeswithin dataSaved instructions used for each scheduled Run.
data.timingone of the variants belowYeswithin dataOne future Unix timestamp or a recurring five-field cron expression with an IANA time zone.
data.timingobject · extra fields rejectedYeskind = "once"—
data.timing.kindstring · values: "once"Yeskind = "once"Selects the resource or operation variant described by the allowed values.
data.timing.runAtnumber · > 0Yeskind = "once"Unix timestamp in seconds.
data.timingobject · extra fields rejectedYeskind = "cron"—
data.timing.kindstring · values: "cron"Yeskind = "cron"Selects the resource or operation variant described by the allowed values.
data.timing.expressionstring · min length 1; max length 200Yeskind = "cron"Five-field cron expression; evaluated in the configured time zone.
data.timing.timeZonestring · min length 1; max length 100Yeskind = "cron"IANA time zone, such as Asia/Shanghai or UTC.
data.targetobject · extra fields rejectedYeswithin dataExisting Platform Session and model used for scheduled execution.
data.target.kindstring · values: "platform"Yeswithin dataSelects the resource or operation variant described by the allowed values.
data.target.sessionIdstring · min length 1Yeswithin dataExisting Session identifier within the named Environment.
data.target.modelstring · min length 1Yeswithin dataExact native model ID served by your provider or gateway.
data.enabledbooleanYeswithin dataWhether this configuration is enabled for future use.
data.idstringYeswithin dataResource identifier used to read or manage this resource.
data.environmentIdstringYeswithin dataEnvironment identifier. It must belong to the caller’s account or Project.
data.nextRunAtnumberNowithin dataNext due time as a Unix timestamp in seconds; absent when no occurrence is scheduled.
data.lastScheduledFornumberNowithin dataDue time of the most recent recorded occurrence, in Unix seconds.
data.lastRunStatusstring · values: "queued" | "running" | "succeeded" | "failed" | "skipped"Nowithin dataOutcome of the most recent scheduled occurrence.
data.lastErrorstringNowithin dataDiagnostic message for the most recent admission or execution failure.
data.revisionintegerYeswithin dataConfiguration revision. MCP updates must use the currently observed revision.
data.createdAtnumberYeswithin dataCreation time as a Unix timestamp in seconds.
data.updatedAtnumberYeswithin dataLast update time as a Unix timestamp in seconds.
Example
Example
{
  "data": {
    "name": "example",
    "prompt": "example",
    "timing": {
      "kind": "once",
      "runAt": 0
    },
    "target": {
      "kind": "platform",
      "sessionId": "example",
      "model": "example"
    },
    "enabled": false,
    "id": "",
    "environmentId": "",
    "revision": 0,
    "createdAt": 0,
    "updatedAt": 0
  }
}
Error responses
default Sandpi error.
Error body application/json

Standard error envelope containing a stable code, diagnostic message and request identity.

FieldType and constraintsRequiredDescription
errorobject · extra fields rejectedYesStructured failure information. Inspect the stable code and retain the request ID for investigation.
error.codestringYeswithin errorStable error code used to distinguish failures programmatically.
error.messagestringYeswithin errorHuman-readable diagnostic text.
error.requestIdstringYeswithin errorRequest identifier for correlating diagnostics and support investigations.
error.detailsanyNowithin errorOptional structured error context. Its shape is specific to the service failure.
error.loginUrlstringNowithin errorAuthentication URL supplied when a browser login is required.
error.registrationOpenbooleanNowithin errorWhether new account registration is enabled for this deployment.
Example
Example
{
  "error": {
    "code": "platform_balance_insufficient",
    "message": "Top up Platform credits before submitting a Run.",
    "requestId": "req_example"
  }
}

Use a five-field cron expression and an IANA time zone. The example runs at 09:00 in Asia/Shanghai. A time zone makes the intended local clock explicit; inspect nextRunAt after saving, especially for zones with daylight saving changes.

Schedule one task

Choose timing.kind: once with a positive future Unix timestamp in seconds. The schedule API details provides the timing variants. Do not send milliseconds or an ISO string in place of that timestamp.

Observe occurrences

List scheduled occurrences

GET /v1/environments/{environmentId}/schedules/{scheduleId}/runs

Schedules submit ordinary Platform Runs into an existing Session using the selected model. Runs retain normal credit, budget, queue, recovery and checkpoint behavior. Missed cron intervals coalesce to the latest occurrence; an overlapping occurrence is skipped. Admission failures are recorded without retrying side effects.

Authentication: Platform API bearer token

Parameters and headers
FieldType and constraintsRequiredDescription
path: environmentIdstringYesEnvironment identifier. It must belong to the caller’s account or Project.
path: scheduleIdstringYesSchedule identifier within this Environment.

Request example

sh
curl \
    "https://api.sandpi.ai/v1/environments/$ENVIRONMENT_ID/schedules/$SCHEDULE_ID/runs" \
    -H "Authorization: Bearer $SANDPI_API_TOKEN"

No request body.

Responses

200 Success
Response body application/json
FieldType and constraintsRequiredDescription
dataarrayYesSuccessful result wrapped by the API. The child fields describe its content.
data[]object · extra fields rejectedYeseach array itemScheduled occurrence with admission outcome and Run reference when admitted.
data[].idstringYeseach array itemResource identifier used to read or manage this resource.
data[].scheduleIdstringYeseach array itemSchedule identifier within this Environment.
data[].scheduledFornumberYeseach array itemIntended due time of this occurrence as a Unix timestamp in seconds.
data[].statusstring · values: "queued" | "running" | "succeeded" | "failed" | "skipped"Yeseach array itemCurrent resource state; inspect the allowed values and the operation’s lifecycle notes.
data[].targetobject · extra fields rejectedYeseach array itemExisting Platform Session and model used for scheduled execution.
data[].target.kindstring · values: "platform"Yeseach array itemSelects the resource or operation variant described by the allowed values.
data[].target.sessionIdstring · min length 1Yeseach array itemExisting Session identifier within the named Environment.
data[].target.modelstring · min length 1Yeseach array itemExact native model ID served by your provider or gateway.
data[].platformRunIdstringNoeach array itemAdmitted Run identifier; absent if admission failed or the occurrence was skipped.
data[].outputstringNoeach array itemFinal agent output when available. Content retention may erase this field.
data[].errorstringNoeach array itemStructured failure information. Inspect the stable code and retain the request ID for investigation.
data[].startedAtnumberNoeach array itemExecution start time as a Unix timestamp in seconds.
data[].finishedAtnumberNoeach array itemTerminal execution time as a Unix timestamp in seconds.
data[].createdAtnumberYeseach array itemCreation time as a Unix timestamp in seconds.
Example
Example
{
  "data": [
    {
      "id": "",
      "scheduleId": "",
      "scheduledFor": 0,
      "status": "queued",
      "target": {
        "kind": "platform",
        "sessionId": "example",
        "model": "example"
      },
      "createdAt": 0
    }
  ]
}
Error responses
default Sandpi error.
Error body application/json

Standard error envelope containing a stable code, diagnostic message and request identity.

FieldType and constraintsRequiredDescription
errorobject · extra fields rejectedYesStructured failure information. Inspect the stable code and retain the request ID for investigation.
error.codestringYeswithin errorStable error code used to distinguish failures programmatically.
error.messagestringYeswithin errorHuman-readable diagnostic text.
error.requestIdstringYeswithin errorRequest identifier for correlating diagnostics and support investigations.
error.detailsanyNowithin errorOptional structured error context. Its shape is specific to the service failure.
error.loginUrlstringNowithin errorAuthentication URL supplied when a browser login is required.
error.registrationOpenbooleanNowithin errorWhether new account registration is enabled for this deployment.
Example
Example
{
  "error": {
    "code": "platform_balance_insufficient",
    "message": "Top up Platform credits before submitting a Run.",
    "requestId": "req_example"
  }
}

Occurrence history records admission failures and links to admitted Runs. Missed recurring intervals coalesce to the latest due occurrence. If the same schedule’s previous Run is still queued or running, the next occurrence is skipped. This does not promise one Run for every elapsed cron interval.

A database failure rolls back admission and the occurrence together so a worker can retry without creating another Run. A recorded admission failure does not prevent a later recurring occurrence from being eligible.

Change or disable automation

Replace the definition to edit its prompt, timing, target or enabled state. Editing, disabling or deleting a schedule affects future admission. Already admitted Runs keep their original instructions and continue; use the Run stop operation if you also need to stop one.

Update an Environment schedule

PUT /v1/environments/{environmentId}/schedules/{scheduleId}

Schedules submit ordinary Platform Runs into an existing Session using the selected model. Runs retain normal credit, budget, queue, recovery and checkpoint behavior. Missed cron intervals coalesce to the latest occurrence; an overlapping occurrence is skipped. Admission failures are recorded without retrying side effects.

Authentication: Platform API bearer token

Parameters and headers
FieldType and constraintsRequiredDescription
path: environmentIdstringYesEnvironment identifier. It must belong to the caller’s account or Project.
path: scheduleIdstringYesSchedule identifier within this Environment.

Request example

sh
curl -X PUT \
    "https://api.sandpi.ai/v1/environments/$ENVIRONMENT_ID/schedules/$SCHEDULE_ID" \
    -H "Authorization: Bearer $SANDPI_API_TOKEN" \
    -H "Content-Type: application/json" \
    -d '{
  "name": "Daily review",
  "prompt": "Review recent changes and summarize findings.",
  "timing": {
    "kind": "cron",
    "expression": "0 9 * * *",
    "timeZone": "Asia/Shanghai"
  },
  "target": {
    "kind": "platform",
    "sessionId": "YOUR_SESSION_ID",
    "model": "YOUR_SUPPORTED_MODEL_ID"
  },
  "enabled": true
}'
Request body · required application/json

Saved timed task, target, due-time policy and enabled state.

FieldType and constraintsRequiredDescription
namestring · min length 1; max length 80YesHuman-readable name for this resource.
promptstring · min length 1; max length 100000YesSaved instructions used for each scheduled Run.
timingone of the variants belowYesOne future Unix timestamp or a recurring five-field cron expression with an IANA time zone.
timingobject · extra fields rejectedYeskind = "once"—
timing.kindstring · values: "once"Yeskind = "once"Selects the resource or operation variant described by the allowed values.
timing.runAtnumber · > 0Yeskind = "once"Unix timestamp in seconds.
timingobject · extra fields rejectedYeskind = "cron"—
timing.kindstring · values: "cron"Yeskind = "cron"Selects the resource or operation variant described by the allowed values.
timing.expressionstring · min length 1; max length 200Yeskind = "cron"Five-field cron expression; evaluated in the configured time zone.
timing.timeZonestring · min length 1; max length 100Yeskind = "cron"IANA time zone, such as Asia/Shanghai or UTC.
targetobject · extra fields rejectedYesExisting Platform Session and model used for scheduled execution.
target.kindstring · values: "platform"Yeswithin targetSelects the resource or operation variant described by the allowed values.
target.sessionIdstring · min length 1Yeswithin targetExisting Session identifier within the named Environment.
target.modelstring · min length 1Yeswithin targetExact native model ID served by your provider or gateway.
enabledbooleanYesWhether this configuration is enabled for future use.
Example
Example
{
  "name": "Daily review",
  "prompt": "Review recent changes and summarize findings.",
  "timing": {
    "kind": "cron",
    "expression": "0 9 * * *",
    "timeZone": "Asia/Shanghai"
  },
  "target": {
    "kind": "platform",
    "sessionId": "YOUR_SESSION_ID",
    "model": "YOUR_SUPPORTED_MODEL_ID"
  },
  "enabled": true
}

Responses

200 Success
Response body application/json
FieldType and constraintsRequiredDescription
dataobject · extra fields rejectedYesSchedule definition, next due time and latest occurrence outcome.
data.namestring · min length 1; max length 80Yeswithin dataHuman-readable name for this resource.
data.promptstring · min length 1; max length 100000Yeswithin dataSaved instructions used for each scheduled Run.
data.timingone of the variants belowYeswithin dataOne future Unix timestamp or a recurring five-field cron expression with an IANA time zone.
data.timingobject · extra fields rejectedYeskind = "once"—
data.timing.kindstring · values: "once"Yeskind = "once"Selects the resource or operation variant described by the allowed values.
data.timing.runAtnumber · > 0Yeskind = "once"Unix timestamp in seconds.
data.timingobject · extra fields rejectedYeskind = "cron"—
data.timing.kindstring · values: "cron"Yeskind = "cron"Selects the resource or operation variant described by the allowed values.
data.timing.expressionstring · min length 1; max length 200Yeskind = "cron"Five-field cron expression; evaluated in the configured time zone.
data.timing.timeZonestring · min length 1; max length 100Yeskind = "cron"IANA time zone, such as Asia/Shanghai or UTC.
data.targetobject · extra fields rejectedYeswithin dataExisting Platform Session and model used for scheduled execution.
data.target.kindstring · values: "platform"Yeswithin dataSelects the resource or operation variant described by the allowed values.
data.target.sessionIdstring · min length 1Yeswithin dataExisting Session identifier within the named Environment.
data.target.modelstring · min length 1Yeswithin dataExact native model ID served by your provider or gateway.
data.enabledbooleanYeswithin dataWhether this configuration is enabled for future use.
data.idstringYeswithin dataResource identifier used to read or manage this resource.
data.environmentIdstringYeswithin dataEnvironment identifier. It must belong to the caller’s account or Project.
data.nextRunAtnumberNowithin dataNext due time as a Unix timestamp in seconds; absent when no occurrence is scheduled.
data.lastScheduledFornumberNowithin dataDue time of the most recent recorded occurrence, in Unix seconds.
data.lastRunStatusstring · values: "queued" | "running" | "succeeded" | "failed" | "skipped"Nowithin dataOutcome of the most recent scheduled occurrence.
data.lastErrorstringNowithin dataDiagnostic message for the most recent admission or execution failure.
data.revisionintegerYeswithin dataConfiguration revision. MCP updates must use the currently observed revision.
data.createdAtnumberYeswithin dataCreation time as a Unix timestamp in seconds.
data.updatedAtnumberYeswithin dataLast update time as a Unix timestamp in seconds.
Example
Example
{
  "data": {
    "name": "example",
    "prompt": "example",
    "timing": {
      "kind": "once",
      "runAt": 0
    },
    "target": {
      "kind": "platform",
      "sessionId": "example",
      "model": "example"
    },
    "enabled": false,
    "id": "",
    "environmentId": "",
    "revision": 0,
    "createdAt": 0,
    "updatedAt": 0
  }
}
Error responses
default Sandpi error.
Error body application/json

Standard error envelope containing a stable code, diagnostic message and request identity.

FieldType and constraintsRequiredDescription
errorobject · extra fields rejectedYesStructured failure information. Inspect the stable code and retain the request ID for investigation.
error.codestringYeswithin errorStable error code used to distinguish failures programmatically.
error.messagestringYeswithin errorHuman-readable diagnostic text.
error.requestIdstringYeswithin errorRequest identifier for correlating diagnostics and support investigations.
error.detailsanyNowithin errorOptional structured error context. Its shape is specific to the service failure.
error.loginUrlstringNowithin errorAuthentication URL supplied when a browser login is required.
error.registrationOpenbooleanNowithin errorWhether new account registration is enabled for this deployment.
Example
Example
{
  "error": {
    "code": "platform_balance_insufficient",
    "message": "Top up Platform credits before submitting a Run.",
    "requestId": "req_example"
  }
}

Archived Environments disable their schedules. Platform schedules do not control the interactive TUI’s terminal. For event-driven work, use inbound webhooks.

Browse schedule definitions

List the saved definitions and inspect their next due time, revision and latest outcome before editing automation.

List Environment schedules

GET /v1/environments/{environmentId}/schedules

Schedules submit ordinary Platform Runs into an existing Session using the selected model. Runs retain normal credit, budget, queue, recovery and checkpoint behavior. Missed cron intervals coalesce to the latest occurrence; an overlapping occurrence is skipped. Admission failures are recorded without retrying side effects.

Authentication: Platform API bearer token

Parameters and headers
FieldType and constraintsRequiredDescription
path: environmentIdstringYesEnvironment identifier. It must belong to the caller’s account or Project.

Request example

sh
curl \
    "https://api.sandpi.ai/v1/environments/$ENVIRONMENT_ID/schedules" \
    -H "Authorization: Bearer $SANDPI_API_TOKEN"

No request body.

Responses

200 Success
Response body application/json
FieldType and constraintsRequiredDescription
dataarrayYesSuccessful result wrapped by the API. The child fields describe its content.
data[]object · extra fields rejectedYeseach array itemSchedule definition, next due time and latest occurrence outcome.
data[].namestring · min length 1; max length 80Yeseach array itemHuman-readable name for this resource.
data[].promptstring · min length 1; max length 100000Yeseach array itemSaved instructions used for each scheduled Run.
data[].timingone of the variants belowYeseach array itemOne future Unix timestamp or a recurring five-field cron expression with an IANA time zone.
data[].timingobject · extra fields rejectedYeskind = "once"—
data[].timing.kindstring · values: "once"Yeskind = "once"Selects the resource or operation variant described by the allowed values.
data[].timing.runAtnumber · > 0Yeskind = "once"Unix timestamp in seconds.
data[].timingobject · extra fields rejectedYeskind = "cron"—
data[].timing.kindstring · values: "cron"Yeskind = "cron"Selects the resource or operation variant described by the allowed values.
data[].timing.expressionstring · min length 1; max length 200Yeskind = "cron"Five-field cron expression; evaluated in the configured time zone.
data[].timing.timeZonestring · min length 1; max length 100Yeskind = "cron"IANA time zone, such as Asia/Shanghai or UTC.
data[].targetobject · extra fields rejectedYeseach array itemExisting Platform Session and model used for scheduled execution.
data[].target.kindstring · values: "platform"Yeseach array itemSelects the resource or operation variant described by the allowed values.
data[].target.sessionIdstring · min length 1Yeseach array itemExisting Session identifier within the named Environment.
data[].target.modelstring · min length 1Yeseach array itemExact native model ID served by your provider or gateway.
data[].enabledbooleanYeseach array itemWhether this configuration is enabled for future use.
data[].idstringYeseach array itemResource identifier used to read or manage this resource.
data[].environmentIdstringYeseach array itemEnvironment identifier. It must belong to the caller’s account or Project.
data[].nextRunAtnumberNoeach array itemNext due time as a Unix timestamp in seconds; absent when no occurrence is scheduled.
data[].lastScheduledFornumberNoeach array itemDue time of the most recent recorded occurrence, in Unix seconds.
data[].lastRunStatusstring · values: "queued" | "running" | "succeeded" | "failed" | "skipped"Noeach array itemOutcome of the most recent scheduled occurrence.
data[].lastErrorstringNoeach array itemDiagnostic message for the most recent admission or execution failure.
data[].revisionintegerYeseach array itemConfiguration revision. MCP updates must use the currently observed revision.
data[].createdAtnumberYeseach array itemCreation time as a Unix timestamp in seconds.
data[].updatedAtnumberYeseach array itemLast update time as a Unix timestamp in seconds.
Example
Example
{
  "data": [
    {
      "name": "example",
      "prompt": "example",
      "timing": {
        "kind": "once",
        "runAt": 0
      },
      "target": {
        "kind": "platform",
        "sessionId": "example",
        "model": "example"
      },
      "enabled": false,
      "id": "",
      "environmentId": "",
      "revision": 0,
      "createdAt": 0,
      "updatedAt": 0
    }
  ]
}
Error responses
default Sandpi error.
Error body application/json

Standard error envelope containing a stable code, diagnostic message and request identity.

FieldType and constraintsRequiredDescription
errorobject · extra fields rejectedYesStructured failure information. Inspect the stable code and retain the request ID for investigation.
error.codestringYeswithin errorStable error code used to distinguish failures programmatically.
error.messagestringYeswithin errorHuman-readable diagnostic text.
error.requestIdstringYeswithin errorRequest identifier for correlating diagnostics and support investigations.
error.detailsanyNowithin errorOptional structured error context. Its shape is specific to the service failure.
error.loginUrlstringNowithin errorAuthentication URL supplied when a browser login is required.
error.registrationOpenbooleanNowithin errorWhether new account registration is enabled for this deployment.
Example
Example
{
  "error": {
    "code": "platform_balance_insufficient",
    "message": "Top up Platform credits before submitting a Run.",
    "requestId": "req_example"
  }
}

Delete a schedule

Remove the definition to stop future occurrences. Runs already admitted continue independently.

Delete an Environment schedule

DELETE /v1/environments/{environmentId}/schedules/{scheduleId}

Schedules submit ordinary Platform Runs into an existing Session using the selected model. Runs retain normal credit, budget, queue, recovery and checkpoint behavior. Missed cron intervals coalesce to the latest occurrence; an overlapping occurrence is skipped. Admission failures are recorded without retrying side effects.

Authentication: Platform API bearer token

Parameters and headers
FieldType and constraintsRequiredDescription
path: environmentIdstringYesEnvironment identifier. It must belong to the caller’s account or Project.
path: scheduleIdstringYesSchedule identifier within this Environment.

Request example

sh
curl -X DELETE \
    "https://api.sandpi.ai/v1/environments/$ENVIRONMENT_ID/schedules/$SCHEDULE_ID" \
    -H "Authorization: Bearer $SANDPI_API_TOKEN"

No request body.

Responses

204 Success

Empty response body.

Error responses
default Sandpi error.
Error body application/json

Standard error envelope containing a stable code, diagnostic message and request identity.

FieldType and constraintsRequiredDescription
errorobject · extra fields rejectedYesStructured failure information. Inspect the stable code and retain the request ID for investigation.
error.codestringYeswithin errorStable error code used to distinguish failures programmatically.
error.messagestringYeswithin errorHuman-readable diagnostic text.
error.requestIdstringYeswithin errorRequest identifier for correlating diagnostics and support investigations.
error.detailsanyNowithin errorOptional structured error context. Its shape is specific to the service failure.
error.loginUrlstringNowithin errorAuthentication URL supplied when a browser login is required.
error.registrationOpenbooleanNowithin errorWhether new account registration is enabled for this deployment.
Example
Example
{
  "error": {
    "code": "platform_balance_insufficient",
    "message": "Top up Platform credits before submitting a Run.",
    "requestId": "req_example"
  }
}