API endpoints
Every route of the REST API, with the parameters it takes and the fields it answers with. The page comes from the backend's OpenAPI spec at every docs build, so it lists what the code serves.
Send an API token as a bearer token with each call. REST API covers tokens, the error shape every failed call shares, and scripting a run from start to finish. Your instance serves the spec at /api/openapi.json, and this copy suits Postman, code generators and AI assistants.
- get
/api/jobsList jobs - post
/api/jobsCreate job - post
/api/jobs/compileCompile job - get
/api/jobs/{id}Get job - patch
/api/jobs/{id}Update job - delete
/api/jobs/{id}Delete job - post
/api/jobs/{id}/runsRun job - get
/api/jobs/{id}/suggestionsList job suggestions - post
/api/jobs/{id}/suggestions/{suggestionId}/applyApply job suggestion - post
/api/jobs/{id}/suggestions/{suggestionId}/dismissDismiss job suggestion - post
/api/jobs/{id}/webhook-tokenRotate webhook token
List jobs
Section titled “List jobs”/api/jobsQuery parameters
pageinteger1-based page number
at least 1 · defaults to
1pageSizeintegerItems per page
1 to 100 · defaults to
25sortstringComma-separated sort keys, prefix with - for descending
at most 200 characters
searchstringFree-text search
at most 200 characters
Response
4 fields
itemsarray of objects15 fields per item
createdAtintegercronstring or nullgraduatebooleanidstringinputsarray of objects or nullThe run inputs the job declares, the same as spec.inputs of the job
3 fields per item
descriptionstringnamestringtypestringJSON type: string, integer, number, boolean, object or array
lastModestring or nullThe mode the latest run used, which can differ from nextMode once the playbook changed
lastRunobjectThe latest run, the same as the first of recentRuns
4 fields
idstringnumberintegerqueuedAtintegerstatusstring
namestringnextModestringThe mode the next run starts in, which is never scripted while graduation is off
One of
explore,assisted,scriptednextRunAtinteger or nullpausedbooleanrecentRunsarray of objects or nullThe job's latest runs, at most 10, newest first
at most 10 items
4 fields per item
idstringnumberintegerqueuedAtintegerstatusstring
runCountintegertimezonestring or nullupdatedAtinteger
pageintegerpageSizeintegertotalinteger
Create job
Section titled “Create job”/api/jobsBody application/json
instructionstringrequiredWhat the agent does, which it reads on every run
1 to 20000 characters
namestringrequired1 to 200 characters
allowPrivateNetworkbooleanallowedDomainsarray of strings or nullat most 100 items
concurrencystringWhat a trigger during an active run does, skip when omitted
One of
skip,queue,parallelcronstringFive-field cron expression or a descriptor such as @daily, for a job that runs on a schedule
at most 100 characters
graduatebooleanWhether the job may graduate to a script that runs without the agent, true when omitted
imagestringBase image of the sandbox, the workspace's default image when omitted
at most 500 characters
limitsobject5 fields
cpusnumber0.1 to 64
maxCostUsdnumberSpend per run in USD, where 0 turns the limit off
at least 0
maxTurnsintegerModel calls the agent may make per run
1 to 1000
memoryMbinteger64 to 262144
timeoutSecondsinteger30 to 86400
modelIdstringModel that drives the agent, the workspace's agent model when omitted
networkstringWhat the sandbox may reach, internet when omitted; allowlist limits it to allowedDomains
One of
none,internet,allowlist,unrestrictedpausedbooleanWhether the schedule and the webhook are paused, which leaves manual and API runs alone
runAsRootbooleanselfImprovebooleanWhether reflection after runs improves the job's playbook, true when omitted
specobjectThe spec compiled from the instruction
10 fields
dockerfilestring or nullrequiredDockerfile for jobs that need tools beyond the default sandbox image, null otherwise
goalstringrequiredOne sentence on the outcome
inputsarray of objects or nullrequiredValues a run reads from /ump/input.json
3 fields per item
namestringrequiredtypestringrequiredJSON type: string, integer, number, boolean, object or array
descriptionstring
mcparray of objects or nullrequiredMCP servers the job needs
2 fields per item
serverstringrequiredName of a configured MCP server, or of the service when none is configured
whystringrequired
networkstringrequiredWhether the job needs the internet
One of
none,internetoutputsarray of objects or nullrequiredSmall structured values each run reports
3 fields per item
namestringrequiredtypestringrequiredJSON type: string, integer, number, boolean, object or array
descriptionstring
sideEffectsarray of strings or nullrequiredChanges the job makes outside its sandbox and when, such as posting a message when there is something to report
successCriteriaarray of strings or nullrequiredThe end state a successful run leaves behind, which the agent reads with the instruction
titlestringrequiredShort name for the job
scheduleobjectThe schedule the instruction asks for, which only takes effect through the job's cron and timezone
2 fields
cronstringrequiredFive-field cron expression
timezonestringrequiredIANA time zone the expression runs in, such as Europe/Berlin
timezonestringIANA time zone of the schedule, UTC when omitted
at most 100 characters
Response
26 fields
allowPrivateNetworkbooleanallowedDomainsarray of strings or nullconcurrencystringcreatedAtintegercronstring or nulldemotionstringWhy repeated fallbacks or handovers took a graduated job back to Assisted, missing while it isn't demoted
One of
fell_back,handed_overgraduatebooleanWhether the job may graduate to a main script that runs without the agent
graduatedVersioninteger or nullThe playbook version the job last graduated to Scripted mode at
hasWebhookTokenbooleanidstringimagestring or nullinstructionstringlastRunobject4 fields
idstringnumberintegerqueuedAtintegerstatusstring
limitsobject5 fields
cpusnumber0.1 to 64
maxCostUsdnumberSpend per run in USD, where 0 turns the limit off
at least 0
maxTurnsintegerModel calls the agent may make per run
1 to 1000
memoryMbinteger64 to 262144
timeoutSecondsinteger30 to 86400
modelIdstring or nullnamestringnetworkstringOne of
none,internet,allowlist,unrestrictednextModestringOne of
explore,assisted,scriptednextRunAtinteger or nullpausedbooleanWhether the schedule and the webhook are paused, which leaves manual and API runs alone
playbookVersionintegerrunAsRootbooleanselfImprovebooleanspecobject10 fields
dockerfilestring or nullDockerfile for jobs that need tools beyond the default sandbox image, null otherwise
goalstringOne sentence on the outcome
inputsarray of objects or nullValues a run reads from /ump/input.json
3 fields per item
descriptionstringnamestringtypestringJSON type: string, integer, number, boolean, object or array
mcparray of objects or nullMCP servers the job needs
2 fields per item
serverstringName of a configured MCP server, or of the service when none is configured
whystring
networkstringWhether the job needs the internet
One of
none,internetoutputsarray of objects or nullSmall structured values each run reports
3 fields per item
descriptionstringnamestringtypestringJSON type: string, integer, number, boolean, object or array
scheduleobjectThe schedule the instruction asks for, which only takes effect through the job's cron and timezone
2 fields
cronstringFive-field cron expression
timezonestringIANA time zone the expression runs in, such as Europe/Berlin
sideEffectsarray of strings or nullChanges the job makes outside its sandbox and when, such as posting a message when there is something to report
successCriteriaarray of strings or nullThe end state a successful run leaves behind, which the agent reads with the instruction
titlestringShort name for the job
timezonestring or nullupdatedAtinteger
Compile job
Section titled “Compile job”/api/jobs/compileBody application/json
instructionstringrequired1 to 20000 characters
askQuestionsbooleanWhether the compile step may ask questions, true when omitted; false once the user answered them, so answers never lead to another round
timezonestringIANA time zone of the person writing the instruction, such as Europe/Zurich, which the schedule uses when the instruction names none; UTC when omitted
at most 100 characters
Response
4 fields
questionsarray of objects or null2 fields per item
optionsarray of strings or nullLikely answers the user can pick, empty when only the user can know
questionstring
secretsarray of objects or nullCredentials the job's commands need as environment variables
3 fields per item
envNamestringsecretstringName of the configured secret that holds the value, empty when none does
whystring
skillsarray of strings or nullNames of configured skills that fit the job
specobject10 fields
dockerfilestring or nullDockerfile for jobs that need tools beyond the default sandbox image, null otherwise
goalstringOne sentence on the outcome
inputsarray of objects or nullValues a run reads from /ump/input.json
3 fields per item
descriptionstringnamestringtypestringJSON type: string, integer, number, boolean, object or array
mcparray of objects or nullMCP servers the job needs
2 fields per item
serverstringName of a configured MCP server, or of the service when none is configured
whystring
networkstringWhether the job needs the internet
One of
none,internetoutputsarray of objects or nullSmall structured values each run reports
3 fields per item
descriptionstringnamestringtypestringJSON type: string, integer, number, boolean, object or array
scheduleobjectThe schedule the instruction asks for, which only takes effect through the job's cron and timezone
2 fields
cronstringFive-field cron expression
timezonestringIANA time zone the expression runs in, such as Europe/Berlin
sideEffectsarray of strings or nullChanges the job makes outside its sandbox and when, such as posting a message when there is something to report
successCriteriaarray of strings or nullThe end state a successful run leaves behind, which the agent reads with the instruction
titlestringShort name for the job
Get job
Section titled “Get job”/api/jobs/{id}Path parameters
idstringrequired
Response
26 fields
allowPrivateNetworkbooleanallowedDomainsarray of strings or nullconcurrencystringcreatedAtintegercronstring or nulldemotionstringWhy repeated fallbacks or handovers took a graduated job back to Assisted, missing while it isn't demoted
One of
fell_back,handed_overgraduatebooleanWhether the job may graduate to a main script that runs without the agent
graduatedVersioninteger or nullThe playbook version the job last graduated to Scripted mode at
hasWebhookTokenbooleanidstringimagestring or nullinstructionstringlastRunobject4 fields
idstringnumberintegerqueuedAtintegerstatusstring
limitsobject5 fields
cpusnumber0.1 to 64
maxCostUsdnumberSpend per run in USD, where 0 turns the limit off
at least 0
maxTurnsintegerModel calls the agent may make per run
1 to 1000
memoryMbinteger64 to 262144
timeoutSecondsinteger30 to 86400
modelIdstring or nullnamestringnetworkstringOne of
none,internet,allowlist,unrestrictednextModestringOne of
explore,assisted,scriptednextRunAtinteger or nullpausedbooleanWhether the schedule and the webhook are paused, which leaves manual and API runs alone
playbookVersionintegerrunAsRootbooleanselfImprovebooleanspecobject10 fields
dockerfilestring or nullDockerfile for jobs that need tools beyond the default sandbox image, null otherwise
goalstringOne sentence on the outcome
inputsarray of objects or nullValues a run reads from /ump/input.json
3 fields per item
descriptionstringnamestringtypestringJSON type: string, integer, number, boolean, object or array
mcparray of objects or nullMCP servers the job needs
2 fields per item
serverstringName of a configured MCP server, or of the service when none is configured
whystring
networkstringWhether the job needs the internet
One of
none,internetoutputsarray of objects or nullSmall structured values each run reports
3 fields per item
descriptionstringnamestringtypestringJSON type: string, integer, number, boolean, object or array
scheduleobjectThe schedule the instruction asks for, which only takes effect through the job's cron and timezone
2 fields
cronstringFive-field cron expression
timezonestringIANA time zone the expression runs in, such as Europe/Berlin
sideEffectsarray of strings or nullChanges the job makes outside its sandbox and when, such as posting a message when there is something to report
successCriteriaarray of strings or nullThe end state a successful run leaves behind, which the agent reads with the instruction
titlestringShort name for the job
timezonestring or nullupdatedAtinteger
Update job
Section titled “Update job”/api/jobs/{id}Path parameters
idstringrequired
Body application/json
allowPrivateNetworkbooleanallowedDomainsarray of stringsat most 100 items
concurrencystringOne of
skip,queue,parallelcronstringFive-field cron expression or a descriptor such as @daily, where an empty string stops the schedule
at most 100 characters
graduatebooleanimagestringat most 500 characters
instructionstringWhat the agent does, which it reads on every run
1 to 20000 characters
limitsobject5 fields
cpusnumber0.1 to 64
maxCostUsdnumberSpend per run in USD, where 0 turns the limit off
at least 0
maxTurnsintegerModel calls the agent may make per run
1 to 1000
memoryMbinteger64 to 262144
timeoutSecondsinteger30 to 86400
modelIdstringnamestring1 to 200 characters
networkstringOne of
none,internet,allowlist,unrestrictedpausedbooleanWhether the schedule and the webhook are paused, which leaves manual and API runs alone
rebuildSpecbooleanWhether a changed instruction compiles the goal, success criteria, inputs, outputs, services and side effects again, true when omitted
runAsRootbooleanselfImprovebooleanspecobject10 fields
dockerfilestring or nullrequiredDockerfile for jobs that need tools beyond the default sandbox image, null otherwise
goalstringrequiredOne sentence on the outcome
inputsarray of objects or nullrequiredValues a run reads from /ump/input.json
3 fields per item
namestringrequiredtypestringrequiredJSON type: string, integer, number, boolean, object or array
descriptionstring
mcparray of objects or nullrequiredMCP servers the job needs
2 fields per item
serverstringrequiredName of a configured MCP server, or of the service when none is configured
whystringrequired
networkstringrequiredWhether the job needs the internet
One of
none,internetoutputsarray of objects or nullrequiredSmall structured values each run reports
3 fields per item
namestringrequiredtypestringrequiredJSON type: string, integer, number, boolean, object or array
descriptionstring
sideEffectsarray of strings or nullrequiredChanges the job makes outside its sandbox and when, such as posting a message when there is something to report
successCriteriaarray of strings or nullrequiredThe end state a successful run leaves behind, which the agent reads with the instruction
titlestringrequiredShort name for the job
scheduleobjectThe schedule the instruction asks for, which only takes effect through the job's cron and timezone
2 fields
cronstringrequiredFive-field cron expression
timezonestringrequiredIANA time zone the expression runs in, such as Europe/Berlin
timezonestringat most 100 characters
Response
26 fields
allowPrivateNetworkbooleanallowedDomainsarray of strings or nullconcurrencystringcreatedAtintegercronstring or nulldemotionstringWhy repeated fallbacks or handovers took a graduated job back to Assisted, missing while it isn't demoted
One of
fell_back,handed_overgraduatebooleanWhether the job may graduate to a main script that runs without the agent
graduatedVersioninteger or nullThe playbook version the job last graduated to Scripted mode at
hasWebhookTokenbooleanidstringimagestring or nullinstructionstringlastRunobject4 fields
idstringnumberintegerqueuedAtintegerstatusstring
limitsobject5 fields
cpusnumber0.1 to 64
maxCostUsdnumberSpend per run in USD, where 0 turns the limit off
at least 0
maxTurnsintegerModel calls the agent may make per run
1 to 1000
memoryMbinteger64 to 262144
timeoutSecondsinteger30 to 86400
modelIdstring or nullnamestringnetworkstringOne of
none,internet,allowlist,unrestrictednextModestringOne of
explore,assisted,scriptednextRunAtinteger or nullpausedbooleanWhether the schedule and the webhook are paused, which leaves manual and API runs alone
playbookVersionintegerrunAsRootbooleanselfImprovebooleanspecobject10 fields
dockerfilestring or nullDockerfile for jobs that need tools beyond the default sandbox image, null otherwise
goalstringOne sentence on the outcome
inputsarray of objects or nullValues a run reads from /ump/input.json
3 fields per item
descriptionstringnamestringtypestringJSON type: string, integer, number, boolean, object or array
mcparray of objects or nullMCP servers the job needs
2 fields per item
serverstringName of a configured MCP server, or of the service when none is configured
whystring
networkstringWhether the job needs the internet
One of
none,internetoutputsarray of objects or nullSmall structured values each run reports
3 fields per item
descriptionstringnamestringtypestringJSON type: string, integer, number, boolean, object or array
scheduleobjectThe schedule the instruction asks for, which only takes effect through the job's cron and timezone
2 fields
cronstringFive-field cron expression
timezonestringIANA time zone the expression runs in, such as Europe/Berlin
sideEffectsarray of strings or nullChanges the job makes outside its sandbox and when, such as posting a message when there is something to report
successCriteriaarray of strings or nullThe end state a successful run leaves behind, which the agent reads with the instruction
titlestringShort name for the job
timezonestring or nullupdatedAtinteger
Delete job
Section titled “Delete job”/api/jobs/{id}Path parameters
idstringrequired
Response
Run job
Section titled “Run job”/api/jobs/{id}/runsExamples and details in Start a run.
Path parameters
idstringrequired
Body application/json
inputanyRun input, available as /ump/input.json
instructionsstringAdditional instructions for this run only
at most 10000 characters
Response
2 fields
runIdstringstatusstring
List job suggestions
Section titled “List job suggestions”/api/jobs/{id}/suggestionsPath parameters
idstringrequired
Response
11 fields per item
createdAtintegeridstringkeystringThe suggestion's subject, which later runs that raise it again update
kindstringOne of
limits,credentials,instructionlimitsobjectFor kind limits: the limits applying the suggestion sets
4 fields
cpusnumber0.1 to 64
maxTurnsinteger1 to 1000
memoryMbinteger64 to 262144
timeoutSecondsinteger30 to 86400
limitsBeforeobjectFor kind limits: the job's limits when the suggestion was raised
4 fields
cpusnumber0.1 to 64
maxTurnsinteger1 to 1000
memoryMbinteger64 to 262144
timeoutSecondsinteger30 to 86400
runIdstring or nullThe latest run whose reflection raised it
runNumberinteger or nullThe number of that run, null once the run was deleted
seenintegerHow many runs' reflections raised it
textstringWhat to change and what in the run showed it, written by reflection
updatedAtinteger
Apply job suggestion
Section titled “Apply job suggestion”/api/jobs/{id}/suggestions/{suggestionId}/applyPath parameters
idstringrequiredsuggestionIdstringrequired
Response
Dismiss job suggestion
Section titled “Dismiss job suggestion”/api/jobs/{id}/suggestions/{suggestionId}/dismissPath parameters
idstringrequiredsuggestionIdstringrequired
Response
Rotate webhook token
Section titled “Rotate webhook token”/api/jobs/{id}/webhook-tokenExamples and details in Webhooks.
Path parameters
idstringrequired
Response
2 fields
tokenstringShown once
urlstring
- get
/api/eventsStream workspace events - get
/api/runsList runs - post
/api/runs/deleteDelete runs - get
/api/runs/{id}Get run - delete
/api/runs/{id}Delete run - get
/api/runs/{id}/artifactGet run artifact - get
/api/runs/{id}/artifactsList run artifacts - post
/api/runs/{id}/cancelCancel run - get
/api/runs/{id}/eventsList run events - post
/api/runs/{id}/learnLearn from run - post
/api/runs/{id}/retryRetry run - get
/api/runs/{id}/streamStream run
Stream workspace events
Section titled “Stream workspace events”/api/eventsResponse
- event
run5 data fields
deletedbooleanjobIdstringkindstringOne of
run,reflectionrunIdstringstatusstring
List runs
Section titled “List runs”/api/runsQuery parameters
pageinteger1-based page number
at least 1 · defaults to
1pageSizeintegerItems per page
1 to 100 · defaults to
25sortstringComma-separated sort keys, prefix with - for descending
at most 200 characters
searchstringFree-text search
at most 200 characters
statusstringComma-separated statuses
jobstringComma-separated job IDs
modestringComma-separated modes
triggerstringComma-separated triggers
fromintegerQueued at or after, unix ms
tointegerQueued before, unix ms
Response
4 fields
itemsarray of objects26 fields per item
costintegerMicro-USD
errorstring or nullfinishedAtinteger or nullidstringjobIdstringjobNamestringmodestringmodelLabelstring or nullThe model's display name: its label, or its ID when it has none
modelNamestring or nullThe model's ID at its provider, such as claude-sonnet-4-5
msLlmintegermsProvisioninteger or nullmsQueueinteger or nullmsToolsintegermsTotalinteger or nullnumberintegerqueuedAtintegersandboxIsolationstring or nullstartedAtinteger or nullstatusstringsummarystring or nulltokCacheReadintegertokCacheWriteintegertokInintegertokOutintegertriggerstringturnsinteger
pageintegerpageSizeintegertotalinteger
Delete runs
Section titled “Delete runs”/api/runs/deleteBody application/json
idsarray of strings or nullrequiredThe runs to delete
1 to 100 items
Response
2 fields
deletedarray of strings or nullThe runs that were deleted
skippedarray of strings or nullThe runs that were left alone because they don't exist or haven't finished
Get run
Section titled “Get run”/api/runs/{id}Examples and details in Read a run.
Path parameters
idstringrequired
Response
47 fields
cancelRequestedbooleancostintegerMicro-USD
errorstring or nullfellBackbooleanfinishedAtinteger or nullhandedOverbooleanWhether the run's main script handed a case it can't handle to the agent
idstringimageRefstring or nullinputanyinstructionsstring or nulljobDeletedbooleanWhether the run's job was deleted, so the run can no longer be retried
jobIdstringjobNamestringmodestringmodelLabelstring or nullThe model's display name: its label, or its ID when it has none
modelNamestring or nullThe model's ID at its provider, such as claude-sonnet-4-5
msLlmintegermsProvisioninteger or nullmsQueueinteger or nullmsToolsintegermsTotalinteger or nullnumberintegeroutputsanyplaybookVersionintegerqueuedAtintegerreflectionstringOne of
skipped,pending,done,failedreflectionCostintegerMicro-USD
reflectionErrorstring or nullreflectionOpsarray of objects or null13 fields per item
contentstring or nullflagsarray of strings or nullidstring or nullkindstring or nullnamestring or nullopstringOne of
add_learning,update_learning,retire_learning,upsert_script,delete_script,set_setup,set_dockerfile,propose_main,update_main,set_verify,suggestrationalestringreasonstringstatusstringOne of
applied,held,rejectedtargetstringtestobject3 fields
detailstringoutputstringstatusstringOne of
passed,failed,skipped
textstring or nullwhenstring or null
reflectionSummarystring or nullreflectionTokensintegerInput and output tokens of the reflection on this run
reflectionVersioninteger or nullThe playbook version reflection on this run created
sandboxAdapterstring or nullsandboxIsolationstring or nullstartedAtinteger or nullstatusstringsummarystring or nulltokCacheReadintegertokCacheWriteintegertokInintegertokOutintegertriggerstringtriggeredBystring or nulltriggeredByNamestring or nullName or email of the user who started the run
turnsintegerverifyCostintegerWhat the utility model's verification of a scripted run cost, in micro-USD
verifyTokensintegerInput and output tokens of the utility model's verification of a scripted run
Delete run
Section titled “Delete run”/api/runs/{id}Path parameters
idstringrequired
Response
Get run artifact
Section titled “Get run artifact”/api/runs/{id}/artifactExamples and details in Artifacts.
Path parameters
idstringrequired
Query parameters
pathstringrequired
Response
List run artifacts
Section titled “List run artifacts”/api/runs/{id}/artifactsExamples and details in Artifacts.
Path parameters
idstringrequired
Response
2 fields per item
namestringsizeinteger
Cancel run
Section titled “Cancel run”/api/runs/{id}/cancelExamples and details in Cancel, retry and learn.
Path parameters
idstringrequired
Response
List run events
Section titled “List run events”/api/runs/{id}/eventsExamples and details in Timeline and live stream.
Path parameters
idstringrequired
Query parameters
afterintegerReturn events with a sequence number greater than this
limitinteger1 to 2000 · defaults to
500
Response
6 fields per item
msinteger or nullpayloadanyseqintegerspanIdstring or nulltsintegertypestring
Learn from run
Section titled “Learn from run”/api/runs/{id}/learnExamples and details in Cancel, retry and learn.
Path parameters
idstringrequired
Response
Retry run
Section titled “Retry run”/api/runs/{id}/retryExamples and details in Cancel, retry and learn.
Path parameters
idstringrequired
Response
2 fields
runIdstringstatusstring
Stream run
Section titled “Stream run”/api/runs/{id}/streamExamples and details in Timeline and live stream.
Path parameters
idstringrequired
Query parameters
afterintegerResume after this event sequence, for clients that cannot send Last-Event-ID
Headers
Last-Event-IDstring
Responses
- event
delta3 data fields
callIdstringtextstringtypestring
- event
end1 data field
statusstring
- event
event6 data fields
msinteger or nullpayloadanyseqintegerspanIdstring or nulltsintegertypestring
- event
status1 data field
statusstring
5 fields
codestringdetailsmap of stringsfieldsarray of objects or null3 fields per item
codestringfieldstringmessagestring
messagestringrequestIdstring
5 fields
codestringdetailsmap of stringsfieldsarray of objects or null3 fields per item
codestringfieldstringmessagestring
messagestringrequestIdstring
5 fields
codestringdetailsmap of stringsfieldsarray of objects or null3 fields per item
codestringfieldstringmessagestring
messagestringrequestIdstring
Playbook
Section titled “Playbook”- get
/api/jobs/{id}/playbookGet playbook - put
/api/jobs/{id}/playbookUpdate playbook - post
/api/jobs/{id}/playbook/rollbackRollback playbook - get
/api/jobs/{id}/playbook/versionsList playbook versions - get
/api/jobs/{id}/playbook/versions/{version}Get playbook version
Get playbook
Section titled “Get playbook”/api/jobs/{id}/playbookPath parameters
idstringrequired
Response
8 fields
authorstringcontentobject6 fields
dockerfilestring or nulllearningsarray of objects or null7 fields per item
hitsintegeridstringkindstringsourcesarray of strings or nullstatusstringOne of
active,retiredtextstringwhenstring
mainstring or nullsetupstring or nulltoolkitarray of objects or null8 fields per item
argsanycontentstringdescriptionstringlangstringnamestringsideEffectsbooleansourcesarray of strings or nullstatsobject2 fields
callsintegerfailuresinteger
verifyany
createdAtintegeropsarray of objects or null13 fields per item
contentstring or nullflagsarray of strings or nullidstring or nullkindstring or nullnamestring or nullopstringOne of
add_learning,update_learning,retire_learning,upsert_script,delete_script,set_setup,set_dockerfile,propose_main,update_main,set_verify,suggestrationalestringreasonstringstatusstringOne of
applied,held,rejectedtargetstringtestobject3 fields
detailstringoutputstringstatusstringOne of
passed,failed,skipped
textstring or nullwhenstring or null
previousobject6 fields
dockerfilestring or nulllearningsarray of objects or null7 fields per item
hitsintegeridstringkindstringsourcesarray of strings or nullstatusstringOne of
active,retiredtextstringwhenstring
mainstring or nullsetupstring or nulltoolkitarray of objects or null8 fields per item
argsanycontentstringdescriptionstringlangstringnamestringsideEffectsbooleansourcesarray of strings or nullstatsobject2 fields
callsintegerfailuresinteger
verifyany
sourceRunIdstring or nullsummarystring or nullversioninteger
Update playbook
Section titled “Update playbook”/api/jobs/{id}/playbookPath parameters
idstringrequired
Body application/json
contentobjectrequired6 fields
dockerfilestring or nullrequiredlearningsarray of objects or nullrequired7 fields per item
hitsintegerrequiredidstringrequiredkindstringrequiredstatusstringrequiredOne of
active,retiredtextstringrequiredsourcesarray of strings or nullwhenstring
mainstring or nullrequiredsetupstring or nullrequiredtoolkitarray of objects or nullrequired8 fields per item
contentstringrequireddescriptionstringrequiredlangstringrequirednamestringrequiredsideEffectsbooleanrequiredstatsobjectrequired2 fields
callsintegerrequiredfailuresintegerrequired
argsanysourcesarray of strings or null
verifyany
baseVersionintegerThe version the edit started from; a newer current version makes the save fail with 409
summarystringat most 500 characters
Response
8 fields
authorstringcontentobject6 fields
dockerfilestring or nulllearningsarray of objects or null7 fields per item
hitsintegeridstringkindstringsourcesarray of strings or nullstatusstringOne of
active,retiredtextstringwhenstring
mainstring or nullsetupstring or nulltoolkitarray of objects or null8 fields per item
argsanycontentstringdescriptionstringlangstringnamestringsideEffectsbooleansourcesarray of strings or nullstatsobject2 fields
callsintegerfailuresinteger
verifyany
createdAtintegeropsarray of objects or null13 fields per item
contentstring or nullflagsarray of strings or nullidstring or nullkindstring or nullnamestring or nullopstringOne of
add_learning,update_learning,retire_learning,upsert_script,delete_script,set_setup,set_dockerfile,propose_main,update_main,set_verify,suggestrationalestringreasonstringstatusstringOne of
applied,held,rejectedtargetstringtestobject3 fields
detailstringoutputstringstatusstringOne of
passed,failed,skipped
textstring or nullwhenstring or null
previousobject6 fields
dockerfilestring or nulllearningsarray of objects or null7 fields per item
hitsintegeridstringkindstringsourcesarray of strings or nullstatusstringOne of
active,retiredtextstringwhenstring
mainstring or nullsetupstring or nulltoolkitarray of objects or null8 fields per item
argsanycontentstringdescriptionstringlangstringnamestringsideEffectsbooleansourcesarray of strings or nullstatsobject2 fields
callsintegerfailuresinteger
verifyany
sourceRunIdstring or nullsummarystring or nullversioninteger
Rollback playbook
Section titled “Rollback playbook”/api/jobs/{id}/playbook/rollbackPath parameters
idstringrequired
Body application/json
versionintegerrequiredat least 0
Response
8 fields
authorstringcontentobject6 fields
dockerfilestring or nulllearningsarray of objects or null7 fields per item
hitsintegeridstringkindstringsourcesarray of strings or nullstatusstringOne of
active,retiredtextstringwhenstring
mainstring or nullsetupstring or nulltoolkitarray of objects or null8 fields per item
argsanycontentstringdescriptionstringlangstringnamestringsideEffectsbooleansourcesarray of strings or nullstatsobject2 fields
callsintegerfailuresinteger
verifyany
createdAtintegeropsarray of objects or null13 fields per item
contentstring or nullflagsarray of strings or nullidstring or nullkindstring or nullnamestring or nullopstringOne of
add_learning,update_learning,retire_learning,upsert_script,delete_script,set_setup,set_dockerfile,propose_main,update_main,set_verify,suggestrationalestringreasonstringstatusstringOne of
applied,held,rejectedtargetstringtestobject3 fields
detailstringoutputstringstatusstringOne of
passed,failed,skipped
textstring or nullwhenstring or null
previousobject6 fields
dockerfilestring or nulllearningsarray of objects or null7 fields per item
hitsintegeridstringkindstringsourcesarray of strings or nullstatusstringOne of
active,retiredtextstringwhenstring
mainstring or nullsetupstring or nulltoolkitarray of objects or null8 fields per item
argsanycontentstringdescriptionstringlangstringnamestringsideEffectsbooleansourcesarray of strings or nullstatsobject2 fields
callsintegerfailuresinteger
verifyany
sourceRunIdstring or nullsummarystring or nullversioninteger
List playbook versions
Section titled “List playbook versions”/api/jobs/{id}/playbook/versionsPath parameters
idstringrequired
Query parameters
pageinteger1-based page number
at least 1 · defaults to
1pageSizeintegerItems per page
1 to 100 · defaults to
25sortstringComma-separated sort keys, prefix with - for descending
at most 200 characters
searchstringFree-text search
at most 200 characters
Response
4 fields
itemsarray of objects5 fields per item
authorstringcreatedAtintegersourceRunIdstring or nullsummarystring or nullversioninteger
pageintegerpageSizeintegertotalinteger
Get playbook version
Section titled “Get playbook version”/api/jobs/{id}/playbook/versions/{version}Path parameters
idstringrequiredversionintegerrequired
Response
8 fields
authorstringcontentobject6 fields
dockerfilestring or nulllearningsarray of objects or null7 fields per item
hitsintegeridstringkindstringsourcesarray of strings or nullstatusstringOne of
active,retiredtextstringwhenstring
mainstring or nullsetupstring or nulltoolkitarray of objects or null8 fields per item
argsanycontentstringdescriptionstringlangstringnamestringsideEffectsbooleansourcesarray of strings or nullstatsobject2 fields
callsintegerfailuresinteger
verifyany
createdAtintegeropsarray of objects or null13 fields per item
contentstring or nullflagsarray of strings or nullidstring or nullkindstring or nullnamestring or nullopstringOne of
add_learning,update_learning,retire_learning,upsert_script,delete_script,set_setup,set_dockerfile,propose_main,update_main,set_verify,suggestrationalestringreasonstringstatusstringOne of
applied,held,rejectedtargetstringtestobject3 fields
detailstringoutputstringstatusstringOne of
passed,failed,skipped
textstring or nullwhenstring or null
previousobject6 fields
dockerfilestring or nulllearningsarray of objects or null7 fields per item
hitsintegeridstringkindstringsourcesarray of strings or nullstatusstringOne of
active,retiredtextstringwhenstring
mainstring or nullsetupstring or nulltoolkitarray of objects or null8 fields per item
argsanycontentstringdescriptionstringlangstringnamestringsideEffectsbooleansourcesarray of strings or nullstatsobject2 fields
callsintegerfailuresinteger
verifyany
sourceRunIdstring or nullsummarystring or nullversioninteger
Job state
Section titled “Job state”- get
/api/jobs/{id}/stateList job state - get
/api/jobs/{id}/state/{key}Get job state - put
/api/jobs/{id}/state/{key}Put job state - delete
/api/jobs/{id}/state/{key}Delete job state
List job state
Section titled “List job state”/api/jobs/{id}/statePath parameters
idstringrequired
Query parameters
pageinteger1-based page number
at least 1 · defaults to
1pageSizeintegerItems per page
1 to 100 · defaults to
25sortstringComma-separated sort keys, prefix with - for descending
at most 200 characters
searchstringFree-text search
at most 200 characters
Response
4 fields
itemsarray of objects3 fields per item
keystringupdatedAtintegervaluestring
pageintegerpageSizeintegertotalinteger
Get job state
Section titled “Get job state”/api/jobs/{id}/state/{key}Path parameters
idstringrequiredkeystringrequired
Response
3 fields
keystringupdatedAtintegervaluestring
Put job state
Section titled “Put job state”/api/jobs/{id}/state/{key}Path parameters
idstringrequiredkeystringrequiredat most 200 characters
Body application/json
valuestringrequiredbaseUpdatedAtintegerThe updatedAt of the entry the edit started from, or 0 to only add a new key; a key changed or added meanwhile makes the save fail with 409
Response
Delete job state
Section titled “Delete job state”/api/jobs/{id}/state/{key}Path parameters
idstringrequiredkeystringrequired
Response
Images
Section titled “Images”- get
/api/jobs/{id}/imagesList job images - post
/api/jobs/{id}/images/rebuildRebuild job image - get
/api/jobs/{id}/images/{imageId}Get image
List job images
Section titled “List job images”/api/jobs/{id}/imagesPath parameters
idstringrequired
Query parameters
pageinteger1-based page number
at least 1 · defaults to
1pageSizeintegerItems per page
1 to 100 · defaults to
25sortstringComma-separated sort keys, prefix with - for descending
at most 200 characters
searchstringFree-text search
at most 200 characters
statusstring
Response
4 fields
itemsarray of objects11 fields per item
baseDigeststring or nullcreatedAtintegerdigeststring or nulldockerfileHashstringerrorstring or nullfinishedAtinteger or nullidstringrefstring or nullsizeBytesinteger or nullstartedAtinteger or nullstatusstring
pageintegerpageSizeintegertotalinteger
Rebuild job image
Section titled “Rebuild job image”/api/jobs/{id}/images/rebuildPath parameters
idstringrequired
Response
1 field
idstring
Get image
Section titled “Get image”/api/jobs/{id}/images/{imageId}Path parameters
idstringrequiredimageIdstringrequired
Response
13 fields
baseDigeststring or nullcreatedAtintegerdigeststring or nulldockerfilestringdockerfileHashstringerrorstring or nullfinishedAtinteger or nullidstringlogstringrefstring or nullsizeBytesinteger or nullstartedAtinteger or nullstatusstring
Webhooks
Section titled “Webhooks”Trigger webhook
Section titled “Trigger webhook”/hooks/{jobId}Examples and details in Triggers and schedules.
Path parameters
jobIdstringrequired
Headers
Authorizationstring
Body application/octet-stream
binary The raw request body.
Response
2 fields
runIdstringstatusstring
Secrets
Section titled “Secrets”- get
/api/jobs/{id}/secretsGet job secrets - put
/api/jobs/{id}/secretsSet job secrets - get
/api/secretsList secrets - post
/api/secretsCreate secret - put
/api/secrets/{id}Update secret - delete
/api/secrets/{id}Delete secret
Get job secrets
Section titled “Get job secrets”/api/jobs/{id}/secretsPath parameters
idstringrequired
Response
3 fields per item
envNamestringEnvironment variable the runs get the secret's value in, such as GITHUB_TOKEN
at most 100 characters · matches
^[A-Za-z_][A-Za-z0-9_]*$secretIdstringID of a configured secret
secretNamestring
Set job secrets
Section titled “Set job secrets”/api/jobs/{id}/secretsPath parameters
idstringrequired
Body application/json
An array, with these fields per item:
envNamestringrequiredEnvironment variable the runs get the secret's value in, such as GITHUB_TOKEN
at most 100 characters · matches
^[A-Za-z_][A-Za-z0-9_]*$secretIdstringrequiredID of a configured secret
Response
3 fields per item
envNamestringEnvironment variable the runs get the secret's value in, such as GITHUB_TOKEN
at most 100 characters · matches
^[A-Za-z_][A-Za-z0-9_]*$secretIdstringID of a configured secret
secretNamestring
List secrets
Section titled “List secrets”/api/secretsQuery parameters
pageinteger1-based page number
at least 1 · defaults to
1pageSizeintegerItems per page
1 to 100 · defaults to
25sortstringComma-separated sort keys, prefix with - for descending
at most 200 characters
searchstringFree-text search
at most 200 characters
Response
4 fields
itemsarray of objects4 fields per item
createdAtintegeridstringnamestringupdatedAtinteger
pageintegerpageSizeintegertotalinteger
Create secret
Section titled “Create secret”/api/secretsBody application/json
namestringrequired1 to 100 characters
valuestringrequiredat most 65536 characters
Response
1 field
idstring
Update secret
Section titled “Update secret”/api/secrets/{id}Path parameters
idstringrequired
Body application/json
valuestringrequiredat most 65536 characters
Response
Delete secret
Section titled “Delete secret”/api/secrets/{id}Path parameters
idstringrequired
Response
- get
/api/jobs/{id}/mcp-serversGet job mcp servers - put
/api/jobs/{id}/mcp-serversSet job mcp servers - get
/api/mcp-serversList mcp servers - post
/api/mcp-serversCreate mcp server - get
/api/mcp-servers/{id}Get mcp server - put
/api/mcp-servers/{id}Update mcp server - delete
/api/mcp-servers/{id}Delete mcp server - delete
/api/mcp-servers/{id}/oauthLogout mcp server - get
/api/mcp-servers/{id}/oauth/callbackMcp server oauth callback - post
/api/mcp-servers/{id}/oauth/loginLogin mcp server - post
/api/mcp-servers/{id}/testTest mcp server
Get job mcp servers
Section titled “Get job mcp servers”/api/jobs/{id}/mcp-serversPath parameters
idstringrequired
Response
3 fields per item
allowedToolsarray of strings or nullnull exposes all tools
serverIdstringID of a configured MCP server
serverNamestring
Set job mcp servers
Section titled “Set job mcp servers”/api/jobs/{id}/mcp-serversPath parameters
idstringrequired
Body application/json
An array, with these fields per item:
allowedToolsarray of strings or nullrequirednull exposes all tools
serverIdstringrequiredID of a configured MCP server
Response
3 fields per item
allowedToolsarray of strings or nullnull exposes all tools
serverIdstringID of a configured MCP server
serverNamestring
List mcp servers
Section titled “List mcp servers”/api/mcp-serversQuery parameters
pageinteger1-based page number
at least 1 · defaults to
1pageSizeintegerItems per page
1 to 100 · defaults to
25sortstringComma-separated sort keys, prefix with - for descending
at most 200 characters
searchstringFree-text search
at most 200 characters
transportstring
Response
4 fields
itemsarray of objects16 fields per item
argsarray of strings or nullauthobject5 fields
callbackUrlstringWhere the authorization server sends the browser back to, which an OAuth client configured by hand must allow
expiresAtinteger or nullWhen the current access token expires
loggedInAtinteger or nullWhen the OAuth login was made, also set once it expired
refreshablebooleanThe login has a refresh token, so it outlives its access token
statusstringunsupported: no login needed or possible, unknown: OAuth detection hasn't succeeded yet, bearer_token: an Authorization header is configured, not_logged_in: the server advertises OAuth but has no usable login, oauth: logged in
One of
unsupported,unknown,bearer_token,not_logged_in,oauth
commandstring or nullcreatedAtintegerdescriptionstring or nullenabledbooleanenvmap of stringsValues may reference secrets as {{secret:NAME}}
headersmap of stringsValues may reference secrets as {{secret:NAME}}
idstringnamestringoauthobject4 fields
clientIdstringA client registered with the authorization server beforehand, for servers without dynamic client registration
at most 500 characters
clientSecretstringThe client's secret, may reference a secret as {{secret:NAME}}
at most 2000 characters
omitResourcebooleanLeave the RFC 8707 resource parameter out of the login, for authorization servers like Entra ID that reject the one the server advertises
scopesarray of strings or nullScopes to request instead of the ones the server advertises
at most 50 items
toolsarray of objects or null5 fields per item
descriptionstringdestructivebooleaninputSchemaanynamestringreadOnlyboolean
toolsCachedAtinteger or nulltransportstringupdatedAtintegerurlstring or null
pageintegerpageSizeintegertotalinteger
Create mcp server
Section titled “Create mcp server”/api/mcp-serversBody application/json
namestringrequired1 to 64 characters · matches
^[A-Za-z0-9_-]+$transportstringrequiredOne of
stdio,httpargsarray of strings or nullcommandstringat most 500 characters
descriptionstringat most 500 characters
enabledbooleanenvmap of stringsheadersmap of stringsoauthobjectOAuth client settings of HTTP servers, only needed when the server's authorization server can't register clients itself
4 fields
clientIdstringA client registered with the authorization server beforehand, for servers without dynamic client registration
at most 500 characters
clientSecretstringThe client's secret, may reference a secret as {{secret:NAME}}
at most 2000 characters
omitResourcebooleanLeave the RFC 8707 resource parameter out of the login, for authorization servers like Entra ID that reject the one the server advertises
scopesarray of strings or nullScopes to request instead of the ones the server advertises
at most 50 items
urlstringat most 2000 characters
Response
16 fields
argsarray of strings or nullauthobject5 fields
callbackUrlstringWhere the authorization server sends the browser back to, which an OAuth client configured by hand must allow
expiresAtinteger or nullWhen the current access token expires
loggedInAtinteger or nullWhen the OAuth login was made, also set once it expired
refreshablebooleanThe login has a refresh token, so it outlives its access token
statusstringunsupported: no login needed or possible, unknown: OAuth detection hasn't succeeded yet, bearer_token: an Authorization header is configured, not_logged_in: the server advertises OAuth but has no usable login, oauth: logged in
One of
unsupported,unknown,bearer_token,not_logged_in,oauth
commandstring or nullcreatedAtintegerdescriptionstring or nullenabledbooleanenvmap of stringsValues may reference secrets as {{secret:NAME}}
headersmap of stringsValues may reference secrets as {{secret:NAME}}
idstringnamestringoauthobject4 fields
clientIdstringA client registered with the authorization server beforehand, for servers without dynamic client registration
at most 500 characters
clientSecretstringThe client's secret, may reference a secret as {{secret:NAME}}
at most 2000 characters
omitResourcebooleanLeave the RFC 8707 resource parameter out of the login, for authorization servers like Entra ID that reject the one the server advertises
scopesarray of strings or nullScopes to request instead of the ones the server advertises
at most 50 items
toolsarray of objects or null5 fields per item
descriptionstringdestructivebooleaninputSchemaanynamestringreadOnlyboolean
toolsCachedAtinteger or nulltransportstringupdatedAtintegerurlstring or null
Get mcp server
Section titled “Get mcp server”/api/mcp-servers/{id}Path parameters
idstringrequired
Response
16 fields
argsarray of strings or nullauthobject5 fields
callbackUrlstringWhere the authorization server sends the browser back to, which an OAuth client configured by hand must allow
expiresAtinteger or nullWhen the current access token expires
loggedInAtinteger or nullWhen the OAuth login was made, also set once it expired
refreshablebooleanThe login has a refresh token, so it outlives its access token
statusstringunsupported: no login needed or possible, unknown: OAuth detection hasn't succeeded yet, bearer_token: an Authorization header is configured, not_logged_in: the server advertises OAuth but has no usable login, oauth: logged in
One of
unsupported,unknown,bearer_token,not_logged_in,oauth
commandstring or nullcreatedAtintegerdescriptionstring or nullenabledbooleanenvmap of stringsValues may reference secrets as {{secret:NAME}}
headersmap of stringsValues may reference secrets as {{secret:NAME}}
idstringnamestringoauthobject4 fields
clientIdstringA client registered with the authorization server beforehand, for servers without dynamic client registration
at most 500 characters
clientSecretstringThe client's secret, may reference a secret as {{secret:NAME}}
at most 2000 characters
omitResourcebooleanLeave the RFC 8707 resource parameter out of the login, for authorization servers like Entra ID that reject the one the server advertises
scopesarray of strings or nullScopes to request instead of the ones the server advertises
at most 50 items
toolsarray of objects or null5 fields per item
descriptionstringdestructivebooleaninputSchemaanynamestringreadOnlyboolean
toolsCachedAtinteger or nulltransportstringupdatedAtintegerurlstring or null
Update mcp server
Section titled “Update mcp server”/api/mcp-servers/{id}Path parameters
idstringrequired
Body application/json
namestringrequired1 to 64 characters · matches
^[A-Za-z0-9_-]+$transportstringrequiredOne of
stdio,httpargsarray of strings or nullcommandstringat most 500 characters
descriptionstringat most 500 characters
enabledbooleanenvmap of stringsheadersmap of stringsoauthobjectOAuth client settings of HTTP servers, only needed when the server's authorization server can't register clients itself
4 fields
clientIdstringA client registered with the authorization server beforehand, for servers without dynamic client registration
at most 500 characters
clientSecretstringThe client's secret, may reference a secret as {{secret:NAME}}
at most 2000 characters
omitResourcebooleanLeave the RFC 8707 resource parameter out of the login, for authorization servers like Entra ID that reject the one the server advertises
scopesarray of strings or nullScopes to request instead of the ones the server advertises
at most 50 items
urlstringat most 2000 characters
Response
16 fields
argsarray of strings or nullauthobject5 fields
callbackUrlstringWhere the authorization server sends the browser back to, which an OAuth client configured by hand must allow
expiresAtinteger or nullWhen the current access token expires
loggedInAtinteger or nullWhen the OAuth login was made, also set once it expired
refreshablebooleanThe login has a refresh token, so it outlives its access token
statusstringunsupported: no login needed or possible, unknown: OAuth detection hasn't succeeded yet, bearer_token: an Authorization header is configured, not_logged_in: the server advertises OAuth but has no usable login, oauth: logged in
One of
unsupported,unknown,bearer_token,not_logged_in,oauth
commandstring or nullcreatedAtintegerdescriptionstring or nullenabledbooleanenvmap of stringsValues may reference secrets as {{secret:NAME}}
headersmap of stringsValues may reference secrets as {{secret:NAME}}
idstringnamestringoauthobject4 fields
clientIdstringA client registered with the authorization server beforehand, for servers without dynamic client registration
at most 500 characters
clientSecretstringThe client's secret, may reference a secret as {{secret:NAME}}
at most 2000 characters
omitResourcebooleanLeave the RFC 8707 resource parameter out of the login, for authorization servers like Entra ID that reject the one the server advertises
scopesarray of strings or nullScopes to request instead of the ones the server advertises
at most 50 items
toolsarray of objects or null5 fields per item
descriptionstringdestructivebooleaninputSchemaanynamestringreadOnlyboolean
toolsCachedAtinteger or nulltransportstringupdatedAtintegerurlstring or null
Delete mcp server
Section titled “Delete mcp server”/api/mcp-servers/{id}Path parameters
idstringrequired
Response
Logout mcp server
Section titled “Logout mcp server”/api/mcp-servers/{id}/oauthPath parameters
idstringrequired
Response
16 fields
argsarray of strings or nullauthobject5 fields
callbackUrlstringWhere the authorization server sends the browser back to, which an OAuth client configured by hand must allow
expiresAtinteger or nullWhen the current access token expires
loggedInAtinteger or nullWhen the OAuth login was made, also set once it expired
refreshablebooleanThe login has a refresh token, so it outlives its access token
statusstringunsupported: no login needed or possible, unknown: OAuth detection hasn't succeeded yet, bearer_token: an Authorization header is configured, not_logged_in: the server advertises OAuth but has no usable login, oauth: logged in
One of
unsupported,unknown,bearer_token,not_logged_in,oauth
commandstring or nullcreatedAtintegerdescriptionstring or nullenabledbooleanenvmap of stringsValues may reference secrets as {{secret:NAME}}
headersmap of stringsValues may reference secrets as {{secret:NAME}}
idstringnamestringoauthobject4 fields
clientIdstringA client registered with the authorization server beforehand, for servers without dynamic client registration
at most 500 characters
clientSecretstringThe client's secret, may reference a secret as {{secret:NAME}}
at most 2000 characters
omitResourcebooleanLeave the RFC 8707 resource parameter out of the login, for authorization servers like Entra ID that reject the one the server advertises
scopesarray of strings or nullScopes to request instead of the ones the server advertises
at most 50 items
toolsarray of objects or null5 fields per item
descriptionstringdestructivebooleaninputSchemaanynamestringreadOnlyboolean
toolsCachedAtinteger or nulltransportstringupdatedAtintegerurlstring or null
Mcp server oauth callback
Section titled “Mcp server oauth callback”/api/mcp-servers/{id}/oauth/callbackPath parameters
idstringrequired
Query parameters
codestringstatestringissstringerrorstringerror_descriptionstring
Response
Login mcp server
Section titled “Login mcp server”/api/mcp-servers/{id}/oauth/loginPath parameters
idstringrequired
Response
1 field
authorizationUrlstringWhere to send the browser to log in
Test mcp server
Section titled “Test mcp server”/api/mcp-servers/{id}/testPath parameters
idstringrequired
Response
5 fields
authobjectThe server's authentication status after the test
5 fields
callbackUrlstringWhere the authorization server sends the browser back to, which an OAuth client configured by hand must allow
expiresAtinteger or nullWhen the current access token expires
loggedInAtinteger or nullWhen the OAuth login was made, also set once it expired
refreshablebooleanThe login has a refresh token, so it outlives its access token
statusstringunsupported: no login needed or possible, unknown: OAuth detection hasn't succeeded yet, bearer_token: an Authorization header is configured, not_logged_in: the server advertises OAuth but has no usable login, oauth: logged in
One of
unsupported,unknown,bearer_token,not_logged_in,oauth
errorstringlatencyMsintegerokbooleantoolsarray of objects or null5 fields per item
descriptionstringdestructivebooleaninputSchemaanynamestringreadOnlyboolean
Providers
Section titled “Providers”- get
/api/catalog/modelsGet model catalog - get
/api/modelsList models - post
/api/modelsCreate model - patch
/api/models/{id}Update model - delete
/api/models/{id}Delete model - get
/api/providersList providers - post
/api/providersCreate provider - patch
/api/providers/{id}Update provider - delete
/api/providers/{id}Delete provider - put
/api/providers/{id}/models/enabledSet provider models enabled - post
/api/providers/{id}/syncSync provider models - post
/api/providers/{id}/testTest provider
Get model catalog
Section titled “Get model catalog”/api/catalog/modelsQuery parameters
kindstringOne of
anthropic,openai
Response
4 fields per item
capsobject7 fields
contextintegerjsonSchemabooleanparallelToolsbooleanpromptCachebooleanreasoningbooleantoolsbooleanvisionboolean
labelstringmodelstringpriceobject4 fields
cacheReadintegercacheWriteintegerinintegeroutinteger
List models
Section titled “List models”/api/modelsQuery parameters
pageinteger1-based page number
at least 1 · defaults to
1pageSizeintegerItems per page
1 to 100 · defaults to
25sortstringComma-separated sort keys, prefix with - for descending
at most 200 characters
searchstringFree-text search
at most 200 characters
providerstringComma-separated provider IDs
statusstringComma-separated statuses: enabled (can be picked), disabled, unlisted
Response
4 fields
itemsarray of objects13 fields per item
capsobject7 fields
contextintegerjsonSchemabooleanparallelToolsbooleanpromptCachebooleanreasoningbooleantoolsbooleanvisionboolean
contextWindowintegerenabledbooleanfollowCatalogbooleanidstringlabelstring or nullmodelstringpriceobjectMicro-USD per 1M tokens
4 fields
cacheReadintegercacheWriteintegerinintegeroutinteger
providerIdstringproviderKindstringproviderNamestringsyncedbooleanunlistedAtinteger or null
pageintegerpageSizeintegertotalinteger
Create model
Section titled “Create model”/api/modelsBody application/json
capsobjectrequired7 fields
contextintegerrequiredjsonSchemabooleanrequiredparallelToolsbooleanrequiredpromptCachebooleanrequiredreasoningbooleanrequiredtoolsbooleanrequiredvisionbooleanrequired
modelstringrequired1 to 200 characters
priceobjectrequired4 fields
cacheReadintegerrequiredcacheWriteintegerrequiredinintegerrequiredoutintegerrequired
providerIdstringrequiredlabelstringat most 100 characters
Response
1 field
idstring
Update model
Section titled “Update model”/api/models/{id}Path parameters
idstringrequired
Body application/json
capsobject7 fields
contextintegerrequiredjsonSchemabooleanrequiredparallelToolsbooleanrequiredpromptCachebooleanrequiredreasoningbooleanrequiredtoolsbooleanrequiredvisionbooleanrequired
enabledbooleanfollowCatalogbooleanlabelstringat most 100 characters
priceobject4 fields
cacheReadintegerrequiredcacheWriteintegerrequiredinintegerrequiredoutintegerrequired
Response
Delete model
Section titled “Delete model”/api/models/{id}Path parameters
idstringrequired
Response
List providers
Section titled “List providers”/api/providersQuery parameters
pageinteger1-based page number
at least 1 · defaults to
1pageSizeintegerItems per page
1 to 100 · defaults to
25sortstringComma-separated sort keys, prefix with - for descending
at most 200 characters
searchstringFree-text search
at most 200 characters
Response
4 fields
itemsarray of objects12 fields per item
apistring or nullThe API an OpenAI-compatible provider calls, null for other kinds
One of
responses,chat_completionsbaseUrlstring or nullcreatedAtintegerenabledModelCountintegerhasApiKeybooleanidstringkindstringmodelCountintegermodelSourcestringcatalog: the models.dev catalog of the kind, server: the server's model list, manual: models are added by hand
One of
catalog,server,manualnamestringsyncErrorstring or nullWhy the last sync could not read the model list
syncedAtinteger or null
pageintegerpageSizeintegertotalinteger
Create provider
Section titled “Create provider”/api/providersBody application/json
kindstringrequiredOne of
anthropic,openai,fakenamestringrequired1 to 100 characters
apistringThe API an OpenAI-compatible provider calls, responses by default
One of
responses,chat_completionsapiKeystringat most 1000 characters
baseUrlstringat most 500 characters
Response
2 fields
idstringsyncobject4 fields
addedintegererrorstringunlistedintegerupdatedinteger
Update provider
Section titled “Update provider”/api/providers/{id}Path parameters
idstringrequired
Body application/json
apistringThe API an OpenAI-compatible provider calls
One of
responses,chat_completionsapiKeystringat most 1000 characters
baseUrlstringat most 500 characters
namestring1 to 100 characters
Response
Delete provider
Section titled “Delete provider”/api/providers/{id}Path parameters
idstringrequired
Response
Set provider models enabled
Section titled “Set provider models enabled”/api/providers/{id}/models/enabledPath parameters
idstringrequired
Body application/json
enabledbooleanrequired
Response
1 field
changedinteger
Sync provider models
Section titled “Sync provider models”/api/providers/{id}/syncPath parameters
idstringrequired
Response
4 fields
addedintegererrorstringunlistedintegerupdatedinteger
Test provider
Section titled “Test provider”/api/providers/{id}/testPath parameters
idstringrequired
Body application/json
modelIdstringrequiredModel to test with
Response
4 fields
errorstringlatencyMsintegerokbooleanreplystring
Settings
Section titled “Settings”- get
/api/settingsGet settings - patch
/api/settingsUpdate settings - post
/api/settings/notifications/testTest notification
Get settings
Section titled “Get settings”/api/settingsResponse
11 fields
agentModelIdstring or nulldailySpendLimitUsdnumber0 means no limit
defaultImagestringdefaultLimitsobject5 fields
cpusnumber0.1 to 64
maxCostUsdnumberat least 0
maxTurnsinteger1 to 1000
memoryMbinteger64 to 262144
timeoutSecondsinteger30 to 86400
notifyOnarray of strings or nullOne of
run.failed,run.fell_back,job.demotednotifySecretstring or nullName of a workspace secret whose value signs every delivery
notifyWebhookUrlstring or nullreflectionModelIdstring or nullretentionDaysintegerat least 1
usageUnitstringWhether the UI shows usage as a price in US dollars or as input and output tokens, while spend limits and model prices stay in US dollars
One of
price,tokensutilityModelIdstring or null
Update settings
Section titled “Update settings”/api/settingsBody application/json
agentModelIdstringdailySpendLimitUsdnumberat least 0
defaultImagestringAn empty value resets to the server default
at most 500 characters
defaultLimitsobject5 fields
cpusnumberrequired0.1 to 64
maxCostUsdnumberrequiredat least 0
maxTurnsintegerrequired1 to 1000
memoryMbintegerrequired64 to 262144
timeoutSecondsintegerrequired30 to 86400
notifyOnarray of strings or nullOne of
run.failed,run.fell_back,job.demotednotifySecretstringAn empty value sends deliveries unsigned
at most 100 characters
notifyWebhookUrlstringAn empty value turns notifications off
at most 2000 characters
reflectionModelIdstringretentionDaysinteger1 to 3650
usageUnitstringOne of
price,tokensutilityModelIdstring
Response
11 fields
agentModelIdstring or nulldailySpendLimitUsdnumber0 means no limit
defaultImagestringdefaultLimitsobject5 fields
cpusnumber0.1 to 64
maxCostUsdnumberat least 0
maxTurnsinteger1 to 1000
memoryMbinteger64 to 262144
timeoutSecondsinteger30 to 86400
notifyOnarray of strings or nullOne of
run.failed,run.fell_back,job.demotednotifySecretstring or nullName of a workspace secret whose value signs every delivery
notifyWebhookUrlstring or nullreflectionModelIdstring or nullretentionDaysintegerat least 1
usageUnitstringWhether the UI shows usage as a price in US dollars or as input and output tokens, while spend limits and model prices stay in US dollars
One of
price,tokensutilityModelIdstring or null
Test notification
Section titled “Test notification”/api/settings/notifications/testResponse
Get job stats
Section titled “Get job stats”/api/jobs/{id}/statsPath parameters
idstringrequired
Query parameters
rangestringOne of
7d,30d,90d· defaults to"30d"
Response
10 fields
avgCostintegerAverage cost per run in micro-USD, including learning
avgTokensintegerAverage input and output tokens per run, including learning, like avgCost
failedintegerFailed and timed out runs
maxMsintegerDuration of the longest run
p50MsintegerrunCountintegerRuns of the range other than skipped ones
runsarray of objects or null10 fields per item
costintegerMicro-USD, including learning
modestringmsTotalinteger or nullnumberintegerplaybookVersionintegerqueuedAtintegerrunIdstringstatusstringtokensintegerInput and output tokens, including learning, like cost
turnsinteger
succeededintegersuccessRatenumberversionsarray of objects or null3 fields per item
authorstringcreatedAtintegerversioninteger
Get stats overview
Section titled “Get stats overview”/api/stats/overviewQuery parameters
rangestringOne of
24h,7d,30d,90d· defaults to"7d"
Response
14 fields
bucketstringWidth of the perDay and costByJob buckets: an hour for the 24h range and a UTC day for the others
One of
hour,daybucketMsintegerWidth of one bucket in milliseconds
costByJobarray of objects or null5 fields per item
costintegerMicro-USD, including learning
dayintegerStart of the bucket in unix milliseconds, like DayBucket.day
jobIdstringjobNamestringtokensintegerInput and output tokens, including learning, like cost
currentobject10 fields
failedintegerlearningCostintegerMicro-USD
learningTokensintegerInput and output tokens of reflection and verification, like learningCost
p50Msintegerp95MsintegerrunCostintegerMicro-USD
runTokensintegerInput and output tokens of the runs, like runCost
runsintegersucceededintegersuccessRatenumber
fromintegerStart of the period that current, perDay and costByJob cover, the start of its first bucket, in unix milliseconds
gettingCheaperarray of objects or nullUp to five jobs whose latest successful runs cost less than their first ones, the biggest drop in cost first
9 fields per item
dropPctnumberHow much less the latest runs cost, from 0 to 1
firstCostintegerAverage cost of the first three successful runs, in micro-USD
firstTokensintegerAverage input and output tokens of the first three successful runs
jobIdstringjobNamestringrecentCostintegerAverage cost of the latest three successful runs, in micro-USD
recentTokensintegerAverage input and output tokens of the latest three successful runs
runsintegertokenDropPctnumberHow many fewer tokens the latest runs used, from 0 to 1, and negative when they used more
gettingLeanerarray of objects or nullUp to five jobs whose latest successful runs used fewer tokens than their first ones, the biggest drop in tokens first
9 fields per item
dropPctnumberHow much less the latest runs cost, from 0 to 1
firstCostintegerAverage cost of the first three successful runs, in micro-USD
firstTokensintegerAverage input and output tokens of the first three successful runs
jobIdstringjobNamestringrecentCostintegerAverage cost of the latest three successful runs, in micro-USD
recentTokensintegerAverage input and output tokens of the latest three successful runs
runsintegertokenDropPctnumberHow many fewer tokens the latest runs used, from 0 to 1, and negative when they used more
hasRunsbooleanWhether the workspace has any run at all, from any date
perDayarray of objects or nullOne bucket for every hour or day of the period, oldest first, whose runs other than skipped ones add up to current.runs
9 fields per item
cancelledintegercostintegerMicro-USD, including learning
dayintegerStart of the bucket in unix milliseconds, a UTC day or, for the 24h range, an hour
failedintegerotherintegerskippedintegersucceededintegertimedOutintegertokensintegerInput and output tokens, including learning, like cost
previousobjectThe period before, cut off at the point in time the current period has reached
10 fields
failedintegerlearningCostintegerMicro-USD
learningTokensintegerInput and output tokens of reflection and verification, like learningCost
p50Msintegerp95MsintegerrunCostintegerMicro-USD
runTokensintegerInput and output tokens of the runs, like runCost
runsintegersucceededintegersuccessRatenumber
rangestringrecentFailuresarray of objects or null10 fields per item
errorstring or nullidstringjobIdstringjobNamestringmodestringnumberintegerqueuedAtintegerstartedAtinteger or nullstatusstringsummarystring or null
runningarray of objects or null10 fields per item
errorstring or nullidstringjobIdstringjobNamestringmodestringnumberintegerqueuedAtintegerstartedAtinteger or nullstatusstringsummarystring or null
tointegerEnd of the period, exclusive: the end of the bucket that holds the present, in unix milliseconds
API tokens
Section titled “API tokens”List api tokens
Section titled “List api tokens”/api/tokensQuery parameters
pageinteger1-based page number
at least 1 · defaults to
1pageSizeintegerItems per page
1 to 100 · defaults to
25sortstringComma-separated sort keys, prefix with - for descending
at most 200 characters
searchstringFree-text search
at most 200 characters
Response
4 fields
itemsarray of objects6 fields per item
createdAtintegercreatedBystring or nullName or email address of the user whose role the token acts with
expiresAtinteger or nullidstringlastUsedAtinteger or nullnamestring
pageintegerpageSizeintegertotalinteger
Create api token
Section titled “Create api token”/api/tokensBody application/json
namestringrequired1 to 100 characters
expiresAtintegerUnix milliseconds; omit for a token that never expires
Response
2 fields
apiTokenobject6 fields
createdAtintegercreatedBystring or nullName or email address of the user whose role the token acts with
expiresAtinteger or nullidstringlastUsedAtinteger or nullnamestring
tokenstringShown once, store it now
Delete api token
Section titled “Delete api token”/api/tokens/{id}Path parameters
idstringrequired
Response
- get
/api/auth/callback/{provider}Login callback - get
/api/auth/login/{provider}Login - post
/api/auth/logoutLogout - post
/api/auth/passkey/sign-inPasskey sign in - post
/api/auth/passkey/sign-in/optionsBegin passkey sign in - post
/api/auth/passkey/sign-upPasskey sign up - post
/api/auth/passkey/sign-up/optionsBegin passkey sign up - get
/api/auth/providersList login providers - get
/api/auth/setupGet setup - post
/api/auth/sign-in-linkUse sign in link - get
/api/users/meGet current user - patch
/api/users/meUpdate my profile - get
/api/users/me/passkeysList my passkeys - post
/api/users/me/passkeysAdd passkey - post
/api/users/me/passkeys/optionsBegin add passkey - patch
/api/users/me/passkeys/{id}Rename passkey - delete
/api/users/me/passkeys/{id}Delete passkey
Login callback
Section titled “Login callback”/api/auth/callback/{provider}Path parameters
providerstringrequiredID of the sign-in provider the login started with
Query parameters
codestringstatestringerrorstring
Cookies
umpteenth_loginobject
Response
/api/auth/login/{provider}Path parameters
providerstringrequiredID of the sign-in provider
Query parameters
redirectstringRelative path to return to after login
Response
Logout
Section titled “Logout”/api/auth/logoutCookies
umpteenth_sessionobject
Response
Passkey sign in
Section titled “Passkey sign in”/api/auth/passkey/sign-inCookies
umpteenth_passkeyobject
Body application/json
credentialanyrequiredThe PublicKeyCredential the browser created or signed with, in its JSON form
Response
1 field
redirectstringRelative path to continue at
Begin passkey sign in
Section titled “Begin passkey sign in”/api/auth/passkey/sign-in/optionsBody application/json
redirectstringRelative path to return to after signing in
Response
1 field
optionsanyThe publicKey options for navigator.credentials, in their JSON form
Passkey sign up
Section titled “Passkey sign up”/api/auth/passkey/sign-upCookies
umpteenth_passkeyobject
Body application/json
credentialanyrequiredThe PublicKeyCredential the browser created or signed with, in its JSON form
Response
1 field
redirectstringRelative path to continue at
Begin passkey sign up
Section titled “Begin passkey sign up”/api/auth/passkey/sign-up/optionsBody application/json
namestringrequired1 to 100 characters
emailstringat most 254 characters
redirectstringRelative path to continue at, which is the invite page for a sign-up through an invite link
Response
1 field
optionsanyThe publicKey options for navigator.credentials, in their JSON form
List login providers
Section titled “List login providers”/api/auth/providersResponse
5 fields per item
iconstringImage URL for the sign-in button, an http(s) URL or a data:image URI
idstringnamestringprimarybooleanWhether the provider gets the large sign-in button
typestringHow the provider signs in, which picks the default icon, where passkey stands for passkey accounts
One of
oidc,github,passkey
Get setup
Section titled “Get setup”/api/auth/setupResponse
1 field
openbooleanWhether the instance has no users yet, so whoever opens it creates its first account, an instance admin, with a passkey
Use sign in link
Section titled “Use sign in link”/api/auth/sign-in-linkBody application/json
tokenstringrequiredThe token at the end of the sign-in link
at least 1 characters
Response
1 field
redirectstringRelative path to continue at
Get current user
Section titled “Get current user”/api/users/meResponse
11 fields
emailstring or nullidstringisAdminbooleanWhether the user is an instance admin, who manages every user and workspace
loginProviderstringID of the sign-in provider the session signed in with
namestring or nullpasskeyAccountbooleanWhether the user signs in with passkeys and keeps their own name and email address, instead of a sign-in provider
picturestring or nullProfile picture URL from the sign-in provider
viaTokenbooleanworkspaceobject4 fields
idstringnamestringrolestringThe caller's role in the workspace, which is their creator's for an API token
One of
owner,admin,memberusageUnitstringWhether the UI shows usage as a price in US dollars or as input and output tokens, the workspace's usageUnit setting
One of
price,tokens
workspaceIdstringworkspacesEnabledbooleanWhether people can have several workspaces on this instance
Update my profile
Section titled “Update my profile”/api/users/meBody application/json
namestringrequired1 to 100 characters
emailstringat most 254 characters
Response
List my passkeys
Section titled “List my passkeys”/api/users/me/passkeysResponse
4 fields per item
createdAtintegeridstringlastUsedAtinteger or nullnamestring
Add passkey
Section titled “Add passkey”/api/users/me/passkeysCookies
umpteenth_passkeyobject
Body application/json
credentialanyrequiredThe PublicKeyCredential the browser created or signed with, in its JSON form
Response
4 fields
createdAtintegeridstringlastUsedAtinteger or nullnamestring
Begin add passkey
Section titled “Begin add passkey”/api/users/me/passkeys/optionsResponse
1 field
optionsanyThe publicKey options for navigator.credentials, in their JSON form
Rename passkey
Section titled “Rename passkey”/api/users/me/passkeys/{id}Path parameters
idstringrequired
Body application/json
namestringrequired1 to 100 characters
Response
Delete passkey
Section titled “Delete passkey”/api/users/me/passkeys/{id}Path parameters
idstringrequired
Response
System
Section titled “System”Get system info
Section titled “Get system info”/api/system/infoResponse
4 fields
allowPrivateNetworkTargetsbooleandatabasestringsandboxobject7 fields
adapterstringarchstringcapabilitiesobject2 fields
limitsobject3 fields
cpubooleanmemorybooleanpidsboolean
networksarray of strings or null
imageBuildsbooleanisolationstringOne of
container,gvisor,microvmruntimeErrorstringversionstring
versionstring
- get
/api/admin/usersList users - post
/api/admin/usersCreate user - patch
/api/admin/users/{id}Update user - post
/api/admin/users/{id}/sign-in-linkCreate sign in link - get
/api/admin/workspacesList all workspaces - delete
/api/admin/workspaces/{id}Delete any workspace
List users
Section titled “List users”/api/admin/usersQuery parameters
pageinteger1-based page number
at least 1 · defaults to
1pageSizeintegerItems per page
1 to 100 · defaults to
25sortstringComma-separated sort keys, prefix with - for descending
at most 200 characters
searchstringFree-text search
at most 200 characters
Response
4 fields
itemsarray of objects12 fields per item
createdAtintegerdeactivatedbooleanemailstring or nullidstringisAdminbooleanissuerstringThe issuer URL of the sign-in provider the account belongs to
lastLoginAtinteger or nullnamestring or nullpasskeyAccountbooleanWhether the account signs in with passkeys, which instance admins manage, instead of a sign-in provider
picturestring or nullproviderstringThe name of the sign-in provider the account belongs to, or the issuer's host when no configured provider has its issuer
workspaceCountinteger
pageintegerpageSizeintegertotalinteger
Create user
Section titled “Create user”/api/admin/usersBody application/json
namestringrequired1 to 100 characters
emailstringCounts as verified, so invites sent to it reach the account
at most 254 characters
isAdminbooleanMakes the account an instance admin
Response
2 fields
signInLinkobject2 fields
expiresAtintegerurlstringSigns in the account once, so its owner can add a passkey
userobject12 fields
createdAtintegerdeactivatedbooleanemailstring or nullidstringisAdminbooleanissuerstringThe issuer URL of the sign-in provider the account belongs to
lastLoginAtinteger or nullnamestring or nullpasskeyAccountbooleanWhether the account signs in with passkeys, which instance admins manage, instead of a sign-in provider
picturestring or nullproviderstringThe name of the sign-in provider the account belongs to, or the issuer's host when no configured provider has its issuer
workspaceCountinteger
Update user
Section titled “Update user”/api/admin/users/{id}Path parameters
idstringrequired
Body application/json
deactivatedbooleanA deactivated user can't sign in, and their sessions and API tokens stop working
isAdminbooleanMakes a passkey account an instance admin or takes that away, while sign-in providers decide on their own accounts
Response
Create sign in link
Section titled “Create sign in link”/api/admin/users/{id}/sign-in-linkPath parameters
idstringrequired
Response
2 fields
expiresAtintegerurlstringSigns in the account once, so its owner can add a passkey
List all workspaces
Section titled “List all workspaces”/api/admin/workspacesQuery parameters
pageinteger1-based page number
at least 1 · defaults to
1pageSizeintegerItems per page
1 to 100 · defaults to
25sortstringComma-separated sort keys, prefix with - for descending
at most 200 characters
searchstringFree-text search
at most 200 characters
Response
4 fields
itemsarray of objects7 fields per item
createdAtintegeridstringmemberCountintegernamestringownerEmailstring or nullownerIdstring or nullownerNamestring or null
pageintegerpageSizeintegertotalinteger
Delete any workspace
Section titled “Delete any workspace”/api/admin/workspaces/{id}Path parameters
idstringrequired
Response
Skills
Section titled “Skills”- get
/api/jobs/{id}/skillsGet job skills - put
/api/jobs/{id}/skillsSet job skills - get
/api/skillsList skills - post
/api/skillsCreate skill - post
/api/skills/deleteDelete skills - post
/api/skills/importImport skill - post
/api/skills/import/previewPreview skill import - get
/api/skills/{id}Get skill - put
/api/skills/{id}Replace skill - delete
/api/skills/{id}Delete skill - get
/api/skills/{id}/downloadDownload skill - get
/api/skills/{id}/fileGet skill file - post
/api/skills/{id}/importReimport skill
Get job skills
Section titled “Get job skills”/api/jobs/{id}/skillsPath parameters
idstringrequired
Response
2 fields per item
skillIdstringID of an uploaded skill
skillNamestring
Set job skills
Section titled “Set job skills”/api/jobs/{id}/skillsPath parameters
idstringrequired
Body application/json
An array, with these fields per item:
skillIdstringrequiredID of an uploaded skill
Response
2 fields per item
skillIdstringID of an uploaded skill
skillNamestring
List skills
Section titled “List skills”/api/skillsQuery parameters
pageinteger1-based page number
at least 1 · defaults to
1pageSizeintegerItems per page
1 to 100 · defaults to
25sortstringComma-separated sort keys, prefix with - for descending
at most 200 characters
searchstringFree-text search
at most 200 characters
Response
4 fields
itemsarray of objects12 fields per item
archiveSizeintegerSize of the stored zip in bytes
contentHashstringcreatedAtintegerdescriptionstringfileCountintegerfilesarray of objects or null3 fields per item
executablebooleanpathstringsizeinteger
idstringjobCountintegerHow many jobs use the skill
namestringsizeintegerUnpacked size in bytes
sourceUrlstring or nullThe link the skill was imported from, null for an uploaded skill
updatedAtinteger
pageintegerpageSizeintegertotalinteger
Create skill
Section titled “Create skill”/api/skillsBody application/zip
binary The raw request body.
Response
12 fields
archiveSizeintegerSize of the stored zip in bytes
contentHashstringcreatedAtintegerdescriptionstringfileCountintegerfilesarray of objects or null3 fields per item
executablebooleanpathstringsizeinteger
idstringjobCountintegerHow many jobs use the skill
namestringsizeintegerUnpacked size in bytes
sourceUrlstring or nullThe link the skill was imported from, null for an uploaded skill
updatedAtinteger
Delete skills
Section titled “Delete skills”/api/skills/deleteBody application/json
idsarray of strings or nullrequiredThe skills to delete
1 to 100 items
Response
2 fields
deletedarray of strings or nullThe skills that were deleted
skippedarray of strings or nullThe skills that were left alone because they don't exist, such as ones deleted meanwhile
Import skill
Section titled “Import skill”/api/skills/importBody application/json
urlstringrequiredA GitHub link to a skill's folder or its SKILL.md, or a link to a zip or .skill file
1 to 2000 characters
pathsarray of strings or nullThe skills to add from a GitHub folder of several, as folders relative to it like the preview lists them
at most 50 items
Response
1 field
skillsarray of objects or null12 fields per item
archiveSizeintegerSize of the stored zip in bytes
contentHashstringcreatedAtintegerdescriptionstringfileCountintegerfilesarray of objects or null3 fields per item
executablebooleanpathstringsizeinteger
idstringjobCountintegerHow many jobs use the skill
namestringsizeintegerUnpacked size in bytes
sourceUrlstring or nullThe link the skill was imported from, null for an uploaded skill
updatedAtinteger
Preview skill import
Section titled “Preview skill import”/api/skills/import/previewBody application/json
urlstringrequiredA GitHub link to a folder or repository with skills
1 to 2000 characters
Response
1 field
skillsarray of objects or null6 fields per item
descriptionstringexistsbooleanWhether the workspace already has a skill with this name
namestringpathstringThe skill's folder, relative to the folder the link points at
problemstringWhy the skill can't be added, such as a SKILL.md without a description
urlstringA link to the skill's own folder
Get skill
Section titled “Get skill”/api/skills/{id}Path parameters
idstringrequired
Response
12 fields
archiveSizeintegerSize of the stored zip in bytes
contentHashstringcreatedAtintegerdescriptionstringfileCountintegerfilesarray of objects or null3 fields per item
executablebooleanpathstringsizeinteger
idstringjobCountintegerHow many jobs use the skill
namestringsizeintegerUnpacked size in bytes
sourceUrlstring or nullThe link the skill was imported from, null for an uploaded skill
updatedAtinteger
Replace skill
Section titled “Replace skill”/api/skills/{id}Path parameters
idstringrequired
Body application/zip
binary The raw request body.
Response
12 fields
archiveSizeintegerSize of the stored zip in bytes
contentHashstringcreatedAtintegerdescriptionstringfileCountintegerfilesarray of objects or null3 fields per item
executablebooleanpathstringsizeinteger
idstringjobCountintegerHow many jobs use the skill
namestringsizeintegerUnpacked size in bytes
sourceUrlstring or nullThe link the skill was imported from, null for an uploaded skill
updatedAtinteger
Delete skill
Section titled “Delete skill”/api/skills/{id}Path parameters
idstringrequired
Response
Download skill
Section titled “Download skill”/api/skills/{id}/downloadPath parameters
idstringrequired
Response
Get skill file
Section titled “Get skill file”/api/skills/{id}/filePath parameters
idstringrequired
Query parameters
pathstringrequired
Response
Reimport skill
Section titled “Reimport skill”/api/skills/{id}/importPath parameters
idstringrequired
Body application/json
urlstringThe link to import the new version from, the skill's own link when omitted
at most 2000 characters
Response
12 fields
archiveSizeintegerSize of the stored zip in bytes
contentHashstringcreatedAtintegerdescriptionstringfileCountintegerfilesarray of objects or null3 fields per item
executablebooleanpathstringsizeinteger
idstringjobCountintegerHow many jobs use the skill
namestringsizeintegerUnpacked size in bytes
sourceUrlstring or nullThe link the skill was imported from, null for an uploaded skill
updatedAtinteger
Workspace members
Section titled “Workspace members”- post
/api/invites/acceptAccept invite - post
/api/invites/lookupLookup invite - get
/api/workspace/invitesList workspace invites - post
/api/workspace/invitesCreate workspace invite - delete
/api/workspace/invites/{id}Delete workspace invite - get
/api/workspace/membersList workspace members - patch
/api/workspace/members/{userId}Update workspace member - delete
/api/workspace/members/{userId}Remove workspace member
Accept invite
Section titled “Accept invite”/api/invites/acceptBody application/json
tokenstringrequired1 to 200 characters
Response
3 fields
idstringnamestringrolestringThe caller's role in the workspace
One of
owner,admin,member
Lookup invite
Section titled “Lookup invite”/api/invites/lookupBody application/json
tokenstringrequired1 to 200 characters
Response
6 fields
alreadyMemberbooleanexpiredbooleanexpiresAtintegerinvitedBystring or nullrolestringOne of
admin,memberworkspaceNamestring
List workspace invites
Section titled “List workspace invites”/api/workspace/invitesResponse
6 fields per item
createdAtintegeremailstring or nullThe address an email invite waits for, empty for an invite link
expiresAtintegeridstringinvitedBystring or nullrolestringOne of
admin,member
Create workspace invite
Section titled “Create workspace invite”/api/workspace/invitesBody application/json
expiresInDaysintegerrequired1 to 30 · defaults to
7rolestringrequiredOne of
admin,memberemailstringInvites this address, whose owner joins the next time they sign in with it verified; omit it for an invite link
at most 320 characters
Response
1 field
urlstringThe invite link, shown once
Delete workspace invite
Section titled “Delete workspace invite”/api/workspace/invites/{id}Path parameters
idstringrequired
Response
List workspace members
Section titled “List workspace members”/api/workspace/membersQuery parameters
pageinteger1-based page number
at least 1 · defaults to
1pageSizeintegerItems per page
1 to 100 · defaults to
25sortstringComma-separated sort keys, prefix with - for descending
at most 200 characters
searchstringFree-text search
at most 200 characters
Response
4 fields
itemsarray of objects8 fields per item
deactivatedbooleanWhether an instance admin deactivated the user
emailstring or nulljoinedAtintegerlastLoginAtinteger or nullnamestring or nullpicturestring or nullrolestringOne of
owner,admin,memberuserIdstring
pageintegerpageSizeintegertotalinteger
Update workspace member
Section titled “Update workspace member”/api/workspace/members/{userId}Path parameters
userIdstringrequired
Body application/json
rolestringrequiredThe owner changes by handing over ownership instead
One of
admin,member
Response
Remove workspace member
Section titled “Remove workspace member”/api/workspace/members/{userId}Path parameters
userIdstringrequired
Response
Workspaces
Section titled “Workspaces”- get
/api/workspaceGet workspace - patch
/api/workspaceUpdate workspace - delete
/api/workspaceDelete workspace - post
/api/workspace/leaveLeave workspace - post
/api/workspace/transferTransfer workspace - get
/api/workspacesList my workspaces - post
/api/workspacesCreate workspace - post
/api/workspaces/{id}/switchSwitch workspace
Get workspace
Section titled “Get workspace”/api/workspaceResponse
3 fields
idstringnamestringrolestringThe caller's role in the workspace
One of
owner,admin,member
Update workspace
Section titled “Update workspace”/api/workspaceBody application/json
namestringrequired1 to 100 characters
Response
3 fields
idstringnamestringrolestringThe caller's role in the workspace
One of
owner,admin,member
Delete workspace
Section titled “Delete workspace”/api/workspaceResponse
3 fields
idstringnamestringrolestringThe caller's role in the workspace
One of
owner,admin,member
Leave workspace
Section titled “Leave workspace”/api/workspace/leaveResponse
3 fields
idstringnamestringrolestringThe caller's role in the workspace
One of
owner,admin,member
Transfer workspace
Section titled “Transfer workspace”/api/workspace/transferBody application/json
userIdstringrequiredThe member who becomes the owner
Response
List my workspaces
Section titled “List my workspaces”/api/workspacesResponse
3 fields per item
idstringnamestringrolestringThe caller's role in the workspace
One of
owner,admin,member
Create workspace
Section titled “Create workspace”/api/workspacesBody application/json
namestringrequired1 to 100 characters
Response
3 fields
idstringnamestringrolestringThe caller's role in the workspace
One of
owner,admin,member
Switch workspace
Section titled “Switch workspace”/api/workspaces/{id}/switchPath parameters
idstringrequired
Response
3 fields
idstringnamestringrolestringThe caller's role in the workspace
One of
owner,admin,member