# Add requests


```
POST 
https://api.apify.com/v2/request-queues/:queueId/requests/batch
```


Adds requests to the queue in batch. The maximum requests in batch is limit to 25. The response contains an array of unprocessed and processed requests. If any add operation fails because the request queue rate limit is exceeded or an internal failure occurs, the failed request is returned in the unprocessedRequests response parameter. You can resend these requests to add. It is recommended to use exponential backoff algorithm for these retries. If a request with the same `uniqueKey` was already present in the queue, then it returns an ID of the existing request.

## Request

### Path Parameters

* **queueId** string required

  Queue ID or `username~queue-name`.

  **Example:** `WkzbQMuFYuamGv3YF`

### Query Parameters

* **clientKey** string

  A unique identifier of the client accessing the request queue. It must be a string between 1 and 32 characters long. This identifier is used to determine whether the queue was accessed by multiple clients. If `clientKey` is not provided, the system considers this API call to come from a new client. For details, see the `hadMultipleClients` field returned by the  operation.

  **Example:** `client-abc`

  **forefront** string

  Determines if request should be added to the head of the queue or to the end. Default value is `false` (end of queue).

  **Example:** `false`

### Body array**required**

* **id** string

  A unique identifier assigned to the request.

  **Example:** `sbJ7klsdf7ujN9l`

* **uniqueKey** string required

  A unique key used for request de-duplication. Requests with the same unique key are considered identical.

  **Example:** `GET|60d83e70|e3b0c442|https://apify.com`

* **url** string\<uri> required

  The URL of the request.

  **Example:** `https://apify.com`

* **method** string required

  The HTTP method of the request.

  **Example:** `GET`

### Status 201

**Response Headers**




```
{
  "data": {
    "processedRequests": [
      {
        "requestId": "YiKoxjkaS9gjGTqhF",
        "uniqueKey": "http://example.com",
        "wasAlreadyPresent": true,
        "wasAlreadyHandled": false
      }
    ],
    "unprocessedRequests": [
      {
        "uniqueKey": "http://example.com/2",
        "url": "http://example.com/2",
        "method": "GET"
      }
    ]
  }
}
```


**Schema**

* **data** object required

  Result of a batch add operation containing successfully processed and failed requests.

  * **processedRequests** object\[] required

    Requests that were successfully added to the request queue.

    * **requestId** string required

      A unique identifier assigned to the request.

      **Example:** `sbJ7klsdf7ujN9l`

    * **uniqueKey** string required

      A unique key used for request de-duplication. Requests with the same unique key are considered identical.

      **Example:** `GET|60d83e70|e3b0c442|https://apify.com`

    * **wasAlreadyPresent** boolean required

      Indicates whether a request with the same unique key already existed in the request queue. If true, no new request was created.

      **Example:** `false`

    * **wasAlreadyHandled** boolean required

      Indicates whether a request with the same unique key has already been processed by the request queue.

      **Example:** `false`

  * **unprocessedRequests** object\[] required

    Requests that failed to be added and can be retried.

    * **id** string

      A unique identifier assigned to the request.

      **Example:** `sbJ7klsdf7ujN9l`

    * **uniqueKey** string required

      A unique key used for request de-duplication. Requests with the same unique key are considered identical.

      **Example:** `GET|60d83e70|e3b0c442|https://apify.com`

    * **url** string\<uri> required

      The URL of the request.

      **Example:** `https://apify.com`

    * **method** string required

      The HTTP method of the request.

      **Example:** `GET`

### Status 400

Bad request - invalid input parameters or request body.


```
{
  "error": {
    "type": "invalid-input",
    "message": "Invalid input: The request body contains invalid data."
  }
}
```


**Schema**

* **error** object required

  * **type** string required\
    **Example:** `run-failed`
  * **message** string required\
    **Example:** `Actor run did not succeed (run ID: 55uatRrZib4xbZs, status: FAILED)`

### Status 401

Unauthorized - authentication required or invalid token.


```
{
  "error": {
    "type": "token-not-valid",
    "message": "Authentication token is not valid."
  }
}
```


**Schema**

* **error** object required

  * **type** string required\
    **Example:** `run-failed`
  * **message** string required\
    **Example:** `Actor run did not succeed (run ID: 55uatRrZib4xbZs, status: FAILED)`

### Status 403

Forbidden - insufficient permissions to perform this action.


```
{
  "error": {
    "type": "permission-denied",
    "message": "You do not have permission to perform this action."
  }
}
```


**Schema**

* **error** object required

  * **type** string required\
    **Example:** `run-failed`
  * **message** string required\
    **Example:** `Actor run did not succeed (run ID: 55uatRrZib4xbZs, status: FAILED)`

### Status 404

Not found - the requested resource was not found.


```
{
  "error": {
    "type": "record-not-found",
    "message": "Request Queue was not found"
  }
}
```


**Schema**

* **error** object

  * **type** string

    **Possible values:** \[`record-not-found`]

  * **message** string\
    **Example:** `Request Queue was not found`

### Status 405

Method not allowed.


```
{
  "error": {
    "type": "method-not-allowed",
    "message": "This API end-point can only be accessed using the following HTTP methods: OPTIONS,GET"
  }
}
```


**Schema**

* **error** object required

  * **type** string required\
    **Example:** `run-failed`
  * **message** string required\
    **Example:** `Actor run did not succeed (run ID: 55uatRrZib4xbZs, status: FAILED)`

### Status 413

Payload too large - the request body exceeds the size limit.


```
{
  "error": {
    "type": "request-too-large",
    "message": "The POST payload is too large (limit: 9437184 bytes, actual length: 10485760 bytes)."
  }
}
```


**Schema**

* **error** object required

  * **type** string required\
    **Example:** `run-failed`
  * **message** string required\
    **Example:** `Actor run did not succeed (run ID: 55uatRrZib4xbZs, status: FAILED)`

### Status 415

Unsupported media type - the Content-Encoding of the request is not supported.


```
{
  "error": {
    "type": "unsupported-content-encoding",
    "message": "Content-Encoding \"bla\" is not supported."
  }
}
```


**Schema**

* **error** object required

  * **type** string required\
    **Example:** `run-failed`
  * **message** string required\
    **Example:** `Actor run did not succeed (run ID: 55uatRrZib4xbZs, status: FAILED)`

### Status 429

Too many requests - rate limit exceeded.


```
{
  "error": {
    "type": "rate-limit-exceeded",
    "message": "You have exceeded the rate limit. Please try again later."
  }
}
```


**Schema**

* **error** object required

  * **type** string required\
    **Example:** `run-failed`
  * **message** string required\
    **Example:** `Actor run did not succeed (run ID: 55uatRrZib4xbZs, status: FAILED)`
