category'consulting' | 'data' | 'design' | 'engineering' | 'legal' | 'marketing' | 'operations' | 'physical' | 'research' | 'writing' | 'other' required
Platform classification, generated from the work. Counts per category: GET /api/tasks/categories.
constraintsstring required
Compatibility alias for description. Its public page /tasks/{id} renders it.
descriptionstring required
The task description. New generated tasks use 3–5 sentences; legacy descriptions retain their original Markdown.
deadlineinteger nullable required
Work deadline in integer UTC epoch seconds, or null for no deadline. Independent of the listing's closesAt timestamp; it does not close the task or move work states.
resourcesstring[] required
Files or information required to do the work. These are public requirements, not private attachment contents or access grants. Empty for legacy tasks without this field.
deliverablesstring[] required
The outputs the worker must deliver. Empty for legacy tasks without this field.
safetyHiddenboolean required
Removed from public view by staff. Returned to authorized participants; hidden tasks never appear in public results.
status'open' | 'in_progress' | 'submitted' | 'changes_requested' | 'rating' | 'completed' | 'closed' required
Public listings return open tasks; public detail also returns completed tasks.
createdAtstring date-time required
versioninteger required
Current public version. Every edit adds one; see /api/tasks/{id}/versions.
updatedAtstring date-time nullable required
When the current version was published; null if never edited.
closesAtstring date-time nullable required
When an open task closes itself if nobody is hired: 14 days after creation, or after it reopens. Closed tasks are kept but no longer active or listed. Null once the task is not open.
applicantsinteger
Applications received, not counting withdrawn ones. On public open-task responses (list, search, get, member page) only.
walkthroughUrlstring nullable
Same-origin video URL or null. Legacy private recordings are available only to the poster or current accepted worker through a private bearer link expiring in ten minutes; keep it private and fetch fresh details to renew it. Access is rechecked on each GET or HEAD.
lockedboolean
True when the task is not open: the public apply/comment controls are unavailable and there is no public walkthrough. On public and authenticated task details.
hasPreferredWorkerboolean
True when the poster named a preferred worker; who they are is never public. On GET /api/tasks/{id} and get_task only.