Skedulo Run API
The Run API from Skedulo — 7 operation(s) for run.
The Run API from Skedulo — 7 operation(s) for run.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/skedulo-run-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
openapi: 3.2.0
info:
title: Authentication Admin Run API
description: Skedulo Authentication API
version: 1.0.0
servers:
- url: https://api.skedulo.com/auth
- url: https://api.uk.skedulo.com/auth
- url: https://api.ca.skedulo.com/auth
- url: https://api.au.skedulo.com/auth
tags:
- name: Run
paths:
/run:
get:
summary: Get a list of runs
description: Returns a paginated list of feature model optimization runs for the authenticated tenant. Results can be filtered by run ID, schedule ID, user, and run type, and support limit/offset pagination.
operationId: Get Runs
parameters:
- name: id
in: query
description: Run id
required: false
schema:
type: string
- name: ids
in: query
description: Coma separated run ids
required: true
schema:
type: string
- name: schedule_id
in: query
description: Schedule id
required: false
schema:
type: string
- name: schedule_ids
in: query
description: Coma separated run schedule ids
required: false
schema:
type: string
- name: user
in: query
description: User id
required: false
schema:
type: string
- name: user_ids
in: query
description: Coma separated user ids
required: false
schema:
type: string
- name: type
in: query
description: Run type
required: false
schema:
type: string
- name: types
in: query
description: Coma separated types
required: false
schema:
type: string
- name: limit
in: query
description: Maximum number of results to return
required: false
schema:
type: integer
format: int32
- name: offset
in: query
description: Number of results to skip
required: false
schema:
type: integer
format: int32
- name: after
in: query
description: Return results after this cursor value
required: false
schema:
type: integer
format: int32
responses:
'200':
description: ''
content:
application/json:
schema:
required:
- result
- paging
type: object
properties:
result:
type: array
items:
$ref: '#/components/schemas/APIFeatureRunDetailsShape'
paging:
$ref: '#/components/schemas/Paging'
example:
paging:
limit: 10
total: 2
result:
- start: '2022-08-18T19:00:00Z'
operation: optimize
optimizationType: pvrp
status: complete
scheduleId: a15c285f-2c69-4a3c-9b9b-c9a8c5252db6
createdByUserId: user-1
label: label-1
completedAt: '2022-02-15T19:02:00Z'
summary:
totalPlannedJobs: 3
totalScheduledJobs: 3
requestedJobs: 2
requestedJobsScheduled: 2
window:
start: '2022-07-05T09:00:00Z'
end: '2022-08-05T23:59:59Z'
id: 20ecb249-8331-491f-9049-565a2252df76
- errors:
- message: error-1
start: '2022-08-18T19:00:00Z'
operation: optimize
optimizationType: pvrp
status: failed
scheduleId: a15c285f-2c69-4a3c-9b9b-c9a8c5252db6
createdByUserId: user-1
label: label-1
completedAt: '2022-02-15T19:02:00Z'
summary:
totalPlannedJobs: 3
totalScheduledJobs: 3
requestedJobs: 2
requestedJobsScheduled: 2
window:
start: '2022-07-05T09:00:00Z'
end: '2022-08-05T23:59:59Z'
id: 20ecb249-8331-491f-9049-565a2252df76
'400':
description: 'Invalid value for: query parameter id, Invalid value for: query parameter ids, Invalid value for: query parameter schedule_id, Invalid value for: query parameter schedule_ids, Invalid value for: query parameter user, Invalid value for: query parameter user_ids, Invalid value for: query parameter type, Invalid value for: query parameter types, Invalid value for: query parameter limit, Invalid value for: query parameter offset, Invalid value for: query parameter after'
content:
text/plain:
schema:
type: string
security:
- httpAuth: []
tags:
- Run
/run/{runId}:
get:
summary: Get a run by id
description: Returns the details of a single feature model optimization run identified by its run ID, including its status, type, schedule association, and timing information.
operationId: Get Run By Id
parameters:
- name: runId
in: path
required: true
schema:
type: string
responses:
'200':
description: ''
content:
application/json:
schema:
required:
- result
type: object
properties:
result:
$ref: '#/components/schemas/APIFeatureRunDetailsShape'
examples:
Example0:
value:
result:
start: '2022-08-18T19:00:00Z'
operation: optimize
optimizationType: pvrp
status: complete
scheduleId: a15c285f-2c69-4a3c-9b9b-c9a8c5252db6
createdByUserId: user-1
label: label-1
completedAt: '2022-02-15T19:02:00Z'
summary:
totalPlannedJobs: 3
totalScheduledJobs: 3
requestedJobs: 2
requestedJobsScheduled: 2
window:
start: '2022-07-05T09:00:00Z'
end: '2022-08-05T23:59:59Z'
id: 20ecb249-8331-491f-9049-565a2252df76
Example1:
value:
result:
errors:
- message: error-1
start: '2022-08-18T19:00:00Z'
operation: optimize
optimizationType: pvrp
status: failed
scheduleId: a15c285f-2c69-4a3c-9b9b-c9a8c5252db6
createdByUserId: user-1
label: label-1
completedAt: '2022-02-15T19:02:00Z'
summary:
totalPlannedJobs: 3
totalScheduledJobs: 3
requestedJobs: 2
requestedJobsScheduled: 2
window:
start: '2022-07-05T09:00:00Z'
end: '2022-08-05T23:59:59Z'
id: 20ecb249-8331-491f-9049-565a2252df76
security:
- httpAuth: []
tags:
- Run
/run/{runId}/diff:
get:
summary: Get the diff of the run
description: Returns the allocation diff produced by an optimization run, showing for each allocation which resource was deallocated and which resource was allocated, along with any change in scheduled time.
operationId: Get Run Diff
parameters:
- name: runId
in: path
required: true
schema:
type: string
responses:
'200':
description: ''
content:
application/json:
schema:
required:
- result
type: object
properties:
result:
$ref: '#/components/schemas/DiffShape'
examples:
PVRP:
value:
result:
meta:
key: value
solver: pvrp
allocations:
alloc-1:
deallocation: res-1
allocation: res-2
initialScheduleTime: '2022-10-31T07:00:00Z'
scheduleTime: '2022-10-31T11:00:00Z'
ARC:
value:
result:
meta:
key: value
solver: arc
allocations:
alloc-1:
deallocation: res-1
allocation: res-2
security:
- httpAuth: []
tags:
- Run
/run/{runId}/results:
get:
summary: Get results of an optimization run
description: Returns the feature-model-level optimization results for a completed run. For ARCShift (shift scheduling) runs this shows which allocations were assigned to resources and which were left unscheduled. For CorePVRP (route optimization) runs this additionally includes the scheduled start times and per-allocation infeasibility reasons explaining why each resource could not be used for each unscheduled allocation.
operationId: Get Run Results
parameters:
- name: runId
in: path
required: true
schema:
type: string
responses:
'200':
description: ''
content:
application/json:
schema:
required:
- result
type: object
properties:
result:
$ref: '#/components/schemas/FeatureModelResultsShape'
security:
- httpAuth: []
tags:
- Run
/run/{runId}/model:
get:
summary: Get the model for the run
description: Get the feature model used for the run. This is a fully anonymized version of the problem that is solved in the optimization run
operationId: Get Run Model
parameters:
- name: runId
in: path
required: true
schema:
type: string
responses:
'200':
description: ''
content:
application/json:
schema:
required:
- result
type: object
properties:
result:
$ref: '#/components/schemas/FeatureModelShape'
examples:
PVRP:
value:
result:
allocations:
- id: alloc-1
groupId: alloc-group-1
groupIds:
- alloc-group-1
start: '2022-01-26T09:00:00Z'
duration: 30
resourceId: res-1
locationId: loc-1
priority: 10
locked: true
attributeRequirements:
- id: attr-1
- id: attr-2
weighting: 10
resourceConstraints:
type: blocked
resources:
- res-2
scheduleConstraints:
- windowStart: '2022-01-26T10:00:00Z'
windowEnd: '2022-01-26T11:00:00Z'
resourceRatings:
- resourceId: res-1
rating: 75
urgency: 20
groups:
- id: gr-1
synchronizationMode: start_time
locked: true
enablePartialAllocation: false
resources:
- id: res-1
attributes:
- id: attr-1
locationId: loc-1
availability:
- from: '2022-01-26T09:00:00Z'
to: '2022-01-30T23:00:00Z'
attributes: []
maxDailyTravelTimeInMinutes: 180
maxTravelTimeBetweenLocations: 60
periodConstraints:
- start: '2022-01-26T09:00:00Z'
end: '2022-01-30T23:00:00Z'
maxServiceTimeInMinutes: 100
minServiceTimeInMinutes: 50
groupConstraints:
- groupId: group-1
maxAllocations: 5
breaks:
- breakTimeInMinutes: 30
minStartTime: '2022-01-26T12:00:00Z'
maxStartTime: '2022-01-26T13:00:00Z'
- startTime: '2022-01-26T15:00:00Z'
endTime: '2022-01-26T15:30:00Z'
locationId: loc-1
rating: 80
compatibleResources:
- res-2
allocationDependencies: []
resourceDependencies: []
locations:
- id: loc-1
latitude: 51.5072
longitude: 0.1276
schedulingPeriod:
start: '2022-01-26T09:00:00Z'
end: '2022-01-30T23:00:00Z'
timezone: UTC
meta:
key: value
options:
full: false
ignoreTravelTime: false
ignoreTravelTimeFirstJob: false
ignoreTravelTimeLastJob: false
minimizeResources: false
respectAllocationTimes: false
respectAllocationTimesOverTimeConstraints: false
balanceAbsoluteWorkload: false
enablePartiallyAllocatedGroups: true
enablePartiallyAllocatedAllocationDependencies: true
removeLockedJobsFromShifts: true
sharedGroupConstraints:
- groupId: group-1
resourceIds:
- res-1
- res-2
maxAllocations: 10
start: '2022-01-26T09:00:00Z'
end: '2022-01-30T23:00:00Z'
solver: pvrp
ARC:
value:
result:
options:
locations: true
exceptionFilter:
blacklist: true
resourceAvailability: true
solviceWeights:
maxHours: 10hard
minHours: 10medium
minHoursUnassigned: 10medium
availability: 10hard
locked: 10hard
minRest: 10hard
requirements: 10hard
skills: 10hard
distance: 10hard
distanceAL: 10hard
priority: 10hard
pref: 10hard
unassigned: 10hard
softSkills: 10hard
criticalSkills: 10hard
blacklist: 10hard
efficiency: 10hard
softSkillsLevel: 10hard
maxWorkingDays: 10hard
shiftStart: 10hard
latestShiftStart: 10hard
shiftEnd: 10hard
minShift: 10hard
maxShift: 10hard
dayOfWeek: 10hard
sameDay: 10hard
sameDayMinRest: 10hard
maxConsecutive: 10hard
concurrent: 10hard
costs: 10hard
wages: 10hard
working: 10hard
minWorkingDaysUnassigned: 10medium
fairness: 10soft
allocations:
- locked: false
attributeRequirements:
- id: attr-1
- id: attr-2
weighting: 10
resourceConstraints:
type: blocked
resources:
- res-2
preferredResourceIds:
- res-1
- res-3
id: alloc-1
start: '2022-01-26T23:00:00Z'
duration: 30
resourceId: res-1
locationId: loc-1
priority: 10
resources:
- id: res-1
statuteId: st-1
attributes:
- id: attr-1
validFor:
- from: '2022-01-26'
to: '2022-01-02'
weighting: 10
locationId: loc-1
availability:
- from: '2022-01-26T09:00:00Z'
to: '2022-01-30T23:00:00Z'
fromLocation: loc-1
efficiency: 10
periodConstraints: []
statutes:
- id: st-1
minimumRestPeriodBetweenAllocations: 0
minimumRestPeriodBetweenAllocationsInHours: 0
minimumHoursForPlanningPeriod: 1
maximumHoursForPlanningPeriod: 1
maximumTravelTimeToAllocationsInMinutes: 30
locations:
- id: loc-1
latitude: 51.5072
longitude: 0.1276
sharedAttributes:
- id: sh-attr-1
allocations:
- alloc-1
attributeId: attr-1
minimumQuantity: 3
schedulingPeriod:
start: '2022-01-26T09:00:00Z'
end: '2022-01-30T23:00:00Z'
fairnessBuckets: []
timezone: UTC
meta:
key: value
solver: arc
security:
- httpAuth: []
tags:
- Run
/run/{runId}/remodel:
get:
summary: Get the remodel of the run
description: Get the final model of the run. This is similar to the result of the GET /run/{runId}/model endpoint, but with the model populated with the scheduled allocations from the optimization run.
operationId: Get Run Remodel
parameters:
- name: runId
in: path
required: true
schema:
type: string
responses:
'200':
description: ''
content:
application/json:
schema:
required:
- result
type: object
properties:
result:
$ref: '#/components/schemas/FeatureModelShape'
examples:
Example0:
value:
result:
allocations:
- id: alloc-1
groupId: alloc-group-1
groupIds:
- alloc-group-1
start: '2022-01-26T09:00:00Z'
duration: 30
resourceId: res-1
locationId: loc-1
priority: 10
locked: true
attributeRequirements:
- id: attr-1
- id: attr-2
weighting: 10
resourceConstraints:
type: blocked
resources:
- res-2
scheduleConstraints:
- windowStart: '2022-01-26T10:00:00Z'
windowEnd: '2022-01-26T11:00:00Z'
resourceRatings:
- resourceId: res-1
rating: 75
urgency: 20
groups:
- id: gr-1
synchronizationMode: start_time
locked: true
enablePartialAllocation: false
resources:
- id: res-1
attributes:
- id: attr-1
locationId: loc-1
availability:
- from: '2022-01-26T09:00:00Z'
to: '2022-01-30T23:00:00Z'
attributes: []
maxDailyTravelTimeInMinutes: 180
maxTravelTimeBetweenLocations: 60
periodConstraints:
- start: '2022-01-26T09:00:00Z'
end: '2022-01-30T23:00:00Z'
maxServiceTimeInMinutes: 100
minServiceTimeInMinutes: 50
groupConstraints:
- groupId: group-1
maxAllocations: 5
breaks:
- breakTimeInMinutes: 30
minStartTime: '2022-01-26T12:00:00Z'
maxStartTime: '2022-01-26T13:00:00Z'
- startTime: '2022-01-26T15:00:00Z'
endTime: '2022-01-26T15:30:00Z'
locationId: loc-1
rating: 80
compatibleResources:
- res-2
allocationDependencies: []
resourceDependencies: []
locations:
- id: loc-1
latitude: 51.5072
longitude: 0.1276
schedulingPeriod:
start: '2022-01-26T09:00:00Z'
end: '2022-01-30T23:00:00Z'
timezone: UTC
meta:
key: value
options:
full: false
ignoreTravelTime: false
ignoreTravelTimeFirstJob: false
ignoreTravelTimeLastJob: false
minimizeResources: false
respectAllocationTimes: false
respectAllocationTimesOverTimeConstraints: false
balanceAbsoluteWorkload: false
enablePartiallyAllocatedGroups: true
enablePartiallyAllocatedAllocationDependencies: true
removeLockedJobsFromShifts: true
sharedGroupConstraints:
- groupId: group-1
resourceIds:
- res-1
- res-2
maxAllocations: 10
start: '2022-01-26T09:00:00Z'
end: '2022-01-30T23:00:00Z'
solver: pvrp
Example1:
value:
result:
options:
locations: true
exceptionFilter:
blacklist: true
resourceAvailability: true
solviceWeights:
maxHours: 10hard
minHours: 10medium
minHoursUnassigned: 10medium
availability: 10hard
locked: 10hard
minRest: 10hard
requirements: 10hard
skills: 10hard
distance: 10hard
distanceAL: 10hard
priority: 10hard
pref: 10hard
unassigned: 10hard
softSkills: 10hard
criticalSkills: 10hard
blacklist: 10hard
efficiency: 10hard
softSkillsLevel: 10hard
maxWorkingDays: 10hard
shiftStart: 10hard
latestShiftStart: 10hard
shiftEnd: 10hard
minShift: 10hard
maxShift: 10hard
dayOfWeek: 10hard
sameDay: 10hard
sameDayMinRest: 10hard
maxConsecutive: 10hard
concurrent: 10hard
costs: 10hard
wages: 10hard
working: 10hard
minWorkingDaysUnassigned: 10medium
fairness: 10soft
allocations:
- locked: false
attributeRequirements:
- id: attr-1
- id: attr-2
weighting: 10
resourceConstraints:
type: blocked
resources:
- res-2
preferredResourceIds:
- res-1
- res-3
id: alloc-1
start: '2022-01-26T23:00:00Z'
duration: 30
resourceId: res-1
locationId: loc-1
priority: 10
resources:
- id: res-1
statuteId: st-1
attributes:
- id: attr-1
validFor:
- from: '2022-01-26'
to: '2022-01-02'
weighting: 10
locationId: loc-1
availability:
- from: '2022-01-26T09:00:00Z'
to: '2022-01-30T23:00:00Z'
fromLocation: loc-1
efficiency: 10
periodConstraints: []
statutes:
- id: st-1
minimumRestPeriodBetweenAllocations: 0
minimumRestPeriodBetweenAllocationsInHours: 0
minimumHoursForPlanningPeriod: 1
maximumHoursForPlanningPeriod: 1
maximumTravelTimeToAllocationsInMinutes: 30
locations:
- id: loc-1
latitude: 51.5072
longitude: 0.1276
sharedAttributes:
- id: sh-attr-1
allocations:
- alloc-1
attributeId: attr-1
minimumQuantity: 3
schedulingPeriod:
start: '2022-01-26T09:00:00Z'
end: '2022-01-30T23:00:00Z'
fairnessBuckets: []
timezone: UTC
meta:
key: value
solver: arc
security:
- httpAuth: []
tags:
- Run
/run/{runId}/meta:
get:
summary: Get the metadata for a run
description: Returns arbitrary key-value metadata associated with an optimization run. Returns null if no metadata has been recorded for the run.
operationId: Get Run Meta
parameters:
- name: runId
in: path
required: true
schema:
type: string
responses:
'200':
description: ''
content:
application/json:
schema:
type: object
properties:
result:
type: object
description: Arbitrary JSON object (key/value pairs)
additionalProperties:
description: Any JSON value (string, number, boolean, null, object, or array)
example:
result:
key: value
security:
- httpAuth: []
tags:
- Run
components:
schemas:
LocationShape:
required:
- latitude
- longitude
type: object
properties:
latitude:
type: number
description: Latitude
format: double
longitude:
type: number
description: Longitude
format: double
description: Location of the previous event before this gap, if known
DiffScheduleShape:
type: object
properties:
deallocation:
type: string
allocation:
type: string
initialScheduleTime:
type: string
format: date-time
scheduleTime:
type: string
format: date-time
ResourceAvailabilityShape1:
required:
- from
- to
type: object
properties:
from:
type: string
description: Start of the availability window
format: date-time
to:
type: string
description: End of the availability window
format: date-time
startLocationId:
type: string
description: Location from which the resource departs at the start of this availability window; overrides the resource's home location
endLocationId:
type: string
description: Location at which the resource must finish at the end of this availability window; overrides the resource's home location
attributes:
type: array
items:
$ref: '#/components/schemas/ResourceAvailabilityAttributeShape'
description: Attributes that are active for this resource during this availability window; overrides the resource-level attributes for allocations scheduled within this window
phaseTags:
type: array
items:
type: string
description: Phase tags that restrict this availability window to specific phases. If absent or empty, the availability window is included in all phases.
overtimeEnd:
type: string
description: Latest end the shift may extend to when working overtime; must be after the end of the availability window
format: date-time
ResourceShape:
required:
- id
- availability
- attributes
- periodConstraints
type: object
properties:
id:
type: string
description: Unique identifier for this resource
locationId:
type: string
# --- truncated at 32 KB (90 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/skedulo/refs/heads/main/openapi/skedulo-run-api-openapi.yml