Introduction
Programmatically manage agents, training sources, and web crawls with the AssistLoop API.
The AssistLoop API lets you build integrations on top of your AI agents: create and configure agents, choose AI models, upload and manage training sources (text, Q&A, URLs, and files), kick off and monitor web crawls, and track long‑running training jobs.
Base URL
All endpoints are served under a single versioned prefix:
https://api.assistloop.ai/api/public/v1https://api.assistloop.ai is the API host. Every path in this reference is relative to this
base URL.
What you need
- An API key. API requests authenticate with a bearer API key. Create one from your dashboard (Settings → API Keys). See Authentication for details and the available scopes.
- A premium or AppSumo plan. The API is gated to organizations on a paid (premium) plan or with an active AppSumo license. The check runs on every request, so a key stops working the moment the organization downgrades.
- Your organization UUID. Organization‑scoped endpoints (listing/creating agents, starting crawls) take your organization's UUID in the path. You can find it in your dashboard. Agent‑scoped endpoints take the agent's UUID instead.
Quickstart
Create an API key
In your dashboard, open Settings → API Keys, pick the scopes you need (for example
agent:read and source:create), choose an expiry, and copy the key — the full value is shown
only once.
Make your first request
List the AI models available to your organization:
curl https://api.assistloop.ai/api/public/v1/ai-models \
-H "Authorization: Bearer $ASSISTLOOP_API_KEY"Read the response
Successful responses wrap the payload in data, with request metadata under meta:
{
"data": [{ "id": "9b1c7e2a-…", "name": "GPT-4o", "slug": "gpt-4o", "is_premium": true }],
"meta": { "request_id": "b7f0b9c2-…" }
}Next, create an agent and add a source to train it.
Conventions
- JSON everywhere. Requests and responses use JSON, except file uploads, which use
multipart/form-data. Responses are always JSON. - UUIDs as identifiers. Organizations, agents, sources, and AI models are addressed by their UUID — never by a numeric database ID.
- Consistent envelopes. Successful responses wrap the payload in
data, with request metadata undermeta. Errors use anerrorobject (see below). - Request tracing. Every response carries an
X-Request-IDheader, and the same value is echoed inmeta.request_id. Include it when reporting an issue.
Response format
Single resource
{
"data": {
"id": "0c2e0b8a-6c1e-4f7e-9a3a-1b2c3d4e5f60",
"name": "Support Bot"
},
"meta": {
"request_id": "b7f0b9c2-1a2b-4c3d-8e9f-0a1b2c3d4e5f"
}
}Collection (paginated)
{
"data": [ { "id": "..." }, { "id": "..." } ],
"meta": {
"current_page": 1,
"per_page": 25,
"total": 42,
"last_page": 2,
"request_id": "b7f0b9c2-1a2b-4c3d-8e9f-0a1b2c3d4e5f"
},
"links": {
"first": "https://api.assistloop.ai/api/public/v1/agents/.../sources?page=1",
"last": "https://api.assistloop.ai/api/public/v1/agents/.../sources?page=2",
"prev": null,
"next": "https://api.assistloop.ai/api/public/v1/agents/.../sources?page=2"
}
}Error
{
"error": {
"code": "insufficient_scope",
"message": "Token is missing required scope: agent:create",
"details": []
},
"meta": {
"request_id": "b7f0b9c2-1a2b-4c3d-8e9f-0a1b2c3d4e5f"
}
}See Errors for the full list of status codes and error codes.