OFFRE LIMITÉE : Obtenez 50 % de réduction la première année ! Code LAUNCH50 En profiter →

Platform
Utiliser en ligne
Launch the IDE in your browser
Télécharger l'app
Desktop app for Windows, Mac, Linux
Alfred AI
1,220+ tools · 24 agents · 16 engines
Dashboard
Your account overview
Live Demo
See the ecosystem in action
Voice & AI
Voice Products
Voice AI suite overview
Voice Cloning
Clone voices with AI
Command Center
Voice-activated operations hub
Experiences
Pulse
Social network & ecosystem hub
VR World
Immersive 3D environments
Chess Arena
Play AI agents in VR
Games & Arcade
Browser games collection
Website Templates
Open-Source Tools
Core
Tool Directory
Browse 1,220+ AI tools
Marché
Extensions, templates & more
Alfred Search
Sovereign search engine
AgentPedia
AI-written knowledge base
Tarifs
Plans & token packs
Cas d'utilisation
33 industries
Comparer
Features
Fleet Dashboard
Manage AI agent fleet
Conference Rooms
AI-powered meetings
Team Chat
Collaborate & negotiate
Voice Cloning
Workflow
Agent Templates
Pre-built AI agents
IVR Builder
Visual call flow designer
Conversations
Analytics
Team Workspace
Creator Dashboard
Call Campaigns
Hosting & Domains
Hébergement IA
AI-powered web hosting with editor
Domaines
Register & transfer domains
Token Packs
AI usage credits
SSL Certificates
Secure your site
Infrastructure
Configurer serveur IA
GPU-powered dedicated servers
Training
Learn to build & manage
White Label
Resell under your brand
System Status
Uptime & incidents
Get Started
Developer Portal
Build on the platform
Getting Started
Quick start guide
Documentation
Full reference docs
Journal des changements
APIs & SDKs
API Reference
RESTful API docs
SDKs
Python, Node, PHP, Go & more
Webhooks
Event-driven integrations
Extend
Extensions
Browse & install plugins
Integrations
Connect third-party services
Languages
300+ language support
Company
À propos
Entreprise
Custom plans for organizations
Careers
Join the ecosystem
Ecosystem
The sovereign internet platform
Security
Pulse
Social network & ecosystem hub
Veil
Encrypted messaging & payments
Post-Quantum
Learn & Support
Help Center
FAQs & guides
Blogue
Blog & tutorials
Support
Actualités
Finance & Investment
Invest in GoSiteMe
Join our growth story
Affiliate Program
Earn 20% commission
Crypto Trading
GSM Token
Mine GSM
Earn tokens while you browse
Wallet
Balance, mining & transactions
ESC
Domaines Cart Actualités Contact Help Center Affiliate Program — Earn 20%
English Connexion Commencer
Docs API Reference v1

API Reference v1

Complete REST API documentation for the Alfred AI platform. All endpoints use JSON, return structured responses, and support API Key & OAuth2 authentication.

Overview

Base URL: https://gositeme.com/api/v1/ — All endpoint paths below are relative to this base.

The Alfred API v1 is a RESTful JSON API organized around 7 core resources:

ResourceBase PathDescription
agents/agentsCreate, manage, and execute AI agents
chat/chatConversational AI with streaming support
tools/tools1,220+ tools — search, discover, execute
fleets/fleetsMulti-agent fleet orchestration
voice/voiceVoice calls & conference rooms
marketplace/marketplaceBrowse & install community extensions
usage/usageUsage metrics & billing

Response Envelope

Successful responses return a data key (single resource) or paginated envelope:

JSON — Single Resource
{
  "data": { "id": 1, "agent_name": "Support Bot", "status": "idle" }
}
JSON — Paginated
{
  "data": [ ... ],
  "meta": {
    "total": 42,
    "page": 1,
    "per_page": 20,
    "total_pages": 3
  }
}

All paginated endpoints accept ?page=N&per_page=N (max 100).

Request Headers

HeaderRequiredDescription
AuthorizationYesBearer <api_key or oauth_token>
Content-TypePOST/PUTapplication/json
X-Request-IDNoClient-generated request ID for tracing

Authentication

The API supports three authentication methods:

1. API Key (Recommended)

Create API keys in the Developer Portal. Keys use the format ak_live_<prefix>_<secret> (production) or ak_test_<prefix>_<secret> (sandbox).

cURL
curl https://gositeme.com/api/v1/tools \
  -H "Authorization: Bearer ak_live_abc123_secretkey456"
import { AlfredClient } from '@alfredai/sdk';
const alfred = new AlfredClient({ apiKey: 'ak_live_abc123_secretkey456' });
from alfred_sdk import AlfredClient
client = AlfredClient(api_key="ak_live_abc123_secretkey456")
$alfred = new \AlfredAI\Alfred(['api_key' => 'ak_live_abc123_secretkey456']);

2. OAuth2 Bearer Token

OAuth apps receive tokens prefixed with aat_. Register your app in the Developer Portal to get client credentials.

cURL
curl https://gositeme.com/api/v1/agents \
  -H "Authorization: Bearer aat_your_oauth_token_here"

3. Session Token (Legacy)

Session tokens from /api/auth.php (prefix sess_) are still supported for backward compatibility.

API keys in query parameters (?api_key=...) are supported for testing but not recommended for production — URLs may be logged by proxies and servers.

Scopes

API keys and OAuth tokens can be scoped to specific permissions:

ScopeDescription
*Full access (default for API keys)
agents:readRead agent data
agents:writeCreate, update, delete agents
chat:readRead chat endpoint info
chat:writeSend chat messages
tools:readList and search tools
tools:executeExecute tools
fleets:readRead fleet data
fleets:writeCreate, manage fleets
voice:readRead call/room data
voice:writeCreate rooms, start calls
marketplace:readBrowse marketplace
marketplace:writeInstall marketplace items
usage:readView usage data

Agents

Create, manage, and execute AI agents. Agents can be assigned roles, skills, voice capabilities, and attached to fleets.

POST /agents — Create Agent

POST /agents
ParameterTypeRequiredDescription
agent_namestringYesDisplay name (max 100 chars)
agent_rolestringYesleader, specialist, generalist, reviewer
taskstringNoInitial task description (max 2000 chars)
skillsstring[]NoArray of tool names the agent can use
fleet_idintegerNoFleet to attach the agent to
voice_enabledbooleanNoEnable voice interaction
voice_enginestringNokokoro, orpheus, cartesia, elevenlabs
cURL
curl -X POST https://gositeme.com/api/v1/agents \
  -H "Authorization: Bearer ak_live_xxx_yyy" \
  -H "Content-Type: application/json" \
  -d '{
    "agent_name": "Support Bot",
    "agent_role": "specialist",
    "task": "Handle customer billing questions",
    "skills": ["product_lookup", "ticket_create"],
    "voice_enabled": true,
    "voice_engine": "cartesia"
  }'
const agent = await alfred.agents.create({
  agent_name: 'Support Bot',
  agent_role: 'specialist',
  task: 'Handle customer billing questions',
  skills: ['product_lookup', 'ticket_create'],
  voice_enabled: true,
  voice_engine: 'cartesia',
});
agent = client.agents.create(
    agent_name="Support Bot",
    agent_role="specialist",
    task="Handle customer billing questions",
    skills=["product_lookup", "ticket_create"],
    voice_enabled=True,
    voice_engine="cartesia",
)
$agent = $alfred->agents->create([
    'agent_name' => 'Support Bot',
    'agent_role' => 'specialist',
    'task' => 'Handle customer billing questions',
    'skills' => ['product_lookup', 'ticket_create'],
    'voice_enabled' => true,
    'voice_engine' => 'cartesia',
]);

GET /agents — List Agents

GET /agents

Returns a paginated list of the authenticated user's agents.

cURL
curl "https://gositeme.com/api/v1/agents?page=1&per_page=10" \
  -H "Authorization: Bearer ak_live_xxx_yyy"

GET /agents/{id} — Get Agent

GET /agents/{id}
Response
{
  "data": {
    "id": 42,
    "agent_name": "Support Bot",
    "agent_role": "specialist",
    "task": "Handle customer billing questions",
    "skills": ["product_lookup", "ticket_create"],
    "fleet_id": null,
    "status": "idle",
    "voice_enabled": true,
    "voice_engine": "cartesia",
    "created_at": "2026-03-04T12:00:00Z",
    "updated_at": "2026-03-04T12:00:00Z"
  }
}

PUT /agents/{id} — Update Agent

PUT /agents/{id}

Update any mutable agent fields. Only include fields you want to change.

DELETE /agents/{id} — Delete Agent

DELETE /agents/{id}

POST /agents/{id}/execute — Execute Task

POST /agents/{id}/execute

Send a message to an agent and receive a response with tool usage details.

ParameterTypeRequiredDescription
messagestringYesTask or message for the agent
toolsstring[]NoOverride available tools for this execution
contextobjectNoAdditional context data
Response
{
  "data": {
    "reply": "I looked up the account and created support ticket #1234.",
    "tools_used": ["product_lookup", "ticket_create"],
    "execution_time_ms": 2340
  }
}

POST /agents/{id}/deploy — Deploy Agent

POST /agents/{id}/deploy

Deploy an agent to start accepting tasks. Returns the updated agent with status: "working".

Chat

Send messages to Alfred AI and receive responses. Supports streaming via Server-Sent Events.

POST /chat — Send Message

POST /chat
ParameterTypeRequiredDescription
messagestringYesMessage (max 10,000 chars)
conversation_idstringNoContinue existing conversation
modelstringNoAI model (default: alfred-default)
temperaturefloatNo0.0–1.0 creativity (default: 0.7)
toolsstring[]NoTools to make available
streambooleanNoEnable SSE streaming (default: false)
cURL
curl -X POST https://gositeme.com/api/v1/chat \
  -H "Authorization: Bearer ak_live_xxx_yyy" \
  -H "Content-Type: application/json" \
  -d '{
    "message": "What are the DNS records for example.com?",
    "tools": ["dns_lookup"],
    "temperature": 0.5
  }'

Response (Non-Streaming)

JSON
{
  "data": {
    "reply": "Here are the DNS records for example.com...",
    "conversation_id": "conv_abc123",
    "model": "alfred-default",
    "tools_used": ["dns_lookup"],
    "tokens_used": 347,
    "execution_time_ms": 1240
  }
}

Streaming (SSE)

Set "stream": true to receive Server-Sent Events. Each event contains a JSON chunk:

SSE Stream
data: {"type":"text","content":"Here are "}
data: {"type":"text","content":"the DNS records..."}
data: {"type":"tool_start","tool":"dns_lookup"}
data: {"type":"tool_end","tool":"dns_lookup"}
data: {"type":"done","conversation_id":"conv_abc123"}
data: [DONE]
for await (const chunk of alfred.chat.stream({ message: 'Explain DNS' })) {
  if (chunk.type === 'text') process.stdout.write(chunk.content || '');
}
for chunk in client.chat.stream("Explain DNS"):
    if chunk.get("type") == "text":
        print(chunk["content"], end="", flush=True)
$alfred->chat->stream('Explain DNS', function($chunk) {
    if ($chunk['type'] === 'text') echo $chunk['content'];
});

GET /chat — List Conversations

GET /chat

Returns a paginated list of recent conversations.

Tools

Search, discover, and execute 1,220+ tools across 17 categories — legal, healthcare, devops, security, analytics, and more.

GET /tools — List Tools

GET /tools
ParameterTypeRequiredDescription
search / qstringNoSearch query
categorystringNoFilter by category slug
tierstringNoFilter by tier (free, starter, pro, enterprise)
pageintegerNoPage number (default: 1)
per_pageintegerNoResults per page (max: 100)
cURL
curl "https://gositeme.com/api/v1/tools?search=dns&category=devops&per_page=5" \
  -H "Authorization: Bearer ak_live_xxx_yyy"

GET /tools/categories — List Categories

GET /tools/categories
Response
{
  "data": [
    { "slug": "legal", "name": "Legal", "count": 85 },
    { "slug": "healthcare", "name": "Healthcare", "count": 62 },
    { "slug": "devops", "name": "DevOps", "count": 94 },
    { "slug": "security", "name": "Security", "count": 71 }
  ]
}

GET /tools/{name} — Get Tool Details

GET /tools/{name}

Returns tool metadata including JSON Schema input definition.

Response
{
  "data": {
    "name": "dns_lookup",
    "description": "Look up DNS records for a domain",
    "category": "devops",
    "tier": "free",
    "input_schema": {
      "type": "object",
      "properties": {
        "domain": { "type": "string", "description": "Domain name to look up" },
        "type": { "type": "string", "enum": ["A","AAAA","MX","NS","TXT","CNAME"], "default": "A" }
      },
      "required": ["domain"]
    },
    "tags": ["dns", "network", "devops"]
  }
}

POST /tools/{name}/execute — Execute Tool

POST /tools/{name}/execute
ParameterTypeRequiredDescription
argsobjectYesTool-specific arguments (see tool's input_schema)
cURL
curl -X POST https://gositeme.com/api/v1/tools/dns_lookup/execute \
  -H "Authorization: Bearer ak_live_xxx_yyy" \
  -H "Content-Type: application/json" \
  -d '{"args": {"domain": "example.com", "type": "A"}}'
const result = await alfred.tools.execute('dns_lookup', {
  args: { domain: 'example.com', type: 'A' },
});
console.log(result.data.result); // { records: [...] }
result = client.tools.execute("dns_lookup", args={"domain": "example.com", "type": "A"})
print(result["data"]["result"])
$result = $alfred->tools->execute('dns_lookup', ['domain' => 'example.com', 'type' => 'A']);
print_r($result['data']['result']);

Execution Response

JSON
{
  "data": {
    "tool": "dns_lookup",
    "result": {
      "records": [
        { "type": "A", "value": "93.184.216.34", "ttl": 300 }
      ]
    },
    "execution_time_ms": 142,
    "credits_used": 1
  }
}

Fleets

Orchestrate multiple agents as a fleet. Fleets support parallel execution, auto-scaling, and round-robin task distribution.

POST /fleets — Create Fleet

POST /fleets
ParameterTypeRequiredDescription
namestringYesFleet display name
descriptionstringNoFleet description
max_agentsintegerNoMaximum agent slots (default: 5)
auto_scalebooleanNoEnable auto-scaling (default: false)

GET /fleets — List Fleets

GET /fleets

GET /fleets/{id} — Get Fleet

GET /fleets/{id}
Response
{
  "data": {
    "id": 7,
    "name": "Support Team",
    "description": "Customer support agents",
    "status": "active",
    "max_agents": 10,
    "auto_scale": true,
    "agent_count": 3,
    "tasks_completed": 1247,
    "created_at": "2026-03-01T10:00:00Z"
  }
}

PUT /fleets/{id} — Update Fleet

PUT /fleets/{id}

DELETE /fleets/{id} — Delete Fleet

DELETE /fleets/{id}

POST /fleets/{id}/deploy — Deploy Fleet

POST /fleets/{id}/deploy
ParameterTypeRequiredDescription
taskstringNoTask for the fleet to execute
strategystringNoparallel, sequential, round-robin
timeoutintegerNoTimeout in seconds

Voice

Voice calls and AI-powered conference rooms. Supports Kokoro, Orpheus, Cartesia, and ElevenLabs engines.

GET /voice/calls — List Call History

GET /voice/calls

Returns a paginated list of voice calls.

GET /voice/calls/{id} — Get Call Details

GET /voice/calls/{id}
Response
{
  "data": {
    "id": 156,
    "room_name": "Sales Call",
    "status": "completed",
    "duration_seconds": 340,
    "participants": 2,
    "voice_engine": "cartesia",
    "transcript": "Agent: Hello, how can I help today?...",
    "created_at": "2026-03-04T14:30:00Z"
  }
}

POST /voice/rooms — Create Room

POST /voice/rooms
ParameterTypeRequiredDescription
namestringYesRoom name
max_participantsintegerNoMax participants (default: 10)
voice_enginestringNokokoro, orpheus, cartesia, elevenlabs
agent_idintegerNoAI agent to join the room

GET /voice/rooms — List Active Rooms

GET /voice/rooms

GET /voice/rooms/{id} — Get Room Details

GET /voice/rooms/{id}

POST /voice/calls — Start Outbound Call

POST /voice/calls
ParameterTypeRequiredDescription
tostringYesPhone number (E.164) or SIP URI
agent_idintegerNoAgent to handle the call
voice_enginestringNoVoice engine override

Marketplace

Browse and install community-created agents, tools, fleet templates, and extensions.

GET /marketplace — List Items

GET /marketplace
ParameterTypeRequiredDescription
searchstringNoSearch query
typestringNoagent, tool, fleet_template, extension
sortstringNopopular, newest, rating

GET /marketplace/{id} — Get Item Details

GET /marketplace/{id}

POST /marketplace/{id}/install — Install Item

POST /marketplace/{id}/install

Usage

Monitor API usage, tool executions, and billing metrics.

GET /usage — Current Period Summary

GET /usage
Response
{
  "data": {
    "period": "2026-03",
    "plan": "professional",
    "api_calls": { "used": 4521, "limit": null },
    "tools_executed": { "used": 892, "limit": null },
    "agents_active": { "used": 3, "limit": 20 },
    "fleets_active": { "used": 1, "limit": 10 },
    "voice_minutes": { "used": 45, "limit": 500 },
    "storage_mb": { "used": 128, "limit": 5120 }
  }
}

GET /usage/history — Historical Records

GET /usage/history
ParameterTypeRequiredDescription
start_datestringNoISO date (e.g. 2026-03-01)
end_datestringNoISO date
resource_typestringNoFilter by type (tools, agents, chat, voice)

Rate Limits

Rate limits are enforced per-key using a 1-minute sliding window. Headers are included on every response.

Free
10
req/min
Starter
30
req/min
Professional
60
req/min
Enterprise
200
req/min

Hourly & Daily Limits

TierPer MinutePer HourPer Day
Free10100500
Starter305005,000
Professional602,00020,000
Enterprise20010,000100,000

Rate Limit Headers

HeaderDescription
X-RateLimit-LimitMaximum requests per minute for your tier
X-RateLimit-RemainingRequests remaining in the current window
X-RateLimit-ResetUnix timestamp when the window resets
Retry-AfterSeconds to wait (only on 429 responses)
Best Practice: All official SDKs automatically handle rate limiting with exponential backoff. If making raw HTTP requests, implement retry logic on 429 responses.

Error Codes

All API errors return a consistent JSON envelope:

JSON
{
  "error": {
    "code": "validation_error",
    "message": "Missing required fields: agent_name",
    "status": 400
  }
}
StatusCodeDescription
400validation_errorMissing or invalid parameters
401auth_requiredMissing or invalid API key / OAuth token
403insufficient_scopeToken lacks required scopes
404resource_not_foundResource or endpoint not found
405method_not_allowedHTTP method not supported for this endpoint
429rate_limit_exceededToo many requests — check Retry-After
500internal_errorServer error — contact support with X-Request-ID
503service_unavailableService temporarily unavailable
import { AuthError, RateLimitError, NotFoundError } from '@alfredai/sdk';

try {
  await alfred.tools.execute('some_tool', { args: {} });
} catch (err) {
  if (err instanceof AuthError) console.error('Auth failed');
  if (err instanceof RateLimitError) console.error('Retry after ' + err.retryAfter + 's');
  if (err instanceof NotFoundError) console.error('Not found');
}
from alfred_sdk import AuthenticationError, RateLimitError, NotFoundError

try:
    client.tools.execute("some_tool", args={})
except AuthenticationError:
    print("Auth failed")
except RateLimitError as e:
    print(f"Retry in {e.retry_after}s")
except NotFoundError:
    print("Not found")
use AlfredAI\Exceptions\{AuthException, RateLimitException, NotFoundException};

try {
    $alfred->tools->execute('some_tool', []);
} catch (AuthException $e) {
    echo "Auth failed";
} catch (RateLimitException $e) {
    echo "Retry in " . $e->retryAfter . "s";
} catch (NotFoundException $e) {
    echo "Not found";
}

Webhooks

Alfred can send real-time event notifications to your application via webhooks. Configure webhook URLs in the Developer Portal.

Webhook Delivery Format

Each webhook delivery includes these headers:

HeaderDescription
X-Webhook-Signaturesha256=<HMAC hex digest> — HMAC-SHA256 of the payload using your webhook secret
X-Webhook-EventEvent name (e.g. agent.deployed)
X-Webhook-DeliveryUnique delivery ID
User-AgentAlfred-Webhooks/1.0

Payload Format

JSON
{
  "id": "d4e5f6a7b8c9d0e1",
  "event": "agent.deployed",
  "timestamp": "2026-03-04T15:30:00+00:00",
  "data": {
    "agent_id": 42,
    "agent_name": "Support Bot",
    "fleet_id": 7,
    "status": "working"
  }
}

Available Events

EventDescription
agent.createdAgent was created
agent.deployedAgent was deployed / started
agent.completedAgent completed a task
agent.errorAgent encountered an error
fleet.createdFleet was created
fleet.deployedFleet deployment started
tool.executedTool was executed
voice.call.startedVoice call started
voice.call.endedVoice call ended
voice.room.createdVoice room created
marketplace.installedMarketplace item installed
usage.thresholdUsage threshold reached (80%, 100%)

Signature Verification

Always verify webhook signatures to ensure requests come from Alfred. Use constant-time comparison.

// Express.js example
app.post('/webhook', express.text({ type: '*/*' }), (req, res) => {
  const event = alfred.webhooks.verifyAndParse(
    req.body,
    req.headers['x-webhook-signature'],
    process.env.WEBHOOK_SECRET,
  );
  console.log(event.event, event.data);
  res.sendStatus(200);
});
# Flask example
@app.post("/webhook")
def handle_webhook():
    event = client.webhooks.verify_and_parse(
        request.data.decode(),
        request.headers["X-Webhook-Signature"],
        WEBHOOK_SECRET,
    )
    print(f"{event['event']}: {event['data']}")
    return "", 200
$payload = file_get_contents('php://input');
$signature = $_SERVER['HTTP_X_WEBHOOK_SIGNATURE'] ?? '';

$verifier = new \AlfredAI\WebhookVerifier();
$event = $verifier->verifyAndParse($payload, $signature, $webhookSecret);
echo "Event: " . $event['event'];

Official SDKs

Get started faster with official client libraries that handle authentication, retries, and error handling.

LanguagePackageInstall
Node.js / TypeScript@alfredai/sdknpm install @alfredai/sdk
Pythonalfred-ai-sdkpip install alfred-ai-sdk
PHPalfredai/sdkcomposer require alfredai/sdk

View all SDKs, examples, and features on the SDKs page.

Need Help? If you encounter issues, contact support@gositeme.com with the X-Request-ID from the response headers.

Someone from somewhere

just launched website.com

Just now