Skip to content

API Overview

Moxxy provides a REST API for programmatic access to all agent functionality.

Base URL

http://127.0.0.1:17890

Configure via:

bash
moxxy run --agent default --prompt "Store '18900' in vault as gateway_port"

Authentication

Internal Token

For internal API access:

bash
export MOXXY_INTERNAL_TOKEN="your-token"

Include in requests:

bash
curl -H "X-Moxxy-Internal-Token: your-token" http://localhost:17890/api/agents

No Authentication

For local development, the API is accessible without authentication by default.

Response Format

Success

json
{
  "success": true,
  "data": { ... }
}

Error

json
{
  "success": false,
  "error": {
    "code": "AGENT_NOT_FOUND",
    "message": "Agent 'unknown' not found"
  }
}

HTTP Status Codes

CodeMeaning
200Success
201Created
400Bad Request
401Unauthorized
404Not Found
500Internal Error

Rate Limiting

Default limits:

Endpoint TypeLimit
Chat10/second
Read100/second
Write50/second

API Endpoints Overview

Agents

MethodEndpointDescription
GET/api/agentsList all agents
GET/api/agents/:nameGet agent info
POST/api/agentsCreate agent
DELETE/api/agents/:nameDelete agent

Chat

MethodEndpointDescription
POST/api/agents/:name/chatSend message
GET/api/agents/:name/chat/streamStream messages

Memory

MethodEndpointDescription
GET/api/agents/:name/memoryGet memory
POST/api/agents/:name/memoryAdd memory
DELETE/api/agents/:name/memoryClear memory

Skills

MethodEndpointDescription
GET/api/agents/:name/skillsList skills
POST/api/agents/:name/skills/:skill/invokeInvoke skill

Vault

MethodEndpointDescription
GET/api/agents/:name/vaultList secrets
GET/api/agents/:name/vault/:keyGet secret
POST/api/agents/:name/vaultStore secret
DELETE/api/agents/:name/vault/:keyDelete secret

Channels

MethodEndpointDescription
GET/api/agents/:name/channelsList channels
POST/api/agents/:name/channelsConfigure channel

Webhooks

MethodEndpointDescription
GET/api/webhooksList webhooks
POST/api/webhooksCreate webhook
POST/api/webhooks/:name/triggerTrigger webhook

Streaming

Use Server-Sent Events (SSE) for streaming responses:

javascript
const eventSource = new EventSource('/api/agents/default/chat/stream?message=Hello');

eventSource.onmessage = (event) => {
  const data = JSON.parse(event.data);
  if (data.done) {
    eventSource.close();
  } else {
    console.log(data.content);
  }
};

OpenAPI Specification

Full OpenAPI spec available at:

GET /api/openapi.json

Client Libraries

JavaScript/TypeScript

typescript
const response = await fetch('http://localhost:17890/api/agents/default/chat', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({ message: 'Hello!' })
});
const data = await response.json();

Python

python
import requests

response = requests.post(
    'http://localhost:17890/api/agents/default/chat',
    json={'message': 'Hello!'}
)
data = response.json()

cURL

bash
curl -X POST http://localhost:17890/api/agents/default/chat \
  -H "Content-Type: application/json" \
  -d '{"message": "Hello!"}'

Open source · Self-hosted · Data sovereign