# Delete a queue entry

`DELETE https://stylor.ai/api/v1/datasets/{datasetId}/items/queue/{itemId}`

- Authentication: private API key, sent as `Authorization: Bearer sgpt-sk-…::…`
- Rate-limit resource: `api.v1.datasets.items.queue.delete`
- Demo key: not accepted
- Web page: https://stylor.ai/guides/rest/v1/delete-queue-item

Removes an entry from the ingest queue. Deleting a `pending` entry
stops it from being processed. Deleting a `complete` or `failed` entry
means the next upload of that SKU is queued as a new product and fully
processed, rather than updating this entry.

Deleting a queue entry never removes a processed item — use the item
delete endpoint for that. An entry that is currently `processing` may
still produce an item if the worker finishes before the delete lands.

## Example request

```bash
curl -X DELETE "https://stylor.ai/api/v1/datasets/YOUR_DATASET_ID/items/queue/YOUR_ITEM_ID" \
  -H "Authorization: Bearer $STYLOR_API_KEY"
```

## Path parameters

- `datasetId` (string (uuid), required): The dataset's id, as returned when it was created.
- `itemId` (string (uuid), required): The queue entry's `itemId`.

## Responses

### 200

The queue entry was deleted.

Content type `application/json`:

- `ok` (boolean, required): Always `true` on a successful delete. [example `true`]
- `deletedCount` (integer, required): Number of records removed. Always `1`; a miss is reported as an error instead. [example `1`]

Example:

```json
{
  "ok": true,
  "deletedCount": 1
}
```

## Errors

Every error is a JSON object with an `error` string. Match on the status code; the message is written for people.

| Status | Message | When |
| --- | --- | --- |
| 401 | Organization not found. Verify the organizationId. | The organization encoded in the API key no longer exists. |
| 404 | Dataset not found for this organization. | No dataset with this `datasetId` belongs to the key's organization. |
| 404 | Queued item not found for the given dataset and organization. | The dataset's queue holds no entry with this `itemId`, or it was already deleted. |

### Shared authentication, quota and rate-limit errors

| Status | Message | When |
| --- | --- | --- |
| 401 | API key missing. | The `Authorization` header is absent, is not `Bearer <key>`, or the key does not have three dash-separated segments. |
| 401 | Authentication failed: public key is invalid or not recognized. | A public-key endpoint was called with a key that does not exist. |
| 401 | Authentication failed: private key provided instead of a public key. | A public-key endpoint was called with an `sgpt-sk-…` key. |
| 401 | Authentication failed: token is not recognized. | A private-key endpoint was called with a key whose lookup segment does not exist. |
| 401 | Authentication failed: private key is invalid. | A private-key endpoint was called with a key whose secret does not match. |
| 401 | Authentication failed: public key provided instead of a private key. | A private-key endpoint was called with an `sgpt-pk-…` key. |
| 401 | Authentication failed: bearer token format is invalid. | A private key was sent without its `::` lookup segment. |
| 401 | Authentication failed: API key could not be read. Regenerate the key. | The key's embedded organization data could not be decrypted or parsed. |
| 403 | Demo mode is not available for private-key routes. Demos are only supported with public API keys. | The demo key was sent to a private-key endpoint. |
| 403 | Demo mode is not supported on this API route. Check the documentation for available demo endpoints. | The demo key was sent to a public-key endpoint that opts out of demo mode. |
| 403 | No active subscription for this organization. | The organization that owns the key has no active subscription. |
| 403 | No quota found for organization "<organizationId>". | The organization has no quota record for the current billing period. |
| 403 | No entitlement for "<resource>". | The plan's quota template has no entry for this endpoint. |
| 403 | Access denied to "<resource>". | The plan's quota template turns this endpoint off. |
| 429 | Monthly quota exceeded for "<resource>" (<quota>/<quota> used). | The billing-period quota for this endpoint is exhausted. `Retry-After` gives the seconds until the period resets. |
| 429 | RPM limit exceeded for "<resource>" (<used>/<limit> used). | More than the allowed requests per minute were sent. `Retry-After` is 60. |
| 500 | Internal server error. | An unexpected failure on the server. The message is always this string; details are logged, never returned. Quota consumed by the request is refunded, as it is for every 5xx response. |
