{"openapi":"3.1.0","info":{"title":"Accord Multi-model API","version":"2026-08-30","description":"Stream multi-model consensus and evidence-based code reviews."},"servers":[{"url":"https://www.askaccord.com/api/v1"}],"paths":{"/consensus":{"post":{"operationId":"createConsensus","summary":"Create and stream a multi-model consensus","security":[{"openRouterKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["question"],"properties":{"question":{"type":"string","maxLength":12000},"mode":{"type":"string","enum":["quick","deliberate"],"default":"quick"},"panelPreset":{"type":"string","enum":["balanced","deep","lean","us-china","coding"]},"modelIds":{"type":"array","minItems":2,"maxItems":7,"uniqueItems":true,"items":{"type":"string"},"description":"Custom panel. Hosted keys are restricted to the published catalog and five models."},"governorModel":{"type":"string","description":"Optional moderator model. Hosted keys are restricted to the published catalog."}}}}}},"responses":{"200":{"description":"A newline-delimited stream of panel activity and results","content":{"application/x-ndjson":{"schema":{"$ref":"#/components/schemas/Event"}}}},"400":{"description":"Invalid request"},"401":{"description":"Missing or invalid Bearer credential"},"413":{"description":"Question too long"}}}},"/reviews":{"post":{"operationId":"createCodeReview","summary":"Review a code change with independent models and an adjudicator","security":[{"bearerKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["diff"],"properties":{"task":{"type":"string","maxLength":4000,"default":"Review this change"},"diff":{"type":"string","maxLength":80000,"description":"A unified text diff. Binary patches are not accepted."},"context":{"type":"array","maxItems":20,"items":{"type":"object","required":["path","content"],"properties":{"path":{"type":"string","maxLength":500},"content":{"type":"string"}}},"description":"Relevant files, up to 40,000 characters total."},"focus":{"type":"array","maxItems":8,"items":{"type":"string","maxLength":80},"default":["correctness","security","tests"]},"mode":{"type":"string","enum":["quick","deliberate"],"default":"quick"}}}}}},"responses":{"200":{"description":"Reviewer progress, verified findings, and summary as NDJSON","content":{"application/x-ndjson":{"schema":{"$ref":"#/components/schemas/ReviewEvent"}}}},"400":{"description":"Invalid request"},"401":{"description":"Missing or invalid Bearer credential"},"413":{"description":"Input too large"},"415":{"description":"Binary content"},"422":{"description":"Suspected live credential"}}}},"/models":{"get":{"operationId":"listPanelModels","summary":"List the current panel and moderator for each mode","responses":{"200":{"description":"Current model roster"}}}}},"components":{"securitySchemes":{"openRouterKey":{"type":"http","scheme":"bearer","description":"A caller-owned OpenRouter API key. Accord does not persist it."},"bearerKey":{"type":"http","scheme":"bearer","description":"An Accord mp_live_ key or caller-owned OpenRouter sk-or- key."}},"schemas":{"Event":{"type":"object","required":["type"],"properties":{"type":{"type":"string","enum":["phase","model","tokens","meter","conversation","ready","delta","differences","done","error"]},"delta":{"type":"string","description":"A streamed fragment of the consensus."},"total":{"type":"integer","description":"Approximate then reconciled output-token count."}}},"ReviewEvent":{"type":"object","required":["type"],"properties":{"type":{"type":"string","enum":["phase","reviewer","meter","finding","summary","done","error"]},"finding":{"$ref":"#/components/schemas/ReviewFinding"},"verdict":{"type":"string","enum":["approved","changes_requested"]}}},"ReviewFinding":{"type":"object","required":["id","path","line","severity","title","explanation","evidence"],"properties":{"id":{"type":"string"},"path":{"type":"string"},"line":{"type":"integer","minimum":1},"severity":{"type":"string","enum":["critical","high","medium","low"]},"category":{"type":"string"},"title":{"type":"string"},"explanation":{"type":"string"},"evidence":{"type":"string"},"suggestedFix":{"type":"string"},"supportingModels":{"type":"integer","minimum":1},"dissentingModels":{"type":"integer","minimum":0},"confidence":{"type":"number","minimum":0,"maximum":1}}}}}}