Coval Scheduled Runs API
CRUD operations for scheduled evaluations
CRUD operations for scheduled evaluations
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/coval-scheduled-runs-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
openapi: 3.2.0
info:
title: Coval Agents Scheduled Runs API
version: 1.0.0
description: '
Manage configurations for simulations and evaluations.
'
contact:
name: Coval API Support
email: support@coval.dev
url: https://docs.coval.ai
license:
name: Proprietary
url: https://coval.dev/terms
servers:
- url: https://api.coval.dev/v1
description: Production API
security:
- ApiKeyAuth: []
tags:
- name: Scheduled Runs
description: CRUD operations for scheduled evaluations
paths:
/scheduled-runs:
get:
operationId: listScheduledRuns
summary: List scheduled runs
description: Retrieve a paginated list of scheduled runs with optional filtering.
tags:
- Scheduled Runs
security:
- ApiKeyAuth: []
parameters:
- name: page_size
in: query
required: false
schema:
type: integer
minimum: 1
maximum: 100
default: 50
description: Maximum number of results per page
example: 50
- name: page_token
in: query
required: false
schema:
type: string
description: Opaque pagination token from previous response
- name: enabled
in: query
required: false
schema:
type: boolean
description: Filter by enabled state (true = active schedules, false = paused)
example: true
- name: template_id
in: query
required: false
schema:
type: string
pattern: ^[A-Za-z0-9]{22}$
description: Filter by run template ID
example: abc123def456ghi789jklm
responses:
'200':
description: Scheduled runs retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/ListScheduledRunsResponse'
examples:
success:
$ref: '#/components/examples/ListScheduledRunsSuccess'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'500':
$ref: '#/components/responses/InternalError'
post:
operationId: createScheduledRun
summary: Create scheduled run
description: 'Create a new scheduled run that will trigger evaluations on a recurring schedule.
The schedule is defined using either:
- **Rate expressions**: `rate(15 minutes)`, `rate(1 hour)`, `rate(1 day)`
- **Cron expressions**: `cron(0 9 ? * MON-FRI *)` (9am weekdays)
Schedules are created in an enabled state by default and will begin triggering
at the next scheduled time.
'
tags:
- Scheduled Runs
security:
- ApiKeyAuth: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateScheduledRunRequest'
examples:
rateExpression:
$ref: '#/components/examples/CreateScheduledRunRate'
cronExpression:
$ref: '#/components/examples/CreateScheduledRunCron'
disabled:
$ref: '#/components/examples/CreateScheduledRunDisabled'
responses:
'201':
description: Scheduled run created successfully
content:
application/json:
schema:
$ref: '#/components/schemas/CreateScheduledRunResponse'
examples:
created:
$ref: '#/components/examples/ScheduledRunCreated'
'400':
description: Invalid request body or validation failed
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
invalidSchedule:
$ref: '#/components/examples/InvalidScheduleError'
invalidTimezone:
$ref: '#/components/examples/InvalidTimezoneError'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
description: Referenced run template not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
templateNotFound:
$ref: '#/components/examples/TemplateNotFoundError'
'500':
$ref: '#/components/responses/InternalError'
/scheduled-runs/{scheduled_run_id}:
get:
operationId: getScheduledRun
summary: Get scheduled run
description: Retrieve a specific scheduled run by ID.
tags:
- Scheduled Runs
security:
- ApiKeyAuth: []
parameters:
- name: scheduled_run_id
in: path
required: true
schema:
type: string
pattern: ^[A-Za-z0-9]{22}$
description: Scheduled run resource ID
example: xyz789uvw456rst123abcd
responses:
'200':
description: Scheduled run retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/GetScheduledRunResponse'
examples:
success:
$ref: '#/components/examples/GetScheduledRunSuccess'
'400':
description: Missing or invalid scheduled_run_id
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
description: Scheduled run not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
notFound:
$ref: '#/components/examples/ScheduledRunNotFoundError'
'500':
$ref: '#/components/responses/InternalError'
patch:
operationId: updateScheduledRun
summary: Update scheduled run
description: 'Update specific fields of an existing scheduled run.
Common use cases:
- Enable/disable a schedule: `{"enabled": false}`
- Change the schedule frequency: `{"schedule_expression": "rate(1 hour)"}`
- Update the run template: `{"run_template_id": "new_template_id"}`
'
tags:
- Scheduled Runs
security:
- ApiKeyAuth: []
parameters:
- name: scheduled_run_id
in: path
required: true
schema:
type: string
pattern: ^[A-Za-z0-9]{22}$
description: Scheduled run resource ID
example: xyz789uvw456rst123abcd
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateScheduledRunRequest'
examples:
disable:
$ref: '#/components/examples/UpdateScheduledRunDisable'
changeSchedule:
$ref: '#/components/examples/UpdateScheduledRunSchedule'
responses:
'200':
description: Scheduled run updated successfully
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateScheduledRunResponse'
examples:
updated:
$ref: '#/components/examples/ScheduledRunUpdated'
'400':
description: Invalid request body or validation failed
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
description: Scheduled run not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
notFound:
$ref: '#/components/examples/ScheduledRunNotFoundError'
'500':
$ref: '#/components/responses/InternalError'
delete:
operationId: deleteScheduledRun
summary: Delete scheduled run
description: Delete a scheduled run and remove its associated schedule.
tags:
- Scheduled Runs
security:
- ApiKeyAuth: []
parameters:
- name: scheduled_run_id
in: path
required: true
schema:
type: string
pattern: ^[A-Za-z0-9]{22}$
description: Scheduled run resource ID
example: xyz789uvw456rst123abcd
responses:
'204':
description: Scheduled run deleted successfully
'400':
description: Missing scheduled_run_id
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
description: Scheduled run not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
notFound:
$ref: '#/components/examples/ScheduledRunNotFoundError'
'500':
$ref: '#/components/responses/InternalError'
/scheduled-runs/{scheduled_run_id}/runs:
get:
operationId: listScheduledRunHistory
summary: List a scheduled run's produced runs
description: 'Retrieve the runs a scheduled run has produced, most recent first
(capped at the 500 most recent). Useful for programmatically checking
what a schedule created via `POST /scheduled-runs`.
'
tags:
- Scheduled Runs
security:
- ApiKeyAuth: []
parameters:
- name: scheduled_run_id
in: path
required: true
schema:
type: string
pattern: ^[A-Za-z0-9]{22}$
description: Scheduled run resource ID
example: xyz789uvw456rst123abcd
responses:
'200':
description: Scheduled run history retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/GetScheduledRunHistoryResponse'
'400':
description: Missing scheduled_run_id in path
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
description: Scheduled run not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
notFound:
$ref: '#/components/examples/ScheduledRunNotFoundError'
'500':
$ref: '#/components/responses/InternalError'
components:
examples:
ScheduledRunNotFoundError:
summary: Scheduled run not found
value:
error:
code: NOT_FOUND
message: Scheduled run not found
details:
- field: scheduled_run_id
description: Scheduled run not found or not accessible by your organization
InvalidTimezoneError:
summary: Invalid timezone
value:
error:
code: INVALID_ARGUMENT
message: Invalid request body
details:
- field: schedule_timezone
description: 'Invalid IANA timezone: ''Invalid/Zone'''
CreateScheduledRunDisabled:
summary: Create schedule in disabled state
value:
display_name: Pending Approval Schedule
run_template_id: abc123def456ghi789jklm
schedule_expression: rate(1 hour)
enabled: false
InvalidScheduleError:
summary: Invalid schedule expression
value:
error:
code: INVALID_ARGUMENT
message: Invalid request body
details:
- field: schedule_expression
description: schedule_expression must be 'rate(...)' or 'cron(...)' format
ScheduledRunUpdated:
summary: Scheduled run updated successfully
value:
scheduled_run:
name: scheduled-runs/xyz789uvw456rst123abcd
id: xyz789uvw456rst123abcd
display_name: Hourly Health Check
run_template_id: abc123def456ghi789jklm
schedule_expression: rate(1 hour)
schedule_timezone: UTC
enabled: true
last_run_at: '2025-10-15T14:15:00Z'
last_run_id: 8EktrIgaVxn9LfxkIynagX
create_time: '2025-10-14T12:00:00Z'
update_time: '2025-10-15T15:00:00Z'
CreateScheduledRunCron:
summary: Cron-based schedule (2am daily in EST)
value:
display_name: Nightly Regression Tests
run_template_id: abc123def456ghi789jklm
schedule_expression: cron(0 2 ? * * *)
schedule_timezone: America/New_York
enabled: true
CreateScheduledRunRate:
summary: Rate-based schedule (every 15 minutes)
value:
display_name: Voice Agent Health Check
run_template_id: abc123def456ghi789jklm
schedule_expression: rate(15 minutes)
enabled: true
UpdateScheduledRunSchedule:
summary: Change schedule frequency
value:
schedule_expression: rate(1 hour)
display_name: Hourly Health Check
ScheduledRunCreated:
summary: Scheduled run created successfully
value:
scheduled_run:
name: scheduled-runs/xyz789uvw456rst123abcd
id: xyz789uvw456rst123abcd
display_name: Voice Agent Health Check
run_template_id: abc123def456ghi789jklm
schedule_expression: rate(15 minutes)
schedule_timezone: UTC
enabled: true
last_run_at: null
last_run_id: null
create_time: '2025-10-14T12:00:00Z'
update_time: null
UpdateScheduledRunDisable:
summary: Disable a schedule
value:
enabled: false
GetScheduledRunSuccess:
summary: Successful get response
value:
scheduled_run:
name: scheduled-runs/xyz789uvw456rst123abcd
id: xyz789uvw456rst123abcd
display_name: Voice Agent Health Check
run_template_id: abc123def456ghi789jklm
schedule_expression: rate(15 minutes)
schedule_timezone: UTC
enabled: true
last_run_at: '2025-10-15T14:15:00Z'
last_run_id: 8EktrIgaVxn9LfxkIynagX
create_time: '2025-10-14T12:00:00Z'
update_time: null
TemplateNotFoundError:
summary: Run template not found
value:
error:
code: NOT_FOUND
message: Template not found
details:
- field: run_template_id
description: Run template not found or not accessible by your organization
ListScheduledRunsSuccess:
summary: Successful list response
value:
scheduled_runs:
- name: scheduled-runs/xyz789uvw456rst123abcd
id: xyz789uvw456rst123abcd
display_name: Voice Agent Health Check
run_template_id: abc123def456ghi789jklm
schedule_expression: rate(15 minutes)
schedule_timezone: UTC
enabled: true
last_run_at: '2025-10-15T14:15:00Z'
last_run_id: 8EktrIgaVxn9LfxkIynagX
create_time: '2025-10-14T12:00:00Z'
update_time: null
- name: scheduled-runs/def456ghi789jklmabc123
id: def456ghi789jklmabc123
display_name: Nightly Regression Tests
run_template_id: abc123def456ghi789jklm
schedule_expression: cron(0 2 ? * * *)
schedule_timezone: America/New_York
enabled: true
last_run_at: '2025-10-15T06:00:00Z'
last_run_id: 9FluskHbWyo0MgyiJzobY
create_time: '2025-10-10T09:00:00Z'
update_time: '2025-10-12T11:30:00Z'
next_page_token: null
total_count: 2
schemas:
GetScheduledRunResponse:
type: object
required:
- scheduled_run
properties:
scheduled_run:
$ref: '#/components/schemas/ScheduledRunResource'
GetScheduledRunHistoryResponse:
type: object
required:
- runs
properties:
runs:
type: array
description: Runs produced by the schedule, most recent first
items:
$ref: '#/components/schemas/ScheduledRunHistoryEntry'
ScheduledRunHistoryEntry:
type: object
description: A run produced by a scheduled run (compact, AIP-shaped summary).
required:
- name
- id
- status
- test_set_name
- model_type
- is_public
- create_time
properties:
name:
type: string
description: Resource name in format "runs/{run_id}"
example: runs/8EktrIgaVxn9LfxkIynagX
id:
type: string
description: Run identifier
example: 8EktrIgaVxn9LfxkIynagX
display_name:
type:
- string
- 'null'
description: Human-readable name for the run
example: Nightly regression
status:
type: string
description: Run status
example: COMPLETED
test_set_id:
type:
- string
- 'null'
description: Test set the run executed
example: aB1cD2eF
test_set_name:
type: string
description: Test set display name
example: Checkout flows
agent_id:
type:
- string
- 'null'
description: Agent under test
example: gk3jK9mPq2xRt5vW8yZaBc
model_type:
type: string
description: Model/connection type used for the run
example: openai_realtime
is_public:
type: boolean
description: Whether the run is shared via a public link
example: false
create_time:
type: string
format: date-time
description: When the run was created (ISO 8601)
example: '2025-10-14T12:00:00Z'
ErrorResponse:
type: object
required:
- error
properties:
error:
type: object
required:
- code
- message
- details
properties:
code:
type: string
enum:
- INVALID_ARGUMENT
- UNAUTHENTICATED
- NOT_FOUND
- CONFLICT
- INTERNAL
example: INVALID_ARGUMENT
message:
type: string
description: Human-readable error message
example: Invalid request parameter
details:
type: array
items:
type: object
properties:
field:
type:
- string
- 'null'
description: Field that caused the error
example: schedule_expression
description:
type: string
description: Detailed error description
example: Must be 'rate(...)' or 'cron(...)' format
ScheduledRunResource:
type: object
description: Scheduled run configuration resource.
required:
- name
- id
- display_name
- run_template_id
- schedule_expression
- enabled
- create_time
properties:
name:
type: string
description: 'Resource name: "scheduled-runs/{id}"'
example: scheduled-runs/xyz789uvw456rst123abcd
id:
type: string
pattern: ^[A-Za-z0-9]{22}$
description: Scheduled run resource ID
example: xyz789uvw456rst123abcd
display_name:
type: string
maxLength: 200
description: Human-readable schedule name
example: Voice Agent Health Check
run_template_id:
type: string
pattern: ^[A-Za-z0-9]{22}$
description: Associated run template
example: abc123def456ghi789jklm
schedule_expression:
type: string
description: 'Schedule expression in rate or cron format.
**Rate format**: `rate(value unit)` where unit is minutes, hours, or days
- `rate(15 minutes)` - Every 15 minutes
- `rate(1 hour)` - Every hour
- `rate(1 day)` - Daily
**Cron format**: `cron(minutes hours day-of-month month day-of-week year)`
- `cron(0 9 ? * MON-FRI *)` - 9am weekdays
- `cron(0 2 ? * * *)` - 2am daily
- `cron(0 0 1 * ? *)` - Midnight on 1st of month
'
example: rate(15 minutes)
schedule_timezone:
type: string
default: UTC
description: IANA timezone for cron expressions
example: America/New_York
enabled:
type: boolean
default: true
description: Whether the schedule is active
example: true
last_run_at:
type:
- string
- 'null'
format: date-time
description: Timestamp of the most recent execution
example: '2025-10-15T14:15:00Z'
last_run_id:
type:
- string
- 'null'
description: ID of the most recent run created by this schedule
example: 8EktrIgaVxn9LfxkIynagX
create_time:
type: string
format: date-time
description: Creation timestamp (ISO 8601)
example: '2025-10-14T12:00:00Z'
update_time:
type:
- string
- 'null'
format: date-time
description: Last update timestamp (ISO 8601)
example: '2025-10-15T14:30:00Z'
UpdateScheduledRunRequest:
type: object
description: Partial update request (PATCH semantics - only provided fields are updated)
properties:
display_name:
type: string
minLength: 1
maxLength: 200
description: Human-readable schedule name
example: Updated Schedule Name
run_template_id:
type: string
pattern: ^[A-Za-z0-9]{22}$
description: Run template to execute
example: abc123def456ghi789jklm
schedule_expression:
type: string
maxLength: 200
description: Schedule expression in rate or cron format
example: rate(1 hour)
schedule_timezone:
type: string
maxLength: 100
description: IANA timezone for cron expressions
example: UTC
enabled:
type: boolean
description: Enable or disable the schedule
example: false
CreateScheduledRunRequest:
type: object
required:
- display_name
- run_template_id
- schedule_expression
properties:
display_name:
type: string
minLength: 1
maxLength: 200
description: Human-readable schedule name
example: Voice Agent Health Check
run_template_id:
type: string
pattern: ^[A-Za-z0-9]{22}$
description: Run template to execute (must exist and be accessible)
example: abc123def456ghi789jklm
schedule_expression:
type: string
maxLength: 200
description: 'Schedule expression in rate or cron format.
**Rate format**: `rate(value unit)`
- `rate(15 minutes)` - Every 15 minutes
- `rate(1 hour)` - Every hour
- `rate(1 day)` - Daily
**Cron format**: `cron(minutes hours day-of-month month day-of-week year)`
- `cron(0 9 ? * MON-FRI *)` - 9am weekdays
- `cron(0 2 ? * * *)` - 2am daily
'
example: rate(15 minutes)
schedule_timezone:
type: string
maxLength: 100
default: UTC
description: 'IANA timezone for cron expressions.
Examples: `UTC`, `America/New_York`, `Europe/London`, `Asia/Tokyo`
'
example: America/New_York
enabled:
type: boolean
default: true
description: Whether to enable the schedule immediately
example: true
CreateScheduledRunResponse:
type: object
required:
- scheduled_run
properties:
scheduled_run:
$ref: '#/components/schemas/ScheduledRunResource'
UpdateScheduledRunResponse:
type: object
required:
- scheduled_run
properties:
scheduled_run:
$ref: '#/components/schemas/ScheduledRunResource'
ListScheduledRunsResponse:
type: object
required:
- scheduled_runs
properties:
scheduled_runs:
type: array
items:
$ref: '#/components/schemas/ScheduledRunResource'
next_page_token:
type:
- string
- 'null'
description: Token for fetching next page (null if no more results)
example: eyJvZmZzZXQiOjUwfQ==
total_count:
type: integer
description: Total count of scheduled runs matching filter
example: 12
responses:
BadRequest:
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
error:
code: INVALID_ARGUMENT
message: Invalid request body
details:
- field: display_name
description: Field required
Unauthorized:
description: Authentication failed
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
error:
code: UNAUTHENTICATED
message: Authentication failed
details:
- field: X-API-Key
description: Invalid or missing API key
InternalError:
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
error:
code: INTERNAL
message: Internal server error
details:
- description: An unexpected error occurred
securitySchemes:
ApiKeyAuth:
type: apiKey
in: header
name: x-api-key
description: API key for authentication
x-visibility: external