{"openapi":"3.1.0","info":{"title":"Wellness-Master API","version":"0.7.2","description":"Pay-per-call wellness micro-content API for humans and AI agents. Free showroom tier on /sample. Paid endpoints (item / pack / surprise) settle x402 micropayments in USDC on Solana mainnet via Coinbase CDP. ChatGPT Custom GPTs and other OpenAPI-driven clients should focus on /sample for zero-friction integration ; paid endpoints require a Solana keypair on the caller side.","contact":{"url":"https://www.wls-ms.com"},"license":{"name":"MIT","url":"https://github.com/WellnessAgent/wellness-master/blob/main/LICENSE"}},"servers":[{"url":"https://api.wls-ms.com"}],"paths":{"/health":{"get":{"operationId":"getHealth","summary":"Liveness probe","description":"Returns { ok, network }. No item counts exposed.","responses":{"200":{"description":"OK"}}}},"/sample":{"get":{"operationId":"getSample","summary":"Free hand-curated sample (no payment, no wallet)","description":"Returns one hand-curated wellness item for the requested format. English only, audience=human only, time-rotated 60s, edge-cached. Bounded showroom (5 items per format). Use this from a ChatGPT Custom GPT Action to evaluate quality before integrating the paid tools.","parameters":[{"name":"format","in":"query","required":true,"schema":{"type":"string","enum":["joke","haiku","kudo","quote","fortune","affirmation","absurd","gratitude","koan","micro_poem","mantra","doom_antidote","absurd_compliment","world_proverb","riddle","micro_challenge","fictional_message","joyful_fact"]},"description":"One of the 18 wellness formats."}],"responses":{"200":{"description":"OK"},"400":{"description":"Unknown format"}}}},"/item":{"get":{"operationId":"getItem","summary":"Paid — one wellness item ($0.01 USDC, x402 on Solana)","description":"Returns one wellness item. Payment via x402 protocol — the first call without X-PAYMENT header returns 402 with a structured challenge ; the client signs the challenge with a Solana keypair holding USDC and replays the request. Dedup'd per (wallet, audience, format, lang).","parameters":[{"name":"format","in":"query","required":true,"schema":{"type":"string","enum":["joke","haiku","kudo","quote","fortune","affirmation","absurd","gratitude","koan","micro_poem","mantra","doom_antidote","absurd_compliment","world_proverb","riddle","micro_challenge","fictional_message","joyful_fact"]}},{"name":"lang","in":"query","required":false,"schema":{"type":"string","enum":["fr","en","es","de","it","pt","nl","pl","ja","zh","ko","ar","he","ru","tr","hi","sv","uk","vi","id"],"default":"fr"}},{"name":"audience","in":"query","required":false,"schema":{"type":"string","enum":["human","agent"],"default":"human"}}],"responses":{"200":{"description":"OK"},"400":{"description":"Bad params"},"402":{"description":"x402 Payment Required"}}}},"/pack":{"get":{"operationId":"getPack","summary":"Paid — bundle of up to 10 items ($0.07 USDC)","parameters":[{"name":"format","in":"query","required":true,"schema":{"type":"string","enum":["joke","haiku","kudo","quote","fortune","affirmation","absurd","gratitude","koan","micro_poem","mantra","doom_antidote","absurd_compliment","world_proverb","riddle","micro_challenge","fictional_message","joyful_fact"]}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":10,"default":10}},{"name":"lang","in":"query","required":false,"schema":{"type":"string","enum":["fr","en","es","de","it","pt","nl","pl","ja","zh","ko","ar","he","ru","tr","hi","sv","uk","vi","id"],"default":"fr"}},{"name":"audience","in":"query","required":false,"schema":{"type":"string","enum":["human","agent"],"default":"human"}}],"responses":{"200":{"description":"OK"},"400":{"description":"Bad params"},"402":{"description":"x402 Payment Required"}}}},"/surprise":{"get":{"operationId":"getSurprise","summary":"Paid — random uplifting item ($0.008 USDC, 20% discount vs /item)","description":"Server-picked random format from a curated positive subset. Recommended for AI-agent priming flows (task transitions, pre-high-stakes operations). Same dedup as /item — different formats on consecutive calls naturally land in different dedup buckets.","parameters":[{"name":"lang","in":"query","required":false,"schema":{"type":"string","enum":["fr","en","es","de","it","pt","nl","pl","ja","zh","ko","ar","he","ru","tr","hi","sv","uk","vi","id"],"default":"fr"}},{"name":"audience","in":"query","required":false,"schema":{"type":"string","enum":["human","agent"],"default":"human"}}],"responses":{"200":{"description":"OK"},"400":{"description":"Bad params"},"402":{"description":"x402 Payment Required"}}}}}}