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

Public API Overview

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

The API owns planning, generation, reviewer decisions, Harness selection, and durable execution state. The runtime owns local repository execution, including filesystem, Git, Project lifecycle operations, and Worker-local Harness configuration.

Endpoint reference

  • Catalog exposes static provider, model, built-in Persona, and built-in Skill definitions.
  • Users registers and retrieves the current API user.
  • Linked Services manages User-owned provider connections.
  • Projects manages User-owned execution-placement Projects.
  • Personas manages persona instructions.
  • Skills manages skill instructions.
  • Activities manages User-owned reusable concrete Activity definitions and their Project-placed Activity runs.
  • Pipelines manages User-owned ordered Activity definitions and persists each supplied step as an independent User-owned Activity record.
  • Workers provisions runtime identities and records liveness heartbeats required for PipelineRun claims.

Versioned API conventions

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

These routes require a user identity. Until authentication is implemented, clients provide it through X-User-ID. In local development, LOUIE_DEV_AUTH=true injects LOUIE_DEV_USER_ID when the request does not already have an identity. A request may select one of the User’s Projects with the optional X-Project-ID header when it targets execution placement, such as a Worker, PipelineRun, or ActivityRun. Project management routes instead include the Project identifier in their URL. User model routes are user-scoped and ignore the header. If the User has access to more than one Project and the header is omitted, the API returns 409 project_selection_required.

Persona, Skill, Linked Service, standalone Activity, and Pipeline definition routes are user-scoped: their custom definitions, enablement settings, provider connections, Activity definitions, and Pipeline definitions belong to X-User-ID, and they ignore X-Project-ID.

Persona, Skill, Activity, Pipeline, User Model, and catalog Model lists return an object with items and total. Catalog provider, built-in Persona, and built-in Skill lists, plus 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 Activity and Pipeline name fields, including inline Activity definitions. Persona names retain the stricter format described in the Persona endpoint reference.

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 _. May contain spaces but not line breaks, tabs, ., +, ?, /, <, >, *, %, &, 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
    }
  }
}