The schedules API lets you create, inspect, and manage scheduled mission runs. Schedules support both recurring triggers (cron expressions) and one-shot triggers (ISO timestamps).
Authentication
Bearer token using your project API key. Authorization: Bearer sk_live_...
List schedules
Returns all scheduled missions in the project.
curl https://{project}.polpo.cloud/v1/schedules \
-H "Authorization: Bearer sk_live_abc123"
Response
[
{
"scheduleId" : "sch_abc123" ,
"missionId" : "msn_daily_standup" ,
"expression" : "0 9 * * 1-5" ,
"recurring" : true ,
"enabled" : true ,
"lastRunAt" : "2026-03-14T09:00:00Z" ,
"nextRunAt" : "2026-03-17T09:00:00Z" ,
"createdAt" : "2026-01-10T12:00:00Z"
},
{
"scheduleId" : "sch_def456" ,
"missionId" : "msn_quarterly_audit" ,
"expression" : "2026-04-01T09:00:00Z" ,
"recurring" : false ,
"enabled" : true ,
"lastRunAt" : null ,
"nextRunAt" : "2026-04-01T09:00:00Z" ,
"createdAt" : "2026-03-01T08:00:00Z"
}
]
Create a schedule
Create a new schedule for a mission.
The ID of the mission to schedule.
A cron expression (5-field) for recurring schedules, or an ISO 8601 timestamp for one-shot schedules.
Set to true for cron-based recurring schedules, false for one-shot.
Whether the schedule is active. Defaults to true.
Optional deadline in milliseconds from the trigger time. If the mission has not completed within this window, it is marked as timed out. Omit for no deadline.
Example: recurring schedule (cron)
curl -X POST https://{project}.polpo.cloud/v1/schedules \
-H "Authorization: Bearer sk_live_abc123" \
-H "Content-Type: application/json" \
-d '{
"missionId": "msn_daily_standup",
"expression": "0 9 * * 1-5",
"recurring": true,
"enabled": true,
"deadlineOffsetMs": 3600000
}'
Response 201 Created
{
"scheduleId" : "sch_ghi789" ,
"missionId" : "msn_daily_standup" ,
"expression" : "0 9 * * 1-5" ,
"recurring" : true ,
"enabled" : true ,
"deadlineOffsetMs" : 3600000 ,
"lastRunAt" : null ,
"nextRunAt" : "2026-03-17T09:00:00Z" ,
"createdAt" : "2026-03-16T15:00:00Z"
}
Example: one-shot schedule (ISO timestamp)
curl -X POST https://{project}.polpo.cloud/v1/schedules \
-H "Authorization: Bearer sk_live_abc123" \
-H "Content-Type: application/json" \
-d '{
"missionId": "msn_quarterly_audit",
"expression": "2026-04-01T09:00:00Z",
"recurring": false,
"enabled": true
}'
Response 201 Created
{
"scheduleId" : "sch_jkl012" ,
"missionId" : "msn_quarterly_audit" ,
"expression" : "2026-04-01T09:00:00Z" ,
"recurring" : false ,
"enabled" : true ,
"lastRunAt" : null ,
"nextRunAt" : "2026-04-01T09:00:00Z" ,
"createdAt" : "2026-03-16T15:00:00Z"
}
One-shot schedules fire once at the specified timestamp and are automatically disabled after execution. Recurring schedules continue firing until deleted or disabled.
Get schedule details
GET /schedules/{scheduleId}
Retrieve full details for a schedule, including its last and next run times.
The schedule ID (e.g. sch_abc123).
curl https://{project}.polpo.cloud/v1/schedules/sch_abc123 \
-H "Authorization: Bearer sk_live_abc123"
Response
{
"scheduleId" : "sch_abc123" ,
"missionId" : "msn_daily_standup" ,
"expression" : "0 9 * * 1-5" ,
"recurring" : true ,
"enabled" : true ,
"deadlineOffsetMs" : 3600000 ,
"lastRunAt" : "2026-03-14T09:00:00Z" ,
"nextRunAt" : "2026-03-17T09:00:00Z" ,
"executionCount" : 47 ,
"createdAt" : "2026-01-10T12:00:00Z"
}
Delete a schedule
DELETE /schedules/{scheduleId}
Remove a schedule. The associated mission is not deleted.
The schedule ID to delete.
curl -X DELETE https://{project}.polpo.cloud/v1/schedules/sch_abc123 \
-H "Authorization: Bearer sk_live_abc123"
Response 204 No Content
Deleting a schedule does not cancel any in-progress mission run that was already triggered. It only prevents future triggers.
Cron expression reference
Recurring schedules use standard 5-field cron expressions:
+------------ minute (0-59)
| +---------- hour (0-23)
| | +-------- day of month (1-31)
| | | +------ month (1-12)
| | | | +---- day of week (0-6, Sun=0)
| | | | |
* * * * *
Expression Description 0 9 * * 1-5Weekdays at 9:00 AM 0 0 * * *Midnight daily 0 */6 * * *Every 6 hours 30 14 1 * *2:30 PM on the 1st of each month 0 9 * * 1Every Monday at 9:00 AM */30 * * * *Every 30 minutes
Syntax Example Meaning Numbers 30 9 * * *9:30 AM daily Ranges 0 9-17 * * *Every hour, 9 AM to 5 PM Steps */10 * * * *Every 10 minutes Lists 0 9 * * 1,3,59 AM on Mon, Wed, Fri Wildcards * * * * *Every minute
The following cron features are not supported:
@yearly, @monthly, @weekly, @daily, @hourly shorthand aliases
Seconds field (6-field cron)
L (last day), W (nearest weekday), # (nth weekday) modifiers