/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 statusqueued.
Request schema (TrainingJobCreate):
base_model, dataset_id, output_name, gpu. Required for method=grpo: reward_function_id.
Validation rules:
method=grpo→reward_function_id(required).grpo_agenticis being rebuilt and is not currently available.method=sft_text,dpo, orsft_video_gen→reward_function_idmust benull(these learn from the dataset)gpu.gpu_typemust be one of:A100-80GB,H100-80GB,L4-24GB,A10G-24GBgpu.gpu_countin[1, 8]
402 Payment Required— credit balance too low for the requested resources (see Billing)404 Not Found—dataset_idorreward_function_iddoesn’t exist or belongs to another user422 Unprocessable Entity— schema validation failed
TrainingJobResponse, 201):
GET /v1/training_jobs
List your jobs. Filter bystatus (queued / provisioning / running / completed / failed / cancelled) or method (grpo / grpo_agentic / sft_text / dpo / sft_video_gen).
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 thanmax_points.
Query params:
keys— comma-separated metric names (e.g.loss,reward_mean,kl_div). Omit for all available.from_step,to_step— inclusive boundsmax_points— cap result size, default500, max5000
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 cachedlog_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). Returns206 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)
400 Bad Request — delete the deployment first.
GET /v1/training_jobs//model
Presigned S3 download URL for the final HF-format checkpoint. Only available afterstatus=completed.
Hyperparameter schemas
GRPOHyperparameters (method=grpo)
See GRPO algorithm for the full walkthrough. Schema fields with defaults:AgenticGRPOHyperparameters (method=grpo_agentic)
Inherits all GRPO fields plus:SFTVideoGenHyperparameters (method=sft_video_gen)
GPU config schema
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
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-jobcallback_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 statePOST /v1/training_jobs/{id}/presigned-upload— worker requests a presigned S3 PUT URL for checkpoint filesPOST /v1/training_jobs/{id}/logs/presigned-upload— worker requests a presigned S3 PUT URL for the full stdout
Related
Datasets
dataset_id setup before submitting.Reward functions
reward_function_id setup.Billing
Billing states and balance checks.
Quickstart
Full SDK + CLI walkthrough.

