{"openapi":"3.1.0","info":{"title":"Launch Llama API","version":"1.0.0","description":"Public REST API for searching the Launch Llama tools directory, auditing a URL before launch, and opening a submission draft. Agents never publish — they create a draft and return a review link for the founder. MCP exposes the same tools at /functions/v1/api-mcp."},"servers":[{"url":"https://kxdushqmihjyuddcwkpw.supabase.co/functions/v1/api-v1"}],"paths":{"/products":{"get":{"summary":"Search and page live products","parameters":[{"name":"q","in":"query","schema":{"type":"string"}},{"name":"limit","in":"query","schema":{"type":"integer","default":20,"maximum":50}},{"name":"offset","in":"query","schema":{"type":"integer","default":0}},{"name":"category","in":"query","schema":{"type":"string"}},{"name":"type","in":"query","schema":{"type":"string","enum":["community","product_hunt"]}},{"name":"period","in":"query","schema":{"type":"string","enum":["week","month","all"]}}],"responses":{"200":{"description":"Product page"}}}},"/products/top":{"get":{"summary":"Top products by upvotes (no keyword required)","parameters":[{"name":"n","in":"query","schema":{"type":"integer","default":10,"maximum":50}},{"name":"offset","in":"query","schema":{"type":"integer","default":0}},{"name":"category","in":"query","schema":{"type":"string"}},{"name":"type","in":"query","schema":{"type":"string","enum":["community","product_hunt"]}},{"name":"period","in":"query","schema":{"type":"string","enum":["week","month","all"]}}],"responses":{"200":{"description":"Top products page"}}}},"/categories":{"get":{"summary":"Distinct category labels in the live catalog","responses":{"200":{"description":"Category list"}}}},"/products/{slug}":{"get":{"summary":"One product listing","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Product"},"404":{"description":"Not found"}}}},"/launch-readiness":{"get":{"summary":"Preflight audit for a product URL","parameters":[{"name":"url","in":"query","required":true,"schema":{"type":"string","format":"uri"}}],"responses":{"200":{"description":"Readiness report"}}},"post":{"summary":"Preflight audit for a product URL","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["url"],"properties":{"url":{"type":"string","format":"uri"}}}}}},"responses":{"200":{"description":"Readiness report"}}}},"/submissions":{"post":{"summary":"Open a draft, or publish as a partner","description":"Anonymous: creates a draft + review_url. Partner publish: set publish=true with X-Partner-Key (server-side only), email, and marketing_consent=true — listing goes live and skips free badge/upvote gates. MCP never publishes.","parameters":[{"name":"X-Partner-Key","in":"header","required":false,"description":"Issued partner secret. Required when publish=true. Never send from a browser.","schema":{"type":"string"}},{"name":"X-Partner-Source","in":"header","required":false,"description":"Attribution slug for drafts. Not a publish credential.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["url"],"properties":{"url":{"type":"string","format":"uri"},"partner":{"type":"string","description":"Partner attribution slug"},"product_name":{"type":"string"},"short_description":{"type":"string"},"long_description":{"type":"string"},"email":{"type":"string","format":"email","description":"Founder email (required when publish=true)"},"marketing_consent":{"type":"boolean","description":"Must be true when publish=true"},"publish":{"type":"boolean","description":"Partner-only: publish live listing (requires X-Partner-Key)"},"creator_name":{"type":"string"},"categories":{"type":"array","items":{"type":"string"},"description":"Up to 3 Launch Llama category labels (same as /submit)"},"pricing_tier":{"type":"string","enum":["free","freemium","paid"]},"logo_url":{"type":"string","format":"uri"},"thumbnail_url":{"type":"string","format":"uri"},"youtube_url":{"type":"string","format":"uri"},"twitter_handle":{"type":"string","description":"X/Twitter handle without @"},"deals":{"type":"array","items":{"type":"object","properties":{"title":{"type":"string"},"description":{"type":"string"},"coupon":{"type":"string"},"badge":{"type":"object","properties":{"type":{"type":"string","enum":["discount","lifetime","percent"]},"value":{"type":"string"}}}}}},"seo_title":{"type":"string"},"meta_description":{"type":"string"},"keywords":{"type":"array","items":{"type":"string"}},"alternative_to":{"type":"array","items":{"type":"string"}},"founder_use_cases":{"type":"array","items":{"type":"string"}},"faq_overrides":{"type":"array","items":{"type":"object","properties":{"q":{"type":"string"},"a":{"type":"string"}}}}}}}}},"responses":{"201":{"description":"Draft created or listing published"},"400":{"description":"Bad request"},"401":{"description":"Invalid or missing partner key"},"409":{"description":"URL already listed"}}}},"/submissions/{id}":{"get":{"summary":"Fetch a draft by id","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Draft"},"404":{"description":"Not found"}}}}}}