Documentation
Projects API Reference
Project workspaces let you partition files and folders into isolated containers within your organization
Project Workspaces
Every organization has a Default project that is created automatically on registration. Files and folders that are not assigned to a specific project land in the Default project. The Default project cannot be renamed or deleted.
Key rules
- • Maximum 50 projects per organization
- • Project names must be unique within an organization (case-insensitive)
- • Names: 1–255 characters, no path separators (
/,\,\0) - • A project must be empty (no files or folders) before it can be deleted
- •
project_typecontrols which AI analysis presets apply:generalorreal_estate
Create a Project
/api/v2/projectsCreate a new project workspace. Returns 201 Created.
Request
{ "name": "Site Inspections 2025", // required, 1-255 chars "description": "Photos from Q1 site visits", // optional, max 2000 "icon": "folder", // optional, max 50 chars (identifier string) "color": "#4A90E2", // optional, hex color, max 7 chars "project_type": "general" // optional, "general" | "real_estate", default: "general"}Response
{ "id": "550e8400-e29b-41d4-a716-446655440000", "name": "Site Inspections 2025", "description": "Photos from Q1 site visits", "icon": "folder", "color": "#4A90E2", "project_type": "general", "is_default": false, "folder_count": 0, "file_count": 0, "created_by": "660f9500-f39c-52e5-b827-557766550111", "created_at": "2025-03-01T09:00:00Z", "updated_at": "2025-03-01T09:00:00Z"}
// Error responses:// 409 PROJECT_NAME_EXISTS — a project with this name already exists// 409 PROJECT_LIMIT_REACHED — 50-project maximum reachedList Projects
/api/v2/projectsList all project workspaces for the organization. The Default project is always returned first.
Request
// Query parameters:?limit=50 // optional, 1-100, default 50&offset=0 // optional, default 0Response
{ "items": [ { "id": "aa000000-0000-0000-0000-000000000001", "name": "Default", "description": "", "icon": null, "color": null, "project_type": "general", "is_default": true, "folder_count": 12, "file_count": 84, "created_by": null, "created_at": "2025-01-01T00:00:00Z", "updated_at": "2025-01-01T00:00:00Z" }, { "id": "550e8400-e29b-41d4-a716-446655440000", "name": "Site Inspections 2025", "description": "Photos from Q1 site visits", "icon": "folder", "color": "#4A90E2", "project_type": "general", "is_default": false, "folder_count": 3, "file_count": 22, "created_by": "660f9500-f39c-52e5-b827-557766550111", "created_at": "2025-03-01T09:00:00Z", "updated_at": "2025-03-01T09:00:00Z" } ], "total_count": 2, "limit": 50, "offset": 0, "has_more": false}Get a Project
/api/v2/projects/{project_id}Get a single project by ID. Includes up-to-date folder and file counts.
Response
{ "id": "550e8400-e29b-41d4-a716-446655440000", "name": "Site Inspections 2025", "description": "Photos from Q1 site visits", "icon": "folder", "color": "#4A90E2", "project_type": "general", "is_default": false, "folder_count": 3, "file_count": 22, "created_by": "660f9500-f39c-52e5-b827-557766550111", "created_at": "2025-03-01T09:00:00Z", "updated_at": "2025-03-01T09:15:00Z"}
// 404 PROJECT_NOT_FOUND if the ID doesn't belong to your organizationUpdate a Project
/api/v2/projects/{project_id}Partially update a project. All fields are optional — only include what you want to change.
Request
{ "name": "Site Inspections Q1", // optional, omit to keep current "description": "Updated description", "icon": "camera", "color": "#E24A90", "project_type": "real_estate"}
// Constraints:// - Cannot rename the Default project (422 BUSINESS_RULE_VIOLATION)// - name must be unique within the organization (409 PROJECT_NAME_EXISTS)Response
{ "id": "550e8400-e29b-41d4-a716-446655440000", "name": "Site Inspections Q1", "description": "Updated description", "icon": "camera", "color": "#E24A90", "project_type": "real_estate", "is_default": false, "folder_count": 3, "file_count": 22, "created_by": "660f9500-f39c-52e5-b827-557766550111", "created_at": "2025-03-01T09:00:00Z", "updated_at": "2025-03-01T09:30:00Z"}Delete a Project
/api/v2/projects/{project_id}Delete an empty project. Returns 204 No Content on success.
Response
// 204 No Content — project deleted
// Error responses:// 404 PROJECT_NOT_FOUND// 409 PROJECT_NOT_EMPTY — project still contains folders or files; move or delete them first// 422 BUSINESS_RULE_VIOLATION — cannot delete the Default projectProject must be empty
Move or delete all folders and files inside the project before attempting deletion. Use GET /api/v2/projects/{project_id} to check folder_count and file_count before deleting.
Project Types
general (default)
General-purpose workspace. Standard AI analysis presets apply. Suitable for most use cases including document processing, mixed media, and custom pipelines.
real_estate
Optimized for property photography and real estate workflows. Enables room-type classification, space analysis presets, and listing-aware AI features.
Error Codes
| Code | HTTP | Description |
|---|---|---|
| PROJECT_NOT_FOUND | 404 | No project with that ID exists in your organization |
| PROJECT_NAME_EXISTS | 409 | A project with that name already exists (names are unique per organization) |
| PROJECT_LIMIT_REACHED | 409 | Organization has reached the 50-project maximum |
| PROJECT_NOT_EMPTY | 409 | Cannot delete a project that still contains folders or files |
| BUSINESS_RULE_VIOLATION | 422 | Attempted to rename or delete the Default project |

