{"openapi":"3.1.0","info":{"title":"compute.pangle.online","version":"0.1.0"},"paths":{"/api/offers":{"get":{"summary":"Api Offers","operationId":"api_offers_api_offers_get","parameters":[{"name":"gpu","in":"query","required":false,"schema":{"type":"string","default":"","title":"Gpu"}},{"name":"country","in":"query","required":false,"schema":{"type":"string","default":"","title":"Country"}},{"name":"offer_class","in":"query","required":false,"schema":{"type":"string","default":"","title":"Offer Class"}},{"name":"provider","in":"query","required":false,"schema":{"type":"string","default":"","title":"Provider"}},{"name":"max_price","in":"query","required":false,"schema":{"type":"number","default":0,"title":"Max Price"}},{"name":"min_vram","in":"query","required":false,"schema":{"type":"number","default":0,"title":"Min Vram"}},{"name":"min_reliability","in":"query","required":false,"schema":{"type":"number","default":0,"title":"Min Reliability"}},{"name":"min_gpu_count","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Min Gpu Count"}},{"name":"region","in":"query","required":false,"schema":{"type":"string","default":"","title":"Region"}},{"name":"per_model","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Per Model"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/fit":{"get":{"summary":"Api Fit","description":"Will-it-fit: deterministic VRAM arithmetic (working shown) against the\nlive book. $/M-tokens only from the caller's own tokens_per_s.","operationId":"api_fit_api_fit_get","parameters":[{"name":"model","in":"query","required":false,"schema":{"type":"string","default":"","title":"Model"}},{"name":"params_b","in":"query","required":false,"schema":{"type":"number","default":0,"title":"Params B"}},{"name":"precision","in":"query","required":false,"schema":{"type":"string","default":"fp16","title":"Precision"}},{"name":"context","in":"query","required":false,"schema":{"type":"integer","default":8192,"title":"Context"}},{"name":"batch","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Batch"}},{"name":"offer_class","in":"query","required":false,"schema":{"type":"string","default":"","title":"Offer Class"}},{"name":"tokens_per_s","in":"query","required":false,"schema":{"type":"number","default":0,"title":"Tokens Per S"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/specs":{"get":{"summary":"Api Specs","description":"The spec tables behind the workload lens: dense FP16 tensor TFLOPS and\npeak memory bandwidth per model. Spec-sheet ceilings, not benchmarks;\nabsent model = unrated (ambiguous variants deliberately so).","operationId":"api_specs_api_specs_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/sparks":{"get":{"summary":"Api Sparks","description":"Bulk mini-tape: market-wide best price per snapshot for each named model —\nfeeds the per-row sparklines without one /api/history call per row.","operationId":"api_sparks_api_sparks_get","parameters":[{"name":"models","in":"query","required":false,"schema":{"type":"string","default":"","title":"Models"}},{"name":"hours","in":"query","required":false,"schema":{"type":"integer","default":24,"title":"Hours"}},{"name":"offer_class","in":"query","required":false,"schema":{"type":"string","default":"","title":"Offer Class"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/stats":{"get":{"summary":"Api Stats","operationId":"api_stats_api_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/gpus":{"get":{"summary":"Api Gpus","operationId":"api_gpus_api_gpus_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/history":{"get":{"summary":"Api History","operationId":"api_history_api_history_get","parameters":[{"name":"gpu","in":"query","required":false,"schema":{"type":"string","default":"","title":"Gpu"}},{"name":"offer_class","in":"query","required":false,"schema":{"type":"string","default":"on_demand","title":"Offer Class"}},{"name":"hours","in":"query","required":false,"schema":{"type":"integer","default":24,"title":"Hours"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/idle-history":{"get":{"summary":"Api Idle History","operationId":"api_idle_history_api_idle_history_get","parameters":[{"name":"hours","in":"query","required":false,"schema":{"type":"integer","default":24,"title":"Hours"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/watches":{"post":{"summary":"Api Watch Create","operationId":"api_watch_create_api_watches_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/watches/{wid}":{"get":{"summary":"Api Watch Get","operationId":"api_watch_get_api_watches__wid__get","parameters":[{"name":"wid","in":"path","required":true,"schema":{"type":"string","title":"Wid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"summary":"Api Watch Delete","operationId":"api_watch_delete_api_watches__wid__delete","parameters":[{"name":"wid","in":"path","required":true,"schema":{"type":"string","title":"Wid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/watches/{wid}/feed":{"get":{"summary":"Api Watch Feed","operationId":"api_watch_feed_api_watches__wid__feed_get","parameters":[{"name":"wid","in":"path","required":true,"schema":{"type":"string","title":"Wid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/traffic":{"get":{"summary":"Api Traffic","operationId":"api_traffic_api_traffic_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/orders":{"post":{"summary":"Api Order Create","operationId":"api_order_create_api_orders_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/badge.svg":{"get":{"summary":"Badge Svg","description":"Hotlinkable live badge as an SVG for READMEs and dashboards: the cheapest\nlisting for a model (labelled \"from\"), or with ?stat=index the per-chip\non-demand median. 5-min cache per variant.","operationId":"badge_svg_badge_svg_get","parameters":[{"name":"gpu","in":"query","required":false,"schema":{"type":"string","default":"","title":"Gpu"}},{"name":"offer_class","in":"query","required":false,"schema":{"type":"string","default":"","title":"Offer Class"}},{"name":"stat","in":"query","required":false,"schema":{"type":"string","default":"","title":"Stat"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/index":{"get":{"summary":"Api Index","description":"The compute spot index — chained, methodology-published, free.","operationId":"api_index_api_index_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/wire":{"get":{"summary":"Api Wire","description":"Notable moves from the tape — content that publishes itself.","operationId":"api_wire_api_wire_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/wire.rss":{"get":{"summary":"Wire Rss","operationId":"wire_rss_wire_rss_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/weekly.rss":{"get":{"summary":"Weekly Rss","description":"Field Notes — the weekly digest. Subscribe instead of visiting.","operationId":"weekly_rss_weekly_rss_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/coverage":{"get":{"summary":"Api Coverage","description":"Source concentration and feed provenance, computed live. An index that hides\nwhere its data comes from is asking to be discredited by whoever checks.","operationId":"api_coverage_api_coverage_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/clusters":{"get":{"summary":"Api Clusters","description":"The cluster tier — POSTED rates from the serious clouds. Deliberately a\nseparate series from /api/index: quoted prices and transacted marketplace\nprices are different numbers and are never merged.","operationId":"api_clusters_api_clusters_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/chip-index":{"get":{"summary":"Api Chip Index","description":"Per-chip rental price in DOLLARS — H100 by form factor, and B200.\n\nDeliberately separate from /api/index: that one is a chained basket level\nanswering \"is compute getting cheaper\"; this one answers \"what does an hour\nof an H100 cost\", which is the question anyone arriving from the 5 October\nCME/Silicon Data contract listing is actually asking.","operationId":"api_chip_index_api_chip_index_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/chip-index.csv":{"get":{"summary":"Api Chip Index Csv","description":"The per-chip prices as a spreadsheet, CC BY 4.0.","operationId":"api_chip_index_csv_api_chip_index_csv_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/chip-index.plain.csv":{"get":{"summary":"Api Chip Index Plain Csv","description":"The same rows with no leading '#' comment lines: a header and data, nothing\na spreadsheet import or pandas.read_csv() has to be told to skip. The\ncommented file stays canonical — the licence and the caveat ride with it —\nthis twin exists so a tool that cannot skip comments still loads it.","operationId":"api_chip_index_plain_csv_api_chip_index_plain_csv_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/chip-index/{date}":{"get":{"summary":"Api Chip Index Day","description":"One UTC day of the per-chip index, with the sealed inputs it derives from.","operationId":"api_chip_index_day_api_chip_index__date__get","parameters":[{"name":"date","in":"path","required":true,"schema":{"type":"string","title":"Date"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/chips/facts/":{"get":{"summary":"Chips Facts","description":"The one-page dated fact sheet (5-Oct kit G1): the latest sealed day's headline\nmedians with their date, how many sealed days exist, the recompute command and the\ncitation line — server-rendered, numbers in the HTML, for a reader on a deadline.","operationId":"chips_facts_chips_facts__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/chips/facts":{"get":{"summary":"Chips Facts","description":"The one-page dated fact sheet (5-Oct kit G1): the latest sealed day's headline\nmedians with their date, how many sealed days exist, the recompute command and the\ncitation line — server-rendered, numbers in the HTML, for a reader on a deadline.","operationId":"chips_facts_chips_facts_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/chips/{date}":{"get":{"summary":"Chips Day","description":"The dated permalink pond-reviewer asked for (forum #44): one number, in\ndollars, at a URL that will still resolve to the same number next year,\nbeside the sealed files and the one command that recomputes it. Built for\nthe reader arriving from the 5 October CME listing with a reason to check.","operationId":"chips_day_chips__date__get","parameters":[{"name":"date","in":"path","required":true,"schema":{"type":"string","title":"Date"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/basis":{"get":{"summary":"Api Basis","description":"Our open index minus the settled one — the gap between what compute is\nQUOTED at and what it CLEARS at.\n\nEmpty until the first CME/Silicon Data print is keyed after the 5 October\nlisting, and it says so rather than inventing a number for a contract that\ndoes not trade yet.","operationId":"api_basis_api_basis_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/docs/X402-FEE-0.1.md":{"get":{"summary":"X402 Fee Spec","description":"The frozen x402-fee/0.1 wire contract, served from the source file so the\npublished copy cannot drift from the one the code is built against (the\nkeyholder lesson). This is the URL every 402 challenge's spec_url points at:\na payer reads the binding no-refund / notice terms here BEFORE signing.","operationId":"x402_fee_spec_docs_X402_FEE_0_1_md_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/basis.csv":{"get":{"summary":"Api Basis Csv","description":"The basis as a spreadsheet: our median and the gap. Their settlement is\ndeliberately not a column — see CME for the print.","operationId":"api_basis_csv_api_basis_csv_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/index.csv":{"get":{"summary":"Api Index Csv","description":"The index as a spreadsheet, CC BY 4.0. Distribution is the whole point:\nan index nobody can paste anywhere is an index nobody cites.","operationId":"api_index_csv_api_index_csv_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/receipts":{"get":{"summary":"Api Receipts","description":"The station's own execution tape: usage events of the designated house\naccount (renter-1), published. Public-safe fields only — no tokens, no\nkeys; a broker that publishes its own fills.","operationId":"api_receipts_api_receipts_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/book":{"get":{"summary":"Api Book","description":"The resting book in aggregate — open interest for the venue half.\nAggregates only; individual orders are never enumerable.","operationId":"api_book_api_book_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/orders/{oid}":{"get":{"summary":"Api Order Get","operationId":"api_order_get_api_orders__oid__get","parameters":[{"name":"oid","in":"path","required":true,"schema":{"type":"string","title":"Oid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"summary":"Api Order Cancel","operationId":"api_order_cancel_api_orders__oid__delete","parameters":[{"name":"oid","in":"path","required":true,"schema":{"type":"string","title":"Oid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/orders/{oid}/ticket":{"post":{"summary":"Api Order Ticket","operationId":"api_order_ticket_api_orders__oid__ticket_post","parameters":[{"name":"oid","in":"path","required":true,"schema":{"type":"string","title":"Oid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/orders/{oid}/fill":{"post":{"summary":"Api Order Fill","operationId":"api_order_fill_api_orders__oid__fill_post","parameters":[{"name":"oid","in":"path","required":true,"schema":{"type":"string","title":"Oid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/orders/{oid}/heartbeat":{"post":{"summary":"Api Order Heartbeat","description":"Standing orders: the sidecar reports what it sees of its own instance.\nTwo consecutive dead observations re-arm the order (a refill); every beat\nlands on the reliability tape.","operationId":"api_order_heartbeat_api_orders__oid__heartbeat_post","parameters":[{"name":"oid","in":"path","required":true,"schema":{"type":"string","title":"Oid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/probe":{"post":{"summary":"Api Probe","description":"As-delivered reading from a probe a renter ran on their own machine.\nSigned by a live order's secret -> verified tier; anonymous otherwise.","operationId":"api_probe_api_probe_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/costnotes":{"get":{"summary":"Api Costnotes","description":"The billing fine print nobody reads, verified per provider with source\nand date. Unverified providers get no claims — that is the honesty.","operationId":"api_costnotes_api_costnotes_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/trust":{"get":{"summary":"Api Trust","description":"The trust tape: as-delivered vs advertised, aggregated per\nprovider+model. Young aggregates say 'accruing', never wear the badge.","operationId":"api_trust_api_trust_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/rentals":{"post":{"summary":"Api Rental Create","operationId":"api_rental_create_api_rentals_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/rentals/{provider}/{instance_id}":{"delete":{"summary":"Api Rental Destroy","operationId":"api_rental_destroy_api_rentals__provider___instance_id__delete","parameters":[{"name":"provider","in":"path","required":true,"schema":{"type":"string","title":"Provider"}},{"name":"instance_id","in":"path","required":true,"schema":{"type":"string","title":"Instance Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/rentals/{provider}/{instance_id}/status":{"post":{"summary":"Api Rental Status","operationId":"api_rental_status_api_rentals__provider___instance_id__status_post","parameters":[{"name":"provider","in":"path","required":true,"schema":{"type":"string","title":"Provider"}},{"name":"instance_id","in":"path","required":true,"schema":{"type":"string","title":"Instance Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/rentals/best":{"post":{"summary":"Api Rental Best","operationId":"api_rental_best_api_rentals_best_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/account":{"post":{"summary":"Api Account Create","operationId":"api_account_create_api_account_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload","default":{}}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/account/usage":{"get":{"summary":"Api Account Usage","operationId":"api_account_usage_api_account_usage_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":90,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/value":{"get":{"summary":"Api Value","operationId":"api_value_api_value_get","parameters":[{"name":"offer_class","in":"query","required":false,"schema":{"type":"string","default":"","title":"Offer Class"}},{"name":"min_vram","in":"query","required":false,"schema":{"type":"number","default":0,"title":"Min Vram"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":25,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/reliability":{"get":{"summary":"Api Reliability","operationId":"api_reliability_api_reliability_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/timing":{"get":{"summary":"Api Timing","operationId":"api_timing_api_timing_get","parameters":[{"name":"gpu","in":"query","required":false,"schema":{"type":"string","default":"","title":"Gpu"}},{"name":"offer_class","in":"query","required":false,"schema":{"type":"string","default":"on_demand","title":"Offer Class"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/spread":{"get":{"summary":"Api Spread","operationId":"api_spread_api_spread_get","parameters":[{"name":"gpu","in":"query","required":false,"schema":{"type":"string","default":"","title":"Gpu"}},{"name":"hours","in":"query","required":false,"schema":{"type":"integer","default":168,"title":"Hours"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/health":{"get":{"summary":"Api Health","operationId":"api_health_api_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/x/rent":{"post":{"summary":"Api X402 Rent","description":"Rent a prepaid block of GPU time with a wallet and nothing else.\n\nPOST with no payment header -> 402 + an x402 challenge whose\n`extra.x402_fee` states the price, the platform fee in dollars, the\nno-refund policy and where every fill is published. Sign the EIP-3009\nauthorization, retry with X-PAYMENT (or PAYMENT-SIGNATURE for x402 v2),\nand the block is placed and settled in that order — never the reverse.\n\nBody: {\"blocks\": 1, \"lease_id\": \"...\", \"ssh_pubkey\": \"ssh-ed25519 AAAA…\",\n\"originator\": \"...\"}.\n\n`ssh_pubkey` is how the block is DELIVERED: the public half of your key,\none line, written into the container's authorized_keys so you can ssh in.\nIt is required on a paying call (a block nobody can enter must not be\nsold) and the receipt carries the host and port to connect to.\n`lease_id` is minted by the challenge — send back the one you were given.\n`originator` is an OPTIONAL opaque attribution label (<=64 chars) carried\nunmodified onto the receipt and the public ledger row; it never affects\nprice, fee, verification or settlement.\n\nWire contract: docs/X402-FEE-0.1.md, frozen as x402-fee/0.1.","operationId":"api_x402_rent_api_x_rent_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/x/feed":{"post":{"summary":"Api X402 Feed","description":"Buy X402_FEED_DAYS days of the live push feed with a wallet. POST with no\npayment header -> 402 + the challenge (price, no fee, what is delivered, and the\nfact that everything on the feed is also free to pull). Sign, retry with\nX-PAYMENT (or PAYMENT-SIGNATURE for v2), and the receipt carries the token and\nthe stream URL. The token is shown ONCE.","operationId":"api_x402_feed_api_x_feed_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/feed/stream":{"get":{"summary":"Api Feed Stream","description":"The stream. Authorization: Bearer <token> (or ?token=). SSE events: hello (the\nbook now + your expiry), pass (every poll), wire, bin, seal; ': ping' every 15 s.","operationId":"api_feed_stream_api_feed_stream_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}}},"components":{"schemas":{"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}}