{"openapi":"3.1.0","info":{"title":"HYBRD Public Content API","version":"1.0.0","summary":"Read-only site identity, product, press, pages, blog posts, and FAQ for LLM function calling.","description":"Unauthenticated JSON at /api/public. No login. Use unique operationIds as tool names. HTML pages also negotiate Markdown via Accept: text/markdown. GET /api/public/posts/{slug} includes the full article as markdown.","contact":{"name":"HYBRD Support","email":"support@hybrd.com","url":"https://www.hybrd.com/support"},"license":{"name":"Content available from hybrd.com","url":"https://www.hybrd.com/terms"}},"servers":[{"url":"https://www.hybrd.com","description":"Production"}],"tags":[{"name":"Discovery","description":"Site identity and indexable pages"},{"name":"Content","description":"Blog posts, press links, and FAQ answers"}],"paths":{"/api/public/site":{"get":{"operationId":"getSiteIdentity","tags":["Discovery"],"summary":"Get HYBRD organization identity","description":"Returns the canonical brand name, description, contact email, postal address, sameAs links, and machine-readable discovery URLs (llms.txt, sitemap, OpenAPI).","responses":{"200":{"description":"Site identity payload","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SiteIdentity"}}}}}}},"/api/public/product":{"get":{"operationId":"getProduct","tags":["Discovery"],"summary":"Get HYBRD app product facts","description":"Returns canonical product identity, alternate names, features, integrations, audience, and App Store download URL. No public price is published.","responses":{"200":{"description":"Product payload","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Product"}}}}}}},"/api/public/press":{"get":{"operationId":"getPressLinks","tags":["Content"],"summary":"Get HYBRD press links","description":"Returns canonical third-party press and launch URLs.","responses":{"200":{"description":"Press links","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Press"}}}}}}},"/api/public/pages":{"get":{"operationId":"listSitePages","tags":["Discovery"],"summary":"List indexable HYBRD pages","description":"Returns every HTML page listed in /sitemap.xml besides individual blog posts.","responses":{"200":{"description":"Page index","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageList"}}}}}}},"/api/public/posts":{"get":{"operationId":"listBlogPosts","tags":["Content"],"summary":"List HYBRD blog posts","description":"Returns metadata for published training articles. Use getBlogPost for one slug.","responses":{"200":{"description":"Blog post index","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostList"}}}}}}},"/api/public/posts/{slug}":{"get":{"operationId":"getBlogPost","tags":["Content"],"summary":"Get one HYBRD blog post","description":"Returns metadata, summary, and the full article body as markdown for a single published post. The list endpoint omits markdown.","parameters":[{"name":"slug","in":"path","required":true,"description":"Blog post slug from listBlogPosts","schema":{"type":"string","enum":["connect-wearables-to-chatgpt-or-claude","training-score-explained","ai-workout-logger","training-history-backfill","five-day-split-hybrid-athlete","strength-training-ironman-70-3","four-day-split-hybrid-athlete","three-day-split-hybrid-athlete","how-to-balance-running-and-lifting","what-does-it-mean-to-be-a-hybrid-athlete","how-to-start-running-as-a-lifter","zone-2-strength-athletes","should-you-lift-before-or-after-running","why-is-my-hrv-so-high","how-much-running-to-maintain-endurance","why-hardest-training-days-ruin-sleep","did-i-even-work-out","hybrd-vs-runna","zone-2-training-hybrid-athletes","calculate-heart-rate-zones","progressive-overload-hybrid-athletes","structure-training-plan-periodization","future-fitness-open-ecosystem","does-cardio-kill-gains"]}}],"responses":{"200":{"description":"Blog post","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlogPost"}}}},"404":{"description":"Unknown slug","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}}},"/api/public/faq":{"get":{"operationId":"listFaqItems","tags":["Content"],"summary":"List HYBRD FAQ answers","description":"Published FAQ questions and answers.","responses":{"200":{"description":"FAQ list","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FaqList"}}}}}}}},"components":{"schemas":{"SiteIdentity":{"type":"object","additionalProperties":false,"required":["name","url","description","email","address","discovery"],"properties":{"name":{"type":"string","description":"Brand name","examples":["HYBRD"]},"url":{"type":"string","format":"uri"},"description":{"type":"string","description":"Your workouts, goals, and real life—turned into coaching that keeps adapting with you."},"email":{"type":"string","format":"email"},"address":{"$ref":"#/components/schemas/PostalAddress"},"sameAs":{"type":"array","items":{"type":"string","format":"uri"}},"discovery":{"$ref":"#/components/schemas/DiscoveryLinks"}}},"PostalAddress":{"type":"object","additionalProperties":false,"required":["addressLocality","addressRegion","addressCountry"],"properties":{"addressLocality":{"type":"string"},"addressRegion":{"type":"string"},"addressCountry":{"type":"string"}}},"DiscoveryLinks":{"type":"object","additionalProperties":false,"required":["llmsTxt","sitemap","openapi","docs","markdownHome"],"properties":{"llmsTxt":{"type":"string","format":"uri"},"sitemap":{"type":"string","format":"uri"},"openapi":{"type":"string","format":"uri"},"docs":{"type":"string","format":"uri"},"markdownHome":{"type":"string","format":"uri","description":"Homepage URL that serves Markdown when Accept: text/markdown"},"product":{"type":"string","format":"uri","description":"Canonical product JSON"},"press":{"type":"string","format":"uri","description":"Canonical press and launch URLs"},"productPage":{"type":"string","format":"uri","description":"HTML product page (HYBRD app)"}}},"Product":{"type":"object","additionalProperties":false,"required":["name","alternateNames","tagline","description","applicationCategory","operatingSystem","downloadUrl","features","integrations"],"properties":{"name":{"type":"string","examples":["HYBRD"]},"alternateNames":{"type":"array","items":{"type":"string"}},"tagline":{"type":"string"},"description":{"type":"string"},"principle":{"type":"string"},"applicationCategory":{"type":"string"},"applicationSubCategory":{"type":"string"},"operatingSystem":{"type":"string"},"downloadUrl":{"type":"string","format":"uri"},"screenshot":{"type":"string","format":"uri"},"audience":{"type":"string"},"features":{"type":"array","items":{"$ref":"#/components/schemas/ProductFeature"}},"integrations":{"type":"array","items":{"type":"string"}}}},"Press":{"type":"object","additionalProperties":false,"required":["fittInsider","athletechNews","yCombinatorLaunch"],"properties":{"fittInsider":{"type":"string","format":"uri"},"athletechNews":{"type":"string","format":"uri"},"yCombinatorLaunch":{"type":"string","format":"uri"}}},"ProductFeature":{"type":"object","additionalProperties":false,"required":["name","description"],"properties":{"name":{"type":"string"},"description":{"type":"string"}}},"PageList":{"type":"object","additionalProperties":false,"required":["pages"],"properties":{"pages":{"type":"array","items":{"$ref":"#/components/schemas/SitePage"}}}},"SitePage":{"type":"object","additionalProperties":false,"required":["path","url","title","description"],"properties":{"path":{"type":"string","examples":["/","/compare","/compare/chatgpt","/compare/runna","/compare/garmin-coach","/product","/mcp","/blog","/team","/support","/privacy","/terms","/import-memory","/account-deletion","/resources/workout-club"]},"url":{"type":"string","format":"uri"},"title":{"type":"string"},"description":{"type":"string"}}},"PostList":{"type":"object","additionalProperties":false,"required":["posts"],"properties":{"posts":{"type":"array","items":{"$ref":"#/components/schemas/BlogPost"}}}},"BlogPost":{"type":"object","additionalProperties":false,"required":["slug","title","summary","url","publishedDate"],"properties":{"slug":{"type":"string"},"title":{"type":"string"},"summary":{"type":"string"},"url":{"type":"string","format":"uri"},"publishedDate":{"type":"string","format":"date"},"author":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}},"markdown":{"type":"string","description":"Full article body as markdown. Present on getBlogPost only."}}},"FaqList":{"type":"object","additionalProperties":false,"required":["items"],"properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/FaqItem"}}}},"FaqItem":{"type":"object","additionalProperties":false,"required":["question","answer"],"properties":{"question":{"type":"string"},"answer":{"type":"string"},"href":{"type":"string"}}},"NotFound":{"type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"string"}}}}}}