Skip to article
On this page
  1. Endpoint reference
  2. Versioned API conventions
  3. Shared Field Formats

API Endpoint Overview

Looping Louie API exposes a versioned API for managing the resources used by the execution runtime and for persisting loop-run checkpoints.

The API owns planning, generation, and reviewer decisions. The CLI owns local repository execution, including filesystem, Git, and workspace lifecycle operations.

Endpoint reference

  • Catalog exposes static provider and model definitions.
  • Linked Services manages workspace-owned provider connections.
  • Models exposes the curated model catalog.
  • Personas manages persona instructions.
  • Skills manages skill instructions.
  • Activities manages reusable concrete Activity definitions and their Activity runs.
  • Pipelines manages ordered Activity definitions and persists each supplied step as an independent Activity record.

Versioned API conventions

All catalog, linked-service, model, persona, skill, activity, and pipeline routes use the /api/v1 prefix.

These routes require an authenticated user. In local development, LOUIE_DEV_AUTH=true injects LOUIE_DEV_USER_ID as that user. A request may select one of the user’s workspaces with the optional X-Workspace-ID header. If the user has access to more than one workspace and the header is omitted, the API returns 409 workspace_selection_required.

Persona, skill, activity, Pipeline, and model lists return an object with items and total. Catalog, provider, and linked-service lists return JSON arrays. The optional search query parameter accepted by resource lists is case-insensitive and must contain between 1 and 200 characters. Activity and activity-changelog lists accept a non-negative offset and always return at most ten items. Pipeline lists also use fixed ten-item pages, support status and search, and exclude archived pipelines unless status=archived is requested.

Create operations return 201 Created. Persona and skill content updates use optimistic concurrency and require the current positive integer expected_version; activity updates do not.

Shared Field Formats

The following format applies to every name field on Activity, Pipeline, and Persona create and update requests, including inline Activity definitions in a Pipeline.

Field JSON type Required Restrictions
name String Yes on create; no on update Contains 1 to 140 characters. Starts with a Unicode letter, number, or _. Does not contain whitespace, ., +, ?, /, <, >, *, %, &, or :.

Successful deletes return:

{
  "deleted": true
}

Domain errors use this envelope:

{
  "error": {
    "code": "version_conflict",
    "message": "The resource has changed.",
    "details": {
      "expected_version": 1,
      "current_version": 2
    }
  }
}