curl --request POST \
--url https://api.aireserve.com/v1/gpu/clusters/{clusterId}/recover \
--header 'Authorization: Bearer <token>' \
--header 'Idempotency-Key: <idempotency-key>'import requests
url = "https://api.aireserve.com/v1/gpu/clusters/{clusterId}/recover"
headers = {
"Idempotency-Key": "<idempotency-key>",
"Authorization": "Bearer <token>"
}
response = requests.post(url, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Idempotency-Key': '<idempotency-key>', Authorization: 'Bearer <token>'}
};
fetch('https://api.aireserve.com/v1/gpu/clusters/{clusterId}/recover', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"accepted": true,
"resourceId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"resourceType": "pod",
"operationId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "accepted"
}{
"error": {
"message": "<string>",
"type": "invalid_request_error",
"param": "<string>",
"code": "<string>",
"details": {}
}
}{
"error": {
"message": "<string>",
"type": "invalid_request_error",
"param": "<string>",
"code": "<string>",
"details": {}
}
}{
"error": {
"message": "<string>",
"type": "invalid_request_error",
"param": "<string>",
"code": "<string>",
"details": {}
}
}{
"error": {
"message": "<string>",
"type": "invalid_request_error",
"param": "<string>",
"code": "<string>",
"details": {}
}
}{
"error": {
"message": "<string>",
"type": "invalid_request_error",
"param": "<string>",
"code": "<string>",
"details": {}
}
}{
"error": {
"message": "<string>",
"type": "invalid_request_error",
"param": "<string>",
"code": "<string>",
"details": {}
}
}{
"error": {
"message": "<string>",
"type": "invalid_request_error",
"param": "<string>",
"code": "<string>",
"details": {}
}
}Recover GPU cluster now
Make one recovery attempt right now on every node that is not running, regardless of the policy’s cooldown and cap. Counts toward the current episode. 409 operation_conflict when every node is running, the cluster never came up, or another operation is in flight. Poll the operation, then read recovery.lastOutcome and nodes[].status. Requires compute manage access.
curl --request POST \
--url https://api.aireserve.com/v1/gpu/clusters/{clusterId}/recover \
--header 'Authorization: Bearer <token>' \
--header 'Idempotency-Key: <idempotency-key>'import requests
url = "https://api.aireserve.com/v1/gpu/clusters/{clusterId}/recover"
headers = {
"Idempotency-Key": "<idempotency-key>",
"Authorization": "Bearer <token>"
}
response = requests.post(url, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Idempotency-Key': '<idempotency-key>', Authorization: 'Bearer <token>'}
};
fetch('https://api.aireserve.com/v1/gpu/clusters/{clusterId}/recover', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"accepted": true,
"resourceId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"resourceType": "pod",
"operationId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "accepted"
}{
"error": {
"message": "<string>",
"type": "invalid_request_error",
"param": "<string>",
"code": "<string>",
"details": {}
}
}{
"error": {
"message": "<string>",
"type": "invalid_request_error",
"param": "<string>",
"code": "<string>",
"details": {}
}
}{
"error": {
"message": "<string>",
"type": "invalid_request_error",
"param": "<string>",
"code": "<string>",
"details": {}
}
}{
"error": {
"message": "<string>",
"type": "invalid_request_error",
"param": "<string>",
"code": "<string>",
"details": {}
}
}{
"error": {
"message": "<string>",
"type": "invalid_request_error",
"param": "<string>",
"code": "<string>",
"details": {}
}
}{
"error": {
"message": "<string>",
"type": "invalid_request_error",
"param": "<string>",
"code": "<string>",
"details": {}
}
}{
"error": {
"message": "<string>",
"type": "invalid_request_error",
"param": "<string>",
"code": "<string>",
"details": {}
}
}Authorizations
Your AI Reserve API key (aireserve_api_…) from the API Keys page in the portal (https://portal.aireserve.com/keys).
Headers
Client-chosen key of 8–180 characters [A-Za-z0-9:_-]. Replaying the same key with the same body returns the original operation; a different body with the same key fails with 409 operation_conflict.
8 - 180^[A-Za-z0-9:_-]+$Path Parameters
Response
Accepted. Poll operationId for completion.
Body of every 202 Accepted Compute mutation.
true ID of the resource created or mutated.
^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$pod, volume, cluster, template, registry, ssh_key Durable operation record. Poll GET /v1/gpu/operations/{id} until a terminal status.
^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$accepted