EvalGate Drift API
The drift API from EvalGate — 2 operation(s) for drift.
The drift API from EvalGate — 2 operation(s) for drift.
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-drift-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 Drift 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: drift
paths:
/api/drift/alerts/{id}:
patch:
x-evalgate-source-hash: sha256:52e3c542b825660d4f0e1f5724f6d8507bd57475908ec74d9f5caf6729f5570f
summary: Update drift id
operationId: patch_drift_alerts_id
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/PatchApiDriftAlertsIdResponse200ApplicationJson'
'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:
- drift
x-evalgate-required-scopes:
- eval:write
parameters:
- name: id
in: path
required: true
schema:
type: integer
description: 'Requires scopes: eval:write'
x-evalgate-contract-hash: sha256:141182e5c7e7d43ae59a853e1739b23c966fb01e55c81d663b8f64beb006a579
/api/drift/alerts:
get:
x-evalgate-source-hash: sha256:a0cb0d1898ace71942d610320611dbb8cfcdcf5c416539c38fa2d1dd9f2b5d14
summary: List drift alerts
operationId: get_drift_alerts
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/GetApiDriftAlertsResponse200ApplicationJson'
'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:
- drift
x-evalgate-required-scopes:
- eval:read
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
- name: evaluationId
in: query
required: false
schema:
type: string
description: 'Requires scopes: eval:read'
x-evalgate-contract-hash: sha256:7f71ffc744ec39f92ea4f7405943935d2a946e87ce080d355cdd52c6370d6067
post:
x-evalgate-source-hash: sha256:7dc2f6bed975bd7ed31fb70608a3c775e663af1ce1ebb8923d3007dcae3d017c
summary: Create drift alerts
operationId: post_drift_alerts
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/PostApiDriftAlertsResponse200ApplicationJson'
'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:
- drift
x-evalgate-required-scopes:
- eval:write
description: 'Requires scopes: eval:write'
x-evalgate-contract-hash: sha256:3593a38bbf29e330cfc2361babf4ff9065894d77003f4cc5102862e2236867b4
components:
schemas:
OrganizationId:
type: string
format: uuid
PostApiDriftAlertsResponse200ApplicationJson:
type: object
properties:
alertsCreated:
type: number
evaluationsChecked:
type: number
alerts:
type: array
items:
type: object
properties:
evaluationId:
type: number
alertType:
oneOf:
- type: string
enum:
- cost_spike
- type: string
enum:
- quality_drop
- type: string
enum:
- safety_spike
- type: string
enum:
- judge_shift
severity:
oneOf:
- type: string
enum:
- critical
- type: string
enum:
- info
- type: string
enum:
- warning
explanation:
type: string
additionalProperties: false
required:
- evaluationId
- alertType
- severity
- explanation
additionalProperties: false
required:
- alertsCreated
- evaluationsChecked
- alerts
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
GetApiDriftAlertsResponse200ApplicationJson:
type: object
properties:
data:
type: array
items:
type: object
properties:
id:
type: number
organizationId:
$ref: '#/components/schemas/OrganizationId'
evaluationId:
oneOf:
- type: 'null'
- type: number
alertType:
type: string
severity:
type: string
explanation:
type: string
model:
oneOf:
- type: 'null'
- type: string
currentValue:
oneOf:
- type: 'null'
- type: string
baselineValue:
oneOf:
- type: 'null'
- type: string
zScoreValue:
oneOf:
- type: 'null'
- type: string
metadata:
oneOf:
- type: 'null'
- type: object
properties:
historicalValues:
type: array
items:
type: number
threshold:
type: number
additionalProperties: false
acknowledgedAt:
oneOf:
- type: 'null'
- type: string
format: date-time
createdAt:
type: string
format: date-time
additionalProperties: false
required:
- id
- organizationId
- evaluationId
- alertType
- severity
- explanation
- model
- currentValue
- baselineValue
- zScoreValue
- metadata
- acknowledgedAt
- createdAt
count:
type: number
additionalProperties: false
required:
- data
- count
PatchApiDriftAlertsIdResponse200ApplicationJson:
type: object
properties:
acknowledgedAt:
type: string
format: date-time
id:
type: number
organizationId:
$ref: '#/components/schemas/OrganizationId'
evaluationId:
oneOf:
- type: 'null'
- type: number
alertType:
type: string
severity:
type: string
explanation:
type: string
model:
oneOf:
- type: 'null'
- type: string
currentValue:
oneOf:
- type: 'null'
- type: string
baselineValue:
oneOf:
- type: 'null'
- type: string
zScoreValue:
oneOf:
- type: 'null'
- type: string
metadata:
oneOf:
- type: 'null'
- type: object
properties:
historicalValues:
type: array
items:
type: number
threshold:
type: number
additionalProperties: false
createdAt:
type: string
format: date-time
additionalProperties: false
required:
- acknowledgedAt
- id
- organizationId
- evaluationId
- alertType
- severity
- explanation
- model
- currentValue
- baselineValue
- zScoreValue
- metadata
- createdAt
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
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
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
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