Eigenpal Runs API
Start, monitor, retry, review, and debug automation runs, including artifacts.
Start, monitor, retry, review, and debug automation runs, including artifacts.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/eigenpal-runs-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Eigenpal Automations Runs API
version: 1.0.0
description: Public REST API for inspecting automations, starting and monitoring runs, managing files, collecting human reviews, and running evaluations.
contact:
name: Eigenpal
url: https://eigenpal.com
license:
name: Apache-2.0
url: https://www.apache.org/licenses/LICENSE-2.0
servers:
- url: https://studio.eigenpal.com
description: Production
security:
- bearerAuth: []
tags:
- name: Runs
description: Start, monitor, retry, review, and debug automation runs, including artifacts.
paths:
/api/v1/runs:
get:
operationId: runs.list
summary: List runs
description: List workflow and agent runs with cursor pagination.
tags:
- Runs
parameters:
- in: query
name: type
schema:
type: string
- in: query
name: source
schema:
type: string
- in: query
name: status
schema:
type: string
- in: query
name: trigger
schema:
type: string
- in: query
name: triggeredBy
schema:
type: string
- in: query
name: sourceRef
schema:
type: string
- in: query
name: batchId
schema:
type: string
- in: query
name: exampleId
schema:
type: string
- in: query
name: exampleIdContains
schema:
type: string
- in: query
name: from
schema:
type: string
- in: query
name: to
schema:
type: string
- in: query
name: createdAfter
schema:
type: string
- in: query
name: createdBefore
schema:
type: string
- in: query
name: completedAfter
schema:
type: string
- in: query
name: completedBefore
schema:
type: string
- in: query
name: cursor
schema:
type: string
- in: query
name: offset
schema:
type: integer
minimum: 0
maximum: 9007199254740991
- in: query
name: limit
schema:
type: integer
minimum: 1
maximum: 100
- in: query
name: ids
schema:
type: string
- in: query
name: experiments
schema:
type: string
- in: query
name: sort
schema:
type: string
- in: query
name: order
schema:
type: string
- in: query
name: reviewStatus
schema:
type: string
- in: query
name: reviewVerdict
schema:
type: string
- in: query
name: hasReview
schema:
type: string
- in: query
name: noReview
schema:
type: string
- in: query
name: hasCorrections
schema:
type: string
- in: query
name: reviewNoteContains
schema:
type: string
- in: query
name: reviewCreatedAfter
schema:
type: string
- in: query
name: reviewCreatedBefore
schema:
type: string
- in: query
name: reviewUpdatedAfter
schema:
type: string
- in: query
name: reviewUpdatedBefore
schema:
type: string
- in: query
name: reviewClosedAfter
schema:
type: string
- in: query
name: reviewClosedBefore
schema:
type: string
- in: query
name: sinceLastClosed
schema:
type: string
- in: query
name: sampleRate
schema:
description: Keep runs whose `sampleRank` is below this threshold (0–1). Pages may return fewer than `limit` rows when filtered.
type: string
description: Keep runs whose `sampleRank` is below this threshold (0–1). Pages may return fewer than `limit` rows when filtered.
responses:
'200':
description: Runs page
content:
application/json:
schema:
$ref: '#/components/schemas/RunsListResponse'
'400':
description: Validation error. Request shape did not match the spec.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorEnvelope'
'401':
description: Missing or invalid API key
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorEnvelope'
'403':
description: API key lacks required scope
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorEnvelope'
'404':
description: Resource not found
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorEnvelope'
'413':
description: Payload too large. Upload exceeded the per-request size cap.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorEnvelope'
'429':
description: Rate limit exceeded
headers:
Retry-After:
description: Seconds until the next request may succeed
schema:
type: string
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorEnvelope'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorEnvelope'
post:
operationId: runs.start
summary: Start a run
description: Start a run. Send JSON or multipart/form-data.
tags:
- Runs
parameters:
- in: query
name: version
schema:
description: Release or git ref. Defaults to latest.
type: string
minLength: 1
description: Release or git ref. Defaults to latest.
- in: query
name: wait_for_completion
schema:
description: Seconds to wait before returning (max 600). Omit for async.
type: integer
minimum: 0
maximum: 600
description: Seconds to wait before returning (max 600). Omit for async.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/RunStartBody'
multipart/form-data:
schema:
$ref: '#/components/schemas/RunStartMultipartRequest'
responses:
'200':
description: Run completed while waiting — same body as GET /api/v1/runs/:id
content:
application/json:
schema:
$ref: '#/components/schemas/RunStartResponse'
'201':
description: Run accepted (async)
content:
application/json:
schema:
$ref: '#/components/schemas/RunStartResponse'
'202':
description: Wait expired with a non-terminal status — poll GET /api/v1/runs/:id
content:
application/json:
schema:
$ref: '#/components/schemas/RunStartResponse'
'400':
description: Validation error. Request shape did not match the spec.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorEnvelope'
'401':
description: Missing or invalid API key
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorEnvelope'
'403':
description: Trigger disabled or insufficient scope. Run start may return api_trigger_disabled when the API trigger is off, or manual_trigger_disabled for dashboard runs on API-only workflows.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorEnvelope'
'404':
description: Resource not found
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorEnvelope'
'413':
description: Payload too large. Upload exceeded the per-request size cap.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorEnvelope'
'429':
description: Rate limit exceeded
headers:
Retry-After:
description: Seconds until the next request may succeed
schema:
type: string
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorEnvelope'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorEnvelope'
/api/v1/runs/{id}:
get:
operationId: runs.get
summary: Get a run
description: Fetch one run by id. By default this returns core metadata plus terminal output/error fields. Pass `?expand=input,usage,execution,debug` to include detailed sub-objects; `expand=execution` is also where embedded review and expected artifacts appear.
tags:
- Runs
parameters:
- in: path
name: id
schema:
type: string
description: Run id
required: true
description: Run id
- in: query
name: expand
schema:
description: 'Optional sections: `input`, `usage`, `execution`, `debug`. Terminal runs always include top-level output, files, and error.'
type: string
description: 'Optional sections: `input`, `usage`, `execution`, `debug`. Terminal runs always include top-level output, files, and error.'
responses:
'200':
description: Run detail. Expanded sections appear only when requested.
content:
application/json:
schema:
$ref: '#/components/schemas/Run'
'400':
description: Validation error. Request shape did not match the spec.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorEnvelope'
'401':
description: Missing or invalid API key
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorEnvelope'
'403':
description: API key lacks required scope
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorEnvelope'
'404':
description: Resource not found
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorEnvelope'
'413':
description: Payload too large. Upload exceeded the per-request size cap.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorEnvelope'
'429':
description: Rate limit exceeded
headers:
Retry-After:
description: Seconds until the next request may succeed
schema:
type: string
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorEnvelope'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorEnvelope'
/api/v1/runs/{id}/artifacts:
get:
operationId: runs.artifacts.list
summary: List run artifacts
description: Returns a JSON list of downloadable artifact paths for a run. Pass `zip=1` to switch the response to a ZIP download containing output files.
tags:
- Runs
parameters:
- in: path
name: id
schema:
type: string
description: Run id
required: true
description: Run id
- in: query
name: zip
schema:
description: When `1`, download output files as a ZIP instead of listing paths. Does not include trace, scores, or input — use `GET /runs/{id}/scores` and `GET /runs/{id}/trace` for those.
type: string
enum:
- '1'
description: When `1`, download output files as a ZIP instead of listing paths. Does not include trace, scores, or input — use `GET /runs/{id}/scores` and `GET /runs/{id}/trace` for those.
- in: query
name: bundle
schema:
description: With `zip=1`, use `review` to download a ZIP with `output/` and `expected/` folders (corrected review artifacts).
type: string
enum:
- review
description: With `zip=1`, use `review` to download a ZIP with `output/` and `expected/` folders (corrected review artifacts).
- in: query
name: token
schema:
description: Signed email download token (zip only; no Bearer required).
type: string
description: Signed email download token (zip only; no Bearer required).
responses:
'200':
description: JSON artifact list, or ZIP bytes when `zip=1`.
content:
application/json:
schema:
$ref: '#/components/schemas/RunArtifactsResponse'
application/octet-stream:
schema:
type: string
description: ZIP archive
format: binary
'400':
description: Validation error. Request shape did not match the spec.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorEnvelope'
'401':
description: Missing or invalid API key
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorEnvelope'
'403':
description: API key lacks required scope
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorEnvelope'
'404':
description: Resource not found
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorEnvelope'
'413':
description: Payload too large. Upload exceeded the per-request size cap.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorEnvelope'
'429':
description: Rate limit exceeded
headers:
Retry-After:
description: Seconds until the next request may succeed
schema:
type: string
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorEnvelope'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorEnvelope'
/api/v1/runs/{id}/artifacts/{path}:
get:
operationId: runs.artifacts.get
summary: Download run artifact
description: Download one artifact by path.
tags:
- Runs
parameters:
- in: path
name: id
schema:
type: string
required: true
- in: path
name: path
schema:
type: string
required: true
responses:
'200':
description: Run artifact
'400':
description: Validation error. Request shape did not match the spec.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorEnvelope'
'401':
description: Missing or invalid API key
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorEnvelope'
'403':
description: API key lacks required scope
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorEnvelope'
'404':
description: Resource not found
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorEnvelope'
'413':
description: Payload too large. Upload exceeded the per-request size cap.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorEnvelope'
'429':
description: Rate limit exceeded
headers:
Retry-After:
description: Seconds until the next request may succeed
schema:
type: string
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorEnvelope'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorEnvelope'
/api/v1/runs/{id}/cancel:
post:
operationId: runs.cancel
summary: Cancel run
description: Cancel a queued run or request cancellation of an in-flight run.
tags:
- Runs
parameters:
- in: path
name: id
schema:
type: string
required: true
responses:
'200':
description: Cancellation result
content:
application/json:
schema:
$ref: '#/components/schemas/RunCancelResponse'
'400':
description: Validation error. Request shape did not match the spec.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorEnvelope'
'401':
description: Missing or invalid API key
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorEnvelope'
'403':
description: API key lacks required scope
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorEnvelope'
'404':
description: Resource not found
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorEnvelope'
'413':
description: Payload too large. Upload exceeded the per-request size cap.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorEnvelope'
'429':
description: Rate limit exceeded
headers:
Retry-After:
description: Seconds until the next request may succeed
schema:
type: string
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorEnvelope'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorEnvelope'
/api/v1/runs/{id}/events:
get:
operationId: runs.events.list
summary: List run events
description: List a stable chronological lifecycle timeline for a run.
tags:
- Runs
parameters:
- in: path
name: id
schema:
type: string
description: Run id
required: true
description: Run id
responses:
'200':
description: Run events
content:
application/json:
schema:
$ref: '#/components/schemas/RunEventsResponse'
'400':
description: Validation error. Request shape did not match the spec.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorEnvelope'
'401':
description: Missing or invalid API key
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorEnvelope'
'403':
description: API key lacks required scope
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorEnvelope'
'404':
description: Resource not found
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorEnvelope'
'413':
description: Payload too large. Upload exceeded the per-request size cap.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorEnvelope'
'429':
description: Rate limit exceeded
headers:
Retry-After:
description: Seconds until the next request may succeed
schema:
type: string
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorEnvelope'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorEnvelope'
/api/v1/runs/{id}/rerun:
post:
operationId: runs.rerun
summary: Retry run
description: Start a new run using the source run input. By default the retry uses the latest automation version; pass `version=original` to pin the same source version as the original run.
tags:
- Runs
parameters:
- in: path
name: id
schema:
type: string
description: Source run id to retry.
required: true
description: Source run id to retry.
- in: query
name: version
schema:
description: Version for the new run. `original` pins the source run. Defaults to latest.
type: string
description: Version for the new run. `original` pins the source run. Defaults to latest.
- in: query
name: wait_for_completion
schema:
description: Seconds to wait before returning (max 600). Omit for async.
type: integer
minimum: 0
maximum: 600
description: Seconds to wait before returning (max 600). Omit for async.
responses:
'200':
description: Rerun completed while waiting
content:
application/json:
schema:
$ref: '#/components/schemas/RunRerunResponse'
'201':
description: Rerun accepted (async)
content:
application/json:
schema:
$ref: '#/components/schemas/RunRerunResponse'
'202':
description: Wait expired with a non-terminal status — poll GET /api/v1/runs/:id
content:
application/json:
schema:
$ref: '#/components/schemas/RunRerunResponse'
'400':
description: Validation error. Request shape did not match the spec.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorEnvelope'
'401':
description: Missing or invalid API key
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorEnvelope'
'403':
description: API key lacks required scope
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorEnvelope'
'404':
description: Resource not found
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorEnvelope'
'413':
description: Payload too large. Upload exceeded the per-request size cap.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorEnvelope'
'429':
description: Rate limit exceeded
headers:
Retry-After:
description: Seconds until the next request may succeed
schema:
type: string
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorEnvelope'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorEnvelope'
/api/v1/runs/{id}/steps:
get:
operationId: runs.steps.list
summary: List run steps
description: List workflow steps or an agent-compatible execution step summary for a run.
tags:
- Runs
parameters:
- in: path
name: id
schema:
type: string
description: Run id
required: true
description: Run id
responses:
'200':
description: Run steps
content:
application/json:
schema:
$ref: '#/components/schemas/RunStepsResponse'
'400':
description: Validation error. Request shape did not match the spec.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorEnvelope'
'401':
description: Missing or invalid API key
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorEnvelope'
'403':
description: API key lacks required scope
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorEnvelope'
'404':
description: Resource not found
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorEnvelope'
'413':
description: Payload too large. Upload exceeded the per-request size cap.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorEnvelope'
'429':
description: Rate limit exceeded
headers:
Retry-After:
description: Seconds until the next request may succeed
schema:
type: string
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorEnvelope'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorEnvelope'
/api/v1/runs/{id}/trace:
get:
operationId: runs.trace.get
summary: Get run trace
description: Return low-level execution trace events for debugging one run. Workflow runs expose observability phases or step records; agent runs expose parsed trace.jsonl events. The shape is intentionally extensible, but common fields are documented.
tags:
- Runs
parameters:
- in: path
name: id
schema:
type: string
description: Run id.
required: true
description: Run id.
responses:
'200':
description: Run trace events.
content:
application/json:
schema:
$ref: '#/components/schemas/RunTraceResponse'
'400':
description: Validation error. Request shape did not match the spec.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorEnvelope'
'401':
description: Missing or invalid API key
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorEnvelope'
'403':
description: API key lacks required scope
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorEnvelope'
'404':
description: Resource not found
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorEnvelope'
'413':
description: Payload too large. Upload exceeded the per-request size cap.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorEnvelope'
'429':
description: Rate limit exceeded
headers:
Retry-After:
description: Seconds until the next request may succeed
schema:
type: string
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorEnvelope'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorEnvelope'
/api/v1/runs/{id}/usage:
get:
operationId: runs.usage.get
summary: Get run usage
description: Get token, credit, duration, and execution usage for a run.
tags:
- Runs
parameters:
- in: path
name: id
schema:
type: string
description: Run id
required: true
description: Run id
responses:
'200':
description: Run usage
content:
application/json:
schema:
$ref: '#/components/schemas/RunUsageResponse'
'400':
description: Validation error. Request shape did not match the spec.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorEnvelope'
'401':
description: Missing or invalid API key
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorEnvelope'
'403':
description: API key lacks required scope
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorEnvelope'
'404':
description: Resource not found
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorEnvelope'
'413':
description: Payload too large. Upload exceeded the per-request size cap.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorEnvelope'
'429':
description: Rate limit exceeded
headers:
Retry-After:
description: Seconds until the next request may succeed
schema:
type: string
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorEnvelope'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorEnvelope'
components:
schemas:
ExecutionStatus:
type: string
enum:
- created
- pending
- running
- waiting
- finalizing
- completed
- failed
- cancelled
- rejected
ApiErrorEnvelope:
type: object
properties:
issues:
type: array
items:
$ref: '#/components/schemas/ApiErrorIssue'
requestId:
type: string
description: Request id echoed via the x-request-id header
hint:
description: Suggested fix for known error patterns
type: string
docsUrl:
# --- truncated at 32 KB (61 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/eigenpal/refs/heads/main/openapi/eigenpal-runs-api-openapi.yml