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/v1

https://api.assistloop.ai is the API host. Every path in this reference is relative to this base URL.

What you need

  1. 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.
  2. 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.
  3. 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:

Your first request
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 under meta. Errors use an error object (see below).
  • Request tracing. Every response carries an X-Request-ID header, and the same value is echoed in meta.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.

Resource overview