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 "" 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 `.'