Retrieve projects for the current workspace. Supports filtering by ID, space, status, name, space name, or labels.
⚒️ API Reference (1.0.0)
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.phaseData
Returns 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
, anddate
filters for precise queries
https://api.saturation.io/api/v1/
Return only projects matching these IDs or aliases
Return projects belonging to these space IDs or aliases
Case-insensitive substring match on project name
Case-insensitive substring match on space name
- Production server
https://api.saturation.io/api/v1/projects
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://api.saturation.io/api/v1/projects?id=nike-swoosh-commercial&spaceId=commercial-productions&status=active&name=Swoosh&spaceName=Commercial&labels=nike%2Cq2-2024' \
-H 'X-API-Key: YOUR_API_KEY_HERE'
{ "projects": [ { … } ] }
Project display name (defaults to "Untitled Project")
Template project ID if creating from template
- Production server
https://api.saturation.io/api/v1/projects
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X POST \
https://api.saturation.io/api/v1/projects \
-H 'Content-Type: application/json' \
-H 'X-API-Key: YOUR_API_KEY_HERE' \
-d '{
"name": "Nike Holiday Commercial",
"icon": "📊",
"imageUrl": "https://example.com/banner.jpg",
"spaceId": "commercial-productions",
"status": "active",
"templateId": "commercial-template-v2",
"labels": [
"marketing",
"q4-2024"
]
}'
Project created successfully
Project identifier (alias in user mode, UUID in system mode)
Associated project space ID (deprecated, use space object)
Template project ID (deprecated, use template object)
Project labels for categorization
{ "id": "nike-swoosh-commercial", "name": "Nike Swoosh Commercial", "icon": "☀️", "imageUrl": "https://example.com/project-banner.jpg", "spaceId": "commercial-productions", "space": { "id": "commercial-productions", "name": "Commercial Productions" }, "templateId": "commercial-template", "template": { "id": "commercial-template", "name": "Commercial Template" }, "status": "active", "labels": [ "nike", "q2-2024", "post-production" ], "createdAt": "2024-01-15T10:00:00Z", "updatedAt": "2024-03-20T14:30:00Z" }
- Production server
https://api.saturation.io/api/v1/projects/{projectId}
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
https://api.saturation.io/api/v1/projects/nike-spring-2024 \
-H 'X-API-Key: YOUR_API_KEY_HERE'
Project details
Project identifier (alias in user mode, UUID in system mode)
Associated project space ID (deprecated, use space object)
Template project ID (deprecated, use template object)
Project labels for categorization
{ "id": "nike-swoosh-commercial", "name": "Nike Swoosh Commercial", "icon": "☀️", "imageUrl": "https://example.com/project-banner.jpg", "spaceId": "commercial-productions", "space": { "id": "commercial-productions", "name": "Commercial Productions" }, "templateId": "commercial-template", "template": { "id": "commercial-template", "name": "Commercial Template" }, "status": "active", "labels": [ "nike", "q2-2024", "post-production" ], "createdAt": "2024-01-15T10:00:00Z", "updatedAt": "2024-03-20T14:30:00Z" }
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
Add notes and discussions directly on budget lines.
Track approvals and changes with timestamps—context stays intact across phases.