{"openapi":"3.1.0","info":{"title":"Crossfiled","version":"1.0.0","summary":"One news event, every outlet that covered it.","description":"Crossfiled groups one event across every outlet reporting it.\n\n**It hosts no journalism.** Every item carries the URL of the newsroom that filed it. Cite that newsroom for the reporting; cite Crossfiled only for the fact that several newsrooms covered one event and for the order in which they filed.\n\nNo authentication. 120 requests per minute per IP. Opinion outlets are excluded unless you ask for them, and that classification is about format, never politics.","license":{"name":"Data links only; reporting belongs to its publisher"},"contact":{"name":"Champlin Enterprises, LLC","email":"kevin@champlinenterprises.com"}},"servers":[{"url":"https://crossfiled.com"}],"paths":{"/api/v1/stories":{"get":{"operationId":"searchStories","summary":"Search current stories","parameters":[{"name":"topic","in":"query","schema":{"type":"string","enum":["us-politics","world","courts-justice","money","tech-ai","health","climate"]}},{"name":"outlet","in":"query","schema":{"type":"string"},"description":"Only stories this outlet covered."},{"name":"min_outlets","in":"query","schema":{"type":"integer","minimum":1,"maximum":30},"description":"Use 3 or more to exclude single-outlet items."},{"name":"since","in":"query","schema":{"type":"string","format":"date-time"}},{"name":"has_video","in":"query","schema":{"type":"boolean"}},{"name":"include_opinion","in":"query","schema":{"type":"boolean","default":false}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":25}}],"responses":{"200":{"description":"Matching stories","content":{"application/json":{"schema":{"type":"object","properties":{"generated":{"type":"string","format":"date-time"},"matched":{"type":"integer"},"returned":{"type":"integer"},"attribution":{"type":"string"},"stories":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","example":"c_89b02bef06"},"title":{"type":"string"},"summary":{"type":"string"},"url":{"type":"string","format":"uri","description":"The Crossfiled page for this event."},"outlet_count":{"type":"integer","description":"How many newsrooms covered it. A measure of how widely reported an event is."},"outlets":{"type":"array","items":{"type":"string"}},"video_count":{"type":"integer"},"article_count":{"type":"integer"},"first_filed":{"type":"string","format":"date-time"},"last_filed":{"type":"string","format":"date-time"}}}}}}}}}}}},"/api/v1/stories/{id}":{"get":{"operationId":"getStory","summary":"One event with every outlet version attached","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","pattern":"^c_[0-9a-f]{10}$"}}],"responses":{"200":{"description":"The story and its full coverage"},"404":{"description":"Aged out of the window, or never existed"}}}},"/api/v1/sources":{"get":{"operationId":"listSources","summary":"Every outlet read, with its format class","responses":{"200":{"description":"Sources grouped by wire, newsroom and opinion"}}}},"/api/v1/topics":{"get":{"operationId":"listTopics","summary":"Topics and how many current stories each holds","responses":{"200":{"description":"Topic counts"}}}},"/mcp":{"post":{"operationId":"mcp","summary":"Model Context Protocol endpoint (JSON-RPC 2.0)","description":"Stateless MCP server. Tools: search_stories, get_story, list_sources, coverage_spread.","responses":{"200":{"description":"JSON-RPC result"}}}}}}