Skip to content

REST API

The Selu orchestrator exposes a REST API on port 8080 by default. All endpoints require authentication via a Bearer token unless noted otherwise.

http://localhost:8080/api/v1

Set SELU_API_BASE_URL to override the base URL when the orchestrator runs behind a reverse proxy.

Include your API token in the Authorization header:

Authorization: Bearer <your-api-token>

Generate a token with selu token create or from the dashboard under Settings → API Tokens.

MethodPathDescription
GET/agentsList all installed agents.
GET/agents/{name}Get details for a specific agent.
POST/agentsInstall a new agent from a registry or local path.
DELETE/agents/{name}Uninstall an agent and remove its container.
POST/agents/{name}/restartRestart an agent’s runtime container.
GET/capabilitiesList all registered capabilities.
GET/capabilities/{name}Get capability details and manifest.
GET/channelsList configured channels.
POST/channelsAdd a new channel configuration.
DELETE/channels/{id}Remove a channel.
POST/conversationsStart a new conversation with an agent.
POST/conversations/{id}/messagesSend a message in an existing conversation.
GET/conversations/{id}Retrieve conversation history.
GET/healthOrchestrator health status (no auth required).
Terminal window
curl -s http://localhost:8080/api/v1/agents \
-H "Authorization: Bearer $SELU_TOKEN"
Terminal window
curl -s -X POST http://localhost:8080/api/v1/conversations/conv_abc123/messages \
-H "Authorization: Bearer $SELU_TOKEN" \
-H "Content-Type: application/json" \
-d '{"content": "Summarize the latest news on AI regulation."}'

All errors follow a consistent structure:

{
"error": {
"code": "NOT_FOUND",
"message": "Agent 'foo' is not installed.",
"request_id": "req_789xyz"
}
}

Standard HTTP status codes apply: 400 for validation errors, 401 for missing/invalid auth, 404 for unknown resources, and 500 for internal failures.