Crowd Jobs
Crowdsourcing-Jobs erstellen und verwalten — Aufgaben definieren, im Worker-Pool veröffentlichen und den Job-Lebenszyklus steuern.
Ein Crowd Job ist eine eigenständige Crowdsourcing-Kampagne, die einem Projekt zugeordnet ist. Er verknüpft eine veröffentlichte Survey-Template-Version mit einem optionalen Input-Data-Set und stellt strukturierte Aufgaben für den Worker-Pool von Crowdee bereit. Worker beanspruchen einzelne Aufgaben-Slots, füllen den strukturierten Fragebogen aus und reichen ihre Antworten ein. Sie prüfen jede Einreichung und akzeptieren oder lehnen sie ab — bei akzeptierten Antworten werden die reservierten Credits an den Worker freigegeben.
Crowd Jobs sind unabhängig von Verifizierungs-Pipelines. Während Crowd-Stages in Pipelines automatisch durch den Pipeline-Runner ausgelöst werden, geben Crowd Jobs Ihnen direkte Kontrolle: Sie definieren die Aufgabe, legen das Verfügbarkeitsfenster und die Vergütung fest und verwalten den Lebenszyklus über die API oder die Plattform-UI.
Job-Felder
Beim Erstellen oder Aktualisieren eines Crowd Jobs werden folgende Felder akzeptiert.
| Feld | Typ | Standard | Beschreibung |
|---|---|---|---|
name | string | — | Internes Label, das nur für Organisationsmitglieder sichtbar ist. |
title | string | — | Überschrift, die Workern beim Durchsuchen verfügbarer Jobs angezeigt wird. |
description | string | — | Vollständige Job-Beschreibung, die Workern angezeigt wird, bevor sie eine Aufgabe annehmen. |
category | "survey" | "qualification_test" | "gathering" | "survey" | Survey-Jobs sammeln Daten; Qualifikationstests prüfen Worker, bevor sie Zugang zu höherwertigen Kampagnen erhalten; Gathering-Jobs bitten Worker, neue Inhalte zu finden und einzureichen — siehe Erfassung von Inhalten. |
surveyTemplateVersionId | CUID | — | Pflichtfeld. Verknüpft eine bestimmte veröffentlichte Survey-Template-Version. Die Version wird zum Erstellungszeitpunkt eingefroren — Änderungen am zugrunde liegenden Template haben keinen Einfluss auf laufende Jobs. |
inputDataSetId | CUID | null | Hängt ein Input-Data-Set an. Jeder Datensatz im Set wird zu einer separaten Aufgabenvariante, sodass Worker unterschiedliche Inhalte sehen, während sie denselben Fragebogen ausfüllen. Wird dieses Feld weggelassen, bearbeiten alle Worker eine einzige identische Aufgabe. |
maxAssignments | integer | 1 | Reserviertes Feld zur Begrenzung der Gesamtzahl an Aufgaben-Slot-Zuweisungen über alle Varianten hinweg. |
maxRepetitionsPerVariant | integer | 1 | Wie viele unabhängige Worker jede Variante abschließen können. Kombiniert mit der Variantenanzahl ergibt dies maxSlots — die Gesamtzahl der Aufgabenabschlüsse, die der Job akzeptiert. |
rewardCredits | integer | 10 | Credits, die einem Worker pro akzeptierter Antwort ausgezahlt werden. Credits werden bei der Job-Erstellung von Ihrem Organisationsguthaben blockiert und beim Akzeptieren der Antwort an den Worker freigegeben. |
validFrom | ISO 8601 Zeitstempel | jetzt | Zeitpunkt, ab dem der Job für Worker sichtbar und zuweisbar ist. Standardmäßig der Erstellungszeitpunkt. |
validUntil | ISO 8601 Zeitstempel | jetzt + 30 Tage | Zeitpunkt, ab dem der Job keine neuen Zuweisungen mehr akzeptiert. Danach wechselt der berechnete Status zu not_assignable. |
qualificationRequirements | JSONB | null | Reserviert für zukünftige Worker-Filteroptionen. Wird gespeichert, aber derzeit nicht von der Matching-Engine ausgewertet. |
forceUniqueTasks | boolean | true | Wenn true, kann derselbe Worker nicht zweimal dieselbe Input-Data-Variante zugewiesen bekommen. Für die meisten Jobs empfohlen, um Ergebnisse durch Wiederholungsexposition nicht zu verfälschen. |
isDryRun | boolean | false | Testmodus. Es werden keine Credits blockiert, und der Zugriff ist auf Worker in dryRunAllowedEmails oder auf Personen mit dem bei der Erstellung generierten Magic-Token beschränkt. |
dryRunAllowedEmails | string[] | [] | E-Mail-Allowlist für Dry-Run-Jobs. Worker, deren registrierte E-Mail-Adresse hier aufgeführt ist, können auf den Job ohne Magic-Token zugreifen. |
verificationCode | string | null | Optionales Passwort, das Worker eingeben müssen, bevor sie eine Aufgabe beanspruchen. Nützlich für exklusive oder zugangsgeschützte Kampagnen. |
creditsBlocked ist ein schreibgeschütztes Feld, das von der API zurückgegeben wird. Es gibt die derzeit gegen Ihr Organisationsguthaben reservierten Credits an und wird automatisch verwaltet — nehmen Sie es nicht in Create- oder Update-Anfragen auf.
Job-Status-Lebenszyklus
Ein Job durchläuft folgende Status, wenn sich die Bedingungen ändern. Das Feld computedStatus, das von GET /v2/crowd-jobs/:jobId zurückgegeben wird, spiegelt den aktuellen Zustand wider, der bei jedem Abruf neu berechnet wird; das gespeicherte Feld status wird verzögert aktualisiert, um den berechneten Status widerzuspiegeln.
assignable — Der Job ist aktiv. validFrom ist verstrichen, validUntil wurde noch nicht erreicht, und verfügbare Aufgaben-Slots sind noch vorhanden. Worker können Aufgaben entdecken und beanspruchen.
not_assignable — Der Job ist pausiert. Entweder ist validUntil abgelaufen, oder Sie haben den Status manuell per PUT-Anfrage auf not_assignable gesetzt. Es werden keine neuen Zuweisungen akzeptiert, bereits begonnene Aufgaben können jedoch noch eingereicht werden.
no_tasks — Alle Aufgaben-Slots sind durch Worker belegt, die eine Aufgabe beansprucht, aber noch nicht eingereicht haben, oder durch Antworten, die auf Ihre Überprüfung warten. Die Slot-Obergrenze wurde erreicht. Der Job kehrt zu assignable zurück, wenn Slots freigegeben werden — wenn Sie beispielsweise eine Antwort ablehnen, wird der Varianten-Slot wieder dem Pool zurückgegeben.
finished — Die Gesamtzahl der akzeptierten (und zur Überprüfung ausstehenden) Antworten hat maxSlots erreicht. Der Job ist abgeschlossen, und es werden keine weiteren Zuweisungen akzeptiert. Sie können ausstehende Antworten weiterhin prüfen und bearbeiten.
archived — Der Job wurde über eine DELETE-Anfrage dauerhaft geschlossen. Alle noch laufenden Aufgaben werden abgebrochen, verbleibende blockierte Credits werden an Ihr Organisationsguthaben zurückgegeben, und der Job kann nicht reaktiviert werden. Archivierte Jobs werden aus Listenresponses ausgeschlossen, sofern Sie nicht includeArchived=true übergeben.
maxSlots wird zur Laufzeit als variantCount × maxRepetitionsPerVariant berechnet, wobei variantCount die Anzahl der Datensätze im angehängten Input-Data-Set ist (oder 1, wenn kein Input-Data-Set angehängt ist). Es wird zusammen mit computedStatus in der GET /v2/crowd-jobs/:jobId-Response zurückgegeben.
Einen Job erstellen
Jobs werden einem Projekt zugeordnet angelegt. Die mindestens erforderlichen Felder sind name, title, description und surveyTemplateVersionId.
curl -X POST https://api.crowdee.ai/v2/projects/{projectId}/crowd-jobs \
-H "X-API-Key: crw_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Q3 Image Authenticity Review",
"title": "Assess whether this image has been digitally manipulated",
"description": "You will be shown an image and asked to provide your expert assessment. Please review all visible evidence carefully before submitting.",
"category": "survey",
"surveyTemplateVersionId": "tmplv_abc123def456ghi789jkl01",
"inputDataSetId": "idata_xyz987stu654rqp321onm09",
"maxRepetitionsPerVariant": 3,
"rewardCredits": 25,
"validFrom": "2026-07-01T08:00:00Z",
"validUntil": "2026-07-31T18:00:00Z",
"forceUniqueTasks": true
}'Eine 201 Created-Response gibt das vollständige Job-Objekt zurück, einschließlich der systemseitig vergebenen id, der berechneten creditsBlocked und eines dryRunMagicToken, falls isDryRun auf true gesetzt war.
Die Organisation muss zum Zeitpunkt der Job-Erstellung über ein ausreichendes Guthaben verfügen, um creditsBlocked zu decken. Ist das Guthaben nicht ausreichend, gibt die API 403 Forbidden zurück und der Job wird nicht erstellt. Laden Sie Credits über den Abrechnungsbereich der Plattform auf, bevor Sie große Kampagnen veröffentlichen.
Dry Runs
Ein Dry Run ermöglicht es Ihnen, das vollständige Worker-Erlebnis zu testen — Aufgaben-Rendering, Survey-Anzeige, Antworteinreichung — ohne Credits zu blockieren oder den Job dem gesamten Worker-Pool zugänglich zu machen.
Setzen Sie beim Erstellen des Jobs isDryRun: true. Die Plattform wird:
- Keine Credits von Ihrem Organisationsguthaben blockieren.
- Einen eindeutigen
dryRunMagicTokengenerieren (eine kurze zufällige Zeichenkette, die in der Job-Response zurückgegeben wird). - Den Aufgabenzugriff auf Worker beschränken, deren registrierte E-Mail-Adresse in
dryRunAllowedEmailsenthalten ist, oder auf alle Personen, die auf den Job über den Magic-Token-Link in der Worker-UI zugreifen.
Ein Magic-Token-Link hat die Form https://workers.crowdee.ai/jobs/{jobId}?token={dryRunMagicToken}. Teilen Sie ihn direkt mit internen Testern, die das Worker-Erlebnis ohne Crowdee-Konto in der Vorschau sehen sollen.
{
"name": "Q3 Image Authenticity Review — Test",
"title": "Assess whether this image has been digitally manipulated",
"description": "Internal preview only. Please complete as if this were a real task.",
"category": "survey",
"surveyTemplateVersionId": "tmplv_abc123def456ghi789jkl01",
"isDryRun": true,
"dryRunAllowedEmails": ["tester@yourorg.com", "qa@yourorg.com"]
}Dry-Run-Antworten durchlaufen denselben Akzeptieren/Ablehnen-Prozess wie echte Antworten, jedoch wechseln zu keinem Zeitpunkt Credits den Besitzer — auch nicht bei Akzeptierung. Nutzen Sie Dry Runs, um Template-Rendering, Input-Data-Mapping und Ihren Review-Workflow zu validieren, bevor Sie Credits für eine Live-Kampagne einsetzen. Wenn Sie zufrieden sind, klonen Sie den Dry-Run-Job ohne isDryRun, um die Live-Version zu veröffentlichen.
Credits und Abrechnung
Wenn ein Nicht-Dry-Run-Job erstellt wird, reserviert Crowdee sofort Credits von Ihrem Organisationsguthaben. Der blockierte Betrag berechnet sich wie folgt:
creditsBlocked = variantCount × maxRepetitionsPerVariant × rewardCreditsDabei entspricht variantCount der Anzahl der Datensätze im angehängten Input-Data-Set oder 1, wenn kein Input-Data-Set verwendet wird.
Credits durchlaufen im Verlauf des Job-Lebenszyklus folgende Zustände:
| Zustand | Ereignis |
|---|---|
| Blockiert | Bei der Job-Erstellung von Ihrem Organisationsguthaben reserviert. Noch nicht an jemanden ausgezahlt. |
| Verdient (ausstehend) | Wenn ein Worker eine Antwort einreicht, werden rewardCredits in das ausstehende Guthaben des Workers verschoben. Die Credits bleiben einbehalten, bis Sie die Antwort geprüft haben. |
| Freigegeben | Wenn Sie eine Antwort akzeptieren, werden die Credits aus dem ausstehenden Guthaben des Workers in sein verfügbares Guthaben übertragen. Die creditsBlocked des Jobs verringern sich um rewardCredits. |
| An Job zurückgegeben | Wenn Sie eine Antwort ablehnen, werden die Credits in den blockierten Pool des Jobs zurückgeführt und der Varianten-Slot wird wieder geöffnet, damit ein anderer Worker ihn bearbeiten kann. |
| An Organisation erstattet | Wenn Sie einen Job archivieren (DELETE), werden alle verbleibenden creditsBlocked vollständig an Ihr Organisationsguthaben zurückgegeben. |
Wenn Sie einen Job so aktualisieren, dass die erforderliche Reservierung steigt — beispielsweise durch Erhöhung von rewardCredits oder maxRepetitionsPerVariant — werden die zusätzlichen Credits sofort von Ihrem Guthaben abgezogen. Verringerungen geben den Überschuss sofort an Ihr Guthaben zurück.
Ihre Organisation muss zum Zeitpunkt der Job-Erstellung über ein ausreichendes Guthaben verfügen, um creditsBlocked zu decken. Ist das Guthaben nicht ausreichend, gibt die API 403 Forbidden zurück und der Job wird nicht erstellt. Laden Sie Ihr Guthaben über den Abrechnungsbereich der Plattform auf, bevor Sie es erneut versuchen.
Einen Job klonen
Beim Klonen wird ein neuer Job erstellt, der die gesamte Konfiguration der Quelle übernimmt — Template-Version, Input-Data-Set, Vergütungseinstellungen, Verfügbarkeitsfenster und Zugriffssteuerungen — während Aufgaben- und Antwortverlauf zurückgesetzt werden. Der Klon startet mit status: assignable.
curl -X POST https://api.crowdee.ai/v2/crowd-jobs/{jobId}/clone \
-H "X-API-Key: crw_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"isDryRun": false,
"name": "Q4 Image Authenticity Review"
}'Sowohl isDryRun als auch name sind optional. Wird isDryRun weggelassen, wird standardmäßig false verwendet. Wird name weggelassen, erhält der Klon den Namen {Originalname} (copy).
Typische Anwendungsfälle für das Klonen:
- Vor dem Launch testen — Klonen Sie einen bestehenden Produktions-Job mit
isDryRun: true, um Template- oder Input-Data-Änderungen zu prüfen, bevor Sie Credits einsetzen. - Eine Kampagne wiederholen — Klonen Sie einen
finished-Job, um ihn mit demselben Template und Input-Data-Set erneut auszuführen, und passen Sie dabei optional das Verfügbarkeitsfenster oder die Vergütung an. - Staging-Spiegel — Pflegen Sie eine Dry-Run-Kopie jedes Produktions-Jobs, um neue interne Prüfer einzuarbeiten, ohne Live-Daten zu berühren.
Das Klonen eines Jobs ohne Dry-Run blockiert sofort Credits für den neuen Job. Stellen Sie sicher, dass Ihr Organisationsguthaben ausreichend ist, bevor Sie den Klon-Endpunkt ohne isDryRun: true aufrufen.
Jobs verwalten
Jobs eines Projekts auflisten — gibt standardmäßig alle nicht archivierten Jobs zurück; übergeben Sie includeArchived=true, um archivierte Jobs einzuschließen, oder status, um nach Lebenszyklusstatus zu filtern:
GET https://api.crowdee.ai/v2/projects/{projectId}/crowd-jobs?status=assignable
X-API-Key: crw_YOUR_API_KEYEinen einzelnen Job abrufen — beinhaltet den live berechneten computedStatus und die abgeleiteten maxSlots:
GET https://api.crowdee.ai/v2/crowd-jobs/{jobId}
X-API-Key: crw_YOUR_API_KEYcomputedStatus spiegelt den tatsächlichen aktuellen Zustand wider — beispielsweise not_assignable, wenn validUntil bereits abgelaufen ist, obwohl das gespeicherte Feld status noch assignable anzeigt. maxSlots entspricht variantCount × maxRepetitionsPerVariant.
Einen Job aktualisieren — jedes schreibbare Feld kann geändert werden, solange der Job nicht archiviert ist. Das Aktualisieren von rewardCredits, maxRepetitionsPerVariant oder inputDataSetId löst eine sofortige Credit-Neuberechnung und Guthabenanpassung aus:
curl -X PUT https://api.crowdee.ai/v2/crowd-jobs/{jobId} \
-H "X-API-Key: crw_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"validUntil": "2026-08-15T18:00:00Z",
"maxRepetitionsPerVariant": 5
}'Einen Job archivieren — entspricht einem Soft-Delete. Alle aktuell zugewiesenen Aufgaben werden abgebrochen, verbleibende blockierte Credits werden an Ihr Organisationsguthaben zurückgegeben, und der Job wechselt zu archived. Diese Aktion ist nicht umkehrbar:
curl -X DELETE https://api.crowdee.ai/v2/crowd-jobs/{jobId} \
-H "X-API-Key: crw_YOUR_API_KEY"Das Archivieren eines Jobs bricht alle laufenden Aufgaben sofort ab. Worker, die sich mitten in einer Aufgabe befinden, verlieren ihre Arbeit. Wenn Sie neue Zuweisungen stoppen möchten, ohne bereits begonnene Aufgaben zu unterbrechen, setzen Sie status zunächst per PUT-Anfrage auf not_assignable und archivieren Sie den Job erst, nachdem alle laufenden Aufgaben eingereicht oder abgelaufen sind.
Job-Statistiken
Der Stats-Endpunkt liefert eine Echtzeit-Aufschlüsselung aller Aufgaben- und Antwortaktivitäten eines Jobs.
GET https://api.crowdee.ai/v2/crowd-jobs/{jobId}/stats
X-API-Key: crw_YOUR_API_KEYDie Response enthält aggregierte Zählwerte und Worker-Detailarrays:
| Feld | Beschreibung |
|---|---|
maxSlots | Gesamtzahl der Aufgabenabschlüsse, die dieser Job akzeptiert (variantCount × maxRepetitionsPerVariant). |
currentlyWorking | Worker mit einer zugewiesenen Aufgabe, die noch nicht eingereicht oder abgelaufen ist. |
submitted | Gesamtanzahl der über alle Worker eingereichten Antworten, unabhängig vom Überprüfungsstatus. |
accepted | Antworten, die Sie akzeptiert haben; Credits wurden an diese Worker freigegeben. |
rejected | Antworten, die Sie abgelehnt haben; diese Varianten-Slots wurden dem Pool zurückgegeben. |
pending | Eingereichte Antworten, die noch nicht geprüft wurden. |
timedOut | Aufgaben, die zugewiesen wurden, aber abgelaufen sind, bevor der Worker sie eingereicht hat. |
cancelled | Aufgaben, die vom Worker oder durch eine Job-Archivierungsoperation abgebrochen wurden. |
returned | Aufgaben-Slots, die nach Antwortablehnung wieder geöffnet wurden — verfügbar zur erneuten Zuweisung. |
Das Objekt workers enthält vier Arrays, in denen individuelle Worker durch workerId (authentifizierte Worker) oder guestWorkerId (Gast-/Magic-Token-Worker) identifiziert werden:
| Array | Inhalt |
|---|---|
workers.started | Aktuell zugewiesene Worker: workerId, guestWorkerId, taskId, assignedAt. |
workers.submitted | Alle Worker, die eine Antwort eingereicht haben: workerId, guestWorkerId, answerId, createdAt. |
workers.cancelled | Worker, deren Aufgaben abgebrochen wurden: workerId, guestWorkerId, taskId, updatedAt. |
workers.timedOut | Worker, deren Aufgaben abgelaufen sind: workerId, guestWorkerId, taskId, expiresAt. |
Eine Beispiel-Response für einen Job mit 60 Gesamt-Slots, der sich mitten in einer Kampagne befindet:
{
"maxSlots": 60,
"currentlyWorking": 4,
"submitted": 38,
"accepted": 31,
"rejected": 3,
"pending": 4,
"timedOut": 2,
"cancelled": 1,
"returned": 0,
"workers": {
"started": [
{ "workerId": "usr_abc", "guestWorkerId": null, "taskId": "tsk_001", "assignedAt": "2026-07-14T09:12:00Z" }
],
"submitted": [...],
"cancelled": [...],
"timedOut": [...]
}
}Wie hilfreich ist diese Seite?
Crowdsourcing-Übersicht
Wie das Crowdsourcing-System von Crowdee funktioniert — sowohl als automatisierte Crowd-Stages in Verifizierungs-Pipelines als auch als direkt veröffentlichte Crowd-Jobs.
Erfassung von Inhalten
Die Crowd nutzen, um Inhalte zu suchen und zu sammeln, die Ihren Kriterien entsprechen, statt bereits vorhandene Inhalte zu überprüfen.