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}}"
}
}
}
]
}
}
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
}
}
]
}
}
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
}
}
]
}
}
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}}"}}
]
}
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}}"}}
]
}
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}}"}}
]
}
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}}'
Related
- Creating Actions - Learn how to create your own actions
- Action Steps - Understand available services
- Reference - Best practices and patterns