---
title: "Update project details"
method: PATCH
path: "/api/projects/{id}/"
tags: ["Projects"]
---

# Update project details

`PATCH /api/projects/{id}/`

Update the details of a specific project.

## Path parameters

- `id` integer, required

## Query parameters

- `members_limit` integer

## Request body

- PatchedLseProjectUpdateRequest — Serializer get numbers from project queryset annotation, make sure, that you use correct one(Project.objects.with_counts())
  - `agreement_methodology` 'consensus' | 'pairwise' — * `consensus` - Consensus * `pairwise` - Pairwise Averaging
  - `agreement_threshold` string, decimal, nullable — Agreement threshold
  - `annotation_limit_count` integer, nullable — Limit by number of tasks
  - `annotation_limit_percent` string, decimal, nullable — Limit by percentage of tasks
  - `annotator_evaluation_continuous_tasks` integer — Continuous Evaluation: Required tasks
  - `annotator_evaluation_enabled` boolean — Evaluate all annotators against ground truth
  - `annotator_evaluation_metric` 'gt_agreement' | 'acceptance_score' | 'rejection_rate' — * `gt_agreement` - Ground truth agreement * `acceptance_score` - Acceptance score * `rejection_rate` - Rejection rate
  - `annotator_evaluation_minimum_score` string, decimal, nullable — Score required to pass evaluation
  - `annotator_evaluation_minimum_tasks` integer, nullable — Number of tasks for evaluation
  - `annotator_evaluation_onboarding_tasks` integer — Onboarding Evaluation: Required tasks
  - `assignment_settings` AssignmentSettingsRequest
    - `label_stream_task_distribution` 'auto_distribution' | 'assigned_only' — * `auto_distribution` - Label Stream distributes tasks automatically to annotators * `assigned_only` - Label Stream shows tasks only to assigned users
    - `project` integer, nullable
  - `color` string, nullable — Color
  - `comment_classification_config` string
  - `control_weights` object, nullable — Dict of weights for each control tag in metric calculation. Keys are control tag names from the labeling config. At least one tag must have a non-zero overall weight.
  - `created_by` UserSimpleRequest — A ModelSerializer that takes additional arguments for "fields", "omit" and "expand" in order to control which fields are displayed, and whether to replace simple values with complex, nested serializations
    - `email` string, email
    - `first_name` string
    - `last_name` string
    - `username` string, required
  - `custom_interface_code` string, nullable
  - `custom_interface_compiled` string, nullable
  - `custom_interface_params` unknown
  - `custom_script` string — Plugins
  - `custom_task_lock_ttl` integer, nullable — Task reservation time. TTL in seconds (UI displays and edits this value in minutes).
  - `description` string, nullable — Description (Public)
  - `enable_empty_annotation` boolean — Allow empty annotations
  - `evaluate_predictions_automatically` boolean — Retrieve and display predictions when loading a task
  - `expert_instruction` string, nullable — Instructions
  - `input_schema` unknown
  - `internal_description` unknown
  - `is_draft` boolean — Whether or not the project is in the middle of being created
  - `is_published` boolean — Whether or not the project is published to annotators
  - `label_config` string, nullable — Labeling Configuration
  - `max_additional_annotators_assignable` integer, nullable — Maximum additional annotators
  - `maximum_annotations` integer — Annotations per task
  - `min_annotations_to_start_training` integer — Minimum number of completed tasks after which model training is started
  - `model_version` string, nullable — Machine learning model version
  - `organization` integer, nullable
  - `output_schema` unknown
  - `overlap_cohort_percentage` integer — Annotations per task coverage
  - `pause_on_failed_annotator_evaluation` boolean, nullable — Pause annotator on failed evaluation
  - `pinned_at` string, date-time, nullable — Pinned date and time
  - `require_comment_on_skip` boolean — Require comment to skip
  - `reveal_preannotations_interactively` boolean — Reveal pre-annotations interactively
  - `review_settings` ReviewSettingsRequest
    - `annotator_batch_percent` string, decimal — Percent of an annotator’s work to review before moving to another annotator
    - `anonymize_annotations` boolean — Hide annotator names from annotations while review
    - `instruction` string, nullable — Instructions
    - `only_finished_tasks` boolean — Show only finished tasks in the review stream
    - `project` integer, nullable
    - `requeue_rejected_tasks_mode` 'requeue' | 'remove' | 'flexible' — * `requeue` - Requeue * `remove` - Remove * `flexible` - Flexible
    - `require_comment_on_reject` boolean — Reviewers must leave a comment on reject
    - `review_criteria` 'all' | 'one' — * `all` - Task is reviewed if all annotations are reviewed * `one` - Task is reviewed if at least one annotation is reviewed
    - `review_only_manual_assignments` boolean — Show only manually assigned tasks in the review stream
    - `review_task_limit_percent` string, decimal, nullable — Task limit (%)
    - `sampling` 'task_id' | 'random' | 'by_annotator' — * `task_id` - By Task ID * `random` - Random * `by_annotator` - By Annotator
    - `show_agreement_to_reviewers` boolean — Show agreement to reviewers in the Data Manager
    - `show_data_manager_to_reviewers` boolean — Show the Data Manager to reviewers
    - `show_instruction` boolean — Show before reviewing
    - `show_unused_data_columns_to_reviewers` boolean, nullable — Show unused task data columns to reviewers in the Data Manager
  - `sampling` 'Sequential sampling' | 'Uniform sampling' | 'Uncertainty sampling' — * `Sequential sampling` - Tasks are ordered by Data manager ordering * `Uniform sampling` - Tasks are chosen randomly * `Uncertainty sampling` - Tasks are chosen according to model uncertainty scores (active learning mode)
  - `show_annotation_history` boolean — Show Data Manager to Annotators
  - `show_collab_predictions` boolean — Use predictions to pre-label Tasks
  - `show_ground_truth_first` boolean — Onboarding mode (true): show ground truth tasks first in the labeling stream
  - `show_instruction` boolean — Show instructions before labeling
  - `show_overlap_first` boolean — Show tasks with overlap first
  - `show_skip_button` boolean — Allow skipping tasks
  - `show_unused_data_columns_to_annotators` boolean, nullable — Show only columns used in labeling configuration to Annotators. API uses inverse field semantics here: set false to show only used columns, set true to show all task.data columns.
  - `skip_queue` 'REQUEUE_FOR_ME' | 'REQUEUE_FOR_OTHERS' | 'IGNORE_SKIPPED' — * `REQUEUE_FOR_ME` - Requeue for me * `REQUEUE_FOR_OTHERS` - Requeue for others * `IGNORE_SKIPPED` - Ignore skipped
  - `source_interface_id` integer, nullable
  - `source_interface_version` integer, nullable — Stable version ID of the saved interface snapshot used by this project.
  - `strict_task_overlap` boolean — Enforce strict overlap limit
  - `task_data_login` string, nullable — Login
  - `task_data_password` string, nullable — Password
  - `title` string, nullable — Project Name
  - `use_custom_interface` boolean
  - `workspace` integer — Workspace

## Response `200`

- LseProjectResponse — Serializer for project response, combining all the serializers for different roles. Don't use it except for Spectacular/Fern definitions.
  - `agreement_methodology` 'consensus' | 'pairwise' — * `consensus` - Consensus * `pairwise` - Pairwise Averaging
  - `agreement_threshold` string, decimal, nullable — Agreement threshold
  - `allow_stream` boolean, required
  - `annotation_limit_count` integer, nullable — Limit by number of tasks
  - `annotation_limit_percent` string, decimal, nullable — Limit by percentage of tasks
  - `annotator_evaluation_continuous_tasks` integer — Continuous Evaluation: Required tasks
  - `annotator_evaluation_enabled` boolean — Evaluate all annotators against ground truth
  - `annotator_evaluation_metric` 'gt_agreement' | 'acceptance_score' | 'rejection_rate' — * `gt_agreement` - Ground truth agreement * `acceptance_score` - Acceptance score * `rejection_rate` - Rejection rate
  - `annotator_evaluation_minimum_score` string, decimal, nullable — Score required to pass evaluation
  - `annotator_evaluation_minimum_tasks` integer, nullable — Number of tasks for evaluation
  - `annotator_evaluation_onboarding_tasks` integer — Onboarding Evaluation: Required tasks
  - `assignment_settings` AssignmentSettings, required
    - `id` integer, required
    - `label_stream_task_distribution` 'auto_distribution' | 'assigned_only' — * `auto_distribution` - Label Stream distributes tasks automatically to annotators * `assigned_only` - Label Stream shows tasks only to assigned users
    - `project` integer, nullable
  - `color` string, nullable — Color
  - `comment_classification_config` string
  - `config_has_control_tags` boolean, required — Flag to detect is project ready for labeling
  - `config_suitable_for_bulk_annotation` boolean, required — Flag to detect is project ready for bulk annotation
  - `control_weights` object, nullable — Dict of weights for each control tag in metric calculation. Keys are control tag names from the labeling config. At least one tag must have a non-zero overall weight.
  - `created_at` string, date-time, required
  - `created_by` UserSimple — A ModelSerializer that takes additional arguments for "fields", "omit" and "expand" in order to control which fields are displayed, and whether to replace simple values with complex, nested serializations
    - `avatar` string, nullable, required
    - `email` string, email
    - `first_name` string
    - `id` integer, required
    - `last_name` string
    - `username` string, required
  - `custom_interface_code` string, nullable
  - `custom_interface_compiled` string, nullable
  - `custom_interface_params` unknown
  - `custom_script` string — Plugins
  - `custom_task_lock_ttl` integer, nullable — Task reservation time. TTL in seconds (UI displays and edits this value in minutes).
  - `data_types` object, nullable, required
  - `description` string, nullable — Description (Public)
  - `duplication_done` boolean
  - `duplication_status` string
  - `enable_empty_annotation` boolean — Allow empty annotations
  - `evaluate_predictions_automatically` boolean — Retrieve and display predictions when loading a task
  - `expert_instruction` string, nullable — Instructions
  - `finished_task_number` integer, required — Finished tasks
  - `ground_truth_number` integer, required — Honeypot annotation number in project
  - `id` integer, required
  - `input_schema` unknown
  - `internal_description` unknown[], nullable, required — Description (Internal)
    - unknown
  - `is_dimensions_enabled` boolean, required
  - `is_draft` boolean — Whether or not the project is in the middle of being created
  - `is_published` boolean — Whether or not the project is published to annotators
  - `label_config` string, nullable — Labeling Configuration
  - `max_additional_annotators_assignable` integer, nullable — Maximum additional annotators
  - `maximum_annotations` integer — Annotations per task
  - `members` object[], required
  - `members_count` integer, required
  - `min_annotations_to_start_training` integer — Minimum number of completed tasks after which model training is started
  - `model_version` string, nullable — Machine learning model version
  - `num_tasks_with_annotations` integer, required
  - `organization` integer, nullable
  - `output_schema` unknown
  - `overlap_cohort_percentage` integer — Annotations per task coverage
  - `parsed_label_config` object, required — JSON-formatted labeling configuration
  - `pause_on_failed_annotator_evaluation` boolean, nullable — Pause annotator on failed evaluation
  - `permissions` string[], required
  - `pinned_at` string, date-time, nullable — Pinned date and time
  - `prompts` object[], nullable, required
  - `queue_done` integer, required
  - `queue_left` integer, required
  - `queue_total` integer, required
  - `ready` boolean, required
  - `rejected` integer, required
  - `require_comment_on_skip` boolean — Require comment to skip
  - `reveal_preannotations_interactively` boolean — Reveal pre-annotations interactively
  - `review_settings` ReviewSettings, required
    - `annotator_batch_percent` string, decimal — Percent of an annotator’s work to review before moving to another annotator
    - `anonymize_annotations` boolean — Hide annotator names from annotations while review
    - `id` integer, required
    - `instruction` string, nullable — Instructions
    - `only_finished_tasks` boolean — Show only finished tasks in the review stream
    - `project` integer, nullable
    - `requeue_rejected_tasks_mode` 'requeue' | 'remove' | 'flexible' — * `requeue` - Requeue * `remove` - Remove * `flexible` - Flexible
    - `requeue_rejected_tasks_to_annotator` boolean, required
    - `require_comment_on_reject` boolean — Reviewers must leave a comment on reject
    - `review_criteria` 'all' | 'one' — * `all` - Task is reviewed if all annotations are reviewed * `one` - Task is reviewed if at least one annotation is reviewed
    - `review_only_manual_assignments` boolean — Show only manually assigned tasks in the review stream
    - `review_task_limit_percent` string, decimal, nullable — Task limit (%)
    - `sampling` 'task_id' | 'random' | 'by_annotator' — * `task_id` - By Task ID * `random` - Random * `by_annotator` - By Annotator
    - `show_agreement_to_reviewers` boolean — Show agreement to reviewers in the Data Manager
    - `show_data_manager_to_reviewers` boolean — Show the Data Manager to reviewers
    - `show_instruction` boolean — Show before reviewing
    - `show_unused_data_columns_to_reviewers` boolean, nullable — Show unused task data columns to reviewers in the Data Manager
  - `review_total_tasks` integer, required
  - `reviewed_number` integer, required
  - `reviewer_queue_total` integer, required
  - `sampling` 'Sequential sampling' | 'Uniform sampling' | 'Uncertainty sampling' — * `Sequential sampling` - Tasks are ordered by Data manager ordering * `Uniform sampling` - Tasks are chosen randomly * `Uncertainty sampling` - Tasks are chosen according to model uncertainty scores (active learning mode)
  - `show_annotation_history` boolean — Show Data Manager to Annotators
  - `show_collab_predictions` boolean — Use predictions to pre-label Tasks
  - `show_ground_truth_first` boolean — Onboarding mode (true): show ground truth tasks first in the labeling stream
  - `show_instruction` boolean — Show instructions before labeling
  - `show_overlap_first` boolean — Show tasks with overlap first
  - `show_skip_button` boolean — Allow skipping tasks
  - `show_unused_data_columns_to_annotators` boolean, nullable — Show only columns used in labeling configuration to Annotators. API uses inverse field semantics here: set false to show only used columns, set true to show all task.data columns.
  - `skip_queue` 'REQUEUE_FOR_ME' | 'REQUEUE_FOR_OTHERS' | 'IGNORE_SKIPPED' — * `REQUEUE_FOR_ME` - Requeue for me * `REQUEUE_FOR_OTHERS` - Requeue for others * `IGNORE_SKIPPED` - Ignore skipped
  - `skipped_annotations_number` integer, required
  - `source_interface_id` integer, nullable
  - `source_interface_version` integer, nullable — Stable version ID of the saved interface snapshot used by this project.
  - `start_training_on_annotation_update` boolean, required — Start model training after any annotations are submitted or updated
  - `state` string, required
  - `strict_task_overlap` boolean — Enforce strict overlap limit
  - `task_data_login` string, nullable — Login
  - `task_data_password` string, nullable — Password
  - `task_number` integer, required — Total task number in project
  - `title` string, nullable — Project Name
  - `total_annotations_number` integer, required
  - `total_predictions_number` integer, nullable, required
  - `use_custom_interface` boolean
  - `useful_annotation_number` integer, nullable, required
  - `workspace` integer, required
  - `workspace_title` string, nullable, required

---

[API](https://skmtc.net/humansignal/apis/label-studio-api.md) · [All operations](https://skmtc.net/humansignal/apis/label-studio-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/humansignal/label-studio-api/versions/1b113b8df950/schema)
