Projects API
Create, list, update, and delete projects; manage files, runs, and dossiers.
Projects are the top-level workspace in Crowdee. Every file, verification run, and verification context belongs to a project. All project endpoints are scoped to the authenticated user's organization.
Endpoint Reference
| Method | Path | Description |
|---|---|---|
GET | /v2/projects | List all projects |
POST | /v2/projects | Create a project |
GET | /v2/projects/{projectId} | Get a project |
PUT | /v2/projects/{projectId} | Update a project |
DELETE | /v2/projects/{projectId} | Delete a project |
GET | /v2/projects/{projectId}/files | List project files |
POST | /v2/projects/{projectId}/files | Upload files |
GET | /v2/projects/{projectId}/verification-runs | List verification runs |
POST | /v2/projects/{projectId}/verification-runs | Start a verification run |
GET | /v2/projects/{projectId}/dossier | Audit dossier |
Create a Project
POST /v2/projects
Request body
| Field | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Human-readable project name (max 255 chars) |
description | string | No | Optional longer description |
type | string | No | "standard" (default) or "research" |
curl -X POST https://api.crowdee.ai/v2/projects \
-H "X-API-Key: crw_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "News Investigation — October",
"description": "Verification backlog from the October news cycle",
"type": "research"
}'Response
{
"id": "proj_abc123",
"name": "News Investigation — October",
"description": "Verification backlog from the October news cycle",
"type": "research",
"organizationId": "org_xyz789",
"createdBy": "usr_def456",
"createdAt": "2024-11-15T10:00:00Z",
"updatedAt": "2024-11-15T10:00:00Z"
}Save the id — you will use it as {projectId} in all subsequent file and run requests.
List Projects
GET /v2/projects
Returns all projects visible to the authenticated user within their organization.
Query parameters
| Parameter | Type | Description |
|---|---|---|
type | string | Filter by project type: standard or research |
limit | integer | Max results to return (default 20, max 200) |
offset | integer | Pagination offset (default 0) |
curl "https://api.crowdee.ai/v2/projects?type=research&limit=50" \
-H "X-API-Key: crw_YOUR_API_KEY"Response
{
"data": [
{
"id": "proj_abc123",
"name": "News Investigation — October",
"type": "research",
"createdAt": "2024-11-15T10:00:00Z"
},
{
"id": "proj_def456",
"name": "Social Media Audit",
"type": "standard",
"createdAt": "2024-11-10T09:30:00Z"
}
],
"total": 14,
"limit": 50,
"offset": 0
}Get a Project
GET /v2/projects/{projectId}
curl https://api.crowdee.ai/v2/projects/proj_abc123 \
-H "X-API-Key: crw_YOUR_API_KEY"Response
{
"id": "proj_abc123",
"name": "News Investigation — October",
"description": "Verification backlog from the October news cycle",
"type": "research",
"organizationId": "org_xyz789",
"createdBy": "usr_def456",
"fileCount": 12,
"runCount": 8,
"createdAt": "2024-11-15T10:00:00Z",
"updatedAt": "2024-11-15T14:22:00Z"
}Update a Project
PUT /v2/projects/{projectId}
Send only the fields you want to change. Omitted fields are left unchanged.
curl -X PUT https://api.crowdee.ai/v2/projects/proj_abc123 \
-H "X-API-Key: crw_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name": "News Investigation — October (Final)"}'Updatable fields
| Field | Type | Description |
|---|---|---|
name | string | New project name |
description | string | New description (pass null to clear) |
Delete a Project
DELETE /v2/projects/{projectId}
Deleting a project permanently removes all associated files, verification runs, and verification contexts. This action cannot be undone. Export any results you need before deleting.
curl -X DELETE https://api.crowdee.ai/v2/projects/proj_abc123 \
-H "X-API-Key: crw_YOUR_API_KEY"Returns 204 No Content on success.
Dossier
GET /v2/projects/{projectId}/dossier
Returns all verification runs for the project grouped by pipelineId, with full verdicts, scorecard data, and stage summaries. Designed for generating audit reports and compliance exports.
curl https://api.crowdee.ai/v2/projects/proj_abc123/dossier \
-H "X-API-Key: crw_YOUR_API_KEY"Response
{
"projectId": "proj_abc123",
"projectName": "News Investigation — October",
"generatedAt": "2024-11-20T16:00:00Z",
"pipelines": {
"verify-image-metadata": {
"totalRuns": 5,
"completed": 5,
"verdictSummary": { "authentic": 3, "manipulated": 1, "inconclusive": 1 },
"runs": [...]
},
"verify-news-article": {
"totalRuns": 3,
"completed": 2,
"verdictSummary": { "authentic": 1, "manipulated": 1 },
"runs": [...]
}
}
}The dossier endpoint returns all runs regardless of status. Filter by status: "completed" on your end if you only need finalised verdicts for a compliance report.
How is this guide?
Error Codes
HTTP status codes, error response shape, and how to handle common errors.
Files API
Upload files, poll enrichment status, access presigned download URLs, and manage file metadata.