Agenteclaudio Documentation
Platform documentation for the unified AI agent toolkit. One API key across all services.
Services & API Docs
| Service | Base URL | API Docs | Description |
|---|---|---|---|
| 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 |
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:
| Prefix | Source | Scope |
|---|---|---|
ac_ | Suite platform | All services |
ba_ | Browser Automations signup | Browser only |
am_live_ | AgentMail signup | Mail only |
wa_ | WhatsApp Service signup | WhatsApp only |
dp_ | AgentDocs signup | Docs 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
| Option | Default | Description |
|---|---|---|
apiKey / api_key | AGENTECLAUDIO_API_KEY env | Your ac_ API key |
baseUrl / base_url | https://suite.agenteclaudio.com | Service URL to call |
timeout | 30s (30000ms in Node) | Request timeout |
Methods
| Method | Signature |
|---|---|
get | get(path, query?) → T |
post | post(path, body?) → T |
put | put(path, body?) → T |
delete | delete(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>
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
| Method | Path | Description |
|---|---|---|
| POST | /api/v1/auth/register | Create account, provisions downstream services, returns API key |
| POST | /api/v1/auth/login | Authenticate, return key info |
| GET | /api/v1/auth/me | Current user |
| GET | /api/v1/auth/keys | List API keys |
| POST | /api/v1/auth/keys | Create key {"name":"..."} |
| POST | /api/v1/auth/keys/:id/rotate | Rotate key |
| DEL | /api/v1/auth/keys/:id | Revoke key |
| GET | /api/v1/services | Service registry |
| GET | /api/v1/services/health | Downstream DB health |
Browser Automations — api.agenteclaudio.com
Full interactive docs (Swagger)
| Method | Path | Description |
|---|---|---|
| POST | /api/v1/tasks | Run AI browser task {"task":"...","model":"...","max_steps":25} |
| GET | /api/v1/tasks/:id | Get task status, result, steps |
| POST | /api/v1/sessions | Create browser session |
| GET | /api/v1/sessions | List sessions |
| POST | /api/v1/sessions/:id/terminate | Terminate session |
WhatsApp — wa.agenteclaudio.com
Full interactive docs (Swagger)
| Method | Path | Description |
|---|---|---|
| POST | /api/v1/connections | Create connection (starts QR flow) |
| GET | /api/v1/connections | List connections |
| GET | /api/v1/connections/:id | Status + QR code |
| DEL | /api/v1/connections/:id | Disconnect |
| POST | /api/v1/connections/:id/messages | Send message {"to":"5491155551234@s.whatsapp.net","content":"text"} |
| POST | /api/v1/connections/:id/typing | Send typing indicator {"to":"jid"} |
| GET | /api/v1/connections/:id/groups | List all WhatsApp groups |
| GET | /api/v1/connections/:id/groups/:jid/members | Get group members (name, phone, admin status) |
| POST | /api/v1/connections/:id/groups/:jid/monitor | Start monitoring a group (enables webhook delivery for it) |
| DEL | /api/v1/connections/:id/groups/:jid/monitor | Stop monitoring a group |
| GET | /api/v1/connections/:id/groups/monitored | List monitored groups |
| POST | /api/v1/webhooks | Register webhook {"url":"...","secret":"...","events":["*"]} |
| GET | /api/v1/webhooks | List webhooks |
| PUT | /api/v1/webhooks/:id | Update webhook |
| DEL | /api/v1/webhooks/:id | Delete 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:
- Audio messages: transcribed automatically. Event includes
audioTranscription(string) alongsidemediaBase64. - Image messages: described via vision AI. Event includes
imageDescription(string) alongsidemediaBase64. - Both fields are
nullif processing is unavailable or fails.
// 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
| Method | Path | Description |
|---|---|---|
| GET | /v1/agents | List agents |
| POST | /v1/agents | Create agent {"name":"..."} |
| POST | /v1/agents/:id/email | Provision Gmail address |
| GET | /v1/agents/:id/email | Get provisioned email |
| POST | /v1/agents/:id/tools/gmail_send | Send email {"to":"...","subject":"...","body":"..."} |
| POST | /v1/agents/:id/tools/gmail_list | List inbox |
| POST | /v1/agents/:id/tools/gmail_read | Read email {"message_id":"..."} |
| POST | /v1/agents/:id/tools/gmail_search | Search {"query":"..."} |
AgentDocs — docs.agenteclaudio.com
Full interactive docs (Swagger)
| Method | Path | Description |
|---|---|---|
| POST | /api/v1/documents | Ingest document (URL or upload) |
| GET | /api/v1/documents | List documents |
| GET | /api/v1/documents/:id | Get document + chunks |
| POST | /api/v1/documents/:id/extract | Extract structured data with schema |
| GET | /api/v1/search?q=... | Full-text search across documents |