Agenteclaudio Documentation

Platform documentation for the unified AI agent toolkit. One API key across all services.

Services & API Docs

ServiceBase URLAPI DocsDescription
Browser Automations https://api.agenteclaudio.com /docs AI-controlled browsers with stealth, proxies, CAPTCHA solving
AgentMail https://mail.agenteclaudio.com dashboard Email provisioning, Gmail send/read/search per agent
WhatsApp https://wa.agenteclaudio.com /docs Connect numbers via QR, send/receive messages, groups, webhooks
AgentDocs https://docs.agenteclaudio.com /docs Document ingestion, chunking, versioning, extraction, search
Suite (this service) https://suite.agenteclaudio.com /api/v1/services User accounts, API key management, service registry

Architecture

The Suite provisions a single ac_ API key into every service database. Each service validates keys locally against its own DB — no cross-service calls at runtime.

ac_xxx  # your unified API key
  │
  ├── Browser Automations   api.agenteclaudio.com
  ├── AgentMail              mail.agenteclaudio.com
  ├── WhatsApp               wa.agenteclaudio.com
  └── AgentDocs              docs.agenteclaudio.com

Services also work standalone with their own key prefixes:

PrefixSourceScope
ac_Suite platformAll services
ba_Browser Automations signupBrowser only
am_live_AgentMail signupMail only
wa_WhatsApp Service signupWhatsApp only
dp_AgentDocs signupDocs only

All services use SHA256-to-lowercase-hex for key hashing. Same raw key produces the same hash in Node.js, Python, and Elixir.

Authentication

Every API call requires an API key via one of:

# Header option 1
x-api-key: ac_xxx

# Header option 2
Authorization: Bearer ac_xxx

Get a key

# Register
curl -X POST https://suite.agenteclaudio.com/api/v1/auth/register \
  -H "Content-Type: application/json" \
  -d '{"email":"you@example.com","password":"...","name":"Your Name"}'

# The response includes your raw API key (shown once)

Manage keys

GET  /api/v1/auth/keys          # List keys
POST /api/v1/auth/keys          # Create key  {"name":"my-key"}
POST /api/v1/auth/keys/:id/rotate  # Rotate key (new raw key)
DEL  /api/v1/auth/keys/:id      # Revoke key

SDK Reference

The SDK is a thin HTTP client — get, post, put, delete with path strings. Point it at any service by changing baseUrl. No SDK update needed when APIs change.

Install

npm install @agenteclaudio/sdk        # Node.js / TypeScript
pip install agenteclaudio              # Python
mix {:agenteclaudio, "~> 0.1"}        # Elixir (add to mix.exs)
composer require agenteclaudio/sdk   # PHP

Usage

import { Agenteclaudio, AgenteclaudioError } from '@agenteclaudio/sdk';

// Reads AGENTECLAUDIO_API_KEY from env if apiKey omitted
const suite = new Agenteclaudio();
const me = await suite.get('/api/v1/auth/me');

// Point at Browser Automations
const browser = new Agenteclaudio({ baseUrl: 'https://api.agenteclaudio.com' });
const task = await browser.post('/api/v1/tasks', {
  task: 'Go to ambito.com and get the dolar blue price'
});

// Point at WhatsApp
const wa = new Agenteclaudio({ baseUrl: 'https://wa.agenteclaudio.com' });
await wa.post('/api/v1/connections/conn_id/messages', {
  to: '5491155551234@s.whatsapp.net', content: 'Hello!'
});

// Error handling
try { await suite.get('/api/v1/auth/me'); }
catch (e) { if (e instanceof AgenteclaudioError) console.log(e.status, e.message); }
from agenteclaudio import Agenteclaudio, AgenteclaudioError

# Reads AGENTECLAUDIO_API_KEY from env if api_key omitted
with Agenteclaudio() as suite:
    me = suite.get("/api/v1/auth/me")

# Point at Browser Automations
browser = Agenteclaudio(base_url="https://api.agenteclaudio.com")
task = browser.post("/api/v1/tasks", body={"task": "Get HN front page"})

# Point at WhatsApp
wa = Agenteclaudio(base_url="https://wa.agenteclaudio.com")
conns = wa.get("/api/v1/connections")

# Error handling
try: suite.get("/api/v1/auth/me")
except AgenteclaudioError as e: print(e.status, e.message)
# mix.exs deps
{:agenteclaudio, "~> 0.1"}

# Usage
client = Agenteclaudio.new(api_key: "ac_xxx")
{:ok, me} = Agenteclaudio.get(client, "/api/v1/auth/me")

# Point at Browser Automations
browser = Agenteclaudio.new(
  api_key: "ac_xxx",
  base_url: "https://api.agenteclaudio.com"
)
{:ok, task} = Agenteclaudio.post(browser, "/api/v1/tasks", %{
  task: "Navigate to example.com"
})

Constructor options

OptionDefaultDescription
apiKey / api_keyAGENTECLAUDIO_API_KEY envYour ac_ API key
baseUrl / base_urlhttps://suite.agenteclaudio.comService URL to call
timeout30s (30000ms in Node)Request timeout

Methods

MethodSignature
getget(path, query?) → T
postpost(path, body?) → T
putput(path, body?) → T
deletedelete(path) → T

Throws AgenteclaudioError with .status (number) and .message (string) on non-2xx responses.

CLI Reference

npm install -g @agenteclaudio/cli

Configuration

ac configure --api-key ac_xxx   # Store key in ~/.agenteclaudio/config.json
ac whoami                       # Verify auth + list services
ac status                       # Service health

Key management

ac keys list
ac keys create --name "production"
ac keys rotate <keyId>
ac keys delete <keyId>

Browser Automations

ac browser sessions list
ac browser sessions create --proxy US
ac browser tasks run "Go to google.com and get the page title"
ac browser tasks get <taskId>

AgentMail

ac mail agents list
ac mail agents create --name "My Agent"
ac mail email provision <agentId>
ac mail send --agent <agentId> --to user@example.com --subject "Hi" --body "Hello"
ac mail inbox <agentId>

WhatsApp

ac whatsapp connections list
ac whatsapp connections connect            # Create connection (QR flow)
ac whatsapp connections status <connId>
ac whatsapp connections disconnect <connId>
ac whatsapp send --connection <connId> --to 5491155551234@s.whatsapp.net --message "Hello"
ac whatsapp groups list --connection <connId>
ac whatsapp groups members <groupJid> --connection <connId>
ac whatsapp webhooks list
ac whatsapp webhooks create --url https://myapp.com/hook --secret mysecret

API Endpoints

All services return JSON. Errors follow the format {"success":false,"error":{"code":"...","message":"..."}}.

Suite — suite.agenteclaudio.com

MethodPathDescription
POST/api/v1/auth/registerCreate account, provisions downstream services, returns API key
POST/api/v1/auth/loginAuthenticate, return key info
GET/api/v1/auth/meCurrent user
GET/api/v1/auth/keysList API keys
POST/api/v1/auth/keysCreate key {"name":"..."}
POST/api/v1/auth/keys/:id/rotateRotate key
DEL/api/v1/auth/keys/:idRevoke key
GET/api/v1/servicesService registry
GET/api/v1/services/healthDownstream DB health

Browser Automations — api.agenteclaudio.com

Full interactive docs (Swagger)

MethodPathDescription
POST/api/v1/tasksRun AI browser task {"task":"...","model":"...","max_steps":25}
GET/api/v1/tasks/:idGet task status, result, steps
POST/api/v1/sessionsCreate browser session
GET/api/v1/sessionsList sessions
POST/api/v1/sessions/:id/terminateTerminate session

WhatsApp — wa.agenteclaudio.com

Full interactive docs (Swagger)

MethodPathDescription
POST/api/v1/connectionsCreate connection (starts QR flow)
GET/api/v1/connectionsList connections
GET/api/v1/connections/:idStatus + QR code
DEL/api/v1/connections/:idDisconnect
POST/api/v1/connections/:id/messagesSend message {"to":"5491155551234@s.whatsapp.net","content":"text"}
POST/api/v1/connections/:id/typingSend typing indicator {"to":"jid"}
GET/api/v1/connections/:id/groupsList all WhatsApp groups
GET/api/v1/connections/:id/groups/:jid/membersGet group members (name, phone, admin status)
POST/api/v1/connections/:id/groups/:jid/monitorStart monitoring a group (enables webhook delivery for it)
DEL/api/v1/connections/:id/groups/:jid/monitorStop monitoring a group
GET/api/v1/connections/:id/groups/monitoredList monitored groups
POST/api/v1/webhooksRegister webhook {"url":"...","secret":"...","events":["*"]}
GET/api/v1/webhooksList webhooks
PUT/api/v1/webhooks/:idUpdate webhook
DEL/api/v1/webhooks/:idDelete webhook

WhatsApp webhook events

Group messages are silent by default. You must call POST .../groups/:jid/monitor to opt in. DM messages are always delivered.

Media is processed server-side when OPENROUTER_API_KEY is configured:

// Example webhook event with media
{
  "event": "message",
  "connectionId": "conn_abc",
  "data": {
    "from": "5491155551234@s.whatsapp.net",
    "fromMe": false,
    "content": "caption text",
    "mediaKind": "audio",
    "mediaMimeType": "audio/ogg",
    "mediaBase64": "...",
    "audioTranscription": "Hello, how are you?"
  }
}

AgentMail — mail.agenteclaudio.com

MethodPathDescription
GET/v1/agentsList agents
POST/v1/agentsCreate agent {"name":"..."}
POST/v1/agents/:id/emailProvision Gmail address
GET/v1/agents/:id/emailGet provisioned email
POST/v1/agents/:id/tools/gmail_sendSend email {"to":"...","subject":"...","body":"..."}
POST/v1/agents/:id/tools/gmail_listList inbox
POST/v1/agents/:id/tools/gmail_readRead email {"message_id":"..."}
POST/v1/agents/:id/tools/gmail_searchSearch {"query":"..."}

AgentDocs — docs.agenteclaudio.com

Full interactive docs (Swagger)

MethodPathDescription
POST/api/v1/documentsIngest document (URL or upload)
GET/api/v1/documentsList documents
GET/api/v1/documents/:idGet document + chunks
POST/api/v1/documents/:id/extractExtract structured data with schema
GET/api/v1/search?q=...Full-text search across documents