Rentals
The rental is the core resource. You create one to provision a GPU, poll it until the tunnel is up, then delete it to stop the meter.
A rental ties together a listing, one of your SSH keys, and an optional spend cap. Creating it kicks off provisioning on the cheapest acceptable cloud. The box boots, injects your public key, and dials home to open a reverse SSH tunnel to gpu.ipxtechholding.com. Once that tunnel connects, a connection_string appears and the per-second meter starts. Deleting the rental tears the box down and stops billing.
Every endpoint on this page requires a bearer token. Create or rotate one at Settings · API access and send it as Authorization: Bearer <token>. Examples below use the shell variable $IPX_TOKEN.
The rental object
Every endpoint returns the same shape. Money is expressed in micro-USD, where 1000000 equals one dollar.
provisioning_requested, active_connected, or terminated.RTX 409024680000 is $0.68/hr.null for none. The box is reclaimed the moment it is hit. 5000000 is a $5 cap.null until the tunnel connects, then the ready-to-run SSH command. ssh -p 20137 root@gpu.ipxtechholding.comLifecycle
A rental moves through three states. You will only ever see these values in the state field.
-
provisioning_requested
The state right after
POST. We have picked a box and are booting it, injecting your key, and waiting for it to dial home.connection_stringisnulland nothing is billing yet. -
active_connected
The reverse tunnel is up.
connection_stringis populated and the per-second meter is running. This is when you SSH in and work. -
terminated
The box has been torn down, either by your
DELETEcall or because the spend cap was reached. The meter has stopped.connection_stringreturns tonull.
There is no webhook. After creating a rental, poll GET /api/v1/rentals/:id on a short interval (every few seconds is plenty) and stop once state reads active_connected.
Create a rental
Provisions a GPU from a listing and starts the lifecycle. Returns the new rental in provisioning_requested with a null connection string.
5000000 caps the box at $5.$ curl -s -X POST https://gpu.ipxtechholding.com/api/v1/rentals \\
-H "Authorization: Bearer $IPX_TOKEN" \\
-H "Content-Type: application/json" \\
-d '{
"gpu_listing_id": 4271,
"customer_ssh_key_id": 88,
"max_cost_micro_usd": 5000000
}'
{
"id": 9012,
"state": "provisioning_requested",
"gpu_name": "RTX 4090",
"vram_gb": 24,
"price_micro_usd_per_hour": 680000,
"accumulated_cost_micro_usd": 0,
"max_cost_micro_usd": 5000000,
"connection_string": null,
"created_at": "2026-06-24T17:02:11Z"
}
A successful create returns 201 Created. The connection_string is null at this point. That is expected. The box has not connected yet.
Retrieve a rental
Fetches the current state of one rental. This is the endpoint you poll while waiting for the tunnel.
9012$ curl -s https://gpu.ipxtechholding.com/api/v1/rentals/9012 \\
-H "Authorization: Bearer $IPX_TOKEN"
{
"id": 9012,
"state": "active_connected",
"gpu_name": "RTX 4090",
"vram_gb": 24,
"price_micro_usd_per_hour": 680000,
"accumulated_cost_micro_usd": 11333,
"max_cost_micro_usd": 5000000,
"connection_string": "ssh -p 20137 root@gpu.ipxtechholding.com",
"created_at": "2026-06-24T17:02:11Z"
}
Once state reads active_connected and connection_string is set, the box is yours. Run the connection string straight from your shell.
# poll every 3s until the tunnel is up $ until curl -s https://gpu.ipxtechholding.com/api/v1/rentals/9012 \\ -H "Authorization: Bearer $IPX_TOKEN" \\ | grep -q '"state":"active_connected"'; do sleep 3; done # the connection_string points only at IPX $ ssh -p 20137 root@gpu.ipxtechholding.com root@gpu:~# nvidia-smi
Terminate a rental
Tears the box down and stops the meter. Returns the rental in its final terminated state. The reason recorded is customer requested.
9012$ curl -s -X DELETE https://gpu.ipxtechholding.com/api/v1/rentals/9012 \\
-H "Authorization: Bearer $IPX_TOKEN"
{
"id": 9012,
"state": "terminated",
"gpu_name": "RTX 4090",
"vram_gb": 24,
"price_micro_usd_per_hour": 680000,
"accumulated_cost_micro_usd": 47600,
"max_cost_micro_usd": 5000000,
"connection_string": null,
"created_at": "2026-06-24T17:02:11Z"
}
Termination is final. The box is reclaimed and its disk is wiped. Anything you have not pulled off the box is gone. The same teardown happens automatically if accumulated_cost_micro_usd reaches your max_cost_micro_usd cap.
Billing is prepaid. The meter only runs while a rental is active_connected, and you can never be charged past your credit balance. Read more in Credits and Billing.