API reference

Workflows

A workflow is a reusable agent configuration. These endpoints let you list, create, and retrieve workflows scoped to the API key's account.

The workflow object#

idstringoptional
Unique identifier for the workflow.
namestringoptional
Human-readable name, 1–120 characters.
descriptionstring | nulloptional
Optional description, up to 500 characters.
statusstringoptional
Either active or paused. Runs cannot be triggered on a paused workflow.
modelstringoptional
Default model used by agents that don't set their own, e.g. claude-sonnet-4-6.
crewAgent[]optional
The ordered list of agents (1–10). Each agent has role, systemPrompt, and an optional model.
created_atstringoptional
ISO 8601 timestamp of creation.
updated_atstringoptional
ISO 8601 timestamp of the last update. Returned on list and retrieve (not on the create response).

List workflows#

GET/v1/workflows

Returns every workflow owned by the authenticated account, most recently updated first. Takes no parameters.

Request

bash
curl https://api.loopllama.ai/v1/workflows \
  -H "Authorization: Bearer $LOOPLLAMA_API_KEY"

Response

json
{
  "data": [
    {
      "id": "ckv9...",
      "name": "Brief writer",
      "description": null,
      "status": "active",
      "model": "claude-sonnet-4-6",
      "crew": [
        { "role": "planner", "systemPrompt": "You are a planning agent..." },
        { "role": "writer",  "systemPrompt": "You are a writing agent..." }
      ],
      "created_at": "2026-05-20T17:00:00.000Z",
      "updated_at": "2026-05-20T17:00:00.000Z"
    }
  ]
}

Create a workflow#

POST/v1/workflows

Creates a new workflow. If crew is omitted, the default planner→writer crew is used. Responds with 201 Created.

Body parameters

namestringrequired
Workflow name, 1–120 characters.
descriptionstringoptional
Optional description, up to 500 characters.
modelstringoptional
Optional default model, up to 80 characters. Defaults to the server's configured model (claude-sonnet-4-6).
crewAgent[]optional
Optional array of 1–10 agents. Each agent requires role (1–60 chars) and systemPrompt (1–8000 chars), with an optional model.

Request

bash
curl -X POST https://api.loopllama.ai/v1/workflows \
  -H "Authorization: Bearer $LOOPLLAMA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Spec reviewer",
    "description": "Summarize specs and surface risks",
    "crew": [
      { "role": "researcher", "systemPrompt": "Extract key claims and open questions." },
      { "role": "writer", "systemPrompt": "Draft a one-page summary with a Risks section." }
    ]
  }'

Response

json
{
  "data": {
    "id": "ckva...",
    "name": "Spec reviewer",
    "description": "Summarize specs and surface risks",
    "status": "active",
    "model": "claude-sonnet-4-6",
    "crew": [
      { "role": "researcher", "systemPrompt": "Extract key claims and open questions." },
      { "role": "writer", "systemPrompt": "Draft a one-page summary with a Risks section." }
    ],
    "created_at": "2026-05-20T17:05:00.000Z"
  }
}

Retrieve a workflow#

GET/v1/workflows/{id}

Fetches a single workflow by id. Returns 404 Not found if the workflow doesn't exist or belongs to a different account.

Path parameters

idstringrequired
The workflow id.

Request

bash
curl https://api.loopllama.ai/v1/workflows/ckva... \
  -H "Authorization: Bearer $LOOPLLAMA_API_KEY"

Response

json
{
  "data": {
    "id": "ckva...",
    "name": "Spec reviewer",
    "description": "Summarize specs and surface risks",
    "status": "active",
    "model": "claude-sonnet-4-6",
    "crew": [ { "role": "researcher", "systemPrompt": "..." } ],
    "created_at": "2026-05-20T17:05:00.000Z",
    "updated_at": "2026-05-20T17:05:00.000Z"
  }
}