Skip to main content
Reference for /v1/training_jobs/*. All endpoints require Bearer token auth (Authorization: Bearer vk_...) unless flagged worker-only.

Endpoints

Worker-only endpoints (used by the runner agent, authenticated via per-job callback_token): POST /status, POST /presigned-upload, POST /logs/presigned-upload. Documented in the worker-callbacks appendix at the bottom.

POST /v1/training_jobs

Create a job. Returns immediately with status queued. Request schema (TrainingJobCreate):
Required: base_model, dataset_id, output_name, gpu. Required for method=grpo: reward_function_id. Validation rules:
  • method=grporeward_function_id (required). grpo_agentic is being rebuilt and is not currently available.
  • method=sft_text, dpo, or sft_video_genreward_function_id must be null (these learn from the dataset)
  • gpu.gpu_type must be one of: A100-80GB, H100-80GB, L4-24GB, A10G-24GB
  • gpu.gpu_count in [1, 8]
Errors:
  • 402 Payment Required — credit balance too low for the requested resources (see Billing)
  • 404 Not Founddataset_id or reward_function_id doesn’t exist or belongs to another user
  • 422 Unprocessable Entity — schema validation failed
Response (TrainingJobResponse, 201):

GET /v1/training_jobs

List your jobs. Filter by status (queued / provisioning / running / completed / failed / cancelled) or method (grpo / grpo_agentic / sft_text / dpo / sft_video_gen).
Response is PaginatedList[TrainingJobResponse] with data + has_more.

GET /v1/training_jobs/

Single job. Same shape as the create response, but with timestamps populated as the job progresses.

GET /v1/training_jobs//metrics

Sampled training metrics for charting. Server-side stride downsampling if you ask for more than max_points. Query params:
  • keys — comma-separated metric names (e.g. loss,reward_mean,kl_div). Omit for all available.
  • from_step, to_step — inclusive bounds
  • max_points — cap result size, default 500, max 5000
Response:

GET /v1/training_jobs//events

Job lifecycle audit trail. Each event has timestamp, level (info / warn / error), event_type, and metadata.

GET /v1/training_jobs//logs

Tail of recent stdout from the worker. Returns chunked plain text. Falls back to the cached log_tail if the worker hasn’t streamed anything fresh. For the full log after a job completes, use /logs/full instead.

GET /v1/training_jobs//logs/full

Returns the complete stdout as plain text from S3 (uploaded ~30s during the run + a final flush at exit). Returns 206 Partial Content if the upload hasn’t happened yet (early-stage jobs); 404 if neither full log nor tail exists.

POST /v1/training_jobs//cancel

Cancel a non-terminal job. The worker terminates at the next checkpoint boundary, not instantly — status may stay running for a few seconds before flipping to cancelled.

DELETE /v1/training_jobs/

Hard-delete the job row + cascading metrics + events + S3 artifacts (logs, status files, checkpoints). Constraints:
  • Job must be in a terminal state (completed, failed, cancelled)
  • No active deployments may reference this job (source="training_job", source_job_id=this_id)
If a deployment still uses the checkpoint, you get 400 Bad Request — delete the deployment first.

GET /v1/training_jobs//model

Presigned S3 download URL for the final HF-format checkpoint. Only available after status=completed.
URL expires in 1 hour; re-call to get a fresh one.

Hyperparameter schemas

GRPOHyperparameters (method=grpo)

See GRPO algorithm for the full walkthrough. Schema fields with defaults:
LoRA and QLoRA are supported on GRPO — see GRPO algorithm.

AgenticGRPOHyperparameters (method=grpo_agentic)

Inherits all GRPO fields plus:
This method is being rebuilt and is not currently available. For environment-based RL today, use a custom script.

SFTVideoGenHyperparameters (method=sft_video_gen)

GPU config schema

Supported gpu_type values: A100-80GB, H100-80GB, L4-24GB, A10G-24GB. MI300X-192GB (AMD, single GPU, provider: "hotaisle") is coming soon, as are A100-80GB and H100-80GB in flexible 1-8 GPU shapes on provider: "vast"; H200 is roadmap. On AWS, A100-80GB and H100-80GB launch as 8-GPU nodes; L4-24GB and A10G-24GB are the single-GPU shapes. Run veri gpu list to see current availability and pricing for every shape.

Checkpoint destination schema

For s3, gs, az, you’ll need credentials configured via account integrations (or pass them inline — schema accepts a credentials field).

Worker callbacks (appendix)

These exist for the runner agent and are NOT for users to call directly. Auth is per-job callback_token (a 32-byte random secret stored in the DB on job creation), not your API key.
  • POST /v1/training_jobs/{id}/status — worker reports progress, metrics, terminal state
  • POST /v1/training_jobs/{id}/presigned-upload — worker requests a presigned S3 PUT URL for checkpoint files
  • POST /v1/training_jobs/{id}/logs/presigned-upload — worker requests a presigned S3 PUT URL for the full stdout
These are documented for completeness; the worker SDK handles them.

Datasets

dataset_id setup before submitting.

Reward functions

reward_function_id setup.

Billing

Billing states and balance checks.

Quickstart

Full SDK + CLI walkthrough.