Appearance
Jobs
Async work units. Prefer runs for application capabilities; use jobs when you need direct control over job type and infrastructure targets.
POST /v1/jobs
Returns 202 with job_ id and status: queued.
LLM job
bash
curl -s -X POST https://api.skilleo.org/v1/jobs \
-H "Authorization: Bearer $SKILLEO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"type":"llm","input":{"objective":"Write a headline about Kenya wildlife"},"options":{"provider":"minimax","optimize_for":"cost"}}'GPU image job — requires compute_id or endpoint_id:
bash
curl -s -X POST https://api.skilleo.org/v1/jobs \
-H "Authorization: Bearer $SKILLEO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"type":"image","compute_id":"cmp_...","input":{"prompt":"a red cube","steps":8,"width":512,"height":512}}'Provide either compute_id or endpoint_id for type=image, not both.
Job types
type | Capability | Target required | Provider routing |
|---|---|---|---|
image | image.generate | Yes (compute_id or endpoint_id) | RunPod |
research | research.gather | No | Optional LLM for synthesis |
composition | composition.layout | No | — |
llm, text | llm.generate / text.generate | No | Any connected LLM |
speech | speech.generate | No | MiniMax or ElevenLabs |
voice_clone | voice.clone | No | MiniMax or ElevenLabs |
options on the job (or on the parent run) may include provider, optimize_for, compute_id, and endpoint_id.
| Target | Backend |
|---|---|
compute_id | Pod /generate (pod must already serve inference) |
endpoint_id | Serverless /run + poll |
GET /v1/jobs/{id}
Poll until status is completed, failed, or cancelled.
bash
curl -s https://api.skilleo.org/v1/jobs/job_abc123 \
-H "Authorization: Bearer $SKILLEO_API_KEY"Failed jobs keep HTTP 200 with error.code set on the envelope.
Completed output (no filesystem paths): data.output includes filename, content_type, and download (e.g. /v1/jobs/job_abc123/output). Content type follows job type (image/png, application/json, audio/mpeg, etc.).
GET /v1/jobs/{id}/output
Returns job output bytes. Media type matches the job (image/png, audio/mpeg, application/json, …). Same ownership as the job.
bash
curl -s -o output.mp3 https://api.skilleo.org/v1/jobs/job_abc123/output \
-H "Authorization: Bearer $SKILLEO_API_KEY"| Code | When |
|---|---|
OUTPUT_NOT_READY | Job still running |
OUTPUT_UNAVAILABLE | Job failed |
OUTPUT_MISSING | File not on server |
Job states
queued → running → completed | failed