{"openapi":"3.1.0","info":{"title":"OffFeed public assessment API","version":"2.0.0","description":"A free, anonymous map of self-reported topic signals from ten user-provided choices. It does not read social accounts or a real feed and has not been calibrated against observed exposure."},"servers":[{"url":"https://offfeed.fyi"}],"paths":{"/api/public/assessment":{"get":{"operationId":"getAssessmentQuestions","summary":"Get the ten assessment questions and choice indices","responses":{"200":{"description":"Questions in the required order","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Questions"}}}}}},"post":{"operationId":"estimateTopicSignals","summary":"Map self-reported topic signals from ten user-provided answers","description":"Ask the person to select their own answers. The endpoint is free, anonymous, and does not persist a profile. The result is descriptive, not a diagnosis.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["answers"],"properties":{"answers":{"type":"array","minItems":10,"maxItems":10,"items":{"type":"array","minItems":1,"maxItems":2,"items":{"type":"integer","minimum":0,"maximum":4}}}}}}}},"responses":{"200":{"description":"Topic shares when evidence exists, a descriptive diversity score, and limitations","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Estimate"}}}},"413":{"description":"Request body is too large"},"422":{"description":"Invalid answers"}}}}},"components":{"schemas":{"Questions":{"type":"object","required":["service","version","instructions","questions","openapi_url"],"properties":{"service":{"type":"string"},"version":{"type":"string"},"instructions":{"type":"string"},"openapi_url":{"type":"string","format":"uri"},"questions":{"type":"array","minItems":10,"maxItems":10,"items":{"type":"object","required":["number","prompt","context","max_choices","choices"],"properties":{"number":{"type":"integer"},"prompt":{"type":"string"},"context":{"type":"string"},"max_choices":{"type":"integer"},"choices":{"type":"array","items":{"type":"object","required":["index","label"],"properties":{"index":{"type":"integer"},"label":{"type":"string"}}}}}}}}},"Estimate":{"type":"object","required":["metric","informative_answers","sufficient_evidence","topics","diversity_score","limitations","methodology_url","continue_url"],"properties":{"metric":{"type":"string","const":"self_reported_topic_signals"},"informative_answers":{"type":"integer","minimum":0,"maximum":10},"sufficient_evidence":{"type":"boolean","description":"False when all ten answers are neutral."},"topics":{"type":"array","minItems":0,"maxItems":20,"description":"Empty when all answers are neutral.","items":{"type":"object","required":["id","name","share"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"share":{"type":"number","minimum":0,"maximum":1,"description":"Normalized topic share; all shares sum to approximately 1."}}}},"diversity_score":{"type":["integer","null"],"minimum":0,"maximum":100,"description":"Null when no informative topic answers were given."},"limitations":{"type":"string"},"methodology_url":{"type":"string","format":"uri"},"continue_url":{"type":"string","format":"uri"}}}}},"externalDocs":{"description":"How the estimate works","url":"https://offfeed.fyi/methodology"}}