# Whitney > Build caller-owned training loops with the Whitney HTTP API. - [Whitney Training API](https://staging.docs.trywhitney.com/index.md): Build SFT, reinforcement-learning, distillation, and evaluation loops with provider-neutral HTTP primitives. - [Quickstart](https://staging.docs.trywhitney.com/quickstart.md): Authenticate, inspect capabilities, and create your first Whitney training run. - [Supported models](https://staging.docs.trywhitney.com/models.md): The provider and model pairs currently admitted by Whitney. - [Sessions, runs, and operations](https://staging.docs.trywhitney.com/concepts/lifecycle.md): Understand Whitney's durable training lifecycle and ordering rules. - [JSON primitives](https://staging.docs.trywhitney.com/concepts/json-primitives.md): Send token and tensor data with Whitney's typed JSON contract. - [Limits and expectations](https://staging.docs.trywhitney.com/concepts/limits.md): What Whitney runs, what you own, and known operational constraints. - [Algorithm cookbooks](https://staging.docs.trywhitney.com/cookbooks/index.md): Implement training algorithms as loops over Whitney HTTP primitives. - [Supervised fine-tuning](https://staging.docs.trywhitney.com/cookbooks/sft.md): Run a caller-owned cross-entropy SFT loop. - [GRPO](https://staging.docs.trywhitney.com/cookbooks/grpo.md): Run a caller-owned group-relative policy optimization loop. - [Evaluation](https://staging.docs.trywhitney.com/cookbooks/evaluation.md): Score model outputs with a caller-owned evaluation loop. - [More algorithms](https://staging.docs.trywhitney.com/cookbooks/algorithms.md): Implement algorithm variants and distillation objectives as Whitney primitive loops. - [Use Whitney with a coding agent](https://staging.docs.trywhitney.com/agents/coding-agents.md): Give an agent the API reference, cookbooks, and Whitney implementation skill. - [List supported provider/model pairs and primitive capabilities.](https://staging.docs.trywhitney.com/api-reference/unified-training/list-supported-providermodel-pairs-and-primitive-capabilities.md) - [List this organization's training sessions.](https://staging.docs.trywhitney.com/api-reference/unified-training/list-this-organizations-training-sessions.md) - [Create and provision a provider-routed training session.](https://staging.docs.trywhitney.com/api-reference/unified-training/create-and-provision-a-provider-routed-training-session.md): `request_id` is the session-creation idempotency key. `provider: auto` uses preferences then Whitney's provider order. The returned capability snapshot is immutable for the session. Modal idle TTL is capped by the runtime's trainer lifetime even when a larger value is requested. - [Get v1trainingsessions](https://staging.docs.trywhitney.com/api-reference/unified-training/get-v1trainingsessions.md) - [Extend a live session's provider lease.](https://staging.docs.trywhitney.com/api-reference/unified-training/extend-a-live-sessions-provider-lease.md) - [Create and provision the session's one training run.](https://staging.docs.trywhitney.com/api-reference/unified-training/create-and-provision-the-sessions-one-training-run.md): A v1 session owns exactly one run. Model admission is constrained by the session provider's capability row. Modal model revisions must equal Whitney's catalog commit; Tinker model identity is provider-managed. - [Idempotently release provider resources for a session.](https://staging.docs.trywhitney.com/api-reference/unified-training/idempotently-release-provider-resources-for-a-session.md): Closing releases the provider session and settles or releases platform-credit reservations. It never deletes the shared training Volume. - [List usage observations, reconciling provider billing when possible.](https://staging.docs.trywhitney.com/api-reference/unified-training/list-usage-observations-reconciling-provider-billing-when-possible.md) - [Return cost status and usage components for a session.](https://staging.docs.trywhitney.com/api-reference/unified-training/return-cost-status-and-usage-components-for-a-session.md) - [Get v1trainingruns](https://staging.docs.trywhitney.com/api-reference/unified-training/get-v1trainingruns.md) - [Get v1trainingruns 1](https://staging.docs.trywhitney.com/api-reference/unified-training/get-v1trainingruns-1.md) - [List durable operation summaries in sequence order.](https://staging.docs.trywhitney.com/api-reference/unified-training/list-durable-operation-summaries-in-sequence-order.md) - [Submit an ordered training primitive.](https://staging.docs.trywhitney.com/api-reference/unified-training/submit-an-ordered-training-primitive.md): `seq_id` must equal the run's `next_seq_id`; retries reuse the exact idempotency key and canonical request hash. Token IDs and tensor values use the typed JSON payload for the selected operation. Callers may use run-scoped `sample` as their first sampler action: Whitney atomically creates its durabl… - [Poll the durable status of an operation.](https://staging.docs.trywhitney.com/api-reference/unified-training/poll-the-durable-status-of-an-operation.md) - [Retrieve a completed raw result while it remains available at the origin.](https://staging.docs.trywhitney.com/api-reference/unified-training/retrieve-a-completed-raw-result-while-it-remains-available-at-the-origin.md): This endpoint is for transient token, logprob, and loss payloads that are intentionally not persisted in Whitney's operations store. Tinker results are actor-affine; a request on another owner fails closed. - [Submit the ordered terminal finish transition.](https://staging.docs.trywhitney.com/api-reference/unified-training/submit-the-ordered-terminal-finish-transition.md) - [Preempt a current primitive and submit a terminal cancel transition.](https://staging.docs.trywhitney.com/api-reference/unified-training/preempt-a-current-primitive-and-submit-a-terminal-cancel-transition.md) - [List resume and sampler checkpoint metadata for a run.](https://staging.docs.trywhitney.com/api-reference/unified-training/list-resume-and-sampler-checkpoint-metadata-for-a-run.md) - [Get v1trainingcheckpoints](https://staging.docs.trywhitney.com/api-reference/unified-training/get-v1trainingcheckpoints.md) - [List downloadable or exportable run artifacts.](https://staging.docs.trywhitney.com/api-reference/unified-training/list-downloadable-or-exportable-run-artifacts.md) - [Get v1trainingartifacts](https://staging.docs.trywhitney.com/api-reference/unified-training/get-v1trainingartifacts.md) - [Create a signed, time-limited download for an available artifact.](https://staging.docs.trywhitney.com/api-reference/unified-training/create-a-signed-time-limited-download-for-an-available-artifact.md) - [Publish a completed LoRA artifact to a customer Hugging Face repository.](https://staging.docs.trywhitney.com/api-reference/unified-training/publish-a-completed-lora-artifact-to-a-customer-hugging-face-repository.md): Only LoRA adapters are eligible for Hub export. Whitney accepts a customer credential reference, never a Hugging Face token. Full weights are available only through signed Volume download in v1. - [Retire a terminal run's artifact prefix.](https://staging.docs.trywhitney.com/api-reference/unified-training/retire-a-terminal-runs-artifact-prefix.md): This is a terminal-only, idempotent cleanup of the run prefix; it never deletes the shared training Volume. - [Read persisted training metrics and W&B-derived summaries.](https://staging.docs.trywhitney.com/api-reference/unified-training/read-persisted-training-metrics-and-w&b-derived-summaries.md) - [List durable lifecycle events for a run.](https://staging.docs.trywhitney.com/api-reference/unified-training/list-durable-lifecycle-events-for-a-run.md) - [Get lazy sampler state and synchronized weight version.](https://staging.docs.trywhitney.com/api-reference/unified-training/get-lazy-sampler-state-and-synchronized-weight-version.md) - [Submit an ordered sample or logprobs primitive.](https://staging.docs.trywhitney.com/api-reference/unified-training/submit-an-ordered-sample-or-logprobs-primitive.md): Token IDs and sampling parameters use strict typed JSON. ## OpenAPI Specs - [openapi](/openapi.yaml)