Checkpoints
Save, inspect, export and manage the weights produced by training runs.
Checkpoints are the durable output of a training run. They come
in two types: a training checkpoint captures the full state needed to resume training, and a
sampler checkpoint holds servable weights you can point a
sampler at. Every checkpoint has a nucleus://
path, for example nucleus://run_3Bz:train:0/sampler_weights/000240, which is the handle that
samplers and Load state accept.
Checkpoints stay in your account until they expire or you delete them. Set ttl_seconds at
creation, or adjust it later with Update checkpoint expiry, to
control how long they are retained. When you want the weights outside the platform, use
Export weights to convert them into a format you can load anywhere.
Create a checkpoint
/v1/training-runs/{run_id}/checkpointsscope: trainWrites a checkpoint from the run's current state. Pass type: "training" for a resumable
checkpoint you can restore with
Load state, or type: "sampler" to emit servable
weights. The returned path is what
Create a sampler and Load state accept.
Path parameters
run_idstringrequiredID of the training run to checkpoint.
Body parameters
typestringrequiredWhat to write: training for a resumable checkpoint or sampler for servable weights.
namestringrequiredName for the checkpoint. Names are stable, so you can save to the same name across steps.
ttl_secondsinteger or nullHow long to retain the checkpoint. Pass null to keep it until you delete it.
overwritebooleanReplace an existing checkpoint with the same name. training checkpoints only.
Send an Idempotency-Key header if your client retries automatically, so a timed-out request
does not write a duplicate checkpoint. See Errors and retries.
curl https://api.nucleus-ai.io/v1/training-runs/run_3Bz/checkpoints \
-H "Authorization: Bearer $NUCLEUS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"type": "sampler", "name": "000240", "ttl_seconds": null}'{
"checkpoint_id": "ckpt_000240",
"checkpoint_type": "sampler",
"path": "nucleus://run_3Bz:train:0/sampler_weights/000240",
"bytes": 268435456,
"expires_at": null
}List checkpoints for a run
/v1/training-runs/{run_id}/checkpointsscope: readReturns every checkpoint saved by one run. Training and sampler checkpoints are listed
together, each tagged with its checkpoint_type.
Path parameters
run_idstringrequiredID of the training run.
curl https://api.nucleus-ai.io/v1/training-runs/run_3Bz/checkpoints \
-H "Authorization: Bearer $NUCLEUS_API_KEY"{
"checkpoints": [
{
"checkpoint_id": "ckpt_000240",
"checkpoint_type": "sampler",
"bytes": 268435456
}
]
}List all checkpoints
/v1/checkpointsscope: readReturns every checkpoint in your account across all runs, newest first. Pass path to resolve
one checkpoint from its nucleus:// path, including the base model and LoRA rank it was
trained against. See Pagination for how limit, offset and the cursor
object behave across list endpoints.
Query parameters
limitintegerdefault: 100Maximum number of checkpoints to return.
offsetintegerdefault: 0Number of checkpoints to skip from the start of the list.
pathstringA nucleus:// checkpoint path. When set, the response resolves that single checkpoint.
curl "https://api.nucleus-ai.io/v1/checkpoints?limit=100" \
-H "Authorization: Bearer $NUCLEUS_API_KEY"{
"checkpoints": [
{
"training_run_id": "run_3Bz",
"checkpoint_id": "ckpt_000240",
"base_model": "Qwen/Qwen3-8B",
"lora_rank": 32
}
],
"cursor": { "total_count": 128 }
}Retrieve a checkpoint
/v1/training-runs/{run_id}/checkpoints/{checkpoint_id}scope: readReturns one checkpoint: its type, visibility, expiry and size.
Path parameters
run_idstringrequiredID of the training run that owns the checkpoint.
checkpoint_idstringrequiredID of the checkpoint.
curl https://api.nucleus-ai.io/v1/training-runs/run_3Bz/checkpoints/ckpt_000240 \
-H "Authorization: Bearer $NUCLEUS_API_KEY"{
"checkpoint_id": "ckpt_000240",
"checkpoint_type": "sampler",
"visibility": "private",
"expires_at": null,
"bytes": 268435456
}Get a download URL
/v1/training-runs/{run_id}/checkpoints/{checkpoint_id}/archive-urlscope: readReturns a time-limited signed URL for the checkpoint's raw archive. Download the bytes
directly from that URL: they do not stream through the API host. The URL expires at
expires_at, so fetch a fresh one rather than storing it.
The archive is the platform's internal format. To get weights in a format you can load elsewhere, use Export weights instead.
Path parameters
run_idstringrequiredID of the training run that owns the checkpoint.
checkpoint_idstringrequiredID of the checkpoint.
curl https://api.nucleus-ai.io/v1/training-runs/run_3Bz/checkpoints/ckpt_000240/archive-url \
-H "Authorization: Bearer $NUCLEUS_API_KEY"{
"url": "https://storage.nucleus-ai.io/...",
"expires_at": "2026-07-27T10:14:02Z"
}Export weights
/v1/training-runs/{run_id}/checkpoints/{checkpoint_id}/exportscope: trainConverts a checkpoint into a format you can load outside the platform: a LoRA adapter, merged safetensors, or GGUF. This is how you take your weights with you and run them anywhere, including fully offline and on-premises deployments.
The export runs asynchronously and returns 202 Accepted with an operation ID. Poll
Poll an operation or register a webhook to be
notified when it completes.
Path parameters
run_idstringrequiredID of the training run that owns the checkpoint.
checkpoint_idstringrequiredID of the checkpoint to export.
Body parameters
formatstringrequiredOutput format: lora-adapter, merged-safetensors or gguf.
destinationstringrequiredWhere to deliver the export: signed-url or hf-hub.
hf_repostringTarget Hugging Face repository. Required when destination is hf-hub.
Exports allocate work, so send an Idempotency-Key header if your client retries
automatically. See Errors and retries.
curl https://api.nucleus-ai.io/v1/training-runs/run_3Bz/checkpoints/ckpt_000240/export \
-H "Authorization: Bearer $NUCLEUS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"format": "merged-safetensors", "destination": "signed-url"}'{
"operation": "op_91c4",
"format": "merged-safetensors",
"status": "running"
}Update checkpoint expiry
/v1/training-runs/{run_id}/checkpoints/{checkpoint_id}scope: trainSets or clears a checkpoint's expiry. The new TTL is counted from the moment of the call, not
from the checkpoint's creation. Pass null to clear the expiry and keep the checkpoint until
you delete it.
Expiry is the main lever on storage spend: shorten it on intermediate checkpoints you no longer need, and clear it on the ones you serve from.
Path parameters
run_idstringrequiredID of the training run that owns the checkpoint.
checkpoint_idstringrequiredID of the checkpoint.
Body parameters
ttl_secondsinteger or nullrequiredSeconds until the checkpoint expires, counted from now. null clears the expiry.
curl -X PATCH https://api.nucleus-ai.io/v1/training-runs/run_3Bz/checkpoints/ckpt_000240 \
-H "Authorization: Bearer $NUCLEUS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"ttl_seconds": 2592000}'{
"checkpoint_id": "ckpt_000240",
"expires_at": "2026-08-26T09:14:02Z"
}Publish a checkpoint
/v1/training-runs/{run_id}/checkpoints/{checkpoint_id}/visibilityscope: adminMakes a checkpoint readable outside the owning account. Only the checkpoint's owner can
publish it, and the key needs the admin scope. Review your data residency and sharing
obligations before publishing weights trained on sensitive data.
Path parameters
run_idstringrequiredID of the training run that owns the checkpoint.
checkpoint_idstringrequiredID of the checkpoint to publish.
Body parameters
visibilitystringrequiredMust be public.
curl -X PUT \
https://api.nucleus-ai.io/v1/training-runs/run_3Bz/checkpoints/ckpt_000240/visibility \
-H "Authorization: Bearer $NUCLEUS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"visibility": "public"}'{
"checkpoint_id": "ckpt_000240",
"visibility": "public"
}Unpublish a checkpoint
/v1/training-runs/{run_id}/checkpoints/{checkpoint_id}/visibilityscope: adminReturns a published checkpoint to private. Readers outside the owning account lose access immediately.
Path parameters
run_idstringrequiredID of the training run that owns the checkpoint.
checkpoint_idstringrequiredID of the checkpoint to unpublish.
curl -X DELETE \
https://api.nucleus-ai.io/v1/training-runs/run_3Bz/checkpoints/ckpt_000240/visibility \
-H "Authorization: Bearer $NUCLEUS_API_KEY"(empty body)Delete a checkpoint
/v1/training-runs/{run_id}/checkpoints/{checkpoint_id}scope: trainPermanently deletes a checkpoint. There is no undo: the weights are gone and the checkpoint's
nucleus:// path can no longer be loaded or served.
Deletion is addressed by run and checkpoint ID. If you only have a nucleus:// path, resolve
it to IDs through List all checkpoints first.
Path parameters
run_idstringrequiredID of the training run that owns the checkpoint.
checkpoint_idstringrequiredID of the checkpoint to delete.
curl -X DELETE https://api.nucleus-ai.io/v1/training-runs/run_3Bz/checkpoints/ckpt_000240 \
-H "Authorization: Bearer $NUCLEUS_API_KEY"(empty body)