---
title: "Create a project"
method: POST
path: "/api/projects/"
tags: ["Projects"]
---

# Create a project

`POST /api/projects/`

Create a project for a specific organization.

## Request body

- LseProjectCreateRequest — Serializer get numbers from project queryset annotation, make sure, that you use correct one(Project.objects.with_counts())
  - `annotator_evaluation_enabled` boolean — Enable annotator evaluation for the project
  - `color` string, nullable
  - `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
  - `description` string, nullable — Description (Public)
  - `enable_empty_annotation` boolean — Allow annotators to submit empty annotations
  - `evaluate_predictions_automatically` boolean — Retrieve and display predictions when loading a task
  - `expert_instruction` string, nullable — Labeling instructions in HTML format
  - `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 — Label config in XML format. See more about it in documentation
  - `maximum_annotations` integer — Maximum number of annotations for one task. If the number of annotations per task is equal or greater to this value, the task is completed (is_labeled=True)
  - `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
  - `pinned_at` string, date-time, nullable — Pinned date and time
  - `reveal_preannotations_interactively` boolean — Reveal pre-annotations interactively
  - `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 annotation history to annotator
  - `show_collab_predictions` boolean — If set, the annotator can view model predictions
  - `show_ground_truth_first` boolean — Onboarding mode (true): show ground truth tasks first in the labeling stream
  - `show_instruction` boolean — Show instructions to the annotator before they start
  - `show_overlap_first` boolean
  - `show_skip_button` boolean — Show a skip button in interface and allow annotators to skip the task
  - `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 used to create this project.
  - `task_data_login` string, nullable — Task data credentials: login
  - `task_data_password` string, nullable — Task data credentials: password
  - `title` string, nullable — Project Title
  - `use_custom_interface` boolean
  - `workspace` integer — In Workspace

## Response `201`

- LseProjectCreate — Serializer get numbers from project queryset annotation, make sure, that you use correct one(Project.objects.with_counts())
  - `annotator_evaluation_enabled` boolean — Enable annotator evaluation for the project
  - `color` string, nullable
  - `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
  - `description` string, nullable — Description (Public)
  - `enable_empty_annotation` boolean — Allow annotators to submit empty annotations
  - `evaluate_predictions_automatically` boolean — Retrieve and display predictions when loading a task
  - `expert_instruction` string, nullable — Labeling instructions in HTML format
  - `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
  - `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 — Label config in XML format. See more about it in documentation
  - `maximum_annotations` integer — Maximum number of annotations for one task. If the number of annotations per task is equal or greater to this value, the task is completed (is_labeled=True)
  - `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 — Tasks with annotations count
  - `organization` integer, nullable
  - `output_schema` unknown
  - `overlap_cohort_percentage` integer
  - `parsed_label_config` object, required — JSON-formatted labeling configuration
  - `pinned_at` string, date-time, nullable — Pinned date and time
  - `queue_done` integer, required
  - `queue_total` integer, required
  - `reveal_preannotations_interactively` boolean — Reveal pre-annotations interactively
  - `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 annotation history to annotator
  - `show_collab_predictions` boolean — If set, the annotator can view model predictions
  - `show_ground_truth_first` boolean — Onboarding mode (true): show ground truth tasks first in the labeling stream
  - `show_instruction` boolean — Show instructions to the annotator before they start
  - `show_overlap_first` boolean
  - `show_skip_button` boolean — Show a skip button in interface and allow annotators to skip the task
  - `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 — Skipped by collaborators annotation number in project
  - `source_interface_id` integer, nullable
  - `source_interface_version` integer, nullable — Stable version ID of the saved interface used to create this project.
  - `start_training_on_annotation_update` boolean, required — Start model training after any annotations are submitted or updated
  - `state` string, required
  - `task_data_login` string, nullable — Task data credentials: login
  - `task_data_password` string, nullable — Task data credentials: password
  - `task_number` integer, required — Total task number in project
  - `title` string, nullable — Project Title
  - `total_annotations_number` integer, required — Total annotations number in project including skipped_annotations_number and ground_truth_number.
  - `total_predictions_number` integer, required — Total predictions number in project including skipped_annotations_number, ground_truth_number, and useful_annotation_number.
  - `use_custom_interface` boolean
  - `useful_annotation_number` integer, required — Useful annotation number in project not including skipped_annotations_number and ground_truth_number. Total annotations = annotation_number + skipped_annotations_number + ground_truth_number
  - `workspace` integer — In Workspace

---

[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/revisions/1d13f90af57a/schema)
