{"openapi":"3.1.0","info":{"title":"wave Dispatch","version":"rolling","summary":"Local-first AI router — routes each prompt to the cheapest capable model.","description":"wave Dispatch returns a routing DECISION ({route, probability, margin}); your keys, data, and inference stay on your infra (see /transparency). Agents may pay-per-use with NO account via an HTTP-402 challenge settled over x402 / MPP / ACP / Tempo / Privy / Bridge / Coinbase CDP. Capabilities advertised here are derived live from the worker's wired rails.","contact":{"name":"WAVE","url":"https://wave.online"},"license":{"name":"open edge worker + SDKs","url":"https://dispatch.wave.online/transparency"}},"servers":[{"url":"https://dispatch.wave.online"}],"x-payment":{"pay_per_use_enabled":true,"protocols":["x402","mpp","acp","tempo","privy","bridge","cdp","card"],"networks":["base"],"x402":{"network":"base","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","payTo":"0x7543c839B9a96d1305d3A85464a5C6b0Cfcac406","price_atomic":"1000"},"discovery":"https://dispatch.wave.online/.well-known/x402","capability_doc":"https://dispatch.wave.online/payments","note":"Agents pay via a protocol (x402/mpp/acp/tempo/privy/bridge/cdp); WAVE settles on a rail. card = Stripe checkout (humans)."},"paths":{"/":{"post":{"operationId":"route","summary":"Route a prompt (and optionally execute) to the cheapest capable model.","description":"With a Bearer license: returns the routing decision. With NO auth and pay-per-use enabled: returns a 402 challenge — pay via a listed protocol and retry the same body with the payment header.","security":[{"licenseAuth":[]},{}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RouteRequest"}}}},"responses":{"200":{"description":"Routing decision","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RouteDecision"}}}},"402":{"description":"Payment Required — x402/MPP/ACP/… challenge","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentChallenge"}}}}}}},"/classify":{"post":{"operationId":"classify","summary":"Classify a prompt (route + confidence) without doing any work.","security":[{"licenseAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClassifyRequest"}}}},"responses":{"200":{"description":"Decision","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RouteDecision"}}}}}}},"/payments":{"get":{"operationId":"payments","summary":"Machine-readable payment capability (protocols + rails + x402 terms).","responses":{"200":{"description":"Capability doc","content":{"application/json":{}}}}}},"/pricing.json":{"get":{"operationId":"pricing","summary":"Machine-readable pricing (plans + pay-per-use).","responses":{"200":{"description":"Pricing","content":{"application/json":{}}}}}},"/transparency":{"get":{"operationId":"transparency","summary":"Trust contract — what dispatch sees, logs, and never logs.","responses":{"200":{"description":"Trust contract (JSON with ?format=json)","content":{"application/json":{}}}}}},"/llms.txt":{"get":{"operationId":"llmsTxt","summary":"LLM-readable description of the service.","responses":{"200":{"description":"text/plain","content":{"text/plain":{}}}}}}},"components":{"securitySchemes":{"licenseAuth":{"type":"http","scheme":"bearer","bearerFormat":"license","description":"Authorization: Bearer <license key>"}},"schemas":{"RouteRequest":{"type":"object","required":["prompt"],"properties":{"prompt":{"type":"string","description":"The request to route."},"execute":{"type":"boolean","description":"If true, run the routed model and return its answer.","default":false},"vector":{"type":"array","items":{"type":"number"},"minItems":768,"maxItems":768,"description":"Optional precomputed 768-d embedding (cheapest path; skips the edge embed)."}}},"ClassifyRequest":{"type":"object","required":["prompt"],"properties":{"prompt":{"type":"string"}}},"RouteDecision":{"type":"object","required":["route","probability","margin"],"properties":{"route":{"type":"string","enum":["local_code","local_search","local_summarize","direct","reason"]},"probability":{"type":"number","description":"Confidence in the chosen route (0–1)."},"margin":{"type":"number","description":"Gap to the next route; <0.20 escalates to your frontier."}}},"PaymentChallenge":{"type":"object","properties":{"x402Version":{"type":"integer"},"error":{"type":"string"},"accepts":{"type":"array","items":{"type":"object"},"description":"One entry per accepted protocol; the agent picks."},"rails":{"type":"object","description":"WAVE-side settlement infrastructure summary."}}}}}}