tessl.io Launch Runs API
The Launch Runs API from tessl.io — 4 operation(s) for launch runs.
The Launch Runs API from tessl.io — 4 operation(s) for launch runs.
openapi: 3.1.1
info:
title: Tessl Admin Keys Launch Runs API
version: 1.0.0
description: Admin-scoped API keys for support tooling.
servers:
- url: https://api.tessl.io
tags:
- name: Launch Runs
paths:
/experimental/launch-runs:
post:
tags:
- Launch Runs
description: Creates a launch run and starts the CloudLaunch workflow against it.
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- workspaceName
- skill
- repo
properties:
workspaceName:
minLength: 1
type: string
skill:
minLength: 1
description: 'The plugin to install and the skill to run. A value without a `file:` prefix means a registry ref (either a full `workspace/plugin[@version]` or a bare `plugin[@version]` name resolved across the workspaces the caller can see); a value with a `file:` prefix means a local plugin path inside the cloned repo (e.g. file:apps/cli/plugins/agent-enablement). Either form may carry a trailing `#skill` selector (e.g. `workspace/plugin@1.0.0#implement-ticket` or `file:apps/cli/plugins/agent-enablement#implement-ticket`) that installs the whole plugin and launches the one named skill; it is required when the plugin exposes more than one skill. This is a wire convention: the value is stored verbatim and interpreted downstream by the launch recipe.'
type: string
repo:
minLength: 1
type: string
baseBranch:
minLength: 1
type: string
snapshot:
minLength: 1
description: Commit SHA or tag pinning the repo snapshot for this run. Pins the checked-out repository, not the sandbox runtime image — use `sandboxSnapshot` for the latter.
type: string
sandboxSnapshot:
minLength: 1
description: Operational override selecting the sandbox runtime image the launch run is created from. Distinct from `snapshot`, which pins the checked-out repository. When omitted the run falls back to the configured default.
type: string
workdir:
minLength: 1
type: string
agent:
minLength: 1
type: string
model:
minLength: 1
type: string
encryptedEnvUpload:
description: Reference to an encrypted-input upload (e.g. an env-file) delivered to the launch sandbox. Must be an existing, viewable, encrypted upload. Mutually exclusive with `environmentId`.
type: object
required:
- uploadKey
properties:
uploadKey:
minLength: 1
type: string
environmentId:
format: uuid
description: Id of a workspace environment whose sealed `.env` payload is opened server-side at launch and delivered to the sandbox. Must belong to the launch workspace. A live reference resolved when each run starts, so environment edits affect subsequently started and resumed runs and a deleted environment fails the launch. Mutually exclusive with `encryptedEnvUpload`.
type: string
uploads:
description: Additional upload keys (context archives, config tarballs) keyed by a caller-defined logical name. Each must be an existing, viewable upload.
type: object
additionalProperties:
minLength: 1
type: string
inputs:
description: Skill-specific inputs forwarded to the launched skill, keyed by the skill's own placeholder names (e.g. ISSUE_IDENTIFIER, ISSUE_TITLE, ISSUE_DESCRIPTION).
type: object
additionalProperties:
type: string
instructions:
description: Free-text instructions appended to the skill prompt the launch agent runs, mirroring the local `--instructions` flag. Distinct from the structured `inputs` channel.
type: string
label:
maxLength: 256
type: string
metadata:
type: object
additionalProperties: {}
parameters:
- schema:
type: string
example: Bearer <token>
in: header
name: Authorization
required: false
responses:
'201':
description: Default Response
content:
application/json:
schema:
type: object
required:
- links
- data
properties:
links:
type: object
required:
- self
properties:
self:
format: uri
type: string
data:
type: object
required:
- id
- type
- attributes
properties:
id:
format: uuid
type: string
type:
type: string
enum:
- launch-run
attributes:
type: object
required:
- workflowId
- status
- label
- createdBy
- createdAt
properties:
workflowId:
anyOf:
- type: string
- type: 'null'
status:
anyOf:
- type: string
enum:
- pending
- type: string
enum:
- completed
- type: string
enum:
- failed
label:
anyOf:
- type: string
- type: 'null'
createdBy:
anyOf:
- format: uuid
type: string
- type: 'null'
createdAt:
format: date-time
type: string
'401':
description: Unauthorized
content:
application/json:
schema:
description: Unauthorized
type: object
required:
- error
properties:
error:
type: object
required:
- title
- status
- message
properties:
title:
type: string
enum:
- Unauthorized
status:
type: number
enum:
- 401
message:
type: string
'403':
description: Forbidden
content:
application/json:
schema:
description: Forbidden
type: object
required:
- error
properties:
error:
type: object
required:
- title
- status
- message
properties:
title:
type: string
enum:
- Forbidden
status:
type: number
enum:
- 403
message:
type: string
'404':
description: Not Found
content:
application/json:
schema:
description: Not Found
type: object
required:
- error
properties:
error:
type: object
required:
- title
- status
- message
properties:
title:
type: string
enum:
- Not Found
status:
type: number
enum:
- 404
message:
type: string
'500':
description: Internal Server Error
content:
application/json:
schema:
description: Internal Server Error
type: object
required:
- error
properties:
error:
type: object
required:
- title
- status
- message
properties:
title:
type: string
enum:
- Internal Server Error
status:
type: number
enum:
- 500
message:
type: string
get:
tags:
- Launch Runs
description: Lists launch runs in the workspaces the caller can view, newest-first.
parameters:
- schema:
default: -id
anyOf:
- type: array
items:
anyOf:
- type: string
enum:
- createdAt
- type: string
enum:
- -createdAt
- type: string
enum:
- updatedAt
- type: string
enum:
- -updatedAt
- type: string
enum:
- id
- type: string
enum:
- -id
- anyOf:
- type: string
enum:
- createdAt
- type: string
enum:
- -createdAt
- type: string
enum:
- updatedAt
- type: string
enum:
- -updatedAt
- type: string
enum:
- id
- type: string
enum:
- -id
in: query
name: sort
required: false
- schema:
minimum: 1
maximum: 100
default: 100
type: number
in: query
name: page[size]
required: false
- schema:
type: string
in: query
name: page[after]
required: false
- schema:
type: string
in: query
name: page[before]
required: false
- schema:
format: uuid
type: string
in: query
name: workspaceId
required: false
- schema:
anyOf:
- type: string
enum:
- pending
- type: string
enum:
- completed
- type: string
enum:
- failed
in: query
name: status
required: false
- schema:
type: string
example: Bearer <token>
in: header
name: Authorization
required: false
responses:
'200':
description: Default Response
content:
application/json:
schema:
type: object
required:
- links
- meta
- data
properties:
links:
type: object
required:
- self
- next
- prev
properties:
self:
format: uri
type: string
next:
anyOf:
- format: uri
type: string
- type: 'null'
prev:
anyOf:
- format: uri
type: string
- type: 'null'
meta:
type: object
required:
- count
properties:
count:
type: number
data:
type: array
items:
type: object
required:
- id
- type
- attributes
properties:
id:
format: uuid
type: string
type:
type: string
enum:
- launch-run
attributes:
type: object
required:
- status
- config
- label
- workspace
- createdBy
- createdAt
- updatedAt
- hasResult
properties:
status:
anyOf:
- type: string
enum:
- pending
- type: string
enum:
- completed
- type: string
enum:
- failed
config:
type: object
required:
- skillRef
- repoUrl
- agent
- model
properties:
skillRef:
type: string
repoUrl:
type: string
agent:
type: string
model:
type: string
label:
anyOf:
- type: string
- type: 'null'
workspace:
type: object
required:
- id
- name
properties:
id:
format: uuid
type: string
name:
type: string
createdBy:
anyOf:
- type: object
required:
- id
- firstName
- lastName
properties:
id:
format: uuid
type: string
firstName:
anyOf:
- type: string
- type: 'null'
lastName:
anyOf:
- type: string
- type: 'null'
- type: 'null'
createdAt:
format: date-time
type: string
updatedAt:
format: date-time
type: string
failureReason:
type: object
required:
- code
- message
properties:
code:
type: string
message:
type: string
hasResult:
type: boolean
'401':
description: Unauthorized
content:
application/json:
schema:
description: Unauthorized
type: object
required:
- error
properties:
error:
type: object
required:
- title
- status
- message
properties:
title:
type: string
enum:
- Unauthorized
status:
type: number
enum:
- 401
message:
type: string
'403':
description: Forbidden
content:
application/json:
schema:
description: Forbidden
type: object
required:
- error
properties:
error:
type: object
required:
- title
- status
- message
properties:
title:
type: string
enum:
- Forbidden
status:
type: number
enum:
- 403
message:
type: string
'404':
description: Not Found
content:
application/json:
schema:
description: Not Found
type: object
required:
- error
properties:
error:
type: object
required:
- title
- status
- message
properties:
title:
type: string
enum:
- Not Found
status:
type: number
enum:
- 404
message:
type: string
'500':
description: Internal Server Error
content:
application/json:
schema:
description: Internal Server Error
type: object
required:
- error
properties:
error:
type: object
required:
- title
- status
- message
properties:
title:
type: string
enum:
- Internal Server Error
status:
type: number
enum:
- 500
message:
type: string
/experimental/launch-runs/{id}/resume:
post:
tags:
- Launch Runs
description: 'Resumes a completed launch run: creates a new child run that reruns the CloudLaunch recipe with the parent run’s workspace restored, so the launch agent continues its prior session.'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
instructions:
description: Free-text instructions for the resumed run. Overrides the parent run’s instructions when supplied; omitted keeps the parent’s.
type: string
label:
maxLength: 256
type: string
parameters:
- schema:
format: uuid
type: string
in: path
name: id
required: true
- schema:
type: string
example: Bearer <token>
in: header
name: Authorization
required: false
responses:
'201':
description: Default Response
content:
application/json:
schema:
type: object
required:
- links
- data
properties:
links:
type: object
required:
- self
properties:
self:
format: uri
type: string
data:
type: object
required:
- id
- type
- attributes
properties:
id:
format: uuid
type: string
type:
type: string
enum:
- launch-run
attributes:
type: object
required:
- workflowId
- status
- label
- createdBy
- createdAt
properties:
workflowId:
anyOf:
- type: string
- type: 'null'
status:
anyOf:
- type: string
enum:
- pending
- type: string
enum:
- completed
- type: string
enum:
- failed
label:
anyOf:
- type: string
- type: 'null'
createdBy:
anyOf:
- format: uuid
type: string
- type: 'null'
createdAt:
format: date-time
type: string
'401':
description: Unauthorized
content:
application/json:
schema:
description: Unauthorized
type: object
required:
- error
properties:
error:
type: object
required:
- title
- status
- message
properties:
title:
type: string
enum:
- Unauthorized
status:
type: number
enum:
- 401
message:
type: string
'403':
description: Forbidden
content:
application/json:
schema:
description: Forbidden
type: object
required:
- error
properties:
error:
type: object
required:
- title
- status
- message
properties:
title:
type: string
enum:
- Forbidden
status:
type: number
enum:
- 403
message:
type: string
'404':
description: Not Found
content:
application/json:
schema:
description: Not Found
type: object
required:
- error
properties:
error:
type: object
required:
- title
- status
- message
properties:
title:
type: string
enum:
- Not Found
status:
type: number
enum:
- 404
message:
type: string
'409':
description: Conflict
content:
application/json:
schema:
description: Conflict
type: object
required:
- error
properties:
error:
type: object
required:
- title
- status
- message
properties:
title:
type: string
enum:
- Conflict
status:
type: number
enum:
- 409
message:
type: string
'500':
description: Internal Server Error
content:
application/json:
schema:
description: Internal Server Error
type: object
required:
- error
properties:
error:
type: object
required:
- title
- status
- message
properties:
title:
type: string
enum:
- Internal Server Error
status:
type: number
enum:
- 500
message:
type: string
/experimental/launch-runs/{id}:
get:
tags:
- Launch Runs
description: Gets a launch run by ID, including progress while pending and a failure reason when failed.
parameters:
- schema:
format: uuid
type: string
in: path
name: id
required: true
- schema:
type: string
example: Bearer <token>
in: header
name: Authorization
required: false
responses:
'200':
description: Default Response
content:
application/json:
schema:
type: object
required:
- links
- data
properties:
links:
type: object
required:
- self
properties:
self:
format: uri
type: string
data:
type: object
required:
- id
- type
- attributes
properties:
id:
format: uuid
type: string
type:
type: string
enum:
- launch-run
attributes:
type: object
required:
- status
- workflowId
- workspaceId
- createdBy
- config
- label
- metadata
- createdAt
- updatedAt
properties:
status:
anyOf:
- type: string
enum:
- pending
- type: string
enum:
- completed
- type: string
enum:
- failed
workflowId:
anyOf:
- type: string
- type: 'null'
workspaceId:
format: uuid
type: string
createdBy:
anyOf:
- format: uuid
type: string
- type: 'null'
config:
type: object
required:
- skillRef
- repoUrl
- baseBranch
- agent
- model
- triggerSource
properties:
skillRef:
type: string
repoUrl:
type: string
baseBranch:
type: string
snapshot:
type: string
sandboxSnapshot:
type: string
workdir:
minLength: 1
type: string
agent:
type: string
model:
type: string
triggerSource:
anyOf:
# --- truncated at 32 KB (44 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/tesslio/refs/heads/main/openapi/tesslio-launch-runs-api-openapi.yml