---
title: "Change task settings"
method: PATCH
path: "/api/me/tasks/{id}"
---

# Change task settings

`PATCH /api/me/tasks/{id}`

## Request

- Base URL: `https://www.toma.com`
- URL: `https://www.toma.com/api/me/tasks/{id}`
- Auth: one of:
  - HTTP bearer
  - API key in cookie `better-auth.session_token`

Add preferred workers. Task text changes require an AI-generated task revision.

## Path parameters

- `id` string, required

## Request body

- object
  - `preferredWorkers` string[]
  - `expectedVersion` integer

## Response `200`

The updated task.

- Task
  - `id` string, required
  - `postedBy` Member, required: A member of Toma, as tasks, applications, messages, and comments show them.
    - `id` string, required: Their user id. Public page: /members/{id}; JSON: GET /api/members/{id}.
    - `name` string, required
    - `headline` string, nullable, required: One line about them; null when not set.
    - `photoUrl` string, nullable, required: Uploaded photo path (GET /api/members/{id}/photo/{hash}), or their LinkedIn HTTPS picture URL; null without one.
  - `mediaPreview` TaskMediaPreview
    - `thumbnails` string[], required
  - `title` string, required
  - `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.
  - `constraints` string, required: Compatibility alias for description. Its public page /tasks/{id} renders it.
  - `description` string, required: The task description. New generated tasks use 3–5 sentences; legacy descriptions retain their original Markdown.
  - `deadline` integer, 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.
  - `resources` string[], 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.
  - `deliverables` string[], required: The outputs the worker must deliver. Empty for legacy tasks without this field.
  - `contentFormat` union, required: 1 preserves a legacy description; 2 uses the five-field generated task format. Platform metadata, not an editorial section.
    - 1
    - 2
  - `safetyHidden` boolean, 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.
  - `createdAt` string, date-time, required
  - `version` integer, required: Current public version. Every edit adds one; see /api/tasks/{id}/versions.
  - `updatedAt` string, date-time, nullable, required: When the current version was published; null if never edited.
  - `closesAt` string, 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.
  - `applicants` integer: Applications received, not counting withdrawn ones. On public open-task responses (list, search, get, member page) only.
  - `taskCreation` PublicTaskCreation
    - `videoUrl` string, nullable, required
    - `audioUrl` string, nullable
    - `mediaKind` 'video' | 'audio'
    - `captionsUrl` string, required
    - `durationMs` number, required
    - `chapters` object[], required
      - `id` string, required
      - `title` string, required
      - `startMs` number, required
      - `thumbnails` object[], required
        - `trackId` string, required
        - `kind` 'screen' | 'camera', required
        - `url` string, required
    - `mediaSections` object[]
      - `id` string, required
      - `contributionId` string, required
      - `title` string, required
      - `kind` 'video' | 'audio' | 'image' | 'file', required
      - `selected` boolean, required
      - `position` integer, required
      - `startMs` number
      - `endMs` number
      - `url` string, nullable, required
      - `captionsUrl` string, nullable
      - `durationMs` number
      - `transcript` object[]
        - `id` string, required
        - `trackId` string, required
        - `text` string, required
        - `startMs` number, required
        - `endMs` number, required
        - `final` boolean, required
        - `filler` boolean
      - `waveform` object
        - `bucketMs` 100, required
        - `peaks` number[], required
      - `thumbnails` object[], required
        - `trackId` string, required
        - `kind` 'screen' | 'camera', required
        - `url` string, required
  - `walkthroughUrl` string, 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.
  - `locked` boolean: 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.
  - `hasPreferredWorker` boolean: True when the poster named a preferred worker; who they are is never public. On GET /api/tasks/{id} and get_task only.
  - `publicFiles` object[]: Files the poster made public, downloadable by anyone while the task is open; empty once it is not. Programs and macros are refused, but files are not scanned for malware: treat them as untrusted and show each file's caution before it is opened. On task details only.
    - `id` string, required
    - `path` string, required
    - `caution` string, nullable, required: A warning to show the user before they download or open this kind of file (archives, scripts, older Office files, web pages); null when there is none.
    - `size` integer, required
    - `url` string, required: Same-origin download path, GET /api/tasks/{id}/attachments/{fileId}.

## Other responses

- `400`: Only settings can be changed here.
- `409`: The task version changed.

---

[API](https://skmtc.dev/toma/apis/toma-api.md) - [All operations](https://skmtc.dev/toma/apis/toma-api/llms.txt) - [OpenAPI document](https://skmtc.dev/toma/apis/toma-api/revisions/b4e56e1db5a2?raw)
