{"openapi":"3.1.0","info":{"title":"LaunchHuddle API","version":"1","description":"Fill in and maintain a creator's LaunchHuddle page from an agent or script. Bearer token from Settings \u2192 Agents & API (paid Pro only). Supporters cannot be added and announcements cannot be sent through the API: those stay human. Clicks are clicks, never installs or streams."},"servers":[{"url":"https:\/\/launchhuddle.com\/api\/v1"}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"\/catalog":{"get":{"summary":"Allowed types, categories, action kinds, accents, plans, rules (no auth)","responses":{"200":{"description":"OK"}}}},"\/me":{"get":{"summary":"The creator, plan, limits and 30-day stats","security":[{"bearer":[]}],"responses":{"200":{"description":"OK"},"401":{"description":"Bad or missing token"},"402":{"description":"Not a paid Pro creator"},"404":{"description":"Not yours or not found"},"422":{"description":"Validation errors"}}}},"\/page":{"patch":{"summary":"Update the public page","security":[{"bearer":[]}],"requestBody":{"required":true,"content":{"application\/json":{"schema":{"type":"object","properties":{"display_name":{"type":"string","description":""},"handle":{"type":"string","description":""},"types":{"type":"array","items":{"type":"string","description":"creator type key"}},"headline":{"type":"string","description":"max 140"},"bio":{"type":"string","description":"max 2000"},"invite_note":{"type":"string","description":"max 400"},"accent":{"type":"string","description":"see \/catalog"},"is_public":{"type":"boolean","description":""},"links":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string","description":""},"url":{"type":"string","description":""}},"required":["label","url"]}},"avatar_url":{"type":"string","description":"public image URL"}},"required":[]}}}},"responses":{"200":{"description":"OK"},"401":{"description":"Bad or missing token"},"402":{"description":"Not a paid Pro creator"},"404":{"description":"Not yours or not found"},"422":{"description":"Validation errors"}}}},"\/projects":{"get":{"summary":"List projects with launches and actions","security":[{"bearer":[]}],"responses":{"200":{"description":"OK"},"401":{"description":"Bad or missing token"},"402":{"description":"Not a paid Pro creator"},"404":{"description":"Not yours or not found"},"422":{"description":"Validation errors"}}},"post":{"summary":"Create a project","security":[{"bearer":[]}],"requestBody":{"required":true,"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"max 80"},"category":{"type":"string","description":"see \/catalog"},"tagline":{"type":"string","description":"max 160"},"description":{"type":"string","description":"markdown, max 4000"},"status":{"type":"string","description":"building|live|paused|archived"},"visibility":{"type":"string","description":"public|unlisted|private"},"url":{"type":"string","description":"main link; becomes the primary button"},"image_url":{"type":"string","description":"public PNG\/JPEG\/WebP under 4 MB; we copy it"},"actions":{"type":"array","items":{"type":"object","properties":{"project_id":{"type":"integer","description":"either"},"campaign_id":{"type":"integer","description":"or"},"kind":{"type":"string","description":"see \/catalog action_kinds"},"label":{"type":"string","description":"max 60"},"url":{"type":"string","description":"http(s); omit for feedback\/share"},"note":{"type":"string","description":"max 160"},"is_primary":{"type":"boolean","description":""},"is_active":{"type":"boolean","description":""}},"required":["kind"]}}},"required":[]}}}},"responses":{"200":{"description":"OK"},"401":{"description":"Bad or missing token"},"402":{"description":"Not a paid Pro creator"},"404":{"description":"Not yours or not found"},"422":{"description":"Validation errors"}}}},"\/projects\/{id}":{"get":{"summary":"One project","security":[{"bearer":[]}],"responses":{"200":{"description":"OK"},"401":{"description":"Bad or missing token"},"402":{"description":"Not a paid Pro creator"},"404":{"description":"Not yours or not found"},"422":{"description":"Validation errors"}}},"patch":{"summary":"Update a project (actions given are added)","security":[{"bearer":[]}],"requestBody":{"required":true,"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"max 80"},"category":{"type":"string","description":"see \/catalog"},"tagline":{"type":"string","description":"max 160"},"description":{"type":"string","description":"markdown, max 4000"},"status":{"type":"string","description":"building|live|paused|archived"},"visibility":{"type":"string","description":"public|unlisted|private"},"url":{"type":"string","description":"main link; becomes the primary button"},"image_url":{"type":"string","description":"public PNG\/JPEG\/WebP under 4 MB; we copy it"},"actions":{"type":"array","items":{"type":"object","properties":{"project_id":{"type":"integer","description":"either"},"campaign_id":{"type":"integer","description":"or"},"kind":{"type":"string","description":"see \/catalog action_kinds"},"label":{"type":"string","description":"max 60"},"url":{"type":"string","description":"http(s); omit for feedback\/share"},"note":{"type":"string","description":"max 160"},"is_primary":{"type":"boolean","description":""},"is_active":{"type":"boolean","description":""}},"required":["kind"]}}},"required":[]}}}},"responses":{"200":{"description":"OK"},"401":{"description":"Bad or missing token"},"402":{"description":"Not a paid Pro creator"},"404":{"description":"Not yours or not found"},"422":{"description":"Validation errors"}}},"delete":{"summary":"Delete a project","security":[{"bearer":[]}],"responses":{"200":{"description":"OK"},"401":{"description":"Bad or missing token"},"402":{"description":"Not a paid Pro creator"},"404":{"description":"Not yours or not found"},"422":{"description":"Validation errors"}}}},"\/projects\/{id}\/campaigns":{"post":{"summary":"Create a launch inside a project","security":[{"bearer":[]}],"requestBody":{"required":true,"content":{"application\/json":{"schema":{"type":"object","properties":{"title":{"type":"string","description":"max 120"},"description":{"type":"string","description":"markdown"},"status":{"type":"string","description":"draft|upcoming|live|ended"},"starts_at":{"type":"string","description":"YYYY-MM-DD"},"ends_at":{"type":"string","description":"YYYY-MM-DD"},"is_featured":{"type":"boolean","description":""},"actions":{"type":"array","items":{"type":"object","properties":{"project_id":{"type":"integer","description":"either"},"campaign_id":{"type":"integer","description":"or"},"kind":{"type":"string","description":"see \/catalog action_kinds"},"label":{"type":"string","description":"max 60"},"url":{"type":"string","description":"http(s); omit for feedback\/share"},"note":{"type":"string","description":"max 160"},"is_primary":{"type":"boolean","description":""},"is_active":{"type":"boolean","description":""}},"required":["kind"]}}},"required":[]}}}},"responses":{"200":{"description":"OK"},"401":{"description":"Bad or missing token"},"402":{"description":"Not a paid Pro creator"},"404":{"description":"Not yours or not found"},"422":{"description":"Validation errors"}}}},"\/campaigns\/{id}":{"patch":{"summary":"Update a launch (actions given are added)","security":[{"bearer":[]}],"requestBody":{"required":true,"content":{"application\/json":{"schema":{"type":"object","properties":{"title":{"type":"string","description":"max 120"},"description":{"type":"string","description":"markdown"},"status":{"type":"string","description":"draft|upcoming|live|ended"},"starts_at":{"type":"string","description":"YYYY-MM-DD"},"ends_at":{"type":"string","description":"YYYY-MM-DD"},"is_featured":{"type":"boolean","description":""},"actions":{"type":"array","items":{"type":"object","properties":{"project_id":{"type":"integer","description":"either"},"campaign_id":{"type":"integer","description":"or"},"kind":{"type":"string","description":"see \/catalog action_kinds"},"label":{"type":"string","description":"max 60"},"url":{"type":"string","description":"http(s); omit for feedback\/share"},"note":{"type":"string","description":"max 160"},"is_primary":{"type":"boolean","description":""},"is_active":{"type":"boolean","description":""}},"required":["kind"]}}},"required":[]}}}},"responses":{"200":{"description":"OK"},"401":{"description":"Bad or missing token"},"402":{"description":"Not a paid Pro creator"},"404":{"description":"Not yours or not found"},"422":{"description":"Validation errors"}}},"delete":{"summary":"Delete a launch","security":[{"bearer":[]}],"responses":{"200":{"description":"OK"},"401":{"description":"Bad or missing token"},"402":{"description":"Not a paid Pro creator"},"404":{"description":"Not yours or not found"},"422":{"description":"Validation errors"}}}},"\/actions":{"post":{"summary":"Add a way to help to a project or launch","security":[{"bearer":[]}],"requestBody":{"required":true,"content":{"application\/json":{"schema":{"type":"object","properties":{"project_id":{"type":"integer","description":"either"},"campaign_id":{"type":"integer","description":"or"},"kind":{"type":"string","description":"see \/catalog action_kinds"},"label":{"type":"string","description":"max 60"},"url":{"type":"string","description":"http(s); omit for feedback\/share"},"note":{"type":"string","description":"max 160"},"is_primary":{"type":"boolean","description":""},"is_active":{"type":"boolean","description":""}},"required":["kind"]}}}},"responses":{"200":{"description":"OK"},"401":{"description":"Bad or missing token"},"402":{"description":"Not a paid Pro creator"},"404":{"description":"Not yours or not found"},"422":{"description":"Validation errors"}}}},"\/actions\/{id}":{"patch":{"summary":"Update a way to help","security":[{"bearer":[]}],"requestBody":{"required":true,"content":{"application\/json":{"schema":{"type":"object","properties":{"project_id":{"type":"integer","description":"either"},"campaign_id":{"type":"integer","description":"or"},"kind":{"type":"string","description":"see \/catalog action_kinds"},"label":{"type":"string","description":"max 60"},"url":{"type":"string","description":"http(s); omit for feedback\/share"},"note":{"type":"string","description":"max 160"},"is_primary":{"type":"boolean","description":""},"is_active":{"type":"boolean","description":""}},"required":["kind"]}}}},"responses":{"200":{"description":"OK"},"401":{"description":"Bad or missing token"},"402":{"description":"Not a paid Pro creator"},"404":{"description":"Not yours or not found"},"422":{"description":"Validation errors"}}},"delete":{"summary":"Remove a way to help","security":[{"bearer":[]}],"responses":{"200":{"description":"OK"},"401":{"description":"Bad or missing token"},"402":{"description":"Not a paid Pro creator"},"404":{"description":"Not yours or not found"},"422":{"description":"Validation errors"}}}},"\/supporters":{"get":{"summary":"Names and statuses only; no emails or phones leave the app","security":[{"bearer":[]}],"responses":{"200":{"description":"OK"},"401":{"description":"Bad or missing token"},"402":{"description":"Not a paid Pro creator"},"404":{"description":"Not yours or not found"},"422":{"description":"Validation errors"}}}},"\/announcements":{"get":{"summary":"List announcements","security":[{"bearer":[]}],"responses":{"200":{"description":"OK"},"401":{"description":"Bad or missing token"},"402":{"description":"Not a paid Pro creator"},"404":{"description":"Not yours or not found"},"422":{"description":"Validation errors"}}},"post":{"summary":"Draft an announcement (a human sends it in the app)","security":[{"bearer":[]}],"requestBody":{"required":true,"content":{"application\/json":{"schema":{"type":"object","properties":{"subject":{"type":"string","description":"max 150"},"body":{"type":"string","description":"markdown"},"sms_body":{"type":"string","description":"short"},"channel":{"type":"string","description":"email|sms|both"},"audience":{"type":"string","description":"all|project"},"project_id":{"type":"integer","description":""},"campaign_id":{"type":"integer","description":""}},"required":["subject","body"]}}}},"responses":{"200":{"description":"OK"},"401":{"description":"Bad or missing token"},"402":{"description":"Not a paid Pro creator"},"404":{"description":"Not yours or not found"},"422":{"description":"Validation errors"}}}},"\/announcements\/{id}":{"get":{"summary":"One announcement with send stats","security":[{"bearer":[]}],"responses":{"200":{"description":"OK"},"401":{"description":"Bad or missing token"},"402":{"description":"Not a paid Pro creator"},"404":{"description":"Not yours or not found"},"422":{"description":"Validation errors"}}}}}}