curl --request POST \
--url https://api.aireserve.com/v1/gpu/instances/quote \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"count": 1,
"name": "<string>",
"image": "<string>",
"diskGb": 50,
"volumeId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"volumeMountPath": "/workspace",
"registryCredentialId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"sshKeyIds": [],
"sshPublicKey": "<string>",
"env": {},
"ports": [
{
"port": 32768
}
],
"dockerStartCmd": [],
"publicPortsAcknowledged": false,
"maxHourlyPrice": "<string>"
}
'import requests
url = "https://api.aireserve.com/v1/gpu/instances/quote"
payload = {
"count": 1,
"name": "<string>",
"image": "<string>",
"diskGb": 50,
"volumeId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"volumeMountPath": "/workspace",
"registryCredentialId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"sshKeyIds": [],
"sshPublicKey": "<string>",
"env": {},
"ports": [{ "port": 32768 }],
"dockerStartCmd": [],
"publicPortsAcknowledged": False,
"maxHourlyPrice": "<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({
count: 1,
name: '<string>',
image: '<string>',
diskGb: 50,
volumeId: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
volumeMountPath: '/workspace',
registryCredentialId: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
sshKeyIds: [],
sshPublicKey: '<string>',
env: {},
ports: [{port: 32768}],
dockerStartCmd: [],
publicPortsAcknowledged: false,
maxHourlyPrice: '<string>'
})
};
fetch('https://api.aireserve.com/v1/gpu/instances/quote', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"id": "<string>",
"quoteId": "<string>",
"kind": "instance",
"expiresAt": "2023-11-07T05:31:56Z",
"accelerator": "<string>",
"count": 0,
"region": "<string>",
"availability": "LOW",
"price": {
"gpuUsdPerHour": "<string>",
"rootDiskUsdPerHour": "<string>",
"instanceUsdPerHour": "<string>",
"persistentStorageUsdPerHour": "<string>",
"totalRunningUsdPerHour": "<string>",
"storageOnlyUsdPerHour": "<string>"
},
"storage": {
"rootGb": 0,
"rootPersistence": "ephemeral",
"persistent": {
"volumeId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"sizeGb": 0,
"mountPath": "<string>",
"usdPerHour": "<string>",
"billsUntilDeleted": true,
"survivesStop": true,
"survivesTerminate": true,
"multiAttach": false,
"status": "<string>"
}
},
"runtime": {
"type": "container",
"profile": "<string>"
},
"capabilities": {
"start": true,
"stop": true,
"restart": true,
"ssh": true,
"logs": true,
"persistentVolumes": true,
"stopPreservesRootDisk": true
},
"maxHourlyPrice": "<string>"
}{
"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": {}
}
}Quote GPU instance
Price an instance request before launching it. Runs the same placement as a launch: an existing volumeId pins placement to where that volume lives, and inline storage is priced in and placed with the GPU. Answers with the all-in hourly price, what survives stop and terminate, what keeps billing, and a quoteId to launch exactly this. A request that cannot be satisfied answers 409 no_capacity with a reason and alternatives, before anything is created or charged. Nothing is reserved; quotes expire after 120 seconds. Requires compute read access.
curl --request POST \
--url https://api.aireserve.com/v1/gpu/instances/quote \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"count": 1,
"name": "<string>",
"image": "<string>",
"diskGb": 50,
"volumeId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"volumeMountPath": "/workspace",
"registryCredentialId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"sshKeyIds": [],
"sshPublicKey": "<string>",
"env": {},
"ports": [
{
"port": 32768
}
],
"dockerStartCmd": [],
"publicPortsAcknowledged": false,
"maxHourlyPrice": "<string>"
}
'import requests
url = "https://api.aireserve.com/v1/gpu/instances/quote"
payload = {
"count": 1,
"name": "<string>",
"image": "<string>",
"diskGb": 50,
"volumeId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"volumeMountPath": "/workspace",
"registryCredentialId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"sshKeyIds": [],
"sshPublicKey": "<string>",
"env": {},
"ports": [{ "port": 32768 }],
"dockerStartCmd": [],
"publicPortsAcknowledged": False,
"maxHourlyPrice": "<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({
count: 1,
name: '<string>',
image: '<string>',
diskGb: 50,
volumeId: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
volumeMountPath: '/workspace',
registryCredentialId: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
sshKeyIds: [],
sshPublicKey: '<string>',
env: {},
ports: [{port: 32768}],
dockerStartCmd: [],
publicPortsAcknowledged: false,
maxHourlyPrice: '<string>'
})
};
fetch('https://api.aireserve.com/v1/gpu/instances/quote', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"id": "<string>",
"quoteId": "<string>",
"kind": "instance",
"expiresAt": "2023-11-07T05:31:56Z",
"accelerator": "<string>",
"count": 0,
"region": "<string>",
"availability": "LOW",
"price": {
"gpuUsdPerHour": "<string>",
"rootDiskUsdPerHour": "<string>",
"instanceUsdPerHour": "<string>",
"persistentStorageUsdPerHour": "<string>",
"totalRunningUsdPerHour": "<string>",
"storageOnlyUsdPerHour": "<string>"
},
"storage": {
"rootGb": 0,
"rootPersistence": "ephemeral",
"persistent": {
"volumeId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"sizeGb": 0,
"mountPath": "<string>",
"usdPerHour": "<string>",
"billsUntilDeleted": true,
"survivesStop": true,
"survivesTerminate": true,
"multiAttach": false,
"status": "<string>"
}
},
"runtime": {
"type": "container",
"profile": "<string>"
},
"capabilities": {
"start": true,
"stop": true,
"restart": true,
"ssh": true,
"logs": true,
"persistentVolumes": true,
"stopPreservesRootDisk": true
},
"maxHourlyPrice": "<string>"
}{
"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).
Body
A40_48GB, A100_80GB, H100_80GB, H100_NVL_94GB, H200_141GB, B200_180GB, B300_288GB, L40_48GB, L40S_48GB, RTX_2000_ADA_16GB, RTX_4000_ADA_20GB, RTX_6000_ADA_48GB, RTX_A5000_24GB, RTX_PRO_4000_24GB, RTX_PRO_4500_32GB, RTX_PRO_6000_96GB, RTX_PRO_6000_MIG_24GB, RTX_PRO_6000_MIG_48GB, MI300X_192GB 1 <= x <= 16north_america, united_states, canada, europe, asia_pacific, oceania 1 - 1201 - 500^(?![A-Za-z][A-Za-z0-9+.-]*:\/\/)[A-Za-z0-9][A-Za-z0-9./_:@-]*$1 <= x <= 1024^([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)$120^\/[A-Za-z0-9_-]+(?:\/[A-Za-z0-9_-]+)*\/?$Show child attributes
Show child attributes
^([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)$20^([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)$1 - 16384Show child attributes
Show child attributes
Show child attributes
Show child attributes
324096^\d{1,7}(?:\.\d{1,6})?$Response
Priced. The request can be launched as quoted.
A priced, placeable instance request. If this is returned, the request can be launched as quoted; a request that cannot be satisfied answers 409 no_capacity instead.
Signed quote token. Same as quoteId.
Pass as quoteId to POST /v1/gpu/instances to launch exactly what was quoted. Expires after 120 seconds.
instance ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$-9007199254740991 <= x <= 9007199254740991Normalized region the instance would run in.
LOW, MEDIUM, HIGH, UNKNOWN Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
USD amount as a six-decimal string. Never a float.
^\d+(?:\.\d{1,6})?$