IPXdocs
Get started

Quickstart

Go from a fresh account to a root shell on a rented GPU in about five minutes.

This guide walks the whole path once. You create an account, load prepaid credits, register an SSH key, rent a GPU from the price-sorted feed, then poll until the box is connected and SSH straight in. Everything here can be done in the console or over the API with a bearer token. We show both.

API calls authenticate with a bearer token you create at Settings to API access (Settings). Pass it as Authorization: Bearer <token>. In the examples below it lives in the shell variable $IPX_TOKEN. All API requests go to https://gpu.ipxtechholding.com.

Steps

  1. Create an account or sign in

    Sign up at /sign_up, or sign in if you already have one. Once you are in, open Settings to API access and generate a token. Copy it now, it is shown once. Then export it in your shell so the rest of these examples work as written.

    terminal
    # paste the token you copied from Settings to API access
    $ export IPX_TOKEN="ipx_live_..."
  2. Add prepaid credits

    Billing is prepaid. Top up your balance with a card on the Billing page (Stripe handles the payment). Usage meters per second from tunnel-connect to teardown and draws down this balance, so you cannot be charged past what you have loaded. You can check your balance over the API at any time.

    balance
    $ curl https://gpu.ipxtechholding.com/api/v1/credits \\
        -H "Authorization: Bearer $IPX_TOKEN"
    # { "balance_micro_usd": 5000000 }

    Money is in micro-USD. 1 USD is 1,000,000 micro, so a balance_micro_usd of 5000000 is $5.00 and a rate of 680000 is $0.68/hr.

  3. Add an SSH key

    We inject your public key into the box at boot. There are no passwords, so you need a key on file before you rent. Add one in the console under SSH keys, or register it over the API with its name and the contents of your .pub file.

    request
    $ curl https://gpu.ipxtechholding.com/api/v1/ssh_keys \\
        -H "Authorization: Bearer $IPX_TOKEN" \\
        -H "Content-Type: application/json" \\
        -d "{\\"name\\": \\"laptop\\", \\"public_key\\": \\"$(cat ~/.ssh/id_ed25519.pub)\\"}"
    response
    {
      "id": 42,
      "name": "laptop",
      "fingerprint": "SHA256:Xy..."
    }

    Keep the returned id. You pass it as customer_ssh_key_id when you rent.

  4. Browse and rent a GPU

    Browse one price-sorted feed across every cloud in the console at /browse and rent with a click, or do it over the API. List available GPUs, pick one, then create a rental against its listing id. The listing feed is public, so the call below needs no token.

    list GPUs
    # cheapest first, only GPUs with at least 24 GB of VRAM
    $ curl "https://gpu.ipxtechholding.com/api/v1/listings?min_vram_gb=24"
    response
    {
      "listings": [
        {
          "id": 1837,
          "gpu_name": "RTX 4090",
          "vram_gb": 24,
          "num_gpus": 1,
          "region": "us-east",
          "interruptible": false,
          "price_micro_usd_per_hour": 680000,
          "price_usd_per_hour": 0.68
        }
      ]
    }

    Create the rental with the listing id, your SSH key id, and an optional hard spend cap in micro-USD. We reclaim the box the moment the cap is hit, so overruns are impossible.

    rent it
    # max_cost_micro_usd is the hard cap. 5000000 = $5.00
    $ curl https://gpu.ipxtechholding.com/api/v1/rentals \\
        -H "Authorization: Bearer $IPX_TOKEN" \\
        -H "Content-Type: application/json" \\
        -d '{"gpu_listing_id": 1837, "customer_ssh_key_id": 42, "max_cost_micro_usd": 5000000}'
    response
        {
          "id": 904,
          "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:00:00Z"
        }
      SHELL
      <div class="doc-tip">
        <p>The cap is optional. Omit <code>max_cost_micro_usd</code> to run uncapped and rely on your prepaid balance as the ceiling instead.</p>
      </div>
    </li>
    <li>
      <div class="st">Poll until active, then SSH in</div>
      <p>A new rental starts at <code>provisioning_requested</code> and moves through provisioning to <code>active_connected</code>, at which point a <code>connection_string</code> appears. Poll the rental until the state is <code>active_connected</code>.</p>
      '.freeze; @output_buffer.append=( render "docs/shared/code", title: "poll", code: <<~SHELL ); @output_buffer.safe_append='
        $ curl https://gpu.ipxtechholding.com/api/v1/rentals/904 \\
            -H "Authorization: Bearer $IPX_TOKEN"
        # state climbs: provisioning_requested -> booting_instance -> awaiting_tunnel -> active_connected
      SHELL
      '.freeze; @output_buffer.append=( render "docs/shared/code", title: "ready", code: <<~JSON ); @output_buffer.safe_append='
        {
          "id": 904,
          "state": "active_connected",
          "connection_string": "ssh -p 20137 root@gpu.ipxtechholding.com",
          "accumulated_cost_micro_usd": 0,
          "max_cost_micro_usd": 5000000
        }

    Copy the connection_string and connect. It points only at our gateway, never at the underlying provider.

    connect
    $ ssh -p 20137 root@gpu.ipxtechholding.com
    root@gpu:~# nvidia-smi

    You are on the box. The meter started when the tunnel connected. Bring any workload, and tear the rental down when you are finished to stop billing.

Tear it down

When you are done, terminate the rental to stop the meter. The state moves to terminated and the box is released. You are billed only for the seconds the tunnel was up.

terminate
$ curl -X DELETE https://gpu.ipxtechholding.com/api/v1/rentals/904 \\
    -H "Authorization: Bearer $IPX_TOKEN"

Where to next