{"components":{"schemas":{"AskRequest":{"properties":{"question":{"type":"string"},"stream":{"default":false,"description":"If true, responds with text/event-stream SSE.","type":"boolean"}},"required":["question"],"type":"object"},"AskResponse":{"properties":{"answer":{"type":"string"},"citations":{"items":{"type":"object"},"type":"array"},"conversation_id":{"type":"string"},"sources":{"items":{"type":"object"},"type":"array"}},"type":"object"},"Error":{"properties":{"error":{"properties":{"message":{"type":"string"},"type":{"type":"string"}},"type":"object"}},"type":"object"}},"securitySchemes":{"bearerAuth":{"description":"A personal API key, e.g. 'ezel_live_...'.","scheme":"bearer","type":"http"}}},"info":{"description":"Programmatic access to Ezel: matters, documents, cited Q&A over your files, U.S. case law search, and review tables. Authenticate with a personal API key (ezel_live_...) as a Bearer token. Keys carry read/write scopes.","title":"Ezel API","version":"1.0.0"},"openapi":"3.0.3","paths":{"/api/v1/ask":{"post":{"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AskRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AskResponse"}},"text/event-stream":{"schema":{"type":"string"}}},"description":"Answer (JSON) or SSE stream when stream=true"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Forbidden, missing scope, or feature disabled"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Rate limit or usage limit exceeded"}},"security":[{"bearerAuth":[]}],"summary":"Ask a general legal question (sync or streamed)","tags":["Ask"],"x-required-scope":"read"}},"/api/v1/caselaw/search":{"get":{"parameters":[{"in":"query","name":"query","required":true,"schema":{"type":"string"}},{"in":"query","name":"jurisdiction","schema":{"type":"string"}},{"in":"query","name":"year_start","schema":{"type":"integer"}},{"in":"query","name":"year_end","schema":{"type":"integer"}},{"in":"query","name":"published_only","schema":{"type":"boolean"}}],"responses":{"200":{"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Forbidden, missing scope, or feature disabled"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Rate limit or usage limit exceeded"}},"security":[{"bearerAuth":[]}],"summary":"Search U.S. case law (CourtListener)","tags":["Caselaw"],"x-required-scope":"read"}},"/api/v1/cases/{cluster_id}":{"get":{"parameters":[{"in":"path","name":"cluster_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Forbidden, missing scope, or feature disabled"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Rate limit or usage limit exceeded"}},"security":[{"bearerAuth":[]}],"summary":"Fetch the full opinion for a case by CourtListener cluster id","tags":["Caselaw"],"x-required-scope":"read"}},"/api/v1/matters":{"get":{"responses":{"200":{"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Forbidden, missing scope, or feature disabled"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Rate limit or usage limit exceeded"}},"security":[{"bearerAuth":[]}],"summary":"List the user's matters","tags":["Matters"],"x-required-scope":"read"},"post":{"requestBody":{"content":{"application/json":{"schema":{"properties":{"client_name":{"type":"string"},"description":{"type":"string"},"name":{"type":"string"},"pinned":{"type":"boolean"}},"required":["name"],"type":"object"}}},"required":true},"responses":{"201":{"description":"Created"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Forbidden, missing scope, or feature disabled"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Rate limit or usage limit exceeded"}},"security":[{"bearerAuth":[]}],"summary":"Create a matter","tags":["Matters"],"x-required-scope":"write"}},"/api/v1/matters/{matter_id}":{"delete":{"parameters":[{"in":"path","name":"matter_id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Forbidden, missing scope, or feature disabled"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Rate limit or usage limit exceeded"}},"security":[{"bearerAuth":[]}],"summary":"Delete a matter (releases its files and chats)","tags":["Matters"],"x-required-scope":"write"},"get":{"parameters":[{"in":"path","name":"matter_id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Forbidden, missing scope, or feature disabled"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Rate limit or usage limit exceeded"}},"security":[{"bearerAuth":[]}],"summary":"Get one matter","tags":["Matters"],"x-required-scope":"read"}},"/api/v1/matters/{matter_id}/ask":{"post":{"parameters":[{"in":"path","name":"matter_id","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AskRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AskResponse"}},"text/event-stream":{"schema":{"type":"string"}}},"description":"Cited answer (JSON) or SSE stream"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Forbidden, missing scope, or feature disabled"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Rate limit or usage limit exceeded"}},"security":[{"bearerAuth":[]}],"summary":"Ask a question answered from a matter's documents","tags":["Ask"],"x-required-scope":"read"}},"/api/v1/matters/{matter_id}/files":{"get":{"parameters":[{"in":"path","name":"matter_id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Forbidden, missing scope, or feature disabled"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Rate limit or usage limit exceeded"}},"security":[{"bearerAuth":[]}],"summary":"List files in a matter","tags":["Files"],"x-required-scope":"read"},"post":{"parameters":[{"in":"path","name":"matter_id","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"multipart/form-data":{"schema":{"properties":{"file":{"format":"binary","type":"string"}},"type":"object"}}},"required":true},"responses":{"201":{"description":"Uploaded"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Forbidden, missing scope, or feature disabled"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Rate limit or usage limit exceeded"}},"security":[{"bearerAuth":[]}],"summary":"Upload a file to a matter","tags":["Files"],"x-required-scope":"write"}},"/api/v1/matters/{matter_id}/files/{file_id}":{"delete":{"parameters":[{"in":"path","name":"matter_id","required":true,"schema":{"format":"uuid","type":"string"}},{"in":"path","name":"file_id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Forbidden, missing scope, or feature disabled"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Rate limit or usage limit exceeded"}},"security":[{"bearerAuth":[]}],"summary":"Delete a file from a matter","tags":["Files"],"x-required-scope":"write"}},"/api/v1/matters/{matter_id}/review-tables":{"post":{"parameters":[{"in":"path","name":"matter_id","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"all_documents":{"type":"boolean"},"columns":{"items":{"properties":{"header":{"type":"string"},"prompt":{"type":"string"},"type":{"type":"string"}},"type":"object"},"type":"array"},"document_ids":{"items":{"format":"uuid","type":"string"},"type":"array"},"name":{"type":"string"},"run":{"default":true,"type":"boolean"}},"required":["columns"],"type":"object"}}},"required":true},"responses":{"201":{"description":"Created and filling"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Forbidden, missing scope, or feature disabled"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Rate limit or usage limit exceeded"}},"security":[{"bearerAuth":[]}],"summary":"Create a review table (doc x question grid) and run it","tags":["Review Tables"],"x-required-scope":"write"}},"/api/v1/matters/{matter_id}/search":{"post":{"parameters":[{"in":"path","name":"matter_id","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"count_only":{"type":"boolean"},"match_all":{"type":"boolean"},"max_results":{"type":"integer"},"regex":{"type":"string"},"terms":{"oneOf":[{"type":"string"},{"items":{"type":"string"},"type":"array"}]}},"type":"object"}}},"required":true},"responses":{"200":{"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Forbidden, missing scope, or feature disabled"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Rate limit or usage limit exceeded"}},"security":[{"bearerAuth":[]}],"summary":"Keyword/regex search across a matter's documents","tags":["Search"],"x-required-scope":"read"}},"/api/v1/review-tables/{table_id}":{"get":{"parameters":[{"in":"path","name":"table_id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Forbidden, missing scope, or feature disabled"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Rate limit or usage limit exceeded"}},"security":[{"bearerAuth":[]}],"summary":"Get a review table with columns, rows, and extracted cells","tags":["Review Tables"],"x-required-scope":"read"}},"/api/v1/review-tables/{table_id}/run":{"post":{"parameters":[{"in":"path","name":"table_id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Forbidden, missing scope, or feature disabled"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Rate limit or usage limit exceeded"}},"security":[{"bearerAuth":[]}],"summary":"Re-run a review table (fill pending cells, retry errors)","tags":["Review Tables"],"x-required-scope":"write"}},"/api/v1/usage":{"get":{"responses":{"200":{"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Forbidden, missing scope, or feature disabled"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Rate limit or usage limit exceeded"}},"security":[{"bearerAuth":[]}],"summary":"Storage and message usage for the account","tags":["Identity"],"x-required-scope":"read"}},"/api/v1/whoami":{"get":{"responses":{"200":{"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Forbidden, missing scope, or feature disabled"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Rate limit or usage limit exceeded"}},"security":[{"bearerAuth":[]}],"summary":"Verify a key and return account info","tags":["Identity"],"x-required-scope":"read"}}},"security":[{"bearerAuth":[]}],"servers":[{"url":"https://app.ezel.ai"}],"tags":[{"name":"Identity"},{"name":"Matters"},{"name":"Files"},{"name":"Ask"},{"name":"Search"},{"name":"Caselaw"},{"name":"Review Tables"}]}
