create_limit_order
Place a standing LIMIT ORDER: when the best live fee-adjusted price for gpu (and optional offer_class) trades at or under max_price_per_gpu_hr, the station cuts a signed FILL TICKET naming the exact offer. The station never holds your provider key — the ticket is executed by whoever does: the open-source keyholder sidecar (/agents/#sidecar), your own agent long-polling POST /api/orders/{id}/ticket, or a human with curl. Returns the order with order_secret SHOWN ONCE — it authenticates ticket reads and the fill call for this order only and can rent nothing by itself. Triggers are checked on the poll cadence (~5-min bars, not tick-by-tick); orders expire in 30 days; a ticket lasts ~4 minutes then the order re-arms.
standing=true makes it a STANDING order — compute that survives: after a
live fill the sidecar keeps watching the machine, and when it is preempted
or dies the order re-arms and refills from the CURRENT best offer, up to
max_refills times with cooloff_seconds between death and refill. Honest
limits: this re-provisions the MACHINE, not the WORK (GPU memory is not
portable — resume from your own checkpoints); refills need your sidecar
alive (it is both witness and executor); cancelling stops supervision but
cannot destroy a running machine (the station holds no key). Watchdog:
spend_alert_usd / age_alert_hours fire a "still yours?" webhook once per
machine when the spend ESTIMATE (uptime x price; the provider's bill is
authoritative) or age crosses your line — auto_destroy_budget_usd remains
the hard stop.Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| gpu | Yes | ||
| standing | No | ||
| max_refills | No | ||
| min_vram_gb | No | ||
| offer_class | No | ||
| webhook_url | No | ||
| min_gpu_count | No | ||
| age_alert_hours | No | ||
| cooloff_seconds | No | ||
| spend_alert_usd | No | ||
| max_price_per_gpu_hr | Yes | ||
| auto_destroy_budget_usd | No |