API Reference

The Interloom API provides programmatic access to every entity in the platform. All operations available in the UI are also available via the API.

Authentication

All requests require a bearer token in the Authorization header:

Authorization: Bearer YOUR_API_KEY

API keys are scoped to an organization. Contact your administrator to generate a key, or create one under Settings → API Keys if you have admin access.

Base URL

https://api.interloom.com/v1

Response Format

Successful responses return the resource payload at the top level. Metadata is returned in response headers.

{
  "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "name": "Northwest Claims Intake",
  "created_at": "2025-01-15T09:30:00Z"
}
X-Request-Id: a1b2c3d4-e5f6-7890-abcd-ef1234567890
X-Response-Timestamp: 2025-01-15T09:30:00Z

List endpoints return JSON arrays. Pagination uses RFC 5988-style Link headers (similar to GitHub's REST API), so pagination metadata is kept out of the response body.

[
  ...
]
X-Request-Id: a1b2c3d4-e5f6-7890-abcd-ef1234567890
X-Response-Timestamp: 2025-01-15T09:30:00Z
Link: <https://api.interloom.com/v1/cases?first=50>; rel="first", <https://api.interloom.com/v1/cases?first=50&after=eyJpZCI6ImNhc2VfMDAwNTAifQ>; rel="next"

Paginated endpoints accept:

Parameter Type Description
first integer Number of items to return (default 50, max 100).
after string Cursor token from the previous page's Link header.

If results fit on one page, the Link header may be omitted.


Spaces

Method Endpoint Description
GET /spaces List spaces in the organization
POST /spaces Create a new space
GET /spaces/{id} Get a space by ID
PATCH /spaces/{id} Update a space
GET /spaces/{id}/members List space memberships
POST /spaces/{id}/members Add a member to a space

Cases

Method Endpoint Description
GET /cases List cases (filterable by space, phase, motion, priority)
POST /cases Create a new case
GET /cases/{id} Get a case by ID
PATCH /cases/{id} Update a case (title, description, priority, assignment)
POST /cases/{id}/commence Transition from intake to active
POST /cases/{id}/resolve Transition to resolved
POST /cases/{id}/reopen Reopen a resolved case (requires reason)
POST /cases/{id}/close Transition to closed (terminal)
PATCH /cases/{id}/motion Set motion (working, waiting, blocked, paused)
GET /cases/{id}/subcases List subcases of a case

Filtering Cases

The GET /cases endpoint supports query parameters:

Parameter Type Example
space_id uuid Filter by space
phase enum active, intake, resolved, closed
motion enum working, waiting, blocked, paused, idle
priority enum critical, high, medium, low
assigned_actor_id uuid Filter by assigned actor
procedure_id uuid Filter by procedure

Stages

Method Endpoint Description
GET /cases/{id}/stages List stages for a case
GET /stages/{id} Get a stage by ID
PATCH /stages/{id} Update a stage (assignment, motion)
POST /stages/{id}/complete Mark stage as completed
POST /stages/{id}/skip Mark stage as skipped
POST /stages/{id}/spawn-subcase Spawn a subcase from this stage

Instructions

Method Endpoint Description
GET /stages/{id}/instructions List instructions for a stage
POST /stages/{id}/instructions Add an instruction to a stage
PATCH /instructions/{id} Update an instruction
POST /instructions/{id}/complete Mark instruction as completed

Procedures

Method Endpoint Description
GET /procedures List procedures (filterable by space)
POST /procedures Create a new procedure
GET /procedures/{id} Get a procedure by ID
PATCH /procedures/{id} Update a procedure
GET /procedures/{id}/stages List procedure stage templates
POST /procedures/{id}/stages Add a stage template to a procedure
POST /cases/{id}/apply-procedure Apply a procedure to an existing case

Actors

Method Endpoint Description
GET /actors List actors in the organization
POST /actors Create an actor (human or AI)
GET /actors/{id} Get an actor by ID
PATCH /actors/{id} Update an actor

AI Actor Configuration

When creating an AI actor, include the agent configuration:

{
  "type": "ai",
  "name": "Claims Triage Agent",
  "model_id": "claude-sonnet-4-5-20250929",
  "system_prompt": "You are a claims triage specialist...",
  "capabilities": ["triage", "document-review", "correspondence"]
}

Threads

Method Endpoint Description
GET /threads List threads (filterable by space, case)
POST /threads Create a standalone thread
GET /threads/{id} Get a thread by ID
GET /threads/{id}/activities List activities in a thread
POST /threads/{id}/activities Post an activity to a thread

Activity Types

When posting an activity, specify the type:

{
  "type": "comment",
  "content": "Reviewed the police report — liability is clear.",
  "visibility": "public"
}

Valid types: comment, status_change, stage_transition, tool_call, note_edit, system_event.

Artifacts

Method Endpoint Description
GET /artifacts List artifacts (filterable by case, thread, space)
POST /artifacts Upload an artifact
GET /artifacts/{id} Get artifact metadata
GET /artifacts/{id}/download Download artifact content
DELETE /artifacts/{id} Remove an artifact

DataTables

Method Endpoint Description
GET /datatables List data tables
POST /datatables Create a data table
GET /datatables/{id} Get data table metadata and schema
GET /datatables/{id}/rows Query rows (supports filtering, sorting, pagination)

EmailMessages

Method Endpoint Description
GET /emails List email messages
POST /emails Create a draft email
GET /emails/{id} Get an email by ID
PATCH /emails/{id} Update a draft email
POST /emails/{id}/send Queue an email for sending

Tools

Method Endpoint Description
GET /spaces/{id}/tools List tools available in a space
POST /spaces/{id}/tools Register a tool in a space
POST /tools/{id}/attach Attach a tool to an actor

Labels

Method Endpoint Description
GET /spaces/{id}/labels List labels in a space
POST /spaces/{id}/labels Create a label
POST /cases/{id}/labels Apply a label to a case
DELETE /cases/{id}/labels/{label_id} Remove a label from a case

Rate Limits

API requests are limited to 1,000 requests per minute per API key. Rate limit headers are included in all responses:

X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 947
X-RateLimit-Reset: 1705312800

Errors

Errors follow a consistent format:

{
  "error": {
    "code": "case_not_found",
    "message": "No case found with ID a1b2c3d4-...",
    "status": 404
  }
}

Need Help?

For API support, contact us at hello@interloom.com.