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

1-833-GOSITEME Appelez-nous 24 h/24, 7 j/7 - Sans frais
1-833-GOSITEME
Sans frais 24/7
Hébergement IA Token Packs SSL Certificates Training Server Support Configurer serveur IA
GoCodeMe en ligne Télécharger l'éditeur Alfred AI — 875+ Tools Voice & AI Products — From $3/mo
Répertoire d'outils Marché Tarifs À propos Cas d'utilisation Comparer Entreprise Documentation Journal des changements Fleet Dashboard Conference Rooms API Reference Getting Started Developer Portal Extensions IVR Builder Agent Templates Conversations Team Workspace SDKs Webhooks Analytics Creator Dashboard Help Center Security
Power-Up Add-Ons Domaines Actualités Contact 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/tools875+ 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 875+ 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