Crowdee
API Reference

Verification Contexts API

Create and manage reusable named context sets that supply contextual claims to pipeline runs.

Verification contexts are named key-value stores attached to a project. They supply claimed metadata — source URL, publication date, speaker identity, geographic location, and so on — to pipeline runs. Pipelines use this context to evaluate whether the file's content matches the provided claims.

Saving a context avoids repeating the same values across multiple runs. Each run stores a snapshot of the context data used at execution time, so updating a context does not retroactively affect past results.

Endpoint Reference

MethodPathDescription
POST/v2/projects/{projectId}/verification-contextsCreate a context
GET/v2/projects/{projectId}/verification-contextsList project contexts
GET/v2/verification-contextsList all org-level contexts
GET/v2/projects/{projectId}/verification-contexts/{contextId}Get a context
PUT/v2/projects/{projectId}/verification-contexts/{contextId}Update a context
DELETE/v2/projects/{projectId}/verification-contexts/{contextId}Delete a context

Create a Context

POST /v2/projects/{projectId}/verification-contexts

Request body

FieldTypeRequiredDescription
namestringYesHuman-readable label for the context
descriptionstringNoOptional note about the context's purpose
dataobjectYesKey-value pairs of contextual claims

The keys in data must match the requiredContextKeys declared by the pipeline you intend to run. Check the pipeline catalog for the exact key names.

curl -X POST https://api.crowdee.ai/v2/projects/proj_abc123/verification-contexts \
  -H "X-API-Key: crw_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Reuters Article — Oct 28 Protest",
    "description": "Claimed provenance for the photo bundle from the Berlin protest coverage",
    "data": {
      "claimed_source_url": "https://www.reuters.com/world/europe/berlin-protest-2024-10-28",
      "claimed_publication_date": "2024-10-28",
      "claimed_author": "Reuters Editorial Staff",
      "claimed_location": "Berlin, Germany",
      "claimed_event": "Berlin climate protest"
    }
  }'

Response

{
  "id": "ctx_abc123",
  "projectId": "proj_abc123",
  "name": "Reuters Article — Oct 28 Protest",
  "description": "Claimed provenance for the photo bundle from the Berlin protest coverage",
  "data": {
    "claimed_source_url": "https://www.reuters.com/world/europe/berlin-protest-2024-10-28",
    "claimed_publication_date": "2024-10-28",
    "claimed_author": "Reuters Editorial Staff",
    "claimed_location": "Berlin, Germany",
    "claimed_event": "Berlin climate protest"
  },
  "createdAt": "2024-11-15T10:05:00Z",
  "updatedAt": "2024-11-15T10:05:00Z"
}

Using a Context in a Run

You can supply context to a verification run in two ways:

Reference a saved context by its ID. This is the recommended approach when the same context will be reused across multiple runs.

curl -X POST https://api.crowdee.ai/v2/projects/proj_abc123/verification-runs \
  -H "X-API-Key: crw_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "pipeline_id": "verify-image-deep",
    "file_ids": ["file_xyz789"],
    "context_id": "ctx_abc123"
  }'
const run = await crowdee.verificationRuns.create("proj_abc123", {
  pipeline_id: "verify-image-deep",
  file_ids: ["file_xyz789"],
  context_id: "ctx_abc123",
});

Pass context data directly in the run request. The values are used for that run only and are not saved as a reusable context.

curl -X POST https://api.crowdee.ai/v2/projects/proj_abc123/verification-runs \
  -H "X-API-Key: crw_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "pipeline_id": "verify-news-article",
    "file_ids": ["file_xyz789"],
    "context": {
      "claimed_source_url": "https://example.com/breaking-story",
      "claimed_publication_date": "2024-11-15"
    }
  }'
const run = await crowdee.verificationRuns.create("proj_abc123", {
  pipeline_id: "verify-news-article",
  file_ids: ["file_xyz789"],
  context: {
    claimed_source_url: "https://example.com/breaking-story",
    claimed_publication_date: "2024-11-15",
  },
});

List Contexts

GET /v2/projects/{projectId}/verification-contexts

curl "https://api.crowdee.ai/v2/projects/proj_abc123/verification-contexts?limit=50" \
  -H "X-API-Key: crw_YOUR_API_KEY"

To see all contexts across every project in your organization, use the org-level endpoint:

curl https://api.crowdee.ai/v2/verification-contexts \
  -H "X-API-Key: crw_YOUR_API_KEY"

Get a Context

GET /v2/projects/{projectId}/verification-contexts/{contextId}

curl https://api.crowdee.ai/v2/projects/proj_abc123/verification-contexts/ctx_abc123 \
  -H "X-API-Key: crw_YOUR_API_KEY"

Update a Context

PUT /v2/projects/{projectId}/verification-contexts/{contextId}

Send a partial data object — only the keys you provide are updated. To remove a key, set its value to null.

Updating a context does not affect already-completed runs. Each run stores a snapshot of the context data at the time of execution, so historical results remain accurate and auditable.

curl -X PUT https://api.crowdee.ai/v2/projects/proj_abc123/verification-contexts/ctx_abc123 \
  -H "X-API-Key: crw_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Reuters Article — Oct 28 Protest (corrected)",
    "data": {
      "claimed_author": "Hans Müller",
      "claimed_event": "Berlin climate and housing protest"
    }
  }'

Delete a Context

DELETE /v2/projects/{projectId}/verification-contexts/{contextId}

Deleting a context does not affect existing run history. Completed runs that referenced this context retain their snapshot of the data.

curl -X DELETE \
  https://api.crowdee.ai/v2/projects/proj_abc123/verification-contexts/ctx_abc123 \
  -H "X-API-Key: crw_YOUR_API_KEY"

Returns 204 No Content on success.

How is this guide?

© 2026 Crowdee GmbH. All rights reserved.

On this page