Eigenpal Reviews API
Record human review verdicts, manage corrected outputs, and monitor review health.
Record human review verdicts, manage corrected outputs, and monitor review health.
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-reviews-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 Reviews 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: Reviews
description: Record human review verdicts, manage corrected outputs, and monitor review health.
paths:
/api/v1/automations/{id}/reviews/health:
get:
operationId: automations.reviews.health
summary: Get automation review health
description: Aggregates reviewed correctness, review coverage, bucketed counts, and rolling-window confidence for one automation. Prefer this endpoint for single-automation monitoring dashboards.
tags:
- Reviews
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.
- in: query
name: type
schema:
description: 'Comma-separated: workflow,agent.'
type: string
description: 'Comma-separated: workflow,agent.'
- in: query
name: status
schema:
description: Comma-separated execution statuses.
type: string
description: Comma-separated execution statuses.
- in: query
name: trigger
schema:
description: Comma-separated trigger types.
type: string
description: Comma-separated trigger types.
- in: query
name: triggeredBy
schema:
description: Comma-separated user ids, or __system__ for system-triggered runs.
type: string
description: Comma-separated user ids, or __system__ for system-triggered runs.
- 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:
description: Start of the run-created time range. Defaults to now-30d.
type: string
description: Start of the run-created time range. Defaults to now-30d.
- in: query
name: to
schema:
description: End of the run-created time range.
type: string
description: End of the run-created time range.
- in: query
name: completedAfter
schema:
type: string
- in: query
name: completedBefore
schema:
type: string
- in: query
name: experiments
schema:
description: Set to false to exclude experiment batch runs.
type: string
description: Set to false to exclude experiment batch runs.
- in: query
name: bucket
schema:
description: Calendar bucket size for the bar chart series. Defaults to day.
type: string
enum:
- day
- week
- month
description: Calendar bucket size for the bar chart series. Defaults to day.
- in: query
name: rollingWindow
schema:
description: Number of reviewed runs per rolling correctness point. Defaults to 100.
type: integer
minimum: 1
maximum: 1000
description: Number of reviewed runs per rolling correctness point. Defaults to 100.
- in: query
name: minRollingReviews
schema:
description: Minimum reviewed runs required before emitting rolling points. Defaults to 1.
type: integer
minimum: 1
maximum: 1000
description: Minimum reviewed runs required before emitting rolling points. Defaults to 1.
responses:
'200':
description: Automation review health metrics.
content:
application/json:
schema:
$ref: '#/components/schemas/RunReviewHealthResponse'
'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}/promote:
post:
operationId: runs.promote
summary: Promote run to example
description: Turn a reviewed run into a dataset example. The new example uses the run input and any corrected output/files stored through the review endpoints.
tags:
- Reviews
parameters:
- in: path
name: id
schema:
type: string
description: Run id.
required: true
description: Run id.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PromoteRunRequest'
responses:
'200':
description: Created or updated a dataset example from the run
content:
application/json:
schema:
$ref: '#/components/schemas/PromoteRunResponse'
'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}/reviews:
get:
operationId: runs.reviews.get
summary: Get run review
description: Returns review metadata and corrections for a run. Corrected files are listed at GET /runs/{id}/reviews/expected; embed review + expected artifacts with GET /runs/{id}?expand=execution.
tags:
- Reviews
parameters:
- in: path
name: id
schema:
type: string
description: Run id.
required: true
description: Run id.
responses:
'200':
description: Run review metadata.
content:
application/json:
schema:
$ref: '#/components/schemas/RunReviewDetail'
'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'
put:
operationId: runs.reviews.update
summary: Update run review
description: Create or replace review metadata for a run.
tags:
- Reviews
parameters:
- in: path
name: id
schema:
type: string
description: Run id.
required: true
description: Run id.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/RunReviewRequest'
responses:
'200':
description: Updated run review metadata.
content:
application/json:
schema:
$ref: '#/components/schemas/RunReviewDetail'
'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'
delete:
operationId: runs.reviews.clear
summary: Clear run review
description: Deletes review metadata, corrections, and corrected files for the run.
tags:
- Reviews
parameters:
- in: path
name: id
schema:
type: string
description: Run id.
required: true
description: Run id.
responses:
'200':
description: Empty run review state.
content:
application/json:
schema:
$ref: '#/components/schemas/RunReviewDetail'
'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}/reviews/expected:
get:
operationId: runs.reviews.expected.get
summary: List corrected files
description: Returns corrected artifact files attached to the run review. Review metadata and corrected JSON output live at GET /runs/{id}/reviews.
tags:
- Reviews
parameters:
- in: path
name: id
schema:
type: string
description: Run id.
required: true
description: Run id.
responses:
'200':
description: Corrected artifact files.
content:
application/json:
schema:
$ref: '#/components/schemas/RunReviewExpectedArtifacts'
'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.reviews.expected.create
summary: Add corrected file
description: Attach one corrected file to a run review. Send multipart/form-data with `file` and optional `name` to upload a local file, or JSON with `outputFileName` and optional `expectedName` to copy an existing run output file.
tags:
- Reviews
parameters:
- in: path
name: id
schema:
type: string
description: Run id.
required: true
description: Run id.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/RunReviewExpectedFileCopyRequest'
multipart/form-data:
schema:
$ref: '#/components/schemas/RunReviewExpectedFileUploadRequest'
responses:
'201':
description: Corrected file created.
content:
application/json:
schema:
$ref: '#/components/schemas/RunReviewExpectedFileMutationResponse'
'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}/reviews/expected/{filename}:
get:
operationId: runs.reviews.expected.file.get
summary: Download corrected artifact file
description: Downloads one corrected artifact file attached to the run review. Use the `filename` returned by the corrected-output collection endpoint.
tags:
- Reviews
parameters:
- in: path
name: id
schema:
type: string
description: Run id.
required: true
description: Run id.
- in: path
name: filename
schema:
type: string
description: Corrected artifact file name or slash-delimited path, as returned by `GET /runs/{id}/reviews/expected`.
required: true
description: Corrected artifact file name or slash-delimited path, as returned by `GET /runs/{id}/reviews/expected`.
responses:
'200':
description: Corrected file bytes.
content:
application/octet-stream:
schema:
type: string
description: Corrected file bytes.
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'
patch:
operationId: runs.reviews.expected.file.update
summary: Rename corrected artifact file
description: Renames one corrected artifact file attached to the run review.
tags:
- Reviews
parameters:
- in: path
name: id
schema:
type: string
description: Run id.
required: true
description: Run id.
- in: path
name: filename
schema:
type: string
description: Corrected artifact file name or slash-delimited path, as returned by `GET /runs/{id}/reviews/expected`.
required: true
description: Corrected artifact file name or slash-delimited path, as returned by `GET /runs/{id}/reviews/expected`.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/RunReviewExpectedFileUpdateRequest'
responses:
'200':
description: Renamed corrected file.
content:
application/json:
schema:
$ref: '#/components/schemas/RunReviewExpectedFileUpdateResponse'
'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'
delete:
operationId: runs.reviews.expected.file.delete
summary: Delete corrected artifact file
description: Deletes one corrected artifact file attached to the run review.
tags:
- Reviews
parameters:
- in: path
name: id
schema:
type: string
description: Run id.
required: true
description: Run id.
- in: path
name: filename
schema:
type: string
description: Corrected artifact file name or slash-delimited path, as returned by `GET /runs/{id}/reviews/expected`.
required: true
description: Corrected artifact file name or slash-delimited path, as returned by `GET /runs/{id}/reviews/expected`.
responses:
'204':
description: Corrected file deleted; no response body.
'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:
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
RunReviewExpectedArtifacts:
type: object
properties:
files:
type: array
items:
$ref: '#/components/schemas/RunFile'
description: Corrected artifact files attached to the run review. Corrected JSON output lives on the review object at GET /runs/{id}/reviews.
required:
- files
additionalProperties: false
RunReviewHealthResponse:
type: object
properties:
timeRange:
type: object
properties:
from:
type: string
to:
type: string
required:
- from
- to
additionalProperties: false
granularity:
type: object
properties:
bucket:
type: string
enum:
- day
- week
- month
rollingWindow:
type: integer
minimum: -9007199254740991
maximum: 9007199254740991
minRollingReviews:
type: integer
minimum: -9007199254740991
maximum: 9007199254740991
required:
- bucket
- rollingWindow
- minRollingReviews
additionalProperties: false
summary:
$ref: '#/components/schemas/RunReviewHealthSummary'
buckets:
type: array
items:
$ref: '#/components/schemas/RunReviewHealthBucket'
rolling:
type: array
items:
$ref: '#/components/schemas/RunReviewHealthRollingPoint'
required:
- timeRange
- granularity
- summary
- buckets
- rolling
additionalProperties: false
RunFile:
type: object
properties:
name:
type: string
required:
- name
additionalProperties: false
PromoteRunResponse:
type: object
properties:
automationId:
type: string
description: Automation that owns the promoted example.
automationType:
type: string
enum:
- workflow
- agent
description: Implementation type behind the automation.
exampleId:
type: string
description: Dataset example identifier returned for follow-up API calls.
name:
anyOf:
- type: string
- type: 'null'
description: Dataset example name.
required:
- automationId
- automationType
- exampleId
- name
additionalProperties: false
RunReviewExpectedFileUpdateRequest:
type: object
properties:
name:
type: string
description: New corrected file name.
required:
- name
description: Rename one corrected file.
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
RunReviewCorrection:
type: object
properties:
id:
type: string
kind:
type: string
enum:
- field
- file
path:
type: string
description: JSON Pointer for field corrections, or canonical artifact path for file reviews.
label:
anyOf:
- type: string
- ty
# --- truncated at 32 KB (43 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/eigenpal/refs/heads/main/openapi/eigenpal-reviews-api-openapi.yml