EvalGate Ops API
The ops API from EvalGate — 3 operation(s) for ops.
The ops API from EvalGate — 3 operation(s) for ops.
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/evalgate-com:evalgate-com-ops-api"
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
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: EvalGate Ops API
version: 18.13.0
description: EvalGate API. See docs/api-contract.md for stability commitments.
servers:
- url: https://evalgate.com
description: Production
- url: http://localhost:3000
description: Local
tags:
- name: ops
paths:
/api/ops/health:
get:
x-evalgate-source-hash: sha256:e116a64f38d4df7c041c2a4e26f12c3714d0e1031f16e2be2600fd9da7b1044c
summary: List ops health
operationId: get_ops_health
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/GetApiOpsHealthResponse200ApplicationJson'
'400':
$ref: '#/components/responses/ValidationError'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'409':
$ref: '#/components/responses/Conflict'
'429':
$ref: '#/components/responses/RateLimited'
'500':
$ref: '#/components/responses/InternalError'
'503':
$ref: '#/components/responses/ServiceUnavailable'
security:
- bearerAuth: []
tags:
- ops
x-evalgate-required-scopes:
- admin:workspace
description: 'Requires scopes: admin:workspace'
x-evalgate-contract-hash: sha256:a9ed0bfc26c9193eec6601c8b5d0ae360e42bd67b500b9a34cdf4169924c23b0
/api/ops/reconciliation:
get:
x-evalgate-source-hash: sha256:ef3259623f3be3065c91b4b88f736dd8a2dd5d658054ebe2da5a3e6bb6d91880
summary: List ops reconciliation
operationId: get_ops_reconciliation
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/GetApiOpsReconciliationResponse200ApplicationJson'
'400':
$ref: '#/components/responses/ValidationError'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'409':
$ref: '#/components/responses/Conflict'
'429':
$ref: '#/components/responses/RateLimited'
'500':
$ref: '#/components/responses/InternalError'
'503':
$ref: '#/components/responses/ServiceUnavailable'
security:
- bearerAuth: []
tags:
- ops
x-evalgate-required-scopes:
- admin:workspace
description: 'Requires scopes: admin:workspace'
x-evalgate-contract-hash: sha256:257a8dd69495042ad33a83c62a79d6aa184a04680847705142f4f51e07fe2ae2
/api/ops/slo:
get:
x-evalgate-source-hash: sha256:b08d683bc9a5aa984695ad744e14b36f69f85434f37e5131cd07b9afb94a8da6
summary: List ops slo
operationId: get_ops_slo
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/GetApiOpsSloResponse200ApplicationJson'
'400':
$ref: '#/components/responses/ValidationError'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'409':
$ref: '#/components/responses/Conflict'
'429':
$ref: '#/components/responses/RateLimited'
'500':
$ref: '#/components/responses/InternalError'
'503':
$ref: '#/components/responses/ServiceUnavailable'
security:
- bearerAuth: []
tags:
- ops
x-evalgate-required-scopes:
- admin:workspace
description: 'Requires scopes: admin:workspace'
parameters:
- name: limit
in: query
required: false
schema:
type: integer
minimum: 1
maximum: 1000
default: 50
- name: offset
in: query
required: false
schema:
type: integer
minimum: 0
default: 0
x-evalgate-contract-hash: sha256:f65aff8c291aa9c48257bf74e6276932bac9670e5c42edfbe6576b77fad96364
components:
schemas:
GetApiOpsReconciliationResponse200ApplicationJson:
type: object
properties:
evaluatedAt:
type: string
overallStatus:
oneOf:
- type: string
enum:
- unknown
- type: string
enum:
- warning
- type: string
enum:
- ok
- type: string
enum:
- breached
checks:
type: array
items:
type: object
properties:
id:
type: string
name:
type: string
status:
oneOf:
- type: string
enum:
- unknown
- type: string
enum:
- warning
- type: string
enum:
- ok
- type: string
enum:
- breached
count:
type: number
warnThreshold:
type: number
breachThreshold:
type: number
sampleIds:
type: array
items:
type: string
details:
type: string
additionalProperties: false
required:
- id
- name
- status
- count
- warnThreshold
- breachThreshold
- sampleIds
- details
additionalProperties: false
required:
- evaluatedAt
- overallStatus
- checks
GetApiOpsSloResponse200ApplicationJson:
type: object
properties:
evaluatedAt:
type: string
overallStatus:
oneOf:
- type: string
enum:
- breached
- type: string
enum:
- ok
- type: string
enum:
- unavailable
- type: string
enum:
- unknown
- type: string
enum:
- warning
measurements:
type: array
items:
type: object
properties:
sloId:
type: string
name:
type: string
target:
type: number
actual:
oneOf:
- type: 'null'
- type: number
errorBudgetRemaining:
oneOf:
- type: 'null'
- type: number
status:
oneOf:
- type: string
enum:
- breached
- type: string
enum:
- ok
- type: string
enum:
- unavailable
- type: string
enum:
- unknown
- type: string
enum:
- warning
windowHours:
type: number
sampleCount:
type: number
reason:
oneOf:
- type: 'null'
- type: string
enum:
- history_incomplete
- type: string
enum:
- measurement_failed
- type: string
enum:
- no_samples
- type: string
enum:
- unknown_pending_eligibility
- type: string
enum:
- unsupported_queue_backend
backlog:
type: object
properties:
pendingCount:
type: number
runningCount:
type: number
overdueCount:
type: number
status:
oneOf:
- type: string
enum:
- breached
- type: string
enum:
- ok
deadlineMs:
type: number
additionalProperties: false
required:
- pendingCount
- runningCount
- overdueCount
- status
- deadlineMs
additionalProperties: false
required:
- sloId
- name
- target
- actual
- errorBudgetRemaining
- status
- windowHours
- sampleCount
- reason
additionalProperties: false
required:
- evaluatedAt
- overallStatus
- measurements
ApiError:
type: object
properties:
error:
type: object
properties:
code:
type: string
enum:
- UNAUTHORIZED
- FORBIDDEN
- NOT_FOUND
- INVALID_REFERENCE
- VALIDATION_ERROR
- RATE_LIMITED
- CONFLICT
- INTERNAL_ERROR
- SERVICE_UNAVAILABLE
- QUOTA_EXCEEDED
- FEATURE_LIMIT_REACHED
- NO_ORG_MEMBERSHIP
- SHARE_REVOKED
- SHARE_EXPIRED
- SHARE_UNAVAILABLE
- PROVIDER_KEY_MISSING
- PROVIDER_KEY_EXPIRED
- PROVIDER_RATE_LIMITED
- PROVIDER_UNAUTHORIZED
- PROVIDER_UNAVAILABLE
- AGENT_HANDOFF_INVALID
- AGENT_HANDOFF_EXPIRED
- AGENT_HANDOFF_DENIED
- AGENT_HANDOFF_CONSUMED
- PAYLOAD_TOO_LARGE
- METHOD_NOT_ALLOWED
message:
type: string
details: {}
requestId:
type: string
format: uuid
redaction:
type: object
properties:
applied:
type: boolean
enum:
- true
fieldCount:
type: integer
minimum: 0
secretCount:
type: integer
minimum: 0
required:
- applied
- fieldCount
- secretCount
required:
- code
- message
required:
- error
GetApiOpsHealthResponse200ApplicationJson:
type: object
properties:
status:
oneOf:
- type: string
enum:
- healthy
- type: string
enum:
- degraded
- type: string
enum:
- unhealthy
checkedAt:
type: string
subsystems:
type: array
items:
type: object
properties:
name:
type: string
status:
oneOf:
- type: string
enum:
- healthy
- type: string
enum:
- degraded
- type: string
enum:
- unhealthy
latencyMs:
type: number
detail:
oneOf:
- type: 'null'
- type: string
additionalProperties: false
required:
- name
- status
- latencyMs
- detail
operational:
type: boolean
queue:
type: object
properties:
backend:
oneOf:
- type: string
enum:
- postgres
- type: string
enum:
- redis
pendingCount:
type: number
runningCount:
type: number
deadLetterCount:
type: number
oldestPendingAgeMs:
oneOf:
- type: 'null'
- type: number
stuckRunningCount:
type: number
deadLetterByType:
type: object
additionalProperties:
type: number
repositoryActivationQueuedCount:
type: number
repositoryActivationQueuedAgeMs:
oneOf:
- type: 'null'
- type: number
repositoryActivationRunningCount:
type: number
repositoryActivationStuckRunningCount:
type: number
repositoryActivationDeadLetterCount:
type: number
additionalProperties: false
required:
- backend
- pendingCount
- runningCount
- deadLetterCount
- oldestPendingAgeMs
- stuckRunningCount
- deadLetterByType
- repositoryActivationQueuedCount
- repositoryActivationQueuedAgeMs
- repositoryActivationRunningCount
- repositoryActivationStuckRunningCount
- repositoryActivationDeadLetterCount
additionalProperties: false
required:
- status
- checkedAt
- subsystems
- operational
- queue
responses:
Unauthorized:
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
headers:
RateLimit-Limit:
description: Quota in requests for the active window.
schema:
type: integer
minimum: 0
RateLimit-Remaining:
description: Remaining requests in the active window.
schema:
type: integer
minimum: 0
RateLimit-Reset:
description: Reset delay in seconds (not a Unix timestamp).
schema:
type: integer
minimum: 1
X-RateLimit-Limit:
schema:
type: integer
minimum: 0
X-RateLimit-Remaining:
schema:
type: integer
minimum: 0
X-RateLimit-Reset:
description: Legacy reset timestamp in Unix milliseconds.
schema:
type: integer
minimum: 0
RateLimit-Policy:
description: IETF HTTPAPI structured quota policy (work in progress).
schema:
type: string
RateLimit:
description: IETF HTTPAPI structured remaining quota and reset delay (work in progress).
schema:
type: string
WWW-Authenticate:
description: Bearer challenge. Agent-facing routes include the RFC 9728 resource_metadata URL.
schema:
type: string
Conflict:
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
headers:
RateLimit-Limit:
description: Quota in requests for the active window.
schema:
type: integer
minimum: 0
RateLimit-Remaining:
description: Remaining requests in the active window.
schema:
type: integer
minimum: 0
RateLimit-Reset:
description: Reset delay in seconds (not a Unix timestamp).
schema:
type: integer
minimum: 1
X-RateLimit-Limit:
schema:
type: integer
minimum: 0
X-RateLimit-Remaining:
schema:
type: integer
minimum: 0
X-RateLimit-Reset:
description: Legacy reset timestamp in Unix milliseconds.
schema:
type: integer
minimum: 0
RateLimit-Policy:
description: IETF HTTPAPI structured quota policy (work in progress).
schema:
type: string
RateLimit:
description: IETF HTTPAPI structured remaining quota and reset delay (work in progress).
schema:
type: string
RateLimited:
description: Rate limit exceeded
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
headers:
RateLimit-Limit:
description: Quota in requests for the active window.
schema:
type: integer
minimum: 0
RateLimit-Remaining:
description: Remaining requests in the active window.
schema:
type: integer
minimum: 0
RateLimit-Reset:
description: Reset delay in seconds (not a Unix timestamp).
schema:
type: integer
minimum: 1
X-RateLimit-Limit:
schema:
type: integer
minimum: 0
X-RateLimit-Remaining:
schema:
type: integer
minimum: 0
X-RateLimit-Reset:
description: Legacy reset timestamp in Unix milliseconds.
schema:
type: integer
minimum: 0
RateLimit-Policy:
description: IETF HTTPAPI structured quota policy (work in progress).
schema:
type: string
RateLimit:
description: IETF HTTPAPI structured remaining quota and reset delay (work in progress).
schema:
type: string
Retry-After:
description: Delay in seconds before retrying when present.
schema:
type: integer
minimum: 1
ValidationError:
description: Validation error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
headers:
RateLimit-Limit:
description: Quota in requests for the active window.
schema:
type: integer
minimum: 0
RateLimit-Remaining:
description: Remaining requests in the active window.
schema:
type: integer
minimum: 0
RateLimit-Reset:
description: Reset delay in seconds (not a Unix timestamp).
schema:
type: integer
minimum: 1
X-RateLimit-Limit:
schema:
type: integer
minimum: 0
X-RateLimit-Remaining:
schema:
type: integer
minimum: 0
X-RateLimit-Reset:
description: Legacy reset timestamp in Unix milliseconds.
schema:
type: integer
minimum: 0
RateLimit-Policy:
description: IETF HTTPAPI structured quota policy (work in progress).
schema:
type: string
RateLimit:
description: IETF HTTPAPI structured remaining quota and reset delay (work in progress).
schema:
type: string
Forbidden:
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
headers:
RateLimit-Limit:
description: Quota in requests for the active window.
schema:
type: integer
minimum: 0
RateLimit-Remaining:
description: Remaining requests in the active window.
schema:
type: integer
minimum: 0
RateLimit-Reset:
description: Reset delay in seconds (not a Unix timestamp).
schema:
type: integer
minimum: 1
X-RateLimit-Limit:
schema:
type: integer
minimum: 0
X-RateLimit-Remaining:
schema:
type: integer
minimum: 0
X-RateLimit-Reset:
description: Legacy reset timestamp in Unix milliseconds.
schema:
type: integer
minimum: 0
RateLimit-Policy:
description: IETF HTTPAPI structured quota policy (work in progress).
schema:
type: string
RateLimit:
description: IETF HTTPAPI structured remaining quota and reset delay (work in progress).
schema:
type: string
ServiceUnavailable:
description: Service unavailable
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
headers:
RateLimit-Limit:
description: Quota in requests for the active window.
schema:
type: integer
minimum: 0
RateLimit-Remaining:
description: Remaining requests in the active window.
schema:
type: integer
minimum: 0
RateLimit-Reset:
description: Reset delay in seconds (not a Unix timestamp).
schema:
type: integer
minimum: 1
X-RateLimit-Limit:
schema:
type: integer
minimum: 0
X-RateLimit-Remaining:
schema:
type: integer
minimum: 0
X-RateLimit-Reset:
description: Legacy reset timestamp in Unix milliseconds.
schema:
type: integer
minimum: 0
RateLimit-Policy:
description: IETF HTTPAPI structured quota policy (work in progress).
schema:
type: string
RateLimit:
description: IETF HTTPAPI structured remaining quota and reset delay (work in progress).
schema:
type: string
InternalError:
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
headers:
RateLimit-Limit:
description: Quota in requests for the active window.
schema:
type: integer
minimum: 0
RateLimit-Remaining:
description: Remaining requests in the active window.
schema:
type: integer
minimum: 0
RateLimit-Reset:
description: Reset delay in seconds (not a Unix timestamp).
schema:
type: integer
minimum: 1
X-RateLimit-Limit:
schema:
type: integer
minimum: 0
X-RateLimit-Remaining:
schema:
type: integer
minimum: 0
X-RateLimit-Reset:
description: Legacy reset timestamp in Unix milliseconds.
schema:
type: integer
minimum: 0
RateLimit-Policy:
description: IETF HTTPAPI structured quota policy (work in progress).
schema:
type: string
RateLimit:
description: IETF HTTPAPI structured remaining quota and reset delay (work in progress).
schema:
type: string
NotFound:
description: Resource not found
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
headers:
RateLimit-Limit:
description: Quota in requests for the active window.
schema:
type: integer
minimum: 0
RateLimit-Remaining:
description: Remaining requests in the active window.
schema:
type: integer
minimum: 0
RateLimit-Reset:
description: Reset delay in seconds (not a Unix timestamp).
schema:
type: integer
minimum: 1
X-RateLimit-Limit:
schema:
type: integer
minimum: 0
X-RateLimit-Remaining:
schema:
type: integer
minimum: 0
X-RateLimit-Reset:
description: Legacy reset timestamp in Unix milliseconds.
schema:
type: integer
minimum: 0
RateLimit-Policy:
description: IETF HTTPAPI structured quota policy (work in progress).
schema:
type: string
RateLimit:
description: IETF HTTPAPI structured remaining quota and reset delay (work in progress).
schema:
type: string
securitySchemes:
bearerAuth:
type: http
scheme: bearer
bearerFormat: EvalGate API key
description: Organization-scoped EvalGate API key. Discover the supported agent scopes at /.well-known/oauth-protected-resource. Per-operation grants are listed in x-evalgate-required-scopes; OpenAPI bearer security requirement arrays remain empty as required for non-OAuth schemes.
x-evalgate-scopes-supported:
- eval:read
- eval:write
- objectives:read
- objectives:write
- runs:read
- runs:write
- traces:read
- traces:write
- exports:download
- reports:write
- prompt:publish
- scorer:publish
- red_team:read
- red_team:run
- red_team:approve
- docs:read
- agent:read
- agent:execute
- resources:read
- resources:write
- contexts:read
- contexts:write
- observations:write
- checks:read
- checks:run
- standards:read
- standards:write
- standards:approve
- grants:read
- grants:write
- admin:keys
- admin:workspace
- admin:org
x-evalgate-protected-resource-metadata: https://www.evalgate.com/.well-known/oauth-protected-resource
ProviderHealthSignature:
type: apiKey
in: header
name: x-evalgate-provider-health-signature
description: HMAC SHA-256 signature over the exact provider request bytes. Provider requests also require the timestamp and key-id headers.
browserSession:
type: apiKey
in: cookie
name: better-auth.session_token
description: Interactive EvalGate browser session established through GitHub or Google sign-in. This scheme represents the human approval step and is not an agent API key or an EvalGate OAuth authorization-server token.
x-service-info:
categories:
- ai
- developer-tools
docs:
homepage: https://evalgate.com
apiReference: https://docs.evalgate.com/api-reference
llms: https://evalgate.com/llms.txt