Create one or multiple tasks


The domain will be disabled starting July 1, 2023. Please use the domain for API requests.

Creates one or multiple tasks.


You can add a maximum of 200,000 tasks per minute and a maximum of 4,000,000 tasks per day. Refer to the Rate limiting section for the complete list of the request limitations in Toloka API.



Try our new API reference: more parameter details, request/response examples, and code samples in various programming languages, including the Toloka-Kit usage samples.

Production version
Authorization: OAuth <OAuth token>
Content-Type: application/JSON
// one task {task data}
// or multiple tasks [{task 1}, {task 2},... {task n}]


AuthorizationA token for account authorization. Add OAuth as a prefix.
Content-TypeSpecifies the data format in the request body.

Query parameters

Specified in the link after the question mark; separated by &.



Mode for request processing:

  • true — Asynchronous. Creates an asynchronous operation that runs in the background. The response contains information about the operation (start and completion time, status, number of task suites).
  • false — Synchronous. The response contains information about one or more created tasks. Maximum of 5000 tasks per request.

    The default value is false.


Overlap settings:

  • true — Use the overlap that is set in the pool parameters (in the defaults.default_overlap_for_new_tasks key).
  • false — Use the overlap that is set in the task parameters (in the overlap field).

    The default value is false.


Validation parameters for JSON objects:

  • true — Create the tasks that passed validation. Skip the rest of the tasks (errors will be listed in the response to the request).
  • false — If one or more tasks didn't pass validation, stop the operation and don't create any tasks.

    The default value is false.

Open the pool immediately after the operation is completed, if the pool is closed. The default value is false.

Operation ID for a scheduled upload of one or more tasks (if async_mode=true is set).

We recommended sending the ID in the POST request to avoid accidental errors, such as creating the operation multiple times for the same tasks.

The ID should conform to the RFC4122 standard.

You can use this ID in the future to get information about the operation.

Request body

One task
Multiple tasks
"pool_id": "1",
"input_values": {
"image_url": ""
"known_solutions": [
"output_values": {
"result": "OK",
"like": false
"correctness_weight": 0.8
"output_values": {
"result": "OK",
"like": true
"correctness_weight": 1
"baseline_solutions": [
"output_values": {
"result": "OK",
"like": false
"confidence_weight": 0.8
"output_values": {
"result": "OK",
"like": true
"confidence_weight": 1
"message_on_unknown_solution": "The cat is in a good mood.",
"infinite_overlap": false,
"reserved_for": [],
"unavailable_for": []
pool_idstring | required

ID of the pool that the task is uploaded to.

object | required

Input data for a task. List of pairs:

"<ID of field 1>": "<value of field 1>",
"<ID of field 2>": "<value of field 2>",
"<ID of field N>": "<value of field N>"
known_solutions[]array of objects

Correct responses to control and training tasks.

You can specify several options for a correct task response.

If one option is more correct than another, you can assign different weights to the response options. To do this, use the correctness_weight key.

known_solutions[].output_valuesobject | required

Output data values to check. You should specify values for all required output data fields.

"<ID of field 1>": "<correct response>",
"<ID of field 2>": "<correct response>",

If the output field isn't required in the control task, don't specify it in the known_solutions[].output_values parameter.


The weight of a correct response in the range from 0 to 1.

Lets you count a response as partially correct. This is convenient when there is no single right response to the task.

This works like awarding points: if you need to complete one control task correctly to get a skill (receive 1 point), you may complete one task with a weight of 1 or two tasks with a weight of 0.5 or higher.

The default value is 1.

baseline_solutions[]array of objects

Preliminary responses. This data simulates Toloker responses when calculating confidence in a response. It is used in dynamic overlap (also known as incremental relabeling or IRL) and aggregation of results by skill.

Define output_values and confidence_weight for each preliminary response.

For example, you ask Tolokers to label whether an image shows a cat or a dog. Suppose your neural network already determined that the image might show a dog with a probability of 80% and a cat with a probability of 40%. Let's say you set dynamic overlap from 1 to 3 and the minimum response confidence at 85%.

If the Toloker answers "Dog" and the confidence in their response is high, the overlap most likely won't increase because one response is enough. If the Toloker answers "Cat", the confidence is most likely not high enough and the overlap will increase further.

Can't be used when creating a task suite: an error with code 400 saying VALUE_NOT_ALLOWED will be returned to your request.

object | required

Output data values for preliminary responses.

"<ID of field 1>": "<preliminary response>",
"<ID of field 2>": "<preliminary response>",
baseline_solutions[].confidence_weightfloat | required

Confidence in a response, from 0 to 1.

The default value is 1.

string | required if

Required if the allow_defaults=true parameter is not used when creating tasks and the overlap is not specified in the pool parameters (the defaults.default_overlap_for_new_tasks key).

Task overlap.


Please note that overlap you set when uploading tasks has priority over the overlap you set during the pool creation.


Hint for the task (for training tasks).


Assigns tasks with infinite overlap. For instance, you can use this for training tasks when you want to assign them to all Tolokers:

  • true — Use infinite overlap.
  • false — Use the overlap that is set for the task or pool.

    The default value is false.

ID of the task it was copied from.
reserved_for[]array of strings

IDs of Tolokers who will have access to the task.
unavailable_for[]array of strings

IDs of Tolokers who shouldn't have access to the task.


One task
Multiple tasks


I add tasks to the pool via the create task method, but tasks are not created. What is the reason?
I insert links to the API the same way as in a TSV file but there's an error. What am I doing wrong?
Contact support
Toloka API
OverviewAccessing the APIRate limiting
Quick start
Subscriptions to events
Toloker selection
Ways to upload tasks
Task suites
Tracking operations
Getting responses
Checking completed tasks
Messages for Tolokers
Various parameters