{"openapi":"3.1.0","info":{"title":"SlangLane public read-only API","version":"1.0.0","description":"Context-first slang definitions, sources, aliases, and maturity labels. Includes non-graphic adult vocabulary. Public requests cannot run generation."},"servers":[{"url":"https://slanglane.com"}],"paths":{"/api/manifest":{"get":{"summary":"Current publication release and content hash","parameters":[],"responses":{"200":{"description":"Published data only. Responses include release_id."},"400":{"description":"Invalid input"},"404":{"description":"No published entry"},"429":{"description":"Rate or daily request limit"},"503":{"description":"Publication data temporarily unavailable"}}}},"/api/search-index":{"get":{"summary":"Versioned summary dataset and aliases","parameters":[{"name":"release","in":"query","required":false,"description":"Optional published release ID; useful for consistency","schema":{"type":"string","maxLength":120}}],"responses":{"200":{"description":"Published data only. Responses include release_id."},"400":{"description":"Invalid input"},"404":{"description":"No published entry"},"429":{"description":"Rate or daily request limit"},"503":{"description":"Publication data temporarily unavailable"}}}},"/api/search":{"get":{"summary":"Search published terms and aliases","parameters":[{"name":"q","in":"query","required":false,"description":"Search text","schema":{"type":"string","maxLength":120}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":20,"default":12}},{"name":"mature","in":"query","description":"Set false to omit adult entries","schema":{"type":"boolean","default":true}}],"responses":{"200":{"description":"Published data only. Responses include release_id."},"400":{"description":"Invalid input"},"404":{"description":"No published entry"},"429":{"description":"Rate or daily request limit"},"503":{"description":"Publication data temporarily unavailable"}}}},"/api/terms/{slug}":{"get":{"summary":"Read a published term with canonical_url, checked_at, evidence_status and source_urls","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"}}],"responses":{"200":{"description":"Published data only. Responses include release_id."},"400":{"description":"Invalid input"},"404":{"description":"No published entry"},"429":{"description":"Rate or daily request limit"},"503":{"description":"Publication data temporarily unavailable"}}}},"/api/decode":{"get":{"summary":"Dictionary phrase matches, not a generated translation. Text is sent to the server on this API.","parameters":[{"name":"text","in":"query","required":true,"description":"Phrase to match","schema":{"type":"string","maxLength":1000}},{"name":"mature","in":"query","schema":{"type":"boolean","default":true}}],"responses":{"200":{"description":"Published data only. Responses include release_id."},"400":{"description":"Invalid input"},"404":{"description":"No published entry"},"429":{"description":"Rate or daily request limit"},"503":{"description":"Publication data temporarily unavailable"}}}},"/api/recent":{"get":{"summary":"Recent publication summaries","parameters":[],"responses":{"200":{"description":"Published data only. Responses include release_id."},"400":{"description":"Invalid input"},"404":{"description":"No published entry"},"429":{"description":"Rate or daily request limit"},"503":{"description":"Publication data temporarily unavailable"}}}},"/api/health":{"get":{"summary":"Public release health","parameters":[],"responses":{"200":{"description":"Published data only. Responses include release_id."},"400":{"description":"Invalid input"},"404":{"description":"No published entry"},"429":{"description":"Rate or daily request limit"},"503":{"description":"Publication data temporarily unavailable"}}}}}}