Skip to content

Capabilities

What work Skilleo can perform. Callers request versioned capabilities (image.generate@1), not model names.

Skilleo routes each capability to a connected provider. You manage provider keys; Skilleo stores connection pointers only. See Providers and Platform availability.

Agentic apps should prefer runs (POST /v1/runs). Infrastructure apps may still map to jobs.

Routing policy

CapabilityAllowed connectionsRule
llm.generateOpenAI, Anthropic, Gemini, MiniMax, AWS, RunPodAny connected LLM provider
speech.generate, voice.cloneMiniMax, ElevenLabsOne of — no other voice backends
image.generate, GPURunPodRunPod only

GET /v1/capabilities

List available capabilities.

bash
curl -s https://api.skilleo.org/v1/capabilities \
  -H "Authorization: Bearer $SKILLEO_API_KEY"

Response data

FieldTypeDescription
itemsarrayCapability objects
countintegerLength of items

Each capability includes (additive discovery fields):

FieldDescription
idStable identifier (e.g. image.generate)
nameSame as id for discovery
titleHuman label
versionCapability version string (e.g. "1")
descriptionWhat the capability does
statusCapability readiness (available, or planned when documented ahead of launch)
source.providers[].statusPer-backend readiness in the registry
asyncWhether execution is asynchronous
estimated_costWhether provider usage may incur cost
input_schema / output_schemaJSON-schema style shapes
invokePreferred invoke: POST /v1/runs
jobAlternative: POST /v1/jobs with type
source.providersBackends and requires_connection ids
source.routingallowed_connections, policy, default_provider
input / output / targetsOlder field docs (still present)

GET /v1/capabilities/{id}

Return one capability (e.g. /v1/capabilities/image.generate or image.generate@1).

bash
curl -s https://api.skilleo.org/v1/capabilities/llm.generate \
  -H "Authorization: Bearer $SKILLEO_API_KEY"
CodeWhen
NOT_FOUNDUnknown id or unsupported version

Registered capabilities

IdVersionStatusRoutingNotes
image.generate1availableRunPod onlyGPU pod or serverless endpoint
research.gather1availableWikipedia (CPU); optional LLM synthesis when connected
composition.layout1availableCPU social card layout
llm.generate1availableAny LLM; default minimaxMiniMax, OpenAI, Anthropic, Gemini, Bedrock, RunPod
text.generate1availablesame as llm.generateAlias for editorial copy
speech.generate1availableMiniMax or ElevenLabs; default minimaxMP3 output
voice.clone1availableMiniMax or ElevenLabs; default minimaxReference audio required

Connect a provider before calling a capability that requires one. Without a matching connection you get CREDENTIALS_MISSING. Pin a backend with options.provider when you have several LLM or voice connections.

Example: LLM — any connected provider

bash
curl -s -X POST https://api.skilleo.org/v1/runs \
  -H "Authorization: Bearer $SKILLEO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"target":"capability","name":"llm.generate","version":"1","input":{"objective":"Write a hook about Kenya wildlife"},"options":{"provider":"openai"}}'
python
from skilleo import Client

client.providers.connect("openai")

run = client.capabilities.run(
    "llm.generate",
    version="1",
    input={"objective": "Write a hook about Kenya wildlife"},
    options={"provider": "openai"},
)
done = client.runs.wait(run["id"])
print(done["data"]["output"])

Example: voice — MiniMax or ElevenLabs

bash
curl -s -X POST https://api.skilleo.org/v1/runs \
  -H "Authorization: Bearer $SKILLEO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"target":"capability","name":"speech.generate","version":"1","input":{"text":"Earth stops spinning."},"options":{"provider":"elevenlabs"}}'
python
client.providers.connect("elevenlabs")

run = client.capabilities.run(
    "speech.generate",
    version="1",
    input={"text": "Earth stops spinning."},
    options={"provider": "elevenlabs"},
)
client.runs.wait(run["id"])

Example: image — RunPod only

bash
curl -s -X POST https://api.skilleo.org/v1/runs \
  -H "Authorization: Bearer $SKILLEO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"target":"capability","name":"image.generate","version":"1","input":{"prompt":"a red cube","steps":8},"options":{"endpoint_id":"ep_..."}}'
python
client.providers.connect("runpod")

run = client.runs.create(
    name="image.generate",
    version="1",
    input={"prompt": "a red cube", "steps": 8},
    options={"endpoint_id": "ep_..."},
)
client.runs.wait(run["id"])

Infrastructure apps may still use client.jobs.create(type="image", ...) — see Jobs.

Skilleo — /v1 at api.skilleo.org