Submitting a Case
Submit a case and its documents in a single request:
POST /api/v1/partner/cases/create/— one-shot multipart create + submit. Send acasepart (JSON-encoded case payload, includingcase_type) plus attachments asfilesparts with optional per-filelabels(same order; up to 10 files, 25 MB each, 100 MB aggregate). Accepted file types: PDF, DOC/DOCX, XLS/XLSX, JPG/JPEG, PNG, GIF, TIFF/TIF, TXT, CSV, MSG, EML. The case is always created when the JSON is valid (HTTP 201); files are best-effort and any rejected file is reported in the response — retry it viaPOST /api/v1/partner/cases/{case_ref}/files/.- Policy Existence (
case_type: pe) — when you need to determine whether a defendant has insurance coverage (personal auto, commercial auto, or homeowners). - Policy Limit (
case_type: pl) — when you already have insurance company and policy/claim information and need the coverage limits (personal auto, commercial auto, CGL, homeowners/renters, and more).
- Policy Existence (
curl -X POST https://api.redfolderresearch.com/api/v1/partner/cases/create/ \ -H "Authorization: Token <your_token>" \ -F 'case={"case_type":"pe","is_test":true,"plaintiff_name":"Jane Smith","date_of_loss":"2026-06-20","base_product":["personal_auto_policy_existence"],"search_reason":["defendant_insurance_unknown"],"is_incident_report_provided":false,"is_user_agreeing_to_all_terms_and_conditions":true,"should_exclude_other_insurance_from_search":false,"cc_emails":"paralegal@lawfirm.com","defendant_information":{"first_name":"John","last_name":"Doe","address":"123 Main St","city":"Boise","state_or_province":"ID","postal_or_zip_code":"83702"}}' \ -F "files=@police_report.pdf" \ -F "labels=incident_report"import json
import requests
case = { "case_type": "pe", "is_test": True, "plaintiff_name": "Jane Smith", "date_of_loss": "2026-06-20", "base_product": ["personal_auto_policy_existence"], "search_reason": ["defendant_insurance_unknown"], "is_incident_report_provided": False, "is_user_agreeing_to_all_terms_and_conditions": True, "should_exclude_other_insurance_from_search": False, "cc_emails": "paralegal@lawfirm.com", "defendant_information": { "first_name": "John", "last_name": "Doe", "address": "123 Main St", "city": "Boise", "state_or_province": "ID", "postal_or_zip_code": "83702", },}
with open("police_report.pdf", "rb") as file_handle: response = requests.post( "https://api.redfolderresearch.com/api/v1/partner/cases/create/", headers={"Authorization": "Token <your_token>"}, data={"case": json.dumps(case), "labels": "incident_report"}, files=[("files", file_handle)], )const casePayload = { case_type: "pe", is_test: true, plaintiff_name: "Jane Smith", date_of_loss: "2026-06-20", base_product: ["personal_auto_policy_existence"], search_reason: ["defendant_insurance_unknown"], is_incident_report_provided: false, is_user_agreeing_to_all_terms_and_conditions: true, should_exclude_other_insurance_from_search: false, cc_emails: "paralegal@lawfirm.com", defendant_information: { first_name: "John", last_name: "Doe", address: "123 Main St", city: "Boise", state_or_province: "ID", postal_or_zip_code: "83702", },};
// fileBlob: a File (from an <input>) or Blob holding police_report.pdfconst form = new FormData();form.append("case", JSON.stringify(casePayload));form.append("files", fileBlob, "police_report.pdf");form.append("labels", "incident_report");
const response = await fetch("https://api.redfolderresearch.com/api/v1/partner/cases/create/", { method: "POST", headers: { "Authorization": "Token <your_token>" }, body: form,});The API validates submissions based on the product and options selected and returns clear validation messages if anything is missing — see the Conditional Requirements block on the endpoint for product-specific rules (for example, commercial-auto Policy Existence requires is_defendant_transportation_company: true).
Legacy 3-step flow (deprecated)
Section titled “Legacy 3-step flow (deprecated)”The original flow — POST /policy_existence_searches/ or POST /policy_limit_searches/, then POST /upload/{ticket_id}/{file_label} per file, then PUT /tickets/{ticket_id}/ready — still works for existing integrations but is deprecated. New integrations should use POST /api/v1/partner/cases/create/.