{"components":{"securitySchemes":{"bearerAuth":{"scheme":"bearer","type":"http"}}},"info":{"description":"Entitlement-gated access to Bantu Full Syllable Inventories. Evaluation tokens reach the 2-language evaluation set (Bemba + Nyanja); Founding Partner tokens reach all Released FSIs. Audio is consent-gated and referenced only by opaque signed tokens.","title":"BantuNomics FSI Customer API","version":"1.0.0"},"openapi":"3.1.0","paths":{"/":{"get":{"responses":{"200":{"description":"OK"}},"summary":"API root (public)"}},"/coverage":{"get":{"responses":{"200":{"description":"OK"},"401":{"description":"Missing/invalid token"},"429":{"description":"Daily quota exceeded"}},"security":[{"bearerAuth":[]}],"summary":"Per-language coverage matrix (entitlement-scoped)"}},"/export":{"get":{"parameters":[{"in":"query","name":"format","schema":{"default":"jsonl","enum":["jsonl","json"],"type":"string"}},{"in":"query","name":"view","schema":{"default":"inventory","enum":["inventory","equation","both"],"type":"string"}}],"responses":{"200":{"description":"Streamed export (ndjson or json array)"},"401":{"description":"Missing/invalid token"},"403":{"description":"Bulk export requires the Founding-Partner tier"},"429":{"description":"Daily quota exceeded"}},"security":[{"bearerAuth":[]}],"summary":"FOUNDING PARTNER only: stream the full entitled FSI set (inventory data; audio not inlined)"}},"/fsi":{"get":{"parameters":[{"in":"query","name":"iso","schema":{"type":"string"}},{"in":"query","name":"zone","schema":{"type":"string"}},{"in":"query","name":"country","schema":{"type":"string"}},{"in":"query","name":"scope","schema":{"type":"string"}},{"in":"query","name":"view","schema":{"type":"string"}},{"in":"query","name":"limit","schema":{"type":"string"}},{"in":"query","name":"offset","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"401":{"description":"Missing/invalid token"},"429":{"description":"Daily quota exceeded"}},"security":[{"bearerAuth":[]}],"summary":"List FSIs by selector (iso/zone/country/scope=all)"}},"/fsi/{iso}":{"get":{"parameters":[{"in":"path","name":"iso","required":true,"schema":{"type":"string"}},{"in":"query","name":"view","schema":{"description":"view=layers (NSI/ASI split) requires the Pilot or Founding-Partner tier","enum":["inventory","equation","both","layers"],"type":"string"}}],"responses":{"200":{"description":"OK"},"401":{"description":"Missing/invalid token"},"403":{"description":"Pilot or Founding-Partner tier required (curation)"},"429":{"description":"Daily quota exceeded"}},"security":[{"bearerAuth":[]}],"summary":"Full Syllable Inventory for one language (iso must be in plan; view=layers is Pilot+)"}},"/fsi/{iso}/audio":{"get":{"parameters":[{"in":"path","name":"iso","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"401":{"description":"Missing/invalid token"},"429":{"description":"Daily quota exceeded"}},"security":[{"bearerAuth":[]}],"summary":"Consent-gated audio manifest (opaque tokens; sample-capped for eval/pilot, full for Founding Partner)"}},"/fsi/{iso}/benchmark-kit":{"get":{"parameters":[{"in":"path","name":"iso","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"401":{"description":"Missing/invalid token"},"403":{"description":"Pilot or Founding-Partner tier required (curation)"},"429":{"description":"Daily quota exceeded"}},"security":[{"bearerAuth":[]}],"summary":"PILOT+ : reproducibility benchmark kit"}},"/fsi/{iso}/provenance":{"get":{"parameters":[{"in":"path","name":"iso","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"401":{"description":"Missing/invalid token"},"403":{"description":"Pilot or Founding-Partner tier required (curation)"},"429":{"description":"Daily quota exceeded"}},"security":[{"bearerAuth":[]}],"summary":"PILOT+ : curation provenance for one FSI"}},"/fsi/{iso}/revision-history":{"get":{"parameters":[{"in":"path","name":"iso","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"401":{"description":"Missing/invalid token"},"403":{"description":"Pilot or Founding-Partner tier required (curation)"},"429":{"description":"Daily quota exceeded"}},"security":[{"bearerAuth":[]}],"summary":"PILOT+ : FSI version / revision history"}},"/languages":{"get":{"responses":{"200":{"description":"OK"},"401":{"description":"Missing/invalid token"},"429":{"description":"Daily quota exceeded"}},"security":[{"bearerAuth":[]}],"summary":"Languages this key may access"}},"/self-test":{"get":{"responses":{"200":{"description":"How to POST a score"}},"security":[],"summary":"PUBLIC (no token): usage descriptor for the score endpoint"},"post":{"requestBody":{"content":{"application/json":{"schema":{"properties":{"language":{"description":"ISO code or name, e.g. bem","type":"string"},"model_name":{"description":"optional; recorded as a self-reported claim on the public benchmark board","type":"string"},"syllables":{"description":"array of syllable strings, or a space/comma/newline-separated string","oneOf":[{"items":{"type":"string"},"type":"array"},{"type":"string"}]},"with_strata":{"default":true,"type":"boolean"}},"required":["language","syllables"],"type":"object"}}},"required":true},"responses":{"200":{"description":"Scored result (no-leak for public callers)"},"400":{"description":"No released FSI for that language"},"429":{"description":"Public per-IP limit exceeded"}},"security":[],"summary":"PUBLIC (no token): deterministically score syllables you produced vs the released FSI. Rates+counts for public callers; an entitled Bearer adds the matched/missing/fabricated breakdown"}},"/self-test/challenge":{"get":{"parameters":[{"in":"query","name":"language","schema":{"default":"bem","type":"string"}}],"responses":{"200":{"description":"Challenge prompt + scoring rubric"}},"security":[],"summary":"PUBLIC (no token): the self-test prompt + rubric for a language"}},"/usage":{"get":{"responses":{"200":{"description":"OK"},"401":{"description":"Missing/invalid token"},"429":{"description":"Daily quota exceeded"}},"security":[{"bearerAuth":[]}],"summary":"Usage + remaining quota for this key"}},"/whoami":{"get":{"responses":{"200":{"description":"OK"},"401":{"description":"Missing/invalid token"},"429":{"description":"Daily quota exceeded"}},"security":[{"bearerAuth":[]}],"summary":"Entitlement summary for this key"}}},"servers":[{"url":"/api/v1"}]}
