Skip to main content

API Reference

Jetty exposes two main APIs for workflow management and execution.

Base URLs

ServiceURLPurpose
flows-apihttps://flows-api.jetty.ioRun workflows, view logs, trajectories
dockhttps://dock.jetty.ioManage collections, tasks, datasets

Authentication

All requests require a Bearer token:

curl -H "Authorization: Bearer $JETTY_API_TOKEN" ...

Important: API tokens are scoped to specific collections. Ensure your token has access to the collection you're targeting.


Workflow Execution

Run Workflow (Async)

Starts a workflow and returns immediately with a tracking ID.

Endpoint: POST /api/v1/run/{collection}/{task}

Request:

curl -X POST "https://flows-api.jetty.io/api/v1/run/my-collection/my-task" \
-H "Authorization: Bearer $JETTY_API_TOKEN" \
-F "bakery_host=https://dock.jetty.io" \
-F 'init_params={"prompt": "Hello world"}'

Response:

{
"workflow_id": "wf_abc123xyz",
"trajectory_id": "traj_def456",
"status": "running"
}

Run Workflow (Sync)

Starts a workflow and waits for completion.

Endpoint: POST /api/v1/run-sync/{collection}/{task}

Request:

curl -X POST "https://flows-api.jetty.io/api/v1/run-sync/my-collection/my-task" \
-H "Authorization: Bearer $JETTY_API_TOKEN" \
-F "bakery_host=https://dock.jetty.io" \
-F 'init_params={"prompt": "Hello world"}'

Response:

{
"workflow_id": "wf_abc123xyz",
"trajectory_id": "traj_def456",
"status": "completed",
"result": {
"steps": {
"my_step": {
"inputs": {...},
"outputs": {...}
}
}
}
}

Run with File Upload

Endpoint: POST /api/v1/run/{collection}/{task}

curl -X POST "https://flows-api.jetty.io/api/v1/run/my-collection/doc-processor" \
-H "Authorization: Bearer $JETTY_API_TOKEN" \
-F "bakery_host=https://dock.jetty.io" \
-F 'init_params={"instruction": "Summarize this document"}' \
-F "files=@/path/to/document.pdf"

Files are accessible in the workflow via init_params.file_paths[0].


Monitoring & Logs

Get Workflow Logs

Endpoint: GET /api/v1/workflows-logs/{workflow_id}

curl "https://flows-api.jetty.io/api/v1/workflows-logs/wf_abc123xyz" \
-H "Authorization: Bearer $JETTY_API_TOKEN"

List Trajectories

Endpoint: GET /api/v1/db/trajectories/{collection}/{task}?limit=20

curl "https://flows-api.jetty.io/api/v1/db/trajectories/my-collection/my-task?limit=20" \
-H "Authorization: Bearer $JETTY_API_TOKEN"

Get Trajectory Details

Endpoint: GET /api/v1/db/trajectory/{collection}/{task}/{trajectory_id}

curl "https://flows-api.jetty.io/api/v1/db/trajectory/my-collection/my-task/traj_def456" \
-H "Authorization: Bearer $JETTY_API_TOKEN"

Get Workflow Statistics

Endpoint: GET /api/v1/db/stats/{collection}/{task}

curl "https://flows-api.jetty.io/api/v1/db/stats/my-collection/my-task" \
-H "Authorization: Bearer $JETTY_API_TOKEN"

Task Management (Dock API)

List Tasks

Endpoint: GET /api/v1/tasks/{collection}/

curl "https://dock.jetty.io/api/v1/tasks/my-collection/" \
-H "Authorization: Bearer $JETTY_API_TOKEN"

Get Task

Endpoint: GET /api/v1/tasks/{collection}/{task}

curl "https://dock.jetty.io/api/v1/tasks/my-collection/my-task" \
-H "Authorization: Bearer $JETTY_API_TOKEN"

Create Task

Endpoint: POST /api/v1/tasks/{collection}

curl -X POST "https://dock.jetty.io/api/v1/tasks/my-collection" \
-H "Authorization: Bearer $JETTY_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "my-new-task",
"description": "A workflow that processes text",
"workflow": {
"init_params": {"text": "default"},
"step_configs": {
"echo": {
"activity": "text_echo",
"text_path": "init_params.text"
}
},
"steps": ["echo"]
}
}'

Update Task

Endpoint: PUT /api/v1/tasks/{collection}/{task}

Delete Task

Endpoint: DELETE /api/v1/tasks/{collection}/{task}


List Step Templates

Endpoint: GET /api/v1/step-templates

curl "https://flows-api.jetty.io/api/v1/step-templates" | jq

Get Step Template Details

curl "https://flows-api.jetty.io/api/v1/step-templates/{activity_name}" | jq

Error Codes

CodeMeaningResolution
401Invalid/expired tokenRegenerate API token
403Access deniedCheck collection permissions
404Not foundVerify collection/task names
422Validation errorCheck request body format
429Rate limitedReduce request frequency
500Internal errorRetry with exponential backoff