---
title: "Update request"
method: PUT
path: "/v2/request-queues/{queueId}/requests/{requestId}"
tags: ["Storage/Request queues/Requests"]
---

# Update request

`PUT /v2/request-queues/{queueId}/requests/{requestId}`

Updates a request in a queue. Mark request as handled by setting
`request.handledAt = new Date()`.
If `handledAt` is set, the request will be removed from head of the queue (and unlocked, if applicable).

## Path parameters

- `queueId` string, required
- `requestId` string, required

## Query parameters

- `forefront` string
- `clientKey` string

## Request body

- RequestWithoutId
  - `uniqueKey` string, required — A unique key used for request de-duplication. Requests with the same unique key are considered identical.
  - `url` string, required — The URL of the request.
  - `method` 'GET' | 'HEAD' | 'POST' | 'PUT' | 'DELETE' | 'CONNECT' | 'OPTIONS' | 'TRACE' | 'PATCH'
  - `retryCount` integer — The number of times this request has been retried.
  - `loadedUrl` string, nullable — The final URL that was loaded, after redirects (if any).
  - `payload` union — The request payload, typically used with POST or PUT requests.
    - string
    - object
  - `headers` object, nullable — HTTP headers sent with the request.
  - `userData` RequestUserData — Custom user data attached to the request. Can contain arbitrary fields.
  - `noRetry` boolean, nullable — Indicates whether the request should not be retried if processing fails.
  - `errorMessages` string[], nullable — Error messages recorded from failed processing attempts.
  - `handledAt` string, date-time, nullable — The timestamp when the request was marked as handled, if applicable.

## Response `200`

- UpdateRequestResponse — Response containing the result of updating a request in the request queue.
  - `data` RequestRegistration, required — Result of registering a request in the request queue, either by adding a new request or updating an existing one.
    - `requestId` string, required — A unique identifier assigned to the request.
    - `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.
    - `wasAlreadyHandled` boolean, required — Indicates whether a request with the same unique key has already been processed by the request queue.

## Other responses

- `400` — Bad request - invalid input parameters or request body.
- `401` — Unauthorized - authentication required or invalid token.
- `403` — Forbidden - insufficient permissions to perform this action.
- `404` — Not found - the requested resource does not exist.
- `405` — Method not allowed.
- `413` — Payload too large - the request body exceeds the size limit.
- `415` — Unsupported media type - the Content-Encoding of the request is not supported.
- `429` — Too many requests - rate limit exceeded.

## Changes

> 7 revisions in range; 5 could not be searched.

- **2026-07-26** `b94a8abdfff1` — 8 warning
  - added the new `cannot-monetize-without-payout-billing-info` enum value to the `error/type` response property for the response status `400`
  - added the new `cannot-monetize-without-payout-billing-info` enum value to the `error/type` response property for the response status `401`
  - added the new `cannot-monetize-without-payout-billing-info` enum value to the `error/type` response property for the response status `403`
  - added the new `cannot-monetize-without-payout-billing-info` enum value to the `error/type` response property for the response status `404`
  - …4 more

[Change history](https://skmtc.dev/apify/apis/apify-api/changes/v2/request-queues/:queueId/requests/:requestId/put.md)

---

[API](https://skmtc.dev/apify/apis/apify-api.md) · [All operations](https://skmtc.dev/apify/apis/apify-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/apify/apify-api/revisions/0a98d6a098a4/schema)
