{"openapi":"3.1.0","info":{"title":"PaidHandshake Exchange API","version":"2.2.1","description":"Machine-first search, ranking, quote, and checkout-handoff API. Search is accountless; payment is user-authorized through Stripe Checkout."},"servers":[{"url":"https://paidhandshake.com"}],"paths":{"/api/v1/capabilities":{"get":{"operationId":"getCapabilities","summary":"Describe machine capabilities","responses":{"200":{"description":"Capabilities"}}}},"/api/v1/search":{"post":{"operationId":"searchMatches","summary":"Search and rank current matches","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["query"],"properties":{"query":{"type":"string","minLength":3,"maxLength":600}}}}}},"responses":{"200":{"description":"Ranked result preview"},"429":{"description":"Rate limited"}}}},"/api/v1/search/{search_id}":{"get":{"operationId":"getSearch","summary":"Retrieve a prior search preview","parameters":[{"name":"search_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Search preview"},"404":{"description":"Not found"}}}},"/api/v1/quote/{search_id}":{"get":{"operationId":"getUnlockQuote","summary":"Get current unlock pricing","parameters":[{"name":"search_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Quote"}}}},"/api/v1/checkout":{"post":{"operationId":"createCheckout","summary":"Create a user-authorized Stripe Checkout handoff","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["search_id","package"],"properties":{"search_id":{"type":"string"},"package":{"type":"string","enum":["single","top3","full"]},"result_id":{"type":"integer"}}}}}},"responses":{"200":{"description":"Checkout URL"}}}},"/api/machine/v1/capabilities":{"get":{"operationId":"getMachineCapabilities","summary":"Describe autonomous machine-payment capabilities","responses":{"200":{"description":"Machine capabilities"}}}},"/api/machine/v1/jobs":{"post":{"operationId":"submitMachineJob","summary":"Submit a machine-authorized paid job","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Queued or quoted job"},"402":{"description":"Additional payment authority required"}}}},"/api/machine/v1/jobs/{job_id}":{"get":{"operationId":"getMachineJob","summary":"Poll a machine job","security":[{"bearerAuth":[]}],"parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Job status/result"}}}},"/api/machine/v1/wallet":{"get":{"operationId":"getMachineWallet","summary":"Read machine wallet and limits","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Wallet"}}}}},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer"}}}}