Skip to content
All guidesOpen

Docs / For renters

Rent a whole GPU

Reserve one host's GPU by the hour, run one catalog model on it and call it at your own endpoint.

Serverless is pay per token on whichever host is free. Dedicated is different: you reserve one GPU for yourself, by the hour, and run one catalog model on it. Requests to your endpoint go only to that GPU. They never queue behind other renters and they are not billed per token. You pay for the hour whatever you send.

GPU classes and prices

Dedicated GPU classes and prices
GPU classPrice per GPU-hourModels that fit
8 to 15 GB$0.20llama-3.1-8b-instruct
16 to 23 GB$0.28llama-3.1-8b-instruct, qwen3-14b
24 to 31 GB (RTX 3090, 4090)$0.35llama-3.1-8b-instruct, qwen3-14b, qwen3-32b
32 GB and up (RTX 5090)$0.55llama-3.1-8b-instruct, qwen3-14b, qwen3-32b

A model fits a class when its weights and a 4,096 token context fit in that much VRAM. The picker on Dedicated GPU only shows models that fit the class you chose.

Start a rental

  1. You need at least one hour of credits. Start is disabled until you have them, with a link to Billing.
  2. Open Dedicated GPU, choose a class and a model, and press Start rental. One hour is reserved from your credits.
  3. Ballast finds an idle host in that class, tells it to load the model and checks the result with a spot check. This shows as Starting. If it takes more than 10 minutes the rental is canceled and the credits are released.
  4. When it turns Active, the page shows your endpoint, the GPU class (never who owns it), the time so far and the cost so far.

Call your endpoint

The endpoint is https://ballast.outerscope.xyz/v1/dedicated/<rental_id>. It speaks the same chat API and takes your normal key. Use the model you rented.

Terminalsh
curl https://ballast.outerscope.xyz/v1/dedicated/<rental_id>/chat/completions \
  -H "Authorization: Bearer $BALLAST_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "qwen3-32b", "messages": [{"role": "user", "content": "Hello"}]}'
rental.pypython
import os
from openai import OpenAI

client = OpenAI(
    base_url="https://ballast.outerscope.xyz/v1/dedicated/<rental_id>",
    api_key=os.environ["BALLAST_API_KEY"],
)
reply = client.chat.completions.create(
    model="qwen3-32b",
    messages=[{"role": "user", "content": "Hello"}],
)
print(reply.choices[0].message.content)

How you are billed

  • One hour is reserved when you start, and the next hour is reserved at each hour boundary while the rental runs.
  • You are charged per minute served, with a minimum of 10 minutes. Press Stop and the unused part of the reservation comes back.
  • A minute only counts if the GPU sent a heartbeat that minute. Downtime is never billed.
  • If the next hour cannot be reserved, the rental stops at the boundary and you get an email. A rental also stops after 24 hours. To keep going, start another.
  • You can have 3 open rentals at a time.

If the host drops

If the GPU misses heartbeats for 60 seconds, the rental shows Interrupted and billing stops at the last healthy minute. Within 5 minutes Ballast tries to pin another idle GPU of the same class, load your model and carry on at the same endpoint. You will see "Moved to another host" and the gap marked as not billed. If no GPU turns up in 5 minutes, the rental ends and the unused reservation is released.

What the endpoint returns

API errors
StatusCodeMeaningWhat to do
404rental_not_foundRental not found.The rental id is wrong, or the rental belongs to another account.
404model_not_foundThat model is not in the Ballast catalog. See GET /v1/models.Use an id from GET /v1/models. On a rental, use the model you rented.
503rental_interruptedThe rental's host is not responding. It will move to another host.Ballast is moving the rental to another host. Retry after Retry-After.
410rental_endedThis rental has ended.The rental has ended. Start a new one.

The model is always one from the catalog. Dedicated rentals do not run your own weights, containers or shell. That is how hosts stay safe from renter code.

Something here wrong or missing? Tell us on Support.