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?