REST API
IO exposes a REST API on port 7777 (configurable). All endpoints return JSON.
Base URL
http://localhost:7777/apiAuthentication
If Supabase is configured, requests must include a valid JWT:
Authorization: Bearer <supabase-jwt>Without Supabase config, all endpoints are open.
Chat
Send Message
http
POST /api/chat
Content-Type: application/json
{
"message": "What's the status of my squads?",
"conversationId": "optional-existing-id",
"source": "web"
}Response: JSON with conversation and message data. Streaming happens via WebSocket (chat.stream_chunk events).
List Conversations
http
GET /api/conversations?limit=50&offset=0Get Conversation
http
GET /api/conversations/:idDelete Conversation
http
DELETE /api/conversations/:idSquads
List Squads
http
GET /api/squadsGet Squad
http
GET /api/squads/:idCreate Squad (Hire)
http
POST /api/squads
Content-Type: application/json
{
"repoUrl": "https://github.com/org/repo",
"prMode": "draft-pr"
}Update Squad
http
PUT /api/squads/:id
Content-Type: application/json
{
"config": {
"prMode": "ready-pr"
}
}Delete Squad (Fire)
http
DELETE /api/squads/:idGet Squad Members
http
GET /api/squads/:id/membersCreate Objective
http
POST /api/squads/:id/objectives
Content-Type: application/json
{
"description": "Add dark mode support"
}List Objectives
http
GET /api/squads/:id/objectivesInbox
List Inbox Items
http
GET /api/inboxReply to Item
http
POST /api/inbox/:id/reply
Content-Type: application/json
{
"message": "Approved, proceed with option A"
}Mark as Read
http
PUT /api/inbox/:id/readSchedules
List Schedules
http
GET /api/schedulesCreate Schedule
http
POST /api/schedules
Content-Type: application/json
{
"name": "Daily Standup",
"cron": "0 9 * * *",
"prompt": "Summarize yesterday's squad activity",
"enabled": true
}Update Schedule
http
PUT /api/schedules/:id
Content-Type: application/json
{
"enabled": false
}Delete Schedule
http
DELETE /api/schedules/:idWiki
List Pages
http
GET /api/wiki/pagesGet Page
http
GET /api/wiki/pages/:pathCreate Page
http
POST /api/wiki/pages
Content-Type: application/json
{
"path": "projects/my-app",
"content": "# My App\n\nA React dashboard...",
"tags": ["project", "react"]
}Update Page
http
PUT /api/wiki/pages/:path
Content-Type: application/json
{
"content": "# My App\n\nUpdated content...",
"tags": ["project", "react"]
}Delete Page
http
DELETE /api/wiki/pages/:pathSearch Wiki
http
GET /api/wiki/search?q=typescriptSkills
List Skills
http
GET /api/skillsInstall Skill
http
POST /api/skills/install
Content-Type: application/json
{
"url": "https://github.com/user/repo/tree/main/skills/my-skill"
}Remove Skill
http
DELETE /api/skills/:idDiscover Skills
http
GET /api/skills/discoverNote: This endpoint is a placeholder and currently returns an empty array.
Usage
Get Token Usage
http
GET /api/usage?from=2024-12-01&to=2024-12-31&squadId=optionalActivity
Get Activity Feed
http
GET /api/activity?limit=50&offset=0Settings
Get Settings
http
GET /api/settingsUpdate Settings
http
PUT /api/settings
Content-Type: application/json
{
"port": 7777,
"logLevel": "debug"
}