Skip to main content
Matters are the workspace primitive for legal work on Case.dev. A matter owns the operating context: metadata, its primary vault, work items, parties, audit logs, sharing, and execution policy.
CreatePOST /matters/v1
ExecutePOST /matters/v1//work-items
ReviewPOST /matters/v1//work-items//decision

What a matter owns

  • Primary vault linkage
  • Matter type and orchestration policy
  • Reusable parties and matter-specific roles
  • Work items and execution attempts
  • Audit logs, exports, events, and shares

Core resources

ResourceEndpoint familyPurpose
Matter/matters/v1Create, update, and inspect legal workspaces
Matter types/matters/v1/typesDefine workflow instructions and orchestration mode
Agent types/matters/v1/agent-typesReusable worker role definitions
Parties/matters/v1/partiesReusable people and organizations
Matter parties/matters/v1/{id}/partiesAttach parties to a matter with roles
Work items/matters/v1/{id}/work-itemsCreate and manage active work
Decisions/matters/v1/{id}/work-items/{workItemId}/decisionHuman orchestration and reassignment
Logs/matters/v1/{id}/logOperational history and exports
Shares/matters/v1/{id}/sharesCross-org matter access

Orchestration

Matters support two explicit orchestration modes:
  • auto — the orchestrator agent reviews and routes work
  • human — worker output pauses in awaiting_human until a person decides
Humans can act as the orchestrator. That means they can:
  • approve output
  • kick work back with a reason
  • block a work item
  • reassign a work item to another agent type

Quickstart

curl https://api.case.dev/matters/v1/types \
  -H "Authorization: Bearer $CASEDEV_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Litigation Intake",
    "instructions": "Open the matter, review intake, and move urgent work immediately.",
    "orchestration_mode": "human",
    "review_criteria": ["Work must cite sources when legal research is involved."]
  }'
curl https://api.case.dev/matters/v1 \
  -H "Authorization: Bearer $CASEDEV_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Doe v. Example Corp.",
    "matter_type": "litigation-intake",
    "practice_area": "litigation"
  }'
curl https://api.case.dev/matters/v1/$MATTER_ID/work-items \
  -H "Authorization: Bearer $CASEDEV_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Review demand letter",
    "type": "review"
  }'
curl https://api.case.dev/matters/v1/$MATTER_ID/work-items/$WORK_ITEM_ID/decision \
  -H "Authorization: Bearer $CASEDEV_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "decision": "reassign",
    "reason": "Send this to the litigation reviewer.",
    "assign_agent_type_id": "atype_123"
  }'
The full schema and every tagged operation live in the API Reference.