dph_total (dollars per hour total in search — base compute plus SLA charge), and if measured reliability falls short of their chosen target, they receive a settlement credit funded from your earnings.
This page explains how SLA offers work from the host side — what you set, how clients choose coverage, and what happens when uptime is good or bad.
SLA settlement is asymmetric by design: when reliability is strong relative to the client’s target, you keep the SLA charge; when it falls short, client credits can exceed the charge you collected that day. Charges and credits settle on a daily cadence. Preview economics with the SLA backtester (API, requires rental history) or the web console SLA preview (Set Pricing → SLA).
Clients: see SLA Coverage for how SLA appears in search and billing.
Choose your path
SLA host checklist
- Complete host setup and list your machine.
- Test on a separate client account (billed like any rental).
- Install the CLI (required for SLA maintenance scheduling).
- Confirm SLA account access (Set Pricing → SLA panel visible; if missing, contact support).
- Preview economics (console SLA panel or backtester), then set claim/confidence.
- Enable SLA listing and verify in search (
machine_id=filter). - Read Scheduled maintenance before your first SLA rental.
Before you enable SLA
Pre-flight checklist (before tuning claim/confidence):- Hosting requires a separate host account and hosting agreement — see Account setup if you have not completed host onboarding.
- Confirm SLA is enabled for your account. In the console, open Set Pricing → SLA on a machine — if the panel is missing or listing returns
sla_not_approved, contact Discord or contact@vast.ai to request access before configuring a fleet. Approval timing varies; complete host setup and a base listing first. - Ensure your host daemon is current per the host setup guide.
- If listing fails with
sla_not_approvedorsla_daemon_outdated, resolve eligibility before changing SLA parameters. - Planned maintenance tooling: Use
vastai schedule maintor REST — see Scheduled maintenance.
- Optional: run the backtester after you have weeks of history; otherwise use the web console SLA preview and the economics walkthrough on this page.
- New or low-history machines: If the backtester returns
has_data: false, rely on the web console SLA preview. Wait for rental history before trustingworst_day_loss. Consider wider confidence or a more conservative claim until you have a few weeks of data.
How it works (plain English)
In Host → Machines → Set Pricing → SLA you set host knobs only:
- Claim — the reliability level you believe your machine will deliver (shown to clients as
expected_reliability). - Confidence — how tightly you price around that claim (
sla_sigma_x; lower = tighter / cheaper for clients at a given target).
- Your reliability claim — what you believe your machine will deliver (
sla_r_claim). Setting this above0enables SLA on the offer. - Your confidence — how wide your belief is around that claim (
sla_sigma_x). Tighter confidence → lower SLA charges for clients at a given target; wider confidence → higher charges. - Client reliability target — chosen by the renter via search (
target_reliability). Settlement and SLA charge sizing use this target. Clients typically pick a target at or below your claim.
- While a rental contract is active, clients pay GPU, storage, bandwidth (usage-based), and a small hourly SLA charge — including during downtime. Settlement credits for missed targets are calculated separately at UTC day boundaries. In search results,
dph_totalis the quoted hourly rental cost: GPU + storage + SLA charge at the quoted allocation — not bandwidth. - Each UTC calendar day, Vast measures reliability for the contract and settles the SLA.
- Strong reliability relative to the client’s target → you keep the SLA charge for that day.
- Shortfalls → credits flow to the client from your earnings (bounded by that day’s covered compute).
worst_day_loss before you commit.
How reliability is measured
SLA reliability is measured at the rental contract (instance) level using platform health signals for active on-demand contracts — not your personal SSH session or Jupyter tab.- Instance fails to start when a client rents → counts against SLA reliability for that contract.
- Machine-level outage while contracts are active → affects settlement for those contracts.
- Brief host reboots during active rentals may count as downtime. Vast does not publish a fixed second-level threshold in host docs — treat unplanned reboots as SLA risk. For planned work, use Scheduled maintenance with at least 24 hours’ notice when possible.
- Scheduled maintenance may receive credit case by case — see Scheduled maintenance.
Billing vs settlement (important)
For SLA-covered on-demand contracts, compute billing uses the intended daily compute for the rental. Offline time is tracked as an outage in reliability observations. Client compensation for poor reliability flows through SLA settlement credits, not by silently zeroing the day’s compute bill.SLA parameters
When you list or update a machine, set SLA fields via the host console orPUT /api/v0/machines/create_asks/ (see Listing an SLA offer below).
Advanced: sla_max_beta (optional)
Support-only — omit unless Vast support directs you. Hosts do not set β (timescale mix). The platform derives β from the client’s target_reliability at rent time.
sla_max_beta is an optional ask term that caps how aggressively long-running contracts may weigh recent uptime versus longer history in settlement. Leave it unset for an uncapped offer. If you set it, it must be in (0, 1) and at least the default β derived at your claim — otherwise listing is rejected.
Confidence is not an uptime target. It controls how aggressively SLA charges are priced around your claim.
Machine reliability score vs SLA reliability
The reliability score on the Host Machines page reflects connection and instance-start behavior over recent activity. SLA settlement measures whether covered instances met the client’s published uptime target for billing purposes. Do not assume the dashboard score equals SLA reliability. Before choosingsla_r_claim:
- Open Host → Machines → Set Pricing → SLA and review the console SLA charge preview at candidate claims.
- If you have rental history, run the backtester and check top-level
reliabilityin the response. - Set claim at a level you can sustain; clients who pick targets below your claim see lower SLA charges.
Confidence values
This only changes how SLA charges are priced — it does not change how reliability is measured or what credit you owe when a client’s target is missed. Prefer the console controls. Set rawsla_sigma_x via the API when automating.
Never copy backtester
p into sla_sigma_x — the scales are inverted. See the full mapping on the backtester page.
Tighter confidence (tighter spread; console label Tight) → lower client SLA charges (more competitive dph_total). Wider confidence (console label Wide) → higher client SLA charges. Confidence does not change the credit formula when a target is missed — use worst_day_loss and stress-test with the backtester reliability= override for tail-risk planning.
Validation rules
Offers with invalid combinations are rejected at listing time:sla_r_claimmust be0(disable) or greater than 0 and at most 0.9999. Exactly1.0is rejected.- When claim is positive,
sla_sigma_xmust be positive and at most3.0(defaults to0.5if omitted). - Optional
sla_max_betamust be in(0, 1)and at least the default β derived at your claim. Hosts do not set β; this field only caps the client-derived β the offer accepts. Omit for uncapped.
If listing is rejected with
error: "invalid_sla_params", check the msg field against the rules above. Other SLA listing errors include sla_not_approved and sla_daemon_outdated.SLA and GPU slicing
SLA settlement applies per rental contract. If your machine has multiple GPU slices rented by different clients (GPU slicing — see Min GPU in Hosting Overview), each contract’s SLA is settled independently based on the reliability experienced by that instance. The backtester replays machine-level daily earnings (total compute across all active rentals on that machine).worst_day_loss in summary reflects the worst simulated day for the whole machine in the replay window — not a single GPU slice in isolation.
On sliced machines, a full-machine outage can affect every concurrent SLA rental at once. Use worst_day_loss as your primary tail-risk metric for the machine, and sanity-check exposure against how many SLA-covered instances you typically run in parallel. Do not multiply worst_day_loss by contract count — the backtester already models machine-level compute for the replay window.
SLA on extended contracts
When a rental contract is extended (by moving the offer end date forward at the same or lower price), the original SLA parameters remain in effect for the extended period. Changing SLA parameters on the offer does not alter SLA terms on existing contracts — only new rental contracts pick up updated SLA settings. Disabling SLA on the offer (settingsla_r_claim to 0) prevents new SLA-covered contracts but does not terminate SLA on existing active contracts — they continue under their original SLA terms until their rental end date.
Listing an SLA offer
Web console
- Open your machine on the Host Machines page → Set Pricing.
- Set base listing fields first (GPU price, offer end date, rental types) if this is a new listing.
- Expand SLA.
- Set Claim and Confidence. For your first listing, choose Normal (
sla_sigma_x ≈ 0.5) unless your uptime history is volatile — see Confidence values for risk tradeoffs. - Save and confirm the SLA charge preview before listing.
- After saving pricing, click LIST on the Host Machines page (or confirm the machine status changes to listed). Saving pricing alone stores your offer settings; listing publishes the offer to search.
Updating SLA on an already-listed machine
If the machine is already listed:- Open Host → Machines → Set Pricing → SLA, set Claim and Confidence, then click Save.
- Save applies SLA to the live offer — you do not need to click LIST again unless this is a brand-new listing that was never published.
- Verify after listing:
- Console: confirm the machine status is Listed, reopen Set Pricing → SLA to review the preview, or check offer details under Host → Machines.
- Search:
dph_totalincludes the SLA charge at a client’starget_reliability, andexpected_reliabilitymatches your claim (see Search / client-visible fields).
In the web console, Set Pricing → Save stores SLA settings; clicking LIST publishes the offer to search.
PUT /api/v0/machines/create_asks/ performs both steps in one request — it creates or updates the live listing (same as pressing LIST or running vastai list machine), not a save-only draft.Web console SLA preview
In the host console, open Host Machines → select your machine → Set Pricing → SLA. The preview shows estimated SLA charge and payout exposure for the parameters you enter. It is a forward-looking quote, not a historical replay — use the SLA Backtester for history-based simulation.API (for automation)
New hosts: use the web console steps above first. Use the API when you need scripting, partial updates, or fleet automation.SLA listing via CLI/SDK is not available yet — use the REST API below (or console Set Pricing → SLA). See also List Machine for the same
create_asks body.Before you start
- Open Account → API Keys and create a key. See Create API Key.
- For listing SLA offers, enable
machine_write. For backtesting first, addmachine_read. For post-listing earnings, addbilling_read. - Use the key as
Authorization: Bearer YOUR_API_KEYin thecurlexamples below. See Authentication. - To enable SLA today, use
PUT /api/v0/machines/create_asks/or Set Pricing → SLA in the console. The listing body field ismachine(same ID as backtestermachine_idand earningsmachid). - For the full request/response schema, see List Machine.
The example below adds SLA to an offer that already has base pricing configured. For a first-time listing, include all required base fields (
price_gpu, end_date, min_chunk, storage/bandwidth prices as needed) — see Hosting overview.end_date with a future Unix timestamp — past dates expire the offer immediately (example 1893456000 = 2030-01-01 00:00 UTC). Set end_date so the offer does not stay open indefinitely — especially important for SLA commitments. See Offer End Date. Convert a calendar date to Unix seconds: date -u -d '2030-01-01' +%s (Linux) or date -u -j -f '%Y-%m-%d' '2030-01-01' +%s (macOS). The CLI also accepts MM/DD/YYYY via -e.
SLA fields example (existing listing):
0.99 and confidence spread 0.5. Clients who search with target_reliability below your claim see lower SLA charges than clients who ask for coverage near your claim.
Partial updates are supported when editing an existing listing. If you change only one SLA field, the platform re-validates the merged parameters. Set Machine
sla_r_claim to 0 to disable SLA on an existing listing.Omitted non-SLA fields retain their current listing values; only fields present in the request body are updated. Read current listing fields from vastai show machines --raw:id may be a string in raw JSON. The response is wrapped in a machines array.Then PUT /api/v0/machines/create_asks/ with merged fields.Fleet listing workflow (advanced — fleet operators only)
PUT /api/v0/machines/create_asks/ publishes a live listing (same as LIST). Only run this loop on machines you intend to list or update. Validate price_gpu, end_date, and min_chunk before each PUT. Prefer reading existing SLA fields from each machine rather than hardcoding claim/confidence. Skip incomplete machines.
Before fleet SLA rollout:
- Update host daemons fleet-wide per the host setup guide.
- On Host → Machines, confirm each machine is healthy (no red error status) and retry LIST /
create_asksafter the daemon reconnects. - If listing still returns
sla_daemon_outdatedafter an update, contact support with the machine ID — there is no documentedshow machinesdaemon-version field for a preflightjqfilter today.
- Skip machines missing base pricing fields.
PUT /api/v0/machines/create_asks/withmachineplus SLA fields (preserve existing claim/confidence when set).- On
429, sleep and retry with exponential backoff. - On
invalid_sla_params,sla_not_approved,sla_daemon_outdated, ormachine_locked, log the machine ID and continue or abort per your rollout policy.
show machines --raw inside the loop. On fleets of 20+ machines, expect several minutes; back off on HTTP 429. Configure claim/confidence per machine (console or single-machine create_asks) before running with DRY_RUN=0 — the loop only updates machines that already have a positive sla_r_claim.
SLA-only update — include machine plus SLA fields; omit unrelated offer fields you intend to keep:
sla_r_claim to 0 (active contracts keep their terms).
Common errors
machine_locked: Returned when a machine is decommissioned or migration-locked. If you are migrating hardware, finish or cancel active rentals first, remove or update the listing as needed, and contact support if the machine remains locked. Existing SLA terms on active contracts remain in force until those contracts end.
Success response (200):
extended— integer count of rental contracts extended (read fromresults[0], not the top level)new_contracts/upd_contracts— arrays of contract IDs
Economics walkthrough
Setup: You list an H100 at $3.50/hr GPU price with claim 99% and normal confidence (sla_sigma_x = 0.5). A client searches with target 95%.
SLA credits are capped relative to that UTC day’s covered compute — GPU, storage, and bandwidth combined — not GPU compute alone. The simplified example below uses GPU-only math for readability; treat
worst_day_loss from the SLA backtester as the authoritative tail-risk figure before you list.
SLA charge sizing uses internal SLA math. Use the SLA backtester to preview worst single-day credit exposure (worst_day_loss), not exact client SLA charges. For authoritative client-visible charges, use Set Pricing → SLA in the console or dph_total in search offers at a chosen target_reliability — not backtester total_sla when clients will rent below your claim.
The backtester sets claim equal to target (
r), which is a conservative what-if (as if every client targeted your claim). Live clients who choose targets below your claim usually see lower SLA charges than the backtester’s simulated charges. Use worst_day_loss from the backtester as your worst single-day credit reference, then verify visible charges in Set Pricing → SLA (or dph_total in search) before listing.Search / client-visible fields
When SLA is enabled on an offer, clients see:dph_total— total $/hour including the SLA charge at theirtarget_reliability(authoritative for client-visible all-in pricing).expected_reliability— your advertised claim (maps tosla_r_claim).reliability/reliability2— historical machine reliability scores, not your SLA claim.
reliability filter uses the machine’s historical reliability score — not the SLA claim. The published SLA claim appears in responses as expected_reliability. To select SLA-listed offers programmatically, use has_sla=true or filter on expected_reliability > 0; do not use the reliability filter as an SLA selector.
Verify after listing — filter the offer you care about; sliced machines often return multiple rows (different num_gpus, bid vs on-demand):
If reliability is strong relative to the client’s target
In the You net column, values follow host earnings sign conventions: positive means SLA charge you kept; negative means credit you owed the client.
You keep most or all of the SLA charge.
What if measured reliability is between the client’s target and my claim?
Example: you publish claim 99%, the client chose target 95%, and measured reliability is ~97%.- Credits are evaluated against the client’s target (95%), not your claim.
- Because 97% is above 95%, you typically owe no SLA credit for that day.
- SLA charges are priced from your claim, confidence, and the client’s target — a higher claim relative to the target generally means lower client charges.
If the client’s target is missed
These scenarios show settlement when reliability drops to or below a 95% client target — they are boundary illustrations, not typical strong days:
To put the asymmetry in perspective: at ~42 you could lose on a single day at the target boundary. The SLA charge is a small fraction of daily compute, while credits scale against total daily compute.
Your maximum SLA loss on any single settlement day is bounded by that day’s covered compute (GPU, storage, and bandwidth).
Risk scenarios
You claim 99% and deliver 99.5%
You outperform your claim. Clients who chose targets at or below 99% pay small SLA charges; credits are rare. You net positive on SLA over time.You claim 99% but have an offline day
Clients receive credits tied to how far measured reliability falls below their target. Extended outages can approach a full-day compute credit. Your reliability score and verification status may also be affected separately from SLA settlement.Clients target near your claim
SLA charges are much higher when the client’s target sits near your claim (little headroom). Prefer a claim you can sustain above the targets clients actually choose.You widen confidence (sla_sigma_x → 1.0)
Clients pay more because you admit greater uncertainty. Use this if your reliability history is volatile or the machine is new.
Scheduled maintenance
Planned SLA maintenance (may earn credit): Schedule at least 24 hours in advance withvastai schedule maint (or the REST schedule-maintenance API). Include --sdate and --duration. Advance notice (not the category value) is what makes maintenance “planned” for SLA credit review. Valid --maintenance_category values: power, internet, disk, gpu, software, other. Credit eligibility is evaluated on a case-by-case basis.
CLI --sdate uses Unix epoch seconds (UTC); the REST body uses ISO 8601 UTC. CLI --duration is in hours. Schedule maintenance sequentially across a fleet. On HTTP 429, wait and retry with backoff (for example, sleep 2 between machines). See Rate Limits and Errors.
PUT /api/v0/machines/{machine_id}/dnotify with "sdate": "2026-08-01T02:00:00Z" (optional "maintenance_reason": "OS kernel upgrade") — see Schedule Maintenance.
Cancel or reschedule: To cancel a window, use vastai cancel maint (requires machine_write) or the REST cancel-maintenance API. To reschedule, cancel the existing window, then run schedule maint with a new --sdate (still ≥24 hours ahead for planned SLA maintenance).
Emergency or unplanned downtime: Notify clients if possible using schedule maint, but expect full SLA settlement exposure. Advance-notice credits do not apply to unplanned outages.
See CLI install if you have not set up the CLI.
Preview earnings before listing
Use the SLA Earnings Backtester (API-only; requires amachine_read API key) to replay historical earnings through SLA math. Console-only hosts can use the web console SLA preview and the economics walkthrough on this page instead.
When things go wrong
- Listing rejected (
invalid_sla_params) — Re-check claim andsla_sigma_xagainst validation rules. sla_not_approved— Contact support; you can keep a non-SLA listing while approval is pending.sla_daemon_outdated— Update the host daemon from the host setup guide, confirm the machine reconnects on Host → Machines, then retry LIST /create_asks. If the error persists, contact support with the machine ID.- Unexpected credit — Review reliability; re-run the backtester with a low
reliabilitystress value (for example0.01). - Severe outage — Disable SLA on new contracts: open Host → Machines → Set Pricing → SLA, set claim to
0(or use APIsla_r_claim=0); contact Discord before relisting.
Monitoring SLA after listing
After you enable SLA, charges and credits settle on UTC (Coordinated Universal Time) day boundaries. SLA earnings rows typically appear in Host → Billing within a few hours after UTC midnight (exact timing can vary).Console (recommended for day-to-day checks)
- Go to Host → Billing (or Earnings / Reports).
- Set the date range to include the UTC day you want to review.
- Filter by machine ID if available.
- Look for SLA entries in the earnings breakdown — positive amounts are SLA charges you kept; negative amounts are credits you owed the client.
- After downtime, compare the affected UTC day(s) to your
worst_day_lossbacktest estimate.
SLA daily settlement (SLA charge kept / credit owed) does not currently emit host webhooks. Monitor via console billing or poll
machine-earnings; settlements align to UTC calendar days.CLI
Linux (GNU date):show earnings for all options.
Linux (GNU date) — one UTC day (compare to worst_day_loss):
sla_earn = net SLA charge you kept that period; negative = net credit you owe. Weekly aggregates are window totals, not daily series — use a one-day range above for day-level checks.
API (automation)
Console users: Skip this section if you check payouts in Host → Billing. No API key is required.
GET /api/v0/users/{user_id}/machine-earnings/ returns SLA fields alongside compute earnings. Requires a billing_read API key. See show earnings.
This endpoint is rate-limited — see Rate Limits and Errors. Poll at most about once every two seconds per IP; back off on HTTP 429.
Machine-scoped one-day total:
last_days=7 totals to single-day worst_day_loss from the backtester.
Sign convention (same as backtester sla / historical_sla):
{user_id}— Your account ID (from Account → Profile in the console, orvastai show user).- Settlement is evaluated on UTC day boundaries. Rows typically update within a few hours after UTC midnight.
Tips for competitive SLA offers
- Claim a level you can sustain. Clients who choose targets below your claim see lower SLA charges and still get meaningful coverage.
- Tighten confidence only when earned. Use a tighter spread (
sla_sigma_x ≈ 0.2) after you have a strong reliability track record on that machine. - Keep the machine online during active contracts. SLA credits and verification are separate systems, but both respond to downtime.
- SLA applies to on-demand rentals only. It does not apply to interruptible/bid instances or reserved/prepay rentals. When a client starts an on-demand rental on an SLA-enabled offer, SLA terms lock for that rental contract and do not change if you later edit the offer.
- Use the SLA backtester (API-only) to preview how different claims and confidence levels would have affected past earnings.
Related documentation
- SLA Coverage (clients) — how renters find and evaluate SLA offers
- SLA Earnings Backtester — preview SLA economics on historical earnings
- Hosting Overview — offers, rental contracts, and listing basics
- Understanding Verification — platform verification (separate from SLA, but related to trust)