Eigenpal Evaluation API
Manage datasets, examples, evaluators, experiment batches, evaluator scores, and run promotion workflows.
Manage datasets, examples, evaluators, experiment batches, evaluator scores, and run promotion workflows.
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-evaluation-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 Evaluation 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: Evaluation
description: Manage datasets, examples, evaluators, experiment batches, evaluator scores, and run promotion workflows.
paths:
/api/v1/automations/{id}/dataset/export:
get:
operationId: automations.dataset.export
summary: Export automation dataset
description: Download the automation dataset as a ZIP archive. The archive uses the examples/<name>/input and examples/<name>/expected folder convention, so it can be re-imported into another automation or environment.
tags:
- Evaluation
parameters:
- in: path
name: id
schema:
type: string
description: Automation id or typed alias.
required: true
description: Automation id or typed alias.
- in: query
name: exampleIds
schema:
description: Optional comma-separated dataset example ids to export. Omit to export the full dataset.
type: string
description: Optional comma-separated dataset example ids to export. Omit to export the full dataset.
responses:
'200':
description: Dataset ZIP archive.
content:
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/automations/{id}/dataset/import:
post:
operationId: automations.dataset.import
summary: Import automation dataset
description: Import a dataset ZIP archive using the examples/<name>/input and examples/<name>/expected folder convention. Use `mode=append` for additive imports or `mode=replace` to replace the dataset.
tags:
- Evaluation
parameters:
- in: path
name: id
schema:
type: string
description: Automation id or typed alias.
required: true
description: Automation id or typed alias.
requestBody:
required: true
content:
multipart/form-data:
schema:
$ref: '#/components/schemas/AutomationDatasetImportMultipartRequest'
responses:
'200':
description: Import result
content:
application/json:
schema:
$ref: '#/components/schemas/DatasetImportResponse'
'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}/evaluators:
get:
operationId: automations.evaluators.get
summary: Get evaluators
description: Fetch the evaluator configuration for an automation. Evaluators produce automated `score` results, which are separate from human review verdicts.
tags:
- Evaluation
parameters:
- in: path
name: id
schema:
type: string
description: Automation id or typed alias.
required: true
description: Automation id or typed alias.
responses:
'200':
description: Evaluator YAML and parsed configuration.
content:
application/json:
schema:
$ref: '#/components/schemas/EvaluatorConfigResponse'
'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: automations.evaluators.update
summary: Replace evaluators
description: Replace the evaluator YAML for an automation. The submitted YAML is validated before it becomes the source for future experiment scores.
tags:
- Evaluation
parameters:
- in: path
name: id
schema:
type: string
description: Automation id or typed alias.
required: true
description: Automation id or typed alias.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/EvaluatorConfigUpdate'
responses:
'200':
description: Updated evaluator YAML and parsed configuration.
content:
application/json:
schema:
$ref: '#/components/schemas/EvaluatorConfigResponse'
'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}/examples:
get:
operationId: automations.examples.list
summary: List dataset examples
description: List dataset examples for one automation. Examples contain input, expected output, expected files, metadata, and optional overrides used by evaluation runs.
tags:
- Evaluation
parameters:
- in: path
name: id
schema:
type: string
description: Automation id or typed alias, such as `workflows.slug` or `agents.slug`.
required: true
description: Automation id or typed alias, such as `workflows.slug` or `agents.slug`.
- in: query
name: limit
schema:
description: Maximum number of examples to return.
type: integer
minimum: 1
maximum: 100
description: Maximum number of examples to return.
- in: query
name: offset
schema:
description: Zero-based offset for paging through examples.
type: integer
minimum: 0
maximum: 9007199254740991
description: Zero-based offset for paging through examples.
responses:
'200':
description: Page of dataset examples.
content:
application/json:
schema:
$ref: '#/components/schemas/DatasetExampleList'
'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: automations.examples.create
summary: Create dataset example
description: Create one dataset example from JSON fields. Use dataset import for archive-based uploads and file-bearing examples.
tags:
- Evaluation
parameters:
- in: path
name: id
schema:
type: string
description: Automation id or typed alias, such as `workflows.slug` or `agents.slug`.
required: true
description: Automation id or typed alias, such as `workflows.slug` or `agents.slug`.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/DatasetExampleMutation'
responses:
'201':
description: Created dataset example.
content:
application/json:
schema:
$ref: '#/components/schemas/DatasetExample'
'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}/examples/{exampleId}:
get:
operationId: automations.examples.get
summary: Get dataset example
description: Fetch one dataset example, including input, expected output, expected files, metadata, and overrides.
tags:
- Evaluation
parameters:
- in: path
name: id
schema:
type: string
description: Automation id or typed alias.
required: true
description: Automation id or typed alias.
- in: path
name: exampleId
schema:
type: string
description: Dataset example id. Agent examples may use deterministic name-derived ids returned by list/create responses.
required: true
description: Dataset example id. Agent examples may use deterministic name-derived ids returned by list/create responses.
responses:
'200':
description: Dataset example.
content:
application/json:
schema:
$ref: '#/components/schemas/DatasetExample'
'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: automations.examples.update
summary: Update dataset example
description: Partially update a dataset example. Omitted fields are preserved; pass null for nullable fields to clear them.
tags:
- Evaluation
parameters:
- in: path
name: id
schema:
type: string
description: Automation id or typed alias.
required: true
description: Automation id or typed alias.
- in: path
name: exampleId
schema:
type: string
description: Dataset example id. Agent examples may use deterministic name-derived ids returned by list/create responses.
required: true
description: Dataset example id. Agent examples may use deterministic name-derived ids returned by list/create responses.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/DatasetExampleUpdate'
responses:
'200':
description: Updated dataset example.
content:
application/json:
schema:
$ref: '#/components/schemas/DatasetExample'
'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: automations.examples.delete
summary: Delete dataset example
description: Delete one dataset example from the automation dataset. This removes the example from future experiments.
tags:
- Evaluation
parameters:
- in: path
name: id
schema:
type: string
description: Automation id or typed alias.
required: true
description: Automation id or typed alias.
- in: path
name: exampleId
schema:
type: string
description: Dataset example id. Agent examples may use deterministic name-derived ids returned by list/create responses.
required: true
description: Dataset example id. Agent examples may use deterministic name-derived ids returned by list/create responses.
responses:
'200':
description: Deleted dataset example.
content:
application/json:
schema:
$ref: '#/components/schemas/DatasetExample'
'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}/examples/{exampleId}/expected:
get:
operationId: automations.examples.expected.files.list
summary: List expected files
description: List files stored under the expected folder for one automation dataset example.
tags:
- Evaluation
parameters:
- in: path
name: id
schema:
type: string
description: Automation id or typed alias.
required: true
description: Automation id or typed alias.
- in: path
name: exampleId
schema:
type: string
description: Dataset example id.
required: true
description: Dataset example id.
responses:
'200':
description: Expected file paths.
content:
application/json:
schema:
$ref: '#/components/schemas/DatasetExampleExpectedFileList'
'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: automations.examples.expected.files.create
summary: Upload expected files
description: Upload one or more files into the expected folder for an automation dataset example. Use `$file` references such as `expected/result.pdf` from expected JSON to compare file outputs.
tags:
- Evaluation
parameters:
- in: path
name: id
schema:
type: string
description: Automation id or typed alias.
required: true
description: Automation id or typed alias.
- in: path
name: exampleId
schema:
type: string
description: Dataset example id.
required: true
description: Dataset example id.
requestBody:
required: true
content:
multipart/form-data:
schema:
$ref: '#/components/schemas/DatasetExampleExpectedFileUploadRequest'
responses:
'201':
description: Uploaded expected files.
content:
application/json:
schema:
$ref: '#/components/schemas/DatasetExampleExpectedFileUploadResponse'
'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}/examples/{exampleId}/expected/{path}:
get:
operationId: automations.examples.expected.file.get
summary: Download expected dataset file
description: Download one expected file attached to an automation dataset example.
tags:
- Evaluation
parameters:
- in: path
name: id
schema:
type: string
description: Automation id or typed alias.
required: true
description: Automation id or typed alias.
- in: path
name: exampleId
schema:
type: string
description: Dataset example id.
required: true
description: Dataset example id.
- in: path
name: path
schema:
type: string
description: Path under the example expected folder.
required: true
description: Path under the example expected folder.
responses:
'200':
description: Expected dataset file.
content:
application/octet-stream:
schema:
type: string
description: Expected 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: automations.examples.expected.file.update
summary: Rename expected file
description: Rename one expected file attached to an auto
# --- truncated at 32 KB (100 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/eigenpal/refs/heads/main/openapi/eigenpal-evaluation-api-openapi.yml