Eigenpal Automations API
Inspect runnable workflow and agent automations, their versions, triggers, and source sync state.
Inspect runnable workflow and agent automations, their versions, triggers, and source sync state.
openapi: 3.1.0
info:
title: Eigenpal Automations 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: Automations
description: Inspect runnable workflow and agent automations, their versions, triggers, and source sync state.
paths:
/api/v1/automations:
get:
operationId: automations.list
summary: List automations
description: Returns workflows and agents through one runnable automation collection. Use `type` to narrow to workflows or agents, and `search` to find automations by slug, name, or description.
tags:
- Automations
parameters:
- in: query
name: search
schema:
description: Substring match against slug, name, or description
type: string
description: Substring match against slug, name, or description
- in: query
name: type
schema:
description: Filter by implementation type
type: string
enum:
- workflow
- agent
description: Filter by implementation type
- in: query
name: limit
schema:
description: Maximum number of automations to return.
type: integer
minimum: 1
maximum: 100
description: Maximum number of automations to return.
- in: query
name: offset
schema:
description: Zero-based offset for paging through automations.
type: integer
minimum: 0
maximum: 9007199254740991
description: Zero-based offset for paging through automations.
responses:
'200':
description: Page of runnable workflow and agent automations.
content:
application/json:
schema:
$ref: '#/components/schemas/ListAutomationsResponse'
'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/automations/{id}:
get:
operationId: automations.get
summary: Get automation
description: Get one runnable workflow or agent automation by id or typed alias.
tags:
- Automations
parameters:
- in: path
name: id
schema:
type: string
description: Workflow id, agent id, or typed alias like workflows.slug / agents.slug
required: true
description: Workflow id, agent id, or typed alias like workflows.slug / agents.slug
responses:
'200':
description: Automation
content:
application/json:
schema:
$ref: '#/components/schemas/AutomationDetail'
'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/automations/{id}/sync:
post:
operationId: automations.sync
summary: Sync automation from latest Git release
description: 'Reconciles automation registry metadata and trigger projections from the latest Git source release. This operation is idempotent for unchanged source state: repeated calls against the same latest release leave the same automation registry state and may repeat the same warnings. Requires a Bearer API token for the organization and a user-backed API key. It does not publish source; it reads the already-published latest release manifest. Versioned targets are rejected with 400, missing organization/source/release/manifest state returns 404, invalid manifests return 400, and provider or persistence failures return 5xx.'
tags:
- Automations
parameters:
- in: path
name: id
schema:
type: string
description: Automation target to sync, such as agents.invoice-agent or workflows.extract. Do not include a version; sync always uses the latest Git release.
required: true
description: Automation target to sync, such as agents.invoice-agent or workflows.extract. Do not include a version; sync always uses the latest Git release.
responses:
'200':
description: Automation metadata, latest release information, and non-fatal sync warnings.
content:
application/json:
schema:
type: object
properties:
automation:
type: object
properties:
id:
type: string
description: Automation id after reconciliation.
type:
type: string
enum:
- agent
- workflow
description: Automation kind inferred from the source package path.
slug:
type: string
description: Source package slug within agents/ or workflows/.
status:
type: string
enum:
- active
- archived
description: Current automation registry status.
updatedAt:
type: string
description: ISO timestamp for the reconciled automation row.
required:
- id
- type
- slug
- status
- updatedAt
additionalProperties: false
release:
type: object
properties:
version:
type: string
description: Latest released source package version that was synced.
tag:
type: string
description: Git release tag read during sync.
commit:
type: string
description: Git commit for the release tag.
required:
- version
- tag
- commit
additionalProperties: false
warnings:
type: array
items:
type: string
description: Non-fatal source-state warnings, such as unsupported email alias domains.
required:
- automation
- release
- warnings
additionalProperties: false
'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/automations/{id}/triggers:
get:
operationId: automations.triggers.get
summary: Get automation triggers
description: Read trigger state for a workflow or agent automation. Trigger mutation is not public v1.
tags:
- Automations
parameters:
- in: path
name: id
schema:
type: string
description: Workflow id, agent id, or typed alias like workflows.slug / agents.slug
required: true
description: Workflow id, agent id, or typed alias like workflows.slug / agents.slug
responses:
'200':
description: Automation trigger state
content:
application/json:
schema:
$ref: '#/components/schemas/AutomationTriggersResponse'
'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/automations/{id}/versions:
get:
operationId: automations.versions.list
summary: List automation versions
description: List versions for a workflow or agent automation through one read-only route.
tags:
- Automations
parameters:
- in: path
name: id
schema:
type: string
description: Workflow id, agent id, or typed alias like workflows.slug / agents.slug
required: true
description: Workflow id, agent id, or typed alias like workflows.slug / agents.slug
responses:
'200':
description: Automation versions
content:
application/json:
schema:
$ref: '#/components/schemas/ListAutomationVersionsResponse'
'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:
ListAutomationsResponse:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/AutomationSummary'
total:
type: integer
minimum: -9007199254740991
maximum: 9007199254740991
limit:
type: integer
minimum: -9007199254740991
maximum: 9007199254740991
offset:
type: integer
minimum: -9007199254740991
maximum: 9007199254740991
required:
- data
- total
- limit
- offset
additionalProperties: false
ListAutomationVersionsResponse:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/AutomationVersion'
total:
type: integer
minimum: -9007199254740991
maximum: 9007199254740991
limit:
type: integer
minimum: -9007199254740991
maximum: 9007199254740991
offset:
type: integer
minimum: -9007199254740991
maximum: 9007199254740991
required:
- data
- total
- limit
- offset
additionalProperties: false
AutomationType:
type: string
enum:
- workflow
- agent
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:
description: Link to relevant docs
type: string
required:
- issues
- requestId
additionalProperties: false
AutomationTriggerState:
type: object
properties:
api:
type: boolean
email:
type: boolean
manual:
type: boolean
cron:
type: boolean
required:
- api
- email
- manual
- cron
additionalProperties: false
AutomationTriggersResponse:
type: object
properties:
automationId:
type: string
type:
$ref: '#/components/schemas/AutomationType'
triggers:
$ref: '#/components/schemas/AutomationTriggerState'
required:
- automationId
- type
- triggers
additionalProperties: false
ApiErrorIssue:
type: object
properties:
field:
type: string
description: JSON path of the offending field, or "<root>"
message:
type: string
description: Human-readable error message
code:
type: string
description: Machine-readable error code (e.g. invalid_value, not_found, api_trigger_disabled, manual_trigger_disabled)
severity:
type: string
enum:
- error
- warning
description: Issue severity
required:
- field
- message
- code
- severity
additionalProperties: false
AutomationVersion:
type: object
properties:
id:
type: string
automationId:
type: string
version:
anyOf:
- type: string
- type: 'null'
sourceRef:
anyOf:
- type: string
- type: 'null'
isCurrent:
type: boolean
createdAt:
anyOf:
- type: string
- type: string
required:
- id
- automationId
- version
additionalProperties: false
AutomationDetail:
type: object
properties:
id:
type: string
description: Implementation id for the automation. Workflow automations use workflow ids; agent automations use agent workflow ids.
type:
$ref: '#/components/schemas/AutomationType'
slug:
type: string
name:
anyOf:
- type: string
- type: 'null'
description:
anyOf:
- type: string
- type: 'null'
status:
type: string
version:
anyOf:
- type: string
- type: 'null'
triggers:
$ref: '#/components/schemas/AutomationTriggerState'
implementationAvailable:
description: False when the automations registry row exists but the workflow/agent implementation row is missing.
type: boolean
createdAt:
anyOf:
- type: string
- type: string
updatedAt:
anyOf:
- type: string
- type: string
inputSchema:
anyOf:
- type: object
propertyNames:
type: string
additionalProperties: {}
- type: 'null'
outputSchema:
anyOf:
- type: object
propertyNames:
type: string
additionalProperties: {}
- type: 'null'
required:
- id
- type
- slug
- name
- createdAt
additionalProperties: false
AutomationSummary:
type: object
properties:
id:
type: string
description: Implementation id for the automation. Workflow automations use workflow ids; agent automations use agent workflow ids.
type:
$ref: '#/components/schemas/AutomationType'
slug:
type: string
name:
anyOf:
- type: string
- type: 'null'
description:
anyOf:
- type: string
- type: 'null'
status:
type: string
version:
anyOf:
- type: string
- type: 'null'
triggers:
$ref: '#/components/schemas/AutomationTriggerState'
implementationAvailable:
description: False when the automations registry row exists but the workflow/agent implementation row is missing.
type: boolean
createdAt:
anyOf:
- type: string
- type: string
updatedAt:
anyOf:
- type: string
- type: string
required:
- id
- type
- slug
- name
- createdAt
additionalProperties: false
securitySchemes:
bearerAuth:
type: http
scheme: bearer
description: 'API key issued from Settings → API Keys. Pass as `Authorization: Bearer <key>`.'