Jobs API (/1/jobs)
Handles workload submissions and execution life cycles.
POST /1/jobs
- Description: Submits a job configuration YAML/JSON and registers it in
queuedstate. - Roles:
admin,developer.
Request YAML payload:
name: pytorch-train-run-1 # Optional unique job name; or use namePrefix: "train-"
image: pytorch/pytorch:2.2.1-cuda12.1-cudnn8-runtime
command: ["python3"]
args: ["train.py"]
env:
PYTHONUNBUFFERED: "1"
volumes:
data-bucket: # Volume name (the map key); defaults semantics unchanged
bucket: training-sets # Required: storage bucket name
mountPath: /mnt/data # Required: container mount path
connection: gcp-prod-data # Optional: defaults to first connection with bucket access
prefix: "datasets/v1" # Optional: defaults to bucket root
resources: # Optional: defaults to { cpu: 1, memory: "4Gi" } if omitted
cpu: 4
memory: 16Gi
gpu: 24Gi # Minimum aggregate GPU VRAM on NVIDIA GPUs (shorthand for gpu: { vram: 24Gi })
cloud: ["aws", "gcp"] # Optional cloud provider constraints
region: "americas" # Optional region or macro-region
maxRetries: 2 # Optional container retries inside VM
labels:
environment: production
team: ml
tags:
- pytorch
- training
Validation & defaults:
resources: if omitted, Solti automatically assigns default resourcescpu: 1, memory: 4Gi.resources.gpu: GPU request as minimum aggregate VRAM on NVIDIA GPUs; shorthandgpu: 24Gi≡gpu: { vram: 24Gi }. Nested form{vram?, count?, model?}:{model, count}replaces vram (≥ count GPUs of that model);{model, vram}matches the model with total VRAM ≥ vram;countrequiresmodel. See Hardware Constraints & Default Resources.volumes: map keyed by volume name. OnlybucketandmountPathare required.connectiondefaults to the first accessible connection in the project, andprefixdefaults to root. See Mounting Storage Volumes.
Response: returns job details and status tracking JSON with assigned job_id, unique name (user-supplied, generated with prefix, or auto-generated Notion-like name e.g., tidal-star-1234), and initial status (queued).
GET /1/jobs
- Description: Lists workloads in the active project. Supports optional query filters by
status,tag, andlabel(e.g.,?tag=training&label=environment:production). Paginates with?limit/?offset(default 50, max 200). - Roles:
admin,developer,viewer.
GET /1/jobs/{id}
- Description: Retrieves the status, VM state (
vm_status), cost metrics (estimated_cost,actual_cost), and routing decisions for a job. The{id}path parameter accepts either the job's unique UUID (id) or its uniquename. - Response statuses:
queued,booting,running,succeeded,failed,cancelled.
POST /1/jobs/{id}/cancel
- Description: Cancels a running or queued workload. Sets status to
cancelledand terminates the provisioned VM. The{id}path parameter accepts either the UUID or uniquename. - Roles:
admin,developer.