Skip to main content

Listing your rentals

Newest first, cursor-paginated. Requires rentals:read.
This returns every rental on the account — ones you started in the dashboard, ones another key started, all of them. A key scopes access to the account, not to its own rentals. See why.

Filters

string
provisioning · running · stopping · stopped · failedRepeatable. Omit for all statuses.
'true' | 'false'
Shorthand for provisioning + running + stopping — everything currently live, which is also everything currently occupying a concurrency slot.This is the filter a “what am I paying for right now” screen wants.
string
ISO 8601 timestamp. Only rentals created after it.
string
Opaque; from meta.next_cursor.
integer
default:"50"
1–200.
active=true and an explicit status list overlap. If you pass both, you are asking two questions at once — prefer one or the other so the query says what you mean.

One rental by id

This is the endpoint to poll while a rental comes up.
404 covers both “no such rental” and “belongs to another account”, reported identically — distinguishing them would confirm the existence of someone else’s resource.

Connecting

access is null until the status is running, and every member is independently nullable: an offer may expose SSH but no Jupyter, or a web terminal but no service port. Check before you use one.
object | null
host, port, username.
object | null
url.
object | null
url — the port your template exposes, if it exposes one.
object | null
url, username, password.
Credentials come back as fields, never baked into a URL. A https://user:pass@host/ would end up in your logs, your browser history and every Referer header the page emits. Keep them out of URLs on your side too.

Stopping

Requires rentals:write. No body, no idempotency key needed — the call is idempotent by nature: stopping an already-stopping or already-stopped rental returns the rental as it is, not an error. Retry it freely.
stopping is not stopped. Teardown is asynchronous. Poll GET /rentals/{id} until the status is stopped before you treat billing.accrued_cents as the final charge, and before starting a replacement if you are near the concurrency ceiling — a stopping rental still holds its slot.

Common queries

Sum billing.accrued_cents for spend so far; sum billing.price_per_hour_cents for the current burn rate.
Walk the full cursor — do not stop at the first page. See Pagination.
Then group by failure_code. A run of provisioning_failed on one region is worth a support ticket; a scatter across regions is usually bad luck.
Then filter on termination_reason == "preempted". If the ratio is high, the spot trade-off may not be paying for itself.
The event history, oldest first, with timestamps — rather than diffing objects you polled.