Keep crew, contractors, and clients in one workspace-wide directory.
Link contacts to budget lines for automatic contact assignment.
Store tax info and rate cards for quick reuse across projects.
⚒️ API Reference (1.0.1)
The Saturation API lets you work with your workspace data including projects, budgets, actuals, contacts, purchase orders, and attachments.
It is built for real-time collaboration and automation so you can connect it to your internal tools or third-party systems. Any changes you make through the API appear instantly in the web app.
With it, you can:
- Create, update, and organize projects and phases
- Build and track multi-phase budgets
- Sync actuals and purchase orders
- Manage contacts and crew
- Upload, retrieve, and organize attachments
🔑 Authentication
GET /api/v1/projects
X-API-Key: YOUR_API_KEY
📊 Get everything in one call
GET /projects/my-film/budget?expands[]=phases&expands[]=fringes&expands[]=lines.contact&expands[]=lines.phaseDataReturns the complete budget with all related records, no extra roundtrips.
🏷️ Use your existing codes
GET /projects/my-film/budget/line/1100-LABOR # Your account code
GET /projects/my-film/budget/phases/estimate # Your phase name
POST /projects/my-film/actuals # Create with your codes
{
"lineItemId": "2150-CAMERA",
"amount": 5000
}The API speaks your language. Use the same codes from your accounting system.
🔄 Common patterns
# Get recent actuals with full details
GET /projects/my-film/actuals?date=2024-03-14&expands[]=contact&expands[]=attachments
# Create a purchase order
POST /projects/my-film/purchase-orders
{
"number": "PO-001",
"contactId": "contact-123",
"items": [{"lineItemId": "2150", "amount": 35000}]
}
# Export complete budget for accounting
GET /projects/my-film/budget?expands[]=phases&expands[]=fringes&expands[]=globals
đź’ˇ Pro tips
- Create multiple budget lines in one POST to
/budget - Use tags liberally—they're your flexible second dimension
- Combine
accountId,tags, anddatefilters for precise queries
Filter by how the contact was created
Fields to expand in the contact response. Expansions load additional related data on demand:
secureInfo: Contact's secure/private information (address, phone, tax ID last4)origin: Creation source, timestamp, and userprojects: Associated projects keyed by alias (user mode) or ID (system mode)projects.accounts: Project account breakdowns (requires includingprojects)startwork: Startwork agreements and signature metadatataxDocuments: W-9/1099 files linked to the contactattachments: General attachments uploaded to the contactbankInfo: Banking details sourced from Stripe/PlaidlinkedUser: Workspace user linked to the contact
ID interpretation mode. Controls how path and query parameter IDs (like lineId, accountId, phaseId) are interpreted - 'user' for human-readable IDs (account codes, phase names), 'system' for database IDs (UUIDs/nanoids). Also affects the format of IDs in responses.
- Production serverhttps://api.saturation.io/api/v1/contacts
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://api.saturation.io/api/v1/contacts?projectId=nike-swoosh-commercial&accountId=2150&origin=manual&hasLinkedUser=true&hasAttachments=true&hasTaxDocuments=true&email=producer%40saturation.io&title=Producer&expands=projects%2Cprojects.accounts%2Cattachments&idMode=user' \
-H 'X-API-Key: YOUR_API_KEY_HERE'{ "contacts": [ { … } ] }
Fields to expand in the contact response. Expansions load additional related data on demand:
secureInfo: Contact's secure/private information (address, phone, tax ID last4)origin: Creation source, timestamp, and userprojects: Associated projects keyed by alias (user mode) or ID (system mode)projects.accounts: Project account breakdowns (requires includingprojects)startwork: Startwork agreements and signature metadatataxDocuments: W-9/1099 files linked to the contactattachments: General attachments uploaded to the contactbankInfo: Banking details sourced from Stripe/PlaidlinkedUser: Workspace user linked to the contact
Display title or label shown in lists
Tax identifier (SSN/EIN). Stored securely; only the last four digits are returned.
- Production serverhttps://api.saturation.io/api/v1/contacts
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X POST \
'https://api.saturation.io/api/v1/contacts?expands=projects%2Cprojects.accounts%2Cattachments' \
-H 'Content-Type: application/json' \
-H 'X-API-Key: YOUR_API_KEY_HERE' \
-d '{
"contactTitle": "Sunset Studios - Production Company",
"name": "Sunset Studios",
"email": "contact@sunsetstudios.com",
"company": "Sunset Studios Inc.",
"type": "Contractor",
"jobTitle": "Production Coordinator",
"rate": 125,
"phone": "310-555-1234",
"address": "123 Sunset Blvd, Los Angeles, CA 90028",
"taxId": "123-45-6789",
"paymentAccount": [
{
"accountHolderType": "individual",
"accountType": "checking",
"routingNumber": "021000021",
"accountNumber": "987654321"
}
]
}'{ "id": "contact-studio-001", "contactTitle": "Sunset Studios - Production Company", "name": "Alex Rivera", "email": "alex.rivera@sunsetstudios.com", "company": "Sunset Studios Inc.", "type": "Contractor", "jobTitle": "Director of Photography", "rate": 150, "lastModified": "2024-03-15T14:30:00Z", "secureInfo": { "address": "123 Sunset Blvd, Los Angeles, CA 90028", "phone": "310-555-1234", "taxIdLast4": "4567" }, "origin": { "origin": "manual", "createdAt": "2024-02-15T08:00:00Z", "createdByUser": { … } }, "startwork": [ { … } ], "linkedUser": { "id": "user-001", "name": "Sarah Chen", "email": "sarah.chen@sunsetstudios.com" }, "bankInfo": [ { … } ], "taxDocuments": [ { … } ], "attachments": [ { … } ], "projects": { "property1": { … }, "property2": { … } } }
Fields to expand in the contact response. Expansions load additional related data on demand:
secureInfo: Contact's secure/private information (address, phone, tax ID last4)origin: Creation source, timestamp, and userprojects: Associated projects keyed by alias (user mode) or ID (system mode)projects.accounts: Project account breakdowns (requires includingprojects)startwork: Startwork agreements and signature metadatataxDocuments: W-9/1099 files linked to the contactattachments: General attachments uploaded to the contactbankInfo: Banking details sourced from Stripe/PlaidlinkedUser: Workspace user linked to the contact
- Production serverhttps://api.saturation.io/api/v1/contacts/{contactId}
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://api.saturation.io/api/v1/contacts/contact-studio-001?expands=projects%2Cprojects.accounts%2Cattachments' \
-H 'X-API-Key: YOUR_API_KEY_HERE'{ "id": "contact-studio-001", "contactTitle": "Sunset Studios - Production Company", "name": "Alex Rivera", "email": "alex.rivera@sunsetstudios.com", "company": "Sunset Studios Inc.", "type": "Contractor", "jobTitle": "Director of Photography", "rate": 150, "lastModified": "2024-03-15T14:30:00Z", "secureInfo": { "address": "123 Sunset Blvd, Los Angeles, CA 90028", "phone": "310-555-1234", "taxIdLast4": "4567" }, "origin": { "origin": "manual", "createdAt": "2024-02-15T08:00:00Z", "createdByUser": { … } }, "startwork": [ { … } ], "linkedUser": { "id": "user-001", "name": "Sarah Chen", "email": "sarah.chen@sunsetstudios.com" }, "bankInfo": [ { … } ], "taxDocuments": [ { … } ], "attachments": [ { … } ], "projects": { "property1": { … }, "property2": { … } } }
Budget
Build hierarchical budgets with accounts, line items, subtotals, and markups.
Use expands[]=phases&expands[]=fringes&expands[]=globals&expands[]=lines.contact&expands[]=lines.phaseData
to fetch complete budget data in one call.
Reference budget lines by account code (e.g., "1100-LABOR") with idMode=user.
CommentsCopy for LLM Copy page as Markdown for LLMs View as Markdown Open this page as Markdown Open in ChatGPT Get insights from ChatGPT Open in Claude Get insights from Claude Connect to Cursor Install MCP server on Cursor Connect to VS Code Install MCP server on VS Code
Add notes and discussions directly on budget lines.
Track approvals and changes with timestamps—context stays intact across phases.