curl --request POST \
--url https://api.primeintellect.ai/api/v1/training/runs/{run_id}/resume \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"wandbApiKey": "<string>",
"hfToken": "<string>",
"secrets": {},
"gpuType": "<string>",
"imageTag": "<string>"
}
'import requests
url = "https://api.primeintellect.ai/api/v1/training/runs/{run_id}/resume"
payload = {
"wandbApiKey": "<string>",
"hfToken": "<string>",
"secrets": {},
"gpuType": "<string>",
"imageTag": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
wandbApiKey: '<string>',
hfToken: '<string>',
secrets: {},
gpuType: '<string>',
imageTag: '<string>'
})
};
fetch('https://api.primeintellect.ai/api/v1/training/runs/{run_id}/resume', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.primeintellect.ai/api/v1/training/runs/{run_id}/resume",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'wandbApiKey' => '<string>',
'hfToken' => '<string>',
'secrets' => [
],
'gpuType' => '<string>',
'imageTag' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.primeintellect.ai/api/v1/training/runs/{run_id}/resume"
payload := strings.NewReader("{\n \"wandbApiKey\": \"<string>\",\n \"hfToken\": \"<string>\",\n \"secrets\": {},\n \"gpuType\": \"<string>\",\n \"imageTag\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.primeintellect.ai/api/v1/training/runs/{run_id}/resume")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"wandbApiKey\": \"<string>\",\n \"hfToken\": \"<string>\",\n \"secrets\": {},\n \"gpuType\": \"<string>\",\n \"imageTag\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.primeintellect.ai/api/v1/training/runs/{run_id}/resume")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"wandbApiKey\": \"<string>\",\n \"hfToken\": \"<string>\",\n \"secrets\": {},\n \"gpuType\": \"<string>\",\n \"imageTag\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"runId": "<string>",
"jobId": "<string>",
"tokenValue": "<string>",
"onDemand": false,
"gpuType": "<string>",
"pricePerGpuHour": 123,
"estimatedCostPerHour": 123,
"isBeta": false
}{
"errors": [
{
"param": "<string>",
"details": "<string>"
}
]
}Resume Dedicated Run
Resume a PAUSED dedicated run as a new run from its checkpoint.
The new run reuses the paused run’s config, team, name, mode, image and
GPU type, attaches its volume and starts from its last checkpoint.
gpuType and imageTag override the stored ones; secrets are sent
again because they are dropped once a run deploys.
curl --request POST \
--url https://api.primeintellect.ai/api/v1/training/runs/{run_id}/resume \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"wandbApiKey": "<string>",
"hfToken": "<string>",
"secrets": {},
"gpuType": "<string>",
"imageTag": "<string>"
}
'import requests
url = "https://api.primeintellect.ai/api/v1/training/runs/{run_id}/resume"
payload = {
"wandbApiKey": "<string>",
"hfToken": "<string>",
"secrets": {},
"gpuType": "<string>",
"imageTag": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
wandbApiKey: '<string>',
hfToken: '<string>',
secrets: {},
gpuType: '<string>',
imageTag: '<string>'
})
};
fetch('https://api.primeintellect.ai/api/v1/training/runs/{run_id}/resume', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.primeintellect.ai/api/v1/training/runs/{run_id}/resume",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'wandbApiKey' => '<string>',
'hfToken' => '<string>',
'secrets' => [
],
'gpuType' => '<string>',
'imageTag' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.primeintellect.ai/api/v1/training/runs/{run_id}/resume"
payload := strings.NewReader("{\n \"wandbApiKey\": \"<string>\",\n \"hfToken\": \"<string>\",\n \"secrets\": {},\n \"gpuType\": \"<string>\",\n \"imageTag\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.primeintellect.ai/api/v1/training/runs/{run_id}/resume")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"wandbApiKey\": \"<string>\",\n \"hfToken\": \"<string>\",\n \"secrets\": {},\n \"gpuType\": \"<string>\",\n \"imageTag\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.primeintellect.ai/api/v1/training/runs/{run_id}/resume")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"wandbApiKey\": \"<string>\",\n \"hfToken\": \"<string>\",\n \"secrets\": {},\n \"gpuType\": \"<string>\",\n \"imageTag\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"runId": "<string>",
"jobId": "<string>",
"tokenValue": "<string>",
"onDemand": false,
"gpuType": "<string>",
"pricePerGpuHour": 123,
"estimatedCostPerHour": 123,
"isBeta": false
}{
"errors": [
{
"param": "<string>",
"details": "<string>"
}
]
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
Body
Wire payload for resuming a PAUSED dedicated run. Everything else comes from the paused run; secrets are sent again because the platform drops them once a run deploys.
W&B key. On the PENDING fast-path it's materialised straight into the run's k8s Secret. On the QUEUED path it's stashed AES-encrypted on the RFTRun row so the drainer can rebuild the same Secret at promotion time without re-prompting.
HF token for gated/private model downloads. Same storage rules as wandbApiKey above.
Arbitrary env-var secrets projected into trainer / inference / orchestrator / env-server pods (parity with the LoRA path). Keys must be uppercase POSIX env-var names (e.g. 'OPENAI_API_KEY'); WANDB_API_KEY / HF_TOKEN / PRIME_API_KEY are reserved — use the dedicated fields for those. Materialised into the per-run k8s Secret. Held encrypted on the RFTRun row only for the sync -> dispatch-task hop, then cleared once the run deploys (or on stop / delete / rollback); never returned by any read endpoint.
Show child attributes
Show child attributes
GPU type to resume on. Omit for the paused run's type.
prime-rl image tag to resume with. Omit for the paused run's image.
Response
Successful Response
PRIME_API_KEY for this run. Returned once — the platform stores only the token id.
True when this run landed on billed shared capacity rather than a cluster the caller holds an allocation on. Derived at dispatch, not requested.
GPU type the run was placed on.
USD per GPU-hour this run will be charged, discount applied and frozen for its lifetime. NULL on reserved capacity, which bills nothing per-hour. Echoed so a caller who named no gpuType sees the rate now rather than at invoice time.
price_per_gpu_hour multiplied by the run's GPU count.
True when this run used on-demand capacity, which is in beta. False on the reserved path, which is GA.
Was this page helpful?