Skip to content

Tasks

Top-level user outcomes. Skilleo plans the workflow, runs it, and reviews the result against your objective.

POST /v1/tasks

Start a task. Returns 202 with a tsk_ id.

Request body

FieldTypeDescription
objectivestringRequired. What to produce
constraintsobjectOptional: max_cost_usd, optimize_for, endpoint_id, compute_id

Example

bash
curl -s -X POST https://api.skilleo.org/v1/tasks \
  -H "Authorization: Bearer $SKILLEO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"objective":"Create an illustrated wildlife post about Kenya","constraints":{"max_cost_usd":2.0,"optimize_for":"balanced","endpoint_id":"ep_..."}}'

GET /v1/tasks/{id}

Poll task status.

bash
curl -s https://api.skilleo.org/v1/tasks/tsk_abc123 \
  -H "Authorization: Bearer $SKILLEO_API_KEY"
StatusMeaning
planningManager started
blockedPlan valid but capabilities missing
executingWorkflow running
reviewingReviewer evaluating
completedReview passed; final_artifact_id set
failedWorkflow, review, or retry budget exhausted

Response data includes plan_id, workflow_id, final_artifact_id, review, review_attempts, and cost_usd.

Manager flow

POST /v1/tasks → planner → executable?
  no  → blocked (missing capabilities)
  yes → workflow → reviewer → pass | retry (max 2) | fail

Reviewer contract

data.review when present:

FieldDescription
decisionpass, retry, or fail
score0–1 overall
criteriaobjective_alignment, technical_success, output_completeness
issuesString list
recommended_actionFor retry: node_id, action, constraints

SDK

python
task = client.tasks.create(
    objective="Create an illustrated wildlife post about Kenya",
    constraints={"max_cost_usd": 2.0},
)
done = client.tasks.wait(task["id"])
print(done["data"]["final_artifact_id"])

Skilleo — /v1 at api.skilleo.org