Sandbox API

OSWorld

GenStudio DesktopEnv execute (`task.json` + desktop episode). Not Harbor `task.toml`. Prefer `/sandbox/osworld/v2`.

GenStudio DesktopEnv execute (task.json + desktop episode). Not Harbor task.toml. Prefer /sandbox/osworld/v2.

Every request needs a credential — see Authentication.

MethodPathSummary
GET/sandbox/osworld/api-versionsApi Versions
GET/sandbox/osworld/capabilitiesOSWorld execute capabilities
GET/sandbox/osworld/jobsList CTP rollout execution history, newest first
GET/sandbox/osworld/jobs/{job_id}Get OSWorld job status
GET/sandbox/osworld/jobs/{job_id}/artifactsList job artifacts
GET/sandbox/osworld/jobs/{job_id}/artifacts/archiveDownload job archive
POST/sandbox/osworld/jobs/{job_id}/cancelCancel OSWorld job
GET/sandbox/osworld/jobs/{job_id}/eventsSSE job events
POST/sandbox/osworld/jobs/{job_id}/retryRetry a stopped rollout using its immutable request
POST/sandbox/osworld/jobs/execute-tasksEnqueue OSWorld execute job
POST/sandbox/osworld/jobs/validate-taskEnqueue verifier-only OSWorld task preflight
GET/sandbox/osworld/v1/capabilitiesOSWorld execute capabilities
GET/sandbox/osworld/v1/jobsList CTP rollout execution history, newest first
GET/sandbox/osworld/v1/jobs/{job_id}Get OSWorld job status
GET/sandbox/osworld/v1/jobs/{job_id}/artifactsList job artifacts
GET/sandbox/osworld/v1/jobs/{job_id}/artifacts/archiveDownload job archive
POST/sandbox/osworld/v1/jobs/{job_id}/cancelCancel OSWorld job
GET/sandbox/osworld/v1/jobs/{job_id}/eventsSSE job events
POST/sandbox/osworld/v1/jobs/{job_id}/retryRetry a stopped rollout using its immutable request
POST/sandbox/osworld/v1/jobs/execute-tasksEnqueue OSWorld execute job
POST/sandbox/osworld/v1/jobs/validate-taskEnqueue verifier-only OSWorld task preflight
GET/sandbox/osworld/v2/capabilitiesOSWorld execute capabilities
GET/sandbox/osworld/v2/jobsList CTP rollout execution history, newest first
GET/sandbox/osworld/v2/jobs/{job_id}Get OSWorld job status
GET/sandbox/osworld/v2/jobs/{job_id}/artifactsList job artifacts
GET/sandbox/osworld/v2/jobs/{job_id}/artifacts/archiveDownload job archive
POST/sandbox/osworld/v2/jobs/{job_id}/cancelCancel OSWorld job
GET/sandbox/osworld/v2/jobs/{job_id}/eventsSSE job events
POST/sandbox/osworld/v2/jobs/{job_id}/retryRetry a stopped rollout using its immutable request
POST/sandbox/osworld/v2/jobs/execute-tasksEnqueue OSWorld execute job
POST/sandbox/osworld/v2/jobs/validate-taskEnqueue verifier-only OSWorld task preflight

Common headers

Accepted on every endpoint on this page.

NameInTypeRequiredDescription
x-correlation-idheaderstringnoEnd-to-end correlation id for this eval run. When set, the gateway and downstream services honor it verbatim in logs, Cloud Trace span attributes, async job payloads, and Langfuse trace.id. When omitted, the gateway generates a ULID and echoes it on the response.

Endpoints

Api Versions

GET /sandbox/osworld/api-versions

Responses

StatusDescriptionBody
200Successful Responseobject

OSWorld execute capabilities

GET /sandbox/osworld/capabilities

Responses

StatusDescriptionBody
200Successful Responseobject

List CTP rollout execution history, newest first

GET /sandbox/osworld/jobs

Parameters

NameInTypeRequiredDescription
ctp_project_idquerystringyes
ctp_run_idquerystring | nullno
limitqueryintegerno
cursorquerystring | nullno
X-Sandbox-Project-Idheaderstring | nullnoProject to bill and rate-limit this request against. Validated against the credential: a project-scoped token may only name its own project, and gets 403 otherwise. Defaults to the token's project when omitted.
X-Sandbox-Tenant-Idheaderstring | nullnoTenant for this request. Must match the credential's tenant when the credential carries one.

Responses

StatusDescriptionBody
200Successful Responseobject
422Validation ErrorHTTPValidationError

Get OSWorld job status

GET /sandbox/osworld/jobs/{job_id}

Parameters

NameInTypeRequiredDescription
job_idpathstringyes
X-Sandbox-Project-Idheaderstring | nullnoProject to bill and rate-limit this request against. Validated against the credential: a project-scoped token may only name its own project, and gets 403 otherwise. Defaults to the token's project when omitted.
X-Sandbox-Tenant-Idheaderstring | nullnoTenant for this request. Must match the credential's tenant when the credential carries one.

Responses

StatusDescriptionBody
200Successful Responseobject
422Validation ErrorHTTPValidationError

List job artifacts

GET /sandbox/osworld/jobs/{job_id}/artifacts

Parameters

NameInTypeRequiredDescription
job_idpathstringyes
X-Sandbox-Project-Idheaderstring | nullnoProject to bill and rate-limit this request against. Validated against the credential: a project-scoped token may only name its own project, and gets 403 otherwise. Defaults to the token's project when omitted.
X-Sandbox-Tenant-Idheaderstring | nullnoTenant for this request. Must match the credential's tenant when the credential carries one.

Responses

StatusDescriptionBody
200Successful Responseobject
422Validation ErrorHTTPValidationError

Download job archive

GET /sandbox/osworld/jobs/{job_id}/artifacts/archive

Parameters

NameInTypeRequiredDescription
job_idpathstringyes
presignedquerybooleanno
asquerystring | nullnoSet to "json" to receive {"url": ...} instead of a 307 redirect. Requires presigned=true.
X-Sandbox-Project-Idheaderstring | nullnoProject to bill and rate-limit this request against. Validated against the credential: a project-scoped token may only name its own project, and gets 403 otherwise. Defaults to the token's project when omitted.
X-Sandbox-Tenant-Idheaderstring | nullnoTenant for this request. Must match the credential's tenant when the credential carries one.

Responses

StatusDescriptionBody
200Successful Responseany
422Validation ErrorHTTPValidationError

Cancel OSWorld job

POST /sandbox/osworld/jobs/{job_id}/cancel

Parameters

NameInTypeRequiredDescription
job_idpathstringyes
X-Sandbox-Project-Idheaderstring | nullnoProject to bill and rate-limit this request against. Validated against the credential: a project-scoped token may only name its own project, and gets 403 otherwise. Defaults to the token's project when omitted.
X-Sandbox-Tenant-Idheaderstring | nullnoTenant for this request. Must match the credential's tenant when the credential carries one.

Request body

application/json, optional

Responses

StatusDescriptionBody
200Successful Responseobject
422Validation ErrorHTTPValidationError

SSE job events

GET /sandbox/osworld/jobs/{job_id}/events

Parameters

NameInTypeRequiredDescription
job_idpathstringyes
Last-Event-IDheaderstring | nullno
X-Sandbox-Project-Idheaderstring | nullnoProject to bill and rate-limit this request against. Validated against the credential: a project-scoped token may only name its own project, and gets 403 otherwise. Defaults to the token's project when omitted.
X-Sandbox-Tenant-Idheaderstring | nullnoTenant for this request. Must match the credential's tenant when the credential carries one.

Responses

StatusDescriptionBody
200Successful Responseany
422Validation ErrorHTTPValidationError

Retry a stopped rollout using its immutable request

POST /sandbox/osworld/jobs/{job_id}/retry

Parameters

NameInTypeRequiredDescription
job_idpathstringyes
Idempotency-Keyheaderstringyes
X-Sandbox-Project-Idheaderstring | nullnoProject to bill and rate-limit this request against. Validated against the credential: a project-scoped token may only name its own project, and gets 403 otherwise. Defaults to the token's project when omitted.
X-Sandbox-Tenant-Idheaderstring | nullnoTenant for this request. Must match the credential's tenant when the credential carries one.

Request body

application/json, required — JobActionRequest

FieldTypeRequiredDescription
ctp_project_idstringyes
requested_bystringyes
ctp_rollout_execution_idstring | nullno

Responses

StatusDescriptionBody
202Successful Responseobject
422Validation ErrorHTTPValidationError

Enqueue OSWorld execute job

POST /sandbox/osworld/jobs/execute-tasks

Parameters

NameInTypeRequiredDescription
Idempotency-Keyheaderstring | nullno
X-Sandbox-Job-Idheaderstring | nullno
X-Sandbox-Project-Idheaderstring | nullnoProject to bill and rate-limit this request against. Validated against the credential: a project-scoped token may only name its own project, and gets 403 otherwise. Defaults to the token's project when omitted.
X-Sandbox-Tenant-Idheaderstring | nullnoTenant for this request. Must match the credential's tenant when the credential carries one.

Request body

application/json, required — OSWorldExecuteTasksRequest

FieldTypeRequiredDescription
task_slugstringyes
agentsOSWorldAgentBody[]yes
metadataobjectnotask_archive_url; CTP Studio rollouts also require immutable ctp_rollout_execution_id from Core
labelsobjectno
enginestring | nullnoIgnored — OSWorld service always runs DesktopEnv episodes
sandboxstring | nullno
image_refstring | nullno
gateway_workspacestring | nullno
gateway_projectstring | nullno
gateway_end_userstring | nullno
gateway_request_idstring | nullno
paired_environmentobject | nullno

Responses

StatusDescriptionBody
202Successful Responseobject
422Validation ErrorHTTPValidationError
429Quota refused before this request created a job or enqueued work. Retry the same key after capacity recovers.—

Enqueue verifier-only OSWorld task preflight

POST /sandbox/osworld/jobs/validate-task

Runs no agent or LLM. The archive must contain the strict host-only/preflight/manifest.json version-1 manifest with exactly known_correct (expect pass), unchanged (expect fail), and known_incorrect (expect fail). Each case gets a fresh desktop using the same image, normal task setup/readiness, hidden setup, and the existing evaluator. Results have purpose=task_authoring, valid_for_scoring=false, and set valid_for_passk=true only when all expectations match. Setup/import/evaluator/runtime/timeout faults are errored; score mismatches fail validation. Artifacts contain sanitized logs and digests only, never hidden fixture contents.

Parameters

NameInTypeRequiredDescription
Idempotency-Keyheaderstring | nullno
X-Sandbox-Job-Idheaderstring | nullno
X-Sandbox-Project-Idheaderstring | nullnoProject to bill and rate-limit this request against. Validated against the credential: a project-scoped token may only name its own project, and gets 403 otherwise. Defaults to the token's project when omitted.
X-Sandbox-Tenant-Idheaderstring | nullnoTenant for this request. Must match the credential's tenant when the credential carries one.

Request body

application/json, required — OSWorldValidateTaskRequest

FieldTypeRequiredDescription
task_slugstringyesLogical OSWorld task slug
metadataobjectnoMust contain task_archive_url for the task-authoring archive
labelsobjectno
image_refstring | nullnoOptional immutable desktop image override used for every case
paired_environmentobject | nullno

Responses

StatusDescriptionBody
202Successful Responseobject
422Validation ErrorHTTPValidationError
429Quota refused before this request created a job or enqueued work. Retry the same key after capacity recovers.—

OSWorld execute capabilities

GET /sandbox/osworld/v1/capabilities

Responses

StatusDescriptionBody
200Successful Responseobject

List CTP rollout execution history, newest first

GET /sandbox/osworld/v1/jobs

Parameters

NameInTypeRequiredDescription
ctp_project_idquerystringyes
ctp_run_idquerystring | nullno
limitqueryintegerno
cursorquerystring | nullno
X-Sandbox-Project-Idheaderstring | nullnoProject to bill and rate-limit this request against. Validated against the credential: a project-scoped token may only name its own project, and gets 403 otherwise. Defaults to the token's project when omitted.
X-Sandbox-Tenant-Idheaderstring | nullnoTenant for this request. Must match the credential's tenant when the credential carries one.

Responses

StatusDescriptionBody
200Successful Responseobject
422Validation ErrorHTTPValidationError

Get OSWorld job status

GET /sandbox/osworld/v1/jobs/{job_id}

Parameters

NameInTypeRequiredDescription
job_idpathstringyes
X-Sandbox-Project-Idheaderstring | nullnoProject to bill and rate-limit this request against. Validated against the credential: a project-scoped token may only name its own project, and gets 403 otherwise. Defaults to the token's project when omitted.
X-Sandbox-Tenant-Idheaderstring | nullnoTenant for this request. Must match the credential's tenant when the credential carries one.

Responses

StatusDescriptionBody
200Successful Responseobject
422Validation ErrorHTTPValidationError

List job artifacts

GET /sandbox/osworld/v1/jobs/{job_id}/artifacts

Parameters

NameInTypeRequiredDescription
job_idpathstringyes
X-Sandbox-Project-Idheaderstring | nullnoProject to bill and rate-limit this request against. Validated against the credential: a project-scoped token may only name its own project, and gets 403 otherwise. Defaults to the token's project when omitted.
X-Sandbox-Tenant-Idheaderstring | nullnoTenant for this request. Must match the credential's tenant when the credential carries one.

Responses

StatusDescriptionBody
200Successful Responseobject
422Validation ErrorHTTPValidationError

Download job archive

GET /sandbox/osworld/v1/jobs/{job_id}/artifacts/archive

Parameters

NameInTypeRequiredDescription
job_idpathstringyes
presignedquerybooleanno
asquerystring | nullnoSet to "json" to receive {"url": ...} instead of a 307 redirect. Requires presigned=true.
X-Sandbox-Project-Idheaderstring | nullnoProject to bill and rate-limit this request against. Validated against the credential: a project-scoped token may only name its own project, and gets 403 otherwise. Defaults to the token's project when omitted.
X-Sandbox-Tenant-Idheaderstring | nullnoTenant for this request. Must match the credential's tenant when the credential carries one.

Responses

StatusDescriptionBody
200Successful Responseany
422Validation ErrorHTTPValidationError

Cancel OSWorld job

POST /sandbox/osworld/v1/jobs/{job_id}/cancel

Parameters

NameInTypeRequiredDescription
job_idpathstringyes
X-Sandbox-Project-Idheaderstring | nullnoProject to bill and rate-limit this request against. Validated against the credential: a project-scoped token may only name its own project, and gets 403 otherwise. Defaults to the token's project when omitted.
X-Sandbox-Tenant-Idheaderstring | nullnoTenant for this request. Must match the credential's tenant when the credential carries one.

Request body

application/json, optional

Responses

StatusDescriptionBody
200Successful Responseobject
422Validation ErrorHTTPValidationError

SSE job events

GET /sandbox/osworld/v1/jobs/{job_id}/events

Parameters

NameInTypeRequiredDescription
job_idpathstringyes
Last-Event-IDheaderstring | nullno
X-Sandbox-Project-Idheaderstring | nullnoProject to bill and rate-limit this request against. Validated against the credential: a project-scoped token may only name its own project, and gets 403 otherwise. Defaults to the token's project when omitted.
X-Sandbox-Tenant-Idheaderstring | nullnoTenant for this request. Must match the credential's tenant when the credential carries one.

Responses

StatusDescriptionBody
200Successful Responseany
422Validation ErrorHTTPValidationError

Retry a stopped rollout using its immutable request

POST /sandbox/osworld/v1/jobs/{job_id}/retry

Parameters

NameInTypeRequiredDescription
job_idpathstringyes
Idempotency-Keyheaderstringyes
X-Sandbox-Project-Idheaderstring | nullnoProject to bill and rate-limit this request against. Validated against the credential: a project-scoped token may only name its own project, and gets 403 otherwise. Defaults to the token's project when omitted.
X-Sandbox-Tenant-Idheaderstring | nullnoTenant for this request. Must match the credential's tenant when the credential carries one.

Request body

application/json, required — JobActionRequest

FieldTypeRequiredDescription
ctp_project_idstringyes
requested_bystringyes
ctp_rollout_execution_idstring | nullno

Responses

StatusDescriptionBody
202Successful Responseobject
422Validation ErrorHTTPValidationError

Enqueue OSWorld execute job

POST /sandbox/osworld/v1/jobs/execute-tasks

Parameters

NameInTypeRequiredDescription
Idempotency-Keyheaderstring | nullno
X-Sandbox-Job-Idheaderstring | nullno
X-Sandbox-Project-Idheaderstring | nullnoProject to bill and rate-limit this request against. Validated against the credential: a project-scoped token may only name its own project, and gets 403 otherwise. Defaults to the token's project when omitted.
X-Sandbox-Tenant-Idheaderstring | nullnoTenant for this request. Must match the credential's tenant when the credential carries one.

Request body

application/json, required — OSWorldExecuteTasksRequest

FieldTypeRequiredDescription
task_slugstringyes
agentsOSWorldAgentBody[]yes
metadataobjectnotask_archive_url; CTP Studio rollouts also require immutable ctp_rollout_execution_id from Core
labelsobjectno
enginestring | nullnoIgnored — OSWorld service always runs DesktopEnv episodes
sandboxstring | nullno
image_refstring | nullno
gateway_workspacestring | nullno
gateway_projectstring | nullno
gateway_end_userstring | nullno
gateway_request_idstring | nullno
paired_environmentobject | nullno

Responses

StatusDescriptionBody
202Successful Responseobject
422Validation ErrorHTTPValidationError
429Quota refused before this request created a job or enqueued work. Retry the same key after capacity recovers.—

Enqueue verifier-only OSWorld task preflight

POST /sandbox/osworld/v1/jobs/validate-task

Runs no agent or LLM. The archive must contain the strict host-only/preflight/manifest.json version-1 manifest with exactly known_correct (expect pass), unchanged (expect fail), and known_incorrect (expect fail). Each case gets a fresh desktop using the same image, normal task setup/readiness, hidden setup, and the existing evaluator. Results have purpose=task_authoring, valid_for_scoring=false, and set valid_for_passk=true only when all expectations match. Setup/import/evaluator/runtime/timeout faults are errored; score mismatches fail validation. Artifacts contain sanitized logs and digests only, never hidden fixture contents.

Parameters

NameInTypeRequiredDescription
Idempotency-Keyheaderstring | nullno
X-Sandbox-Job-Idheaderstring | nullno
X-Sandbox-Project-Idheaderstring | nullnoProject to bill and rate-limit this request against. Validated against the credential: a project-scoped token may only name its own project, and gets 403 otherwise. Defaults to the token's project when omitted.
X-Sandbox-Tenant-Idheaderstring | nullnoTenant for this request. Must match the credential's tenant when the credential carries one.

Request body

application/json, required — OSWorldValidateTaskRequest

FieldTypeRequiredDescription
task_slugstringyesLogical OSWorld task slug
metadataobjectnoMust contain task_archive_url for the task-authoring archive
labelsobjectno
image_refstring | nullnoOptional immutable desktop image override used for every case
paired_environmentobject | nullno

Responses

StatusDescriptionBody
202Successful Responseobject
422Validation ErrorHTTPValidationError
429Quota refused before this request created a job or enqueued work. Retry the same key after capacity recovers.—

OSWorld execute capabilities

GET /sandbox/osworld/v2/capabilities

Responses

StatusDescriptionBody
200Successful Responseobject

List CTP rollout execution history, newest first

GET /sandbox/osworld/v2/jobs

Parameters

NameInTypeRequiredDescription
ctp_project_idquerystringyes
ctp_run_idquerystring | nullno
limitqueryintegerno
cursorquerystring | nullno
X-Sandbox-Project-Idheaderstring | nullnoProject to bill and rate-limit this request against. Validated against the credential: a project-scoped token may only name its own project, and gets 403 otherwise. Defaults to the token's project when omitted.
X-Sandbox-Tenant-Idheaderstring | nullnoTenant for this request. Must match the credential's tenant when the credential carries one.

Responses

StatusDescriptionBody
200Successful Responseobject
422Validation ErrorHTTPValidationError

Get OSWorld job status

GET /sandbox/osworld/v2/jobs/{job_id}

Parameters

NameInTypeRequiredDescription
job_idpathstringyes
X-Sandbox-Project-Idheaderstring | nullnoProject to bill and rate-limit this request against. Validated against the credential: a project-scoped token may only name its own project, and gets 403 otherwise. Defaults to the token's project when omitted.
X-Sandbox-Tenant-Idheaderstring | nullnoTenant for this request. Must match the credential's tenant when the credential carries one.

Responses

StatusDescriptionBody
200Successful Responseobject
422Validation ErrorHTTPValidationError

List job artifacts

GET /sandbox/osworld/v2/jobs/{job_id}/artifacts

Parameters

NameInTypeRequiredDescription
job_idpathstringyes
X-Sandbox-Project-Idheaderstring | nullnoProject to bill and rate-limit this request against. Validated against the credential: a project-scoped token may only name its own project, and gets 403 otherwise. Defaults to the token's project when omitted.
X-Sandbox-Tenant-Idheaderstring | nullnoTenant for this request. Must match the credential's tenant when the credential carries one.

Responses

StatusDescriptionBody
200Successful Responseobject
422Validation ErrorHTTPValidationError

Download job archive

GET /sandbox/osworld/v2/jobs/{job_id}/artifacts/archive

Parameters

NameInTypeRequiredDescription
job_idpathstringyes
presignedquerybooleanno
asquerystring | nullnoSet to "json" to receive {"url": ...} instead of a 307 redirect. Requires presigned=true.
X-Sandbox-Project-Idheaderstring | nullnoProject to bill and rate-limit this request against. Validated against the credential: a project-scoped token may only name its own project, and gets 403 otherwise. Defaults to the token's project when omitted.
X-Sandbox-Tenant-Idheaderstring | nullnoTenant for this request. Must match the credential's tenant when the credential carries one.

Responses

StatusDescriptionBody
200Successful Responseany
422Validation ErrorHTTPValidationError

Cancel OSWorld job

POST /sandbox/osworld/v2/jobs/{job_id}/cancel

Parameters

NameInTypeRequiredDescription
job_idpathstringyes
X-Sandbox-Project-Idheaderstring | nullnoProject to bill and rate-limit this request against. Validated against the credential: a project-scoped token may only name its own project, and gets 403 otherwise. Defaults to the token's project when omitted.
X-Sandbox-Tenant-Idheaderstring | nullnoTenant for this request. Must match the credential's tenant when the credential carries one.

Request body

application/json, optional

Responses

StatusDescriptionBody
200Successful Responseobject
422Validation ErrorHTTPValidationError

SSE job events

GET /sandbox/osworld/v2/jobs/{job_id}/events

Parameters

NameInTypeRequiredDescription
job_idpathstringyes
Last-Event-IDheaderstring | nullno
X-Sandbox-Project-Idheaderstring | nullnoProject to bill and rate-limit this request against. Validated against the credential: a project-scoped token may only name its own project, and gets 403 otherwise. Defaults to the token's project when omitted.
X-Sandbox-Tenant-Idheaderstring | nullnoTenant for this request. Must match the credential's tenant when the credential carries one.

Responses

StatusDescriptionBody
200Successful Responseany
422Validation ErrorHTTPValidationError

Retry a stopped rollout using its immutable request

POST /sandbox/osworld/v2/jobs/{job_id}/retry

Parameters

NameInTypeRequiredDescription
job_idpathstringyes
Idempotency-Keyheaderstringyes
X-Sandbox-Project-Idheaderstring | nullnoProject to bill and rate-limit this request against. Validated against the credential: a project-scoped token may only name its own project, and gets 403 otherwise. Defaults to the token's project when omitted.
X-Sandbox-Tenant-Idheaderstring | nullnoTenant for this request. Must match the credential's tenant when the credential carries one.

Request body

application/json, required — JobActionRequest

FieldTypeRequiredDescription
ctp_project_idstringyes
requested_bystringyes
ctp_rollout_execution_idstring | nullno

Responses

StatusDescriptionBody
202Successful Responseobject
422Validation ErrorHTTPValidationError

Enqueue OSWorld execute job

POST /sandbox/osworld/v2/jobs/execute-tasks

Parameters

NameInTypeRequiredDescription
Idempotency-Keyheaderstring | nullno
X-Sandbox-Job-Idheaderstring | nullno
X-Sandbox-Project-Idheaderstring | nullnoProject to bill and rate-limit this request against. Validated against the credential: a project-scoped token may only name its own project, and gets 403 otherwise. Defaults to the token's project when omitted.
X-Sandbox-Tenant-Idheaderstring | nullnoTenant for this request. Must match the credential's tenant when the credential carries one.

Request body

application/json, required — OSWorldExecuteTasksRequest

FieldTypeRequiredDescription
task_slugstringyes
agentsOSWorldAgentBody[]yes
metadataobjectnotask_archive_url; CTP Studio rollouts also require immutable ctp_rollout_execution_id from Core
labelsobjectno
enginestring | nullnoIgnored — OSWorld service always runs DesktopEnv episodes
sandboxstring | nullno
image_refstring | nullno
gateway_workspacestring | nullno
gateway_projectstring | nullno
gateway_end_userstring | nullno
gateway_request_idstring | nullno
paired_environmentobject | nullno

Responses

StatusDescriptionBody
202Successful Responseobject
422Validation ErrorHTTPValidationError
429Quota refused before this request created a job or enqueued work. Retry the same key after capacity recovers.—

Enqueue verifier-only OSWorld task preflight

POST /sandbox/osworld/v2/jobs/validate-task

Runs no agent or LLM. The archive must contain the strict host-only/preflight/manifest.json version-1 manifest with exactly known_correct (expect pass), unchanged (expect fail), and known_incorrect (expect fail). Each case gets a fresh desktop using the same image, normal task setup/readiness, hidden setup, and the existing evaluator. Results have purpose=task_authoring, valid_for_scoring=false, and set valid_for_passk=true only when all expectations match. Setup/import/evaluator/runtime/timeout faults are errored; score mismatches fail validation. Artifacts contain sanitized logs and digests only, never hidden fixture contents.

Parameters

NameInTypeRequiredDescription
Idempotency-Keyheaderstring | nullno
X-Sandbox-Job-Idheaderstring | nullno
X-Sandbox-Project-Idheaderstring | nullnoProject to bill and rate-limit this request against. Validated against the credential: a project-scoped token may only name its own project, and gets 403 otherwise. Defaults to the token's project when omitted.
X-Sandbox-Tenant-Idheaderstring | nullnoTenant for this request. Must match the credential's tenant when the credential carries one.

Request body

application/json, required — OSWorldValidateTaskRequest

FieldTypeRequiredDescription
task_slugstringyesLogical OSWorld task slug
metadataobjectnoMust contain task_archive_url for the task-authoring archive
labelsobjectno
image_refstring | nullnoOptional immutable desktop image override used for every case
paired_environmentobject | nullno

Responses

StatusDescriptionBody
202Successful Responseobject
422Validation ErrorHTTPValidationError
429Quota refused before this request created a job or enqueued work. Retry the same key after capacity recovers.—

Schemas

The object shapes referenced above.

HTTPValidationError

FieldTypeRequiredDescription
detailValidationError[]no

JobActionRequest

FieldTypeRequiredDescription
ctp_project_idstringyes
requested_bystringyes
ctp_rollout_execution_idstring | nullno

OSWorldAgentBody

FieldTypeRequiredDescription
namestringnoLogical agent label Default: "".
harbor_agentstringyesOSWorld agent id (GenStudio field name kept for compatibility)
modelstringyesprovider/model id (e.g. openai/gpt-4o). Required — same egress as Harbor.
pass_at_kintegernoDefault: 1.
paramsobjectno

OSWorldExecuteTasksRequest

FieldTypeRequiredDescription
task_slugstringyes
agentsOSWorldAgentBody[]yes
metadataobjectnotask_archive_url; CTP Studio rollouts also require immutable ctp_rollout_execution_id from Core
labelsobjectno
enginestring | nullnoIgnored — OSWorld service always runs DesktopEnv episodes
sandboxstring | nullno
image_refstring | nullno
gateway_workspacestring | nullno
gateway_projectstring | nullno
gateway_end_userstring | nullno
gateway_request_idstring | nullno
paired_environmentobject | nullno

OSWorldValidateTaskRequest

FieldTypeRequiredDescription
task_slugstringyesLogical OSWorld task slug
metadataobjectnoMust contain task_archive_url for the task-authoring archive
labelsobjectno
image_refstring | nullnoOptional immutable desktop image override used for every case
paired_environmentobject | nullno

ValidationError

FieldTypeRequiredDescription
locstring | integer[]yes
msgstringyes
typestringyes
inputanyno
ctxobjectno

Machine-readable spec: OpenAPI YAML.

On this page

Common headersEndpointsApi VersionsResponsesOSWorld execute capabilitiesResponsesList CTP rollout execution history, newest firstParametersResponsesGet OSWorld job statusParametersResponsesList job artifactsParametersResponsesDownload job archiveParametersResponsesCancel OSWorld jobParametersRequest bodyResponsesSSE job eventsParametersResponsesRetry a stopped rollout using its immutable requestParametersRequest bodyResponsesEnqueue OSWorld execute jobParametersRequest bodyResponsesEnqueue verifier-only OSWorld task preflightParametersRequest bodyResponsesOSWorld execute capabilitiesResponsesList CTP rollout execution history, newest firstParametersResponsesGet OSWorld job statusParametersResponsesList job artifactsParametersResponsesDownload job archiveParametersResponsesCancel OSWorld jobParametersRequest bodyResponsesSSE job eventsParametersResponsesRetry a stopped rollout using its immutable requestParametersRequest bodyResponsesEnqueue OSWorld execute jobParametersRequest bodyResponsesEnqueue verifier-only OSWorld task preflightParametersRequest bodyResponsesOSWorld execute capabilitiesResponsesList CTP rollout execution history, newest firstParametersResponsesGet OSWorld job statusParametersResponsesList job artifactsParametersResponsesDownload job archiveParametersResponsesCancel OSWorld jobParametersRequest bodyResponsesSSE job eventsParametersResponsesRetry a stopped rollout using its immutable requestParametersRequest bodyResponsesEnqueue OSWorld execute jobParametersRequest bodyResponsesEnqueue verifier-only OSWorld task preflightParametersRequest bodyResponsesSchemasHTTPValidationErrorJobActionRequestOSWorldAgentBodyOSWorldExecuteTasksRequestOSWorldValidateTaskRequestValidationError