> ## Documentation Index
> Fetch the complete documentation index at: https://docs.gpuoutlet.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Changelog

> What changed, when. Latest at the top.

<Update label="2026-08-08" description="Radar proposals moved to the sell side">
  **Proposing a Radar node is now a Sell tab**

  * The proposal form and your own submissions moved from the buyer Radar page to
    **Sell → Radar**, next to your machines. Same flow, same review — see
    [selling](/guides/selling#selling-a-whole-node).
  * The buyer [Radar](/concepts/radar) page is now only the grid and inquiries.
  * Nothing changed for the [API](/api/radar): `/radar/submissions` is unaffected.
</Update>

<Update label="2026-08-07" description="Selling on Radar, and Spot-only listings">
  **You can propose your own Radar node**

  * Have a whole node to sell? Propose it from [Radar](/concepts/radar) instead of
    writing to us. It is reviewed before anyone sees it, and a rejection comes with
    a reason rather than silence.
  * **Withdraw** takes a live listing off the grid immediately and keeps its
    approval — the one to reach for when the hardware sells elsewhere. **Editing**
    sends it back for review, so it leaves the grid until approved again.
  * Listings never carry a seller's name. Radar is capacity we verified, and that
    is what a buyer is reading.

  **Sell a machine as Spot only**

  * Sellers can now switch off on-demand and offer the machine at its Spot rate
    alone. See [selling](/guides/selling#selling-spot-only).
  * For buyers this means a tier missing from a listing is missing on purpose:
    what you can pick is what is on offer. See
    [service tiers](/concepts/instances#service-tiers).
</Update>

<Update label="2026-08-07" description="Radar over the API">
  **Radar is on the partner API**

  * [`/radar/nodes`](/api/radar) — browse whole-node listings and read one, with
    the same visibility a signed-in buyer has. A hidden or unreviewed node answers
    404, like an id that never existed.
  * `POST /radar/nodes/{id}/inquiries` — send an inquiry. A lead, not a booking:
    nothing is reserved and nothing is charged.
  * `/radar/submissions` — propose a node and manage it: read its review state,
    edit it, withdraw it, put it back. Only `title` is required.
  * Two new scopes, `radar:read` and `radar:write`. Keys minted before they existed
    do not carry them — mint a new key rather than expecting an old one to widen.
  * Watch the difference between **withdrawing** (immediate, keeps its approval)
    and **editing** (goes back for review, leaves the grid until approved). A
    script that rewrites a listing to change one number takes it off the grid.
</Update>

<Update label="2026-08-06" description="Radar">
  **Radar is documented**

  * [Radar](/concepts/radar) — whole physical GPU nodes, sourced privately,
    verified before they go live, and booked by inquiry rather than by clicking
    start. Covers what a listing tells you about a node, what an inquiry asks for,
    and where Radar sits next to the self-serve catalog.
  * Radar is dashboard-only and signed-in only. At the time of writing it was not
    reachable from the partner API — that changed the next day, see the entry
    above.
</Update>

<Update label="2026-07-29" description="Public API v1.0">
  **The partner API is live at `api.gpuoutlet.ai`**

  * Rent programmatically: `POST /rental-quotes`, `POST /rentals`, `GET /rentals`,
    `GET /rentals/{id}`, `POST /rentals/{id}/stop`, `GET /rentals/{id}/events`.
    Creating a rental requires an `Idempotency-Key` — a timeout must never cost you
    a second machine.
  * Browse the catalog: `/offers` with filters for model, family, VRAM, region,
    geo, price ceiling, instance class, service tier and availability, plus
    `/gpu-models`, `/gpu-families`, `/regions` and `/prices`.
  * Three scopes — `catalog:read`, `rentals:read`, `rentals:write` — fixed at key
    creation, so a leaked read-only key can never start a machine.
  * **Daily spend limits per key**, counted as the larger of accrued spend and the
    current hold, so neither a burst of new rentals nor one long-running machine
    can slip past the cap.
  * Per-key usage in the dashboard: what a key spent today against its limit and
    which rentals it started. Rentals started over the API carry an **API** badge
    on the Instances page, with a **Via API** filter.
  * Full documentation under the **API** tab, including every filter, the complete
    error catalogue, and worked retry policies.

  **Notification preferences**

  * Settings → Notifications now switches the in-app categories — rentals, billing,
    payouts — on and off per account. Switching a category off stops new
    notifications; it does not clear the inbox.
</Update>

<Update label="2026-07-08" description="v0.9.3">
  **Simpler service tiers**

  * **Two service tiers instead of three.** Renting now offers just **On-demand**
    and **Spot**. The in-between "Preemptible" tier has been retired — on a
    single-machine listing it behaved identically to Spot, so it only added
    confusion. On-demand is uninterrupted at the headline price; Spot is cheaper
    and may be reclaimed when a full-price on-demand buyer needs the GPU. Any
    existing rentals are unaffected.
</Update>

<Update label="2026-07-07" description="v0.9.2">
  **Service tiers, a community marketplace, and selling your own GPUs**

  * **Choose how you rent — service tiers.** Pick **On-demand** for uninterrupted
    capacity at the headline price, or the cheaper **Spot** tier that may be
    reclaimed when a full-price on-demand buyer needs the GPU. The per-hour price
    for each tier is shown before you launch.
  * **A community marketplace with trust signals.** Rent machines listed by other
    sellers — each card shows a **Seller Rating (0–100)** and a **Verified** badge
    once the machine has passed automated hardware checks. Cards advertise the
    cheapest tier as a "From \$x/hr" starting price.
  * **Sell your own GPU, earning right away.** List a machine, connect it with a
    single copy-paste command, and once it's verified it goes live on the
    marketplace — no manual approval step.
  * **Renting a seller's machine gives you the whole box.** You get all of that
    machine's GPUs for your session, billed for exactly what you receive.
  * **Honest availability.** A machine that's currently taken shows as unavailable
    (or reservable by an on-demand buyer when only a lower tier is in use), so you
    only ever click "rent" on something you can actually get.
</Update>

<Update label="2026-06-16" description="v0.9.1">
  **Polish & fixes**

  * **Billing history reads cleaner** — clearer `DD.MM.YYYY` dates, tidied invoice
    and transaction tables, and instant switching between tabs.
  * **Wallet and auto-top-up sit side by side** on desktop for a quicker overview.
  * **Smoother landing navigation** — the header links (Pricing, Sell, …) jump
    straight to the right section, even on a first visit from a direct link.
  * **Faster "sell your capacity" form** — GPU model, quantity, region, and
    availability are now dropdowns instead of free text.
  * Assorted mobile spacing and layout fixes across billing and the landing page.
</Update>

<Update label="2026-06-12" description="v0.9.0">
  **Dedicated instances**

  * **New "Dedicated" instance class** — pick it with the **Standard / Dedicated**
    toggle on the create screen. A Dedicated instance is a single-tenant machine
    that's entirely yours for the rental, currently in the EU.
  * **SSH-only** — you connect to Dedicated instances with your own SSH key
    (no in-browser Jupyter or web terminal for this class yet), so an SSH key is
    required when you launch one.
  * Each running instance now shows its class as a chip, and pricing can differ
    per class — the per-hour total is always shown before you launch.
</Update>

<Update label="2026-06-12" description="v0.8.0">
  **Rent multiple GPUs at once, and sell your spare capacity**

  * **Multi-GPU instances** — choose `1×`, `2×`, `4×` or `8×` of a GPU right on
    the create screen. The hourly rate and your running spend scale with the
    count, and the footer shows the exact per-hour total before you launch.
  * **Sell your idle GPU capacity** — got spare accelerators? A new section on the
    [homepage](https://gpuoutlet.ai) lets you submit your capacity in a short
    form, and we'll follow up about listing it on the marketplace.
</Update>

<Update label="2026-06-11" description="v0.7.0">
  **First-deposit bonus, smarter refunds, pay invoices from balance**

  * **First-deposit bonus** — top up **\$5 or more on your first deposit and we
    add an extra \$5** to your balance. One bonus per account, applied
    automatically the moment your first top-up lands. It shows up as a
    **Promo bonus** line in your billing history.
  * **Refunds now reflect on your wallet** — when a refund is sent back to your
    card, that amount is removed from your wallet balance and recorded in your
    billing history, so your balance always matches reality. If you'd already
    spent the funds, the remainder becomes an invoice you can settle.
  * **Pay invoices from your balance** — any outstanding invoice can now be
    settled in one click straight from your wallet balance, in addition to
    paying by card on the Stripe-hosted page.
  * **Outstanding invoices before launch** — if you have an unpaid invoice, settle
    it (by card or from your balance) before starting a new instance. A clear
    prompt links you straight to it.
</Update>

<Update label="2026-06-09" description="v0.6.0">
  **Live pricing & steadier launches**

  * Prices on the homepage and the Create screen are now **live** — the rate you
    see is exactly what you're billed per GPU-hour, with no indicative
    placeholders.
  * The homepage GPU grid now reflects **real-time availability** for each card.
  * Current rates: **RTX 4090** `$0.45/hr` · **RTX 5090** `$0.80/hr` · **A100 80GB**
    `$0.95/hr` · **H100 80GB** `$1.95/hr` · **B200** `$4.20/hr` · **B300** `$6.30/hr`.
  * **More reliable launches** — if a GPU type is briefly short on capacity, we
    now find an available alternative automatically, so you hit "unavailable"
    far less often.
  * Clearer, friendlier messages when a GPU type is temporarily out of stock.
</Update>

<Update label="2026-06-07" description="v0.5.0">
  **First-class invoices**

  * Billing model split: the prepaid wallet covers the happy path; invoices
    cover the cases where the wallet alone can't recover (auto-topup card
    decline, metering settled higher than the wallet held).
  * Three invoice reasons: `topup_failed`, `overage`, `manual`. Each
    mirrored to a real Stripe Invoice with hosted pay page, PDF, receipt,
    and email reminders.
  * Auto-topup decline now creates a `topup_failed` invoice for the
    declined amount instead of just emailing the user. The pay link is
    included in the email — users can self-serve recovery without
    signing in.
  * Settlement now returns `overageCents` alongside `finalCents`; non-zero
    overages emit `overage` invoices automatically. Threshold is \$0
    (every cent owed gets invoiced).
  * Invoices: view, pay, and track status from the dashboard billing page.
  * Balance now surfaces any outstanding invoice total.
  * Dashboard billing page: persistent red banner when any invoice is
    open, an "Outstanding" KPI in the Activity card, and a full
    Invoices table with Pay/Receipt/PDF actions per row.
</Update>

<Update label="2026-06-07" description="v0.4.0">
  **Mobile polish & docs**

  * Dashboard mobile layout finalized — single-line slim footer, static
    iOS safe-area handling, theme-color sampling for native-feeling
    status bar tinting.
  * Welcome interstitial for new sign-ups across email OTP, Google,
    GitHub. Single-shot per user, `localStorage` + in-memory backup so
    it never loops.
  * Landing CTAs route logged-in users to `/app` and prompt anonymous
    users with `/login`.
  * `Sell it to us` opens the mail client pre-composed.
  * This entire docs site went live.
</Update>

<Update label="2026-06-06" description="v0.3.0">
  **SEO + GTM**

  * Sitemap.xml + robots.txt (correct sitemap.org namespace).
  * JSON-LD Organization + WebSite schema in landing `<head>`.
  * Google Ads conversion tag (`AW-18194889415`).
  * Slim single-line dashboard footer; SSH-keygen helper gets a Copy
    button.
</Update>

<Update label="2026-06-05" description="v0.2.0">
  **Anti-AI design pass**

  * Whole-dashboard redesign: no gradients, no semi-transparent
    surfaces, sharp 4px radii, editorial type. Solid hex tokens only.
  * Light theme uses brand blue (`#2563eb`) accent; dark stays lime
    (`#a3e635`).
  * Three-mode theme toggle (light / auto / dark) persisted across
    reloads.
  * Legal pages (Terms, Privacy, Cookies) gained light theme + smart
    back navigation (Back to dashboard if you came from `/app`).
</Update>

<Update label="2026-06-04" description="v0.1.0">
  **Pricing ladder**

  * Reordered landing + Create picker cheapest → most expensive.
  * Replaced High/Medium/Low text with an "Availability" label;
    three-dot indicator stays.
  * Removed L4/L40S; added B200 + B300 as separate cards.
</Update>

<Update label="2026-06-03" description="v0.0.x">
  **First public launch**

  * Marketing landing with pricing grid, FAQ, how-it-works, social.
  * Dashboard MVP: Create / Instances / Billing / Settings.
  * Email OTP + Google OAuth + GitHub OAuth.
  * Stripe billing: one-off top-ups, saved card, auto-topup.
  * SSH key management with per-launch injection.
</Update>
