Examples

Complete Examples

Example 1: Deposition Summarization

{
  "name": "Deposition Summary Action",
  "description": "Process deposition transcript end-to-end",
  "definition": {
    "steps": [
      {
        "id": "summarize",
        "service": "workflows",
        "workflow_id": "deposition_summary_workflow",
        "input": {
          "text": "{{input.transcript}}"
        },
        "options": {
          "model": "anthropic/claude-sonnet-4.5",
          "max_tokens": 3000
        }
      },
      {
        "id": "extract_timeline",
        "service": "llm",
        "input": {
          "text": "From this summary, extract a timeline of events as JSON: {{steps.summarize.output.text}}"
        },
        "options": {
          "model": "anthropic/claude-sonnet-4.5",
          "max_tokens": 1000
        }
      },
      {
        "id": "store_summary",
        "service": "vault",
        "action": "upload",
        "vault_id": "case_vault_123",
        "input": {
          "filename": "deposition_summary.json",
          "content": "{{steps.summarize.output}}",
          "metadata": {
            "case_id": "{{input.case_id}}",
            "document_type": "deposition_summary",
            "processed_at": "{{timestamp}}"
          }
        }
      }
    ]
  }
}

Execute:

curl -X POST https://api.case.dev/actions/v1/{action_id}/execute \
  -H "Authorization: Bearer sk_case_your_api_key_here" \
  -d '{
    "input": {
      "transcript": "Q: Good morning. Can you state your name? A: John Smith...",
      "case_id": "smith_v_hospital_2024"
    }
  }'

Example 2: Contract Analysis Pipeline

{
  "name": "Contract Analysis",
  "description": "OCR contract, analyze clauses, identify risks",
  "definition": {
    "steps": [
      {
        "id": "ocr",
        "service": "ocr",
        "input": {
          "document_url": "{{input.contract_url}}"
        }
      },
      {
        "id": "extract_clauses",
        "service": "llm",
        "input": {
          "text": "Extract all indemnification clauses from this contract as JSON: {{steps.ocr.output.text}}"
        },
        "options": {
          "model": "openai/gpt-5",
          "max_tokens": 2000,
          "temperature": 0
        }
      },
      {
        "id": "risk_analysis",
        "service": "llm",
        "input": {
          "text": "Analyze these clauses for risks: {{steps.extract_clauses.output.content}}"
        },
        "options": {
          "model": "anthropic/claude-opus-4.1",
          "max_tokens": 1500
        }
      }
    ]
  }
}

Example 3: Audio Transcription & Analysis

{
  "name": "Audio Transcription Pipeline",
  "description": "Transcribe audio, summarize, extract action items",
  "webhook_id": "webhook_notifications",
  "definition": {
    "steps": [
      {
        "id": "transcribe",
        "service": "voice",
        "input": {
          "audio_url": "{{input.audio_url}}"
        }
      },
      {
        "id": "summarize",
        "service": "llm",
        "input": {
          "text": "Summarize this meeting transcript: {{steps.transcribe.output.text}}"
        },
        "options": {
          "max_tokens": 1000
        }
      },
      {
        "id": "action_items",
        "service": "llm",
        "input": {
          "text": "Extract action items as JSON from: {{steps.transcribe.output.text}}"
        },
        "options": {
          "max_tokens": 500
        }
      }
    ]
  }
}

Common Action Patterns

Pattern 1: Document Processing Pipeline

OCR → Summarize → Store

{
  "steps": [
    {"id": "ocr", "service": "ocr", "input": {"document_url": "{{input.url}}"}},
    {"id": "summarize", "service": "workflows", "workflow_id": "summary_workflow", "input": {"text": "{{steps.ocr.output.text}}"}},
    {"id": "store", "service": "vault", "action": "upload", "vault_id": "vault_123", "input": {"filename": "summary.txt", "content": "{{steps.summarize.output}}"}}
  ]
}

Pattern 2: Multi-Document Analysis

Process multiple documents in sequence, then compare:

{
  "steps": [
    {"id": "analyze_doc1", "service": "llm", "input": {"text": "Analyze: {{input.doc1}}"}},
    {"id": "analyze_doc2", "service": "llm", "input": {"text": "Analyze: {{input.doc2}}"}},
    {"id": "compare", "service": "llm", "input": {"text": "Compare these analyses:\nDoc 1: {{steps.analyze_doc1.output.content}}\nDoc 2: {{steps.analyze_doc2.output.content}}"}}
  ]
}

Pattern 3: Audio → Text → Analysis

Transcribe → Summarize → Extract

{
  "steps": [
    {"id": "transcribe", "service": "voice", "input": {"audio_url": "{{input.audio}}"}},
    {"id": "summarize", "service": "workflows", "workflow_id": "meeting_summary", "input": {"text": "{{steps.transcribe.output.text}}"}},
    {"id": "action_items", "service": "llm", "input": {"text": "Extract action items: {{steps.summarize.output}}"}}
  ]
}