Skip to main content

Base URL

Authentication

All API requests require a Bearer token. Create an API key from the dashboard or via the API keys endpoint.
API keys use the vk_ prefix and are hashed server-side. Manage keys from the Veri dashboard.

Endpoints

These tables cover the core resources. Every endpoint, including evals, agents, webhooks, secrets and models, has its own page in this API reference with the full request and response schema.

Datasets

Training Jobs

See the Training jobs API for full schemas.

Deployments

Volumes

See the Volumes guide for usage. {name} accepts the volume’s name or its id (the one POST /v1/volumes returns).

Billing

API Keys

Request Format

  • JSON endpoints (POST /v1/training_jobs): Use Content-Type: application/json with a JSON body. Reward functions for GRPO jobs ride this body as source text (reward_source), not as a file upload.
  • Upload endpoints (POST /v1/datasets, code artifacts): Use multipart/form-data.
  • Connector endpoints (POST /v1/datasets/connect): Send JSON bodies.

Response Format

Responses are standard JSON. Every response object includes an object field that identifies the resource type (e.g., "training_job", "deployment", "dataset", "api_key"). Single-resource endpoints return one object. List endpoints return cursor-paginated responses:
Success (2xx)
Error (4xx/5xx)
Errors a client can branch on also carry a machine-readable code, and retryable ones (429 rate limit, 503) add retry_after_seconds and a Retry-After header:
Some 409 refusals add structured fields next to code (for example, the promotion gate lists the failing evaluators). A body that is not valid JSON, has a missing or mistyped field, or is sent without Content-Type: application/json is rejected before it reaches the endpoint, with a plain-text message instead of JSON (400, 422 or 415).

Common Status Codes

Pagination

Most list endpoints support cursor-based pagination with limit and after query parameters:
The response includes a has_more field indicating whether additional pages exist:
To paginate, pass the id of the last item in data as the after parameter in the next request. A few short lists are returned whole, without a cursor (for example, webhook endpoints, up to 100). Each endpoint’s page lists the parameters it accepts.