{"openapi":"3.1.0","info":{"title":"Human in the Loop Public API","description":"Read-only public data for Human in the Loop. GET only, no key required. Start at https://api.humanintheloop.stream/llms.txt","version":"1.0.0"},"servers":[{"url":"/v1"}],"paths":{"/":{"get":{"tags":["public"],"summary":"API index: what this is and every endpoint it serves","description":"Orientation for anyone who pokes the base URL out of curiosity.","operationId":"index__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/show":{"get":{"tags":["public"],"summary":"What the show is: schedule, format, hosts, platform links","description":"Everything needed to write ABOUT the show without inventing it.","operationId":"get_show_show_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/stats":{"get":{"tags":["public"],"summary":"Aggregate counts across the archive","operationId":"get_stats_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/episodes":{"get":{"tags":["public"],"summary":"List episodes with filters, sorting and pagination","operationId":"list_episodes_episodes_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"driver","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Driver"}},{"name":"guest","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Guest"}},{"name":"format","in":"query","required":false,"schema":{"type":"string","default":"regular","title":"Format"}},{"name":"has_transcript","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Has Transcript"}},{"name":"sort","in":"query","required":false,"schema":{"type":"string","default":"date","title":"Sort"}},{"name":"order","in":"query","required":false,"schema":{"type":"string","default":"desc","title":"Order"}},{"name":"limit","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/episodes/latest":{"get":{"tags":["public"],"summary":"The most recently aired episode, in full","operationId":"latest_episode_episodes_latest_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/episodes/next":{"get":{"tags":["public"],"summary":"The next episode: the `next` one, else the earliest scheduled","operationId":"next_episode_episodes_next_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/episodes/{number}":{"get":{"tags":["public"],"summary":"One episode's full record","operationId":"get_episode_episodes__number__get","parameters":[{"name":"number","in":"path","required":true,"schema":{"type":"string","title":"Number"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/episodes/{number}/transcript":{"get":{"tags":["public"],"summary":"One episode's full transcript","description":"`format=text` (default) or `format=segments`.\n\nWithheld entirely before air: a pre-recorded episode can be transcribed\ndays early and the transcript is the show itself.","operationId":"get_transcript_episodes__number__transcript_get","parameters":[{"name":"number","in":"path","required":true,"schema":{"type":"string","title":"Number"}},{"name":"format","in":"query","required":false,"schema":{"type":"string","default":"text","title":"Format"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/episodes/{number}/takeaways":{"get":{"tags":["public"],"summary":"One episode's takeaways","description":"An episode with no takeaways yet returns an empty list, not a 404.\n\nEP.003 is the standing case: aired, published, never summarized. Only a\nnumber that matches no episode at all is a 404. /embed/v1/takeaways\ndeliberately does not draw this distinction; llms.txt says so.","operationId":"get_takeaways_episodes__number__takeaways_get","parameters":[{"name":"number","in":"path","required":true,"schema":{"type":"string","title":"Number"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/episodes/{number}/key-moments":{"get":{"tags":["public"],"summary":"One episode's timestamped key moments","operationId":"get_key_moments_episodes__number__key_moments_get","parameters":[{"name":"number","in":"path","required":true,"schema":{"type":"string","title":"Number"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/search":{"get":{"tags":["public"],"summary":"Search the archive: semantic, with a keyword fallback","description":"Retrieval only. Claude is never called.","operationId":"search_archive_search_get","parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","default":"","title":"Q"}},{"name":"limit","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Limit"}},{"name":"episode","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Episode"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/llms.txt":{"get":{"tags":["public"],"summary":"This API's onboarding document, for agents","operationId":"llms_txt_llms_txt_get","responses":{"200":{"description":"Successful Response","content":{"text/plain":{"schema":{"type":"string"}}}}}}}},"components":{"schemas":{"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}}