> Portal Navigation:
> 
> - Append `.md` to any URL under `https://dev.wix.com/docs/` to get its markdown version.
> - Pages are either content pages (article or reference text) or menu pages (a list of links to child pages).
> - To get a menu page, truncate any URL to a parent path and append `.md` (e.g. `https://dev.wix.com/docs/sdk.md`, `https://dev.wix.com/docs/sdk/core-modules.md`).
> - Top-level index of all portals: https://dev.wix.com/docs/llms.txt
> - Full concatenated docs: https://dev.wix.com/docs/llms-full.txt

# BulkDeleteRedirects

# Package: redirects

# Namespace: RedirectsService

# Method link: https://dev.wix.com/docs/api-reference/business-management/seo/redirects/redirect-v1/bulk-delete-redirects.md

## Permission Scopes:
Manage SEO Settings: SCOPE.PROMOTE.MANAGE-SEO

## Introduction

Deletes up to 500 redirects by ID.

Each ID succeeds or fails on its own. An ID that matches no redirect on the site fails with
`REDIRECT_NOT_FOUND` while the rest of the request goes ahead. Read those failures from
`results[].itemMetadata.error` in a successful response, matched to the request by
`results[].itemMetadata.originalIndex`. A malformed request, such as an empty `redirectIds`
list, is rejected as a whole and returns no results.

A successful item means the redirect was found and its deletion was sent, not that the deletion
is confirmed. Call [List Redirects](https://dev.wix.com/docs/api-reference/business-management/seo/redirects/redirect-v1/list-redirects.md) if you need to confirm the outcome.

A redirect scoped to a language stops taking effect but can still appear in [List Redirects](https://dev.wix.com/docs/api-reference/business-management/seo/redirects/redirect-v1/list-redirects.md).
[Delete Redirect](https://dev.wix.com/docs/api-reference/business-management/seo/redirects/redirect-v1/delete-redirect.md) behaves the same way.

To delete a single redirect, call [Delete Redirect](https://dev.wix.com/docs/api-reference/business-management/seo/redirects/redirect-v1/delete-redirect.md).

---

## REST API

### Schema

```
 Method: bulkDeleteRedirects
 Description: Deletes up to 500 redirects by GUID.  Each GUID succeeds or fails on its own. An GUID that matches no redirect on the site fails with `REDIRECT_NOT_FOUND` while the rest of the request goes ahead. Read those failures from `results[].itemMetadata.error` in a successful response, matched to the request by `results[].itemMetadata.originalIndex`. A malformed request, such as an empty `redirectIds` list, is rejected as a whole and returns no results.  A successful item means the redirect was found and its deletion was sent, not that the deletion is confirmed. Call [List Redirects](https://dev.wix.com/docs/api-reference/business-management/seo/redirects/redirect-v1/list-redirects.md) if you need to confirm the outcome.  A redirect scoped to a language stops taking effect but can still appear in [List Redirects](https://dev.wix.com/docs/api-reference/business-management/seo/redirects/redirect-v1/list-redirects.md). [Delete Redirect](https://dev.wix.com/docs/api-reference/business-management/seo/redirects/redirect-v1/delete-redirect.md) behaves the same way.  To delete a single redirect, call [Delete Redirect](https://dev.wix.com/docs/api-reference/business-management/seo/redirects/redirect-v1/delete-redirect.md).
 URL: https://www.wixapis.com/seo-redirects-service/v1/bulk/redirects/delete
 Method: POST
 # Note: If the parameter `a.b` is listed under required parameters, `b` is only required if `a` is also present.
 Required parameters:  redirectIds
 Method parameters: 
   param name: redirectIds | type: array<redirectIds> | description: IDs of the redirects to delete. | required: true | validation: minItems 1, maxItems 500, format GUID
 Return type: BulkDeleteRedirectsResponse
  - name: results | type: array<BulkRedirectResult> | description: Outcome of each GUID, in request order. `originalIndex` is the GUID's position in `redirectIds`.  A successful item means the redirect was found and its deletion was sent, not that the deletion is confirmed. An GUID that matches no redirect on the site fails with `REDIRECT_NOT_FOUND`, and every other GUID in the request is still deleted.  | validation: maxItems 500
     - name: itemMetadata | type: ItemMetadata | description: Whether this redirect succeeded, its position in the request as `originalIndex`, and the error if it failed.  A redirect that already exists on the site is reported as a success with no `id`, and nothing is written for it.  
        - name: id | type: string | description: Item GUID. Should always be available, unless it's impossible (for example, when failing to create an item).  | validation: maxLength 100
        - name: originalIndex | type: integer | description: Index of the item within the request array. Allows for correlation between request and response items.  
        - name: success | type: boolean | description: Whether the requested action was successful for this item. When `false`, the `error` field is populated.  
        - name: error | type: ApplicationError | description: Details about the error in case of failure.  
           - name: code | type: string | description: Error code.  
           - name: description | type: string | description: Description of the error.  
           - name: data | type: object | description: Data related to the error.  
     - name: item | type: Redirect | description: Created redirect.  Returned only when `returnFullEntity` is `true` in the request. Never returned by Bulk Delete Redirects.  
        - name: from | type: string | description: Path on the site that the redirect starts from, URL-encoded. For example, `/old-page`.  Can't be the site root. A path that differs from another redirect's `from` path only by a trailing slash counts as the same path.  For a redirect scoped to a `language`, specify the path with or without the language prefix: the prefix is stripped, so a `fr` redirect from `/fr/about` is stored and returned as `/about`.  | validation: maxLength 950
        - name: to | type: string | description: Where the redirect sends the visitor, URL-encoded. Either a path on the site, such as `/new-page`, or a full URL, such as `https://example.com/page`.  | validation: maxLength 4096
        - name: options | type: RedirectOptions | description: How the redirect matches the paths a visitor requests.  
           - name: groupRedirect | type: boolean | description: Whether the redirect matches every path under its `from` path, carrying the rest of the URL over to the target. For example, a group redirect from `/forum/questions/` to `/forum/faqs/` sends `/forum/questions/my-post` to `/forum/faqs/my-post`. When `false`, only the exact `from` path matches.  A group redirect and an exact redirect that share a `from` path are two different redirects.  Default: `false`  
        - name: language | type: string | description: Language version of a multilingual site that the redirect applies to, as a 2-letter language code or a language tag. For example, `fr` or `en-US`.  When omitted, the redirect applies to every language on the site. A redirect scoped to a language conflicts only with redirects in the same language and with redirects that apply to every language.  Deleting a redirect scoped to a language stops it taking effect, but it can still appear in [List Redirects](https://dev.wix.com/docs/api-reference/business-management/seo/redirects/redirect-v1/list-redirects.md).  | validation: minLength 2, maxLength 5
        - name: id | type: string | description: Redirect GUID.  You can specify your own GUID when creating a redirect. When omitted, an GUID is generated.  | validation: format GUID
        - name: createdDate | type: string | description: Date and time the redirect was created.  Not returned by [Create Redirect](https://dev.wix.com/docs/api-reference/business-management/seo/redirects/redirect-v1/create-redirect.md). Call [Get Redirect](https://dev.wix.com/docs/api-reference/business-management/seo/redirects/redirect-v1/get-redirect.md) or [List Redirects](https://dev.wix.com/docs/api-reference/business-management/seo/redirects/redirect-v1/list-redirects.md) to retrieve it.  | read-only: true | validation: format date-time
  - name: bulkActionMetadata | type: BulkActionMetadata | description: Number of redirects deleted and number that failed.  
     - name: totalSuccesses | type: integer | description: Number of items that were successfully processed.  
     - name: totalFailures | type: integer | description: Number of items that couldn't be processed.  
     - name: undetailedFailures | type: integer | description: Number of failures without details because detailed failure threshold was exceeded.  

 Possible Errors:
   HTTP Code: 400 | Status Code: INVALID_ARGUMENT | Application Code:  | Description: The `redirectIds` list is missing or empty. Nothing is deleted and the response carries no per-item results.


```

### Examples

### Delete several redirects, with one unknown ID
An ID that matches no redirect fails only its own item. A successful item means the deletion was found and sent, not that it's confirmed, so call List Redirects if you need to confirm the outcome.

```curl
curl -X POST \
'https://www.wixapis.com/seo-redirects-service/v1/bulk/redirects/delete' \
-H 'Authorization: <AUTH>' \
-H 'Content-Type: application/json' \
-d '{
  "redirectIds": [
    "5b07d9de-6a9f-494d-8066-a7b66c970270",
    "7bb02f0a-d0cb-4c75-9a93-905b393f7662",
    "3f6c1b58-9e42-4a77-8b30-1c5d0a9e7f24"
  ]
}'
```

---

## JavaScript SDK

### Schema

```
 Method: wixClientAdmin.seo.redirects.bulkDeleteRedirects(redirectIds)
 Description: Deletes up to 500 redirects by GUID.  Each GUID succeeds or fails on its own. An GUID that matches no redirect on the site fails with `REDIRECT_NOT_FOUND` while the rest of the request goes ahead. Read those failures from `results[].itemMetadata.error` in a successful response, matched to the request by `results[].itemMetadata.originalIndex`. A malformed request, such as an empty `redirectIds` list, is rejected as a whole and returns no results.  A successful item means the redirect was found and its deletion was sent, not that the deletion is confirmed. Call [List Redirects](https://dev.wix.com/docs/api-reference/business-management/seo/redirects/redirect-v1/list-redirects.md) if you need to confirm the outcome.  A redirect scoped to a language stops taking effect but can still appear in [List Redirects](https://dev.wix.com/docs/api-reference/business-management/seo/redirects/redirect-v1/list-redirects.md). [Delete Redirect](https://dev.wix.com/docs/api-reference/business-management/seo/redirects/redirect-v1/delete-redirect.md) behaves the same way.  To delete a single redirect, call [Delete Redirect](https://dev.wix.com/docs/api-reference/business-management/seo/redirects/redirect-v1/delete-redirect.md).
 # Note: If the parameter `a.b` is listed under required parameters, `b` is only required if `a` is also present.
 Required parameters:  redirectIds
 Method parameters: 
   param name: redirectIds | type: array<array> | description: IDs of the redirects to delete. | required: true | validation: minItems 1, maxItems 500, format GUID
 Return type: PROMISE<BulkDeleteRedirectsResponse>
  - name: results | type: array<BulkRedirectResult> | description: Outcome of each GUID, in request order. `originalIndex` is the GUID's position in `redirectIds`.  A successful item means the redirect was found and its deletion was sent, not that the deletion is confirmed. An GUID that matches no redirect on the site fails with `REDIRECT_NOT_FOUND`, and every other GUID in the request is still deleted.  | validation: maxItems 500
     - name: itemMetadata | type: ItemMetadata | description: Whether this redirect succeeded, its position in the request as `originalIndex`, and the error if it failed.  A redirect that already exists on the site is reported as a success with no `id`, and nothing is written for it.  
        - name: _id | type: string | description: Item GUID. Should always be available, unless it's impossible (for example, when failing to create an item).  | validation: maxLength 100
        - name: originalIndex | type: integer | description: Index of the item within the request array. Allows for correlation between request and response items.  
        - name: success | type: boolean | description: Whether the requested action was successful for this item. When `false`, the `error` field is populated.  
        - name: error | type: ApplicationError | description: Details about the error in case of failure.  
           - name: code | type: string | description: Error code.  
           - name: description | type: string | description: Description of the error.  
           - name: data | type: object | description: Data related to the error.  
     - name: item | type: Redirect | description: Created redirect.  Returned only when `returnFullEntity` is `true` in the request. Never returned by Bulk Delete Redirects.  
        - name: from | type: string | description: Path on the site that the redirect starts from, URL-encoded. For example, `/old-page`.  Can't be the site root. A path that differs from another redirect's `from` path only by a trailing slash counts as the same path.  For a redirect scoped to a `language`, specify the path with or without the language prefix: the prefix is stripped, so a `fr` redirect from `/fr/about` is stored and returned as `/about`.  | validation: maxLength 950
        - name: to | type: string | description: Where the redirect sends the visitor, URL-encoded. Either a path on the site, such as `/new-page`, or a full URL, such as `https://example.com/page`.  | validation: maxLength 4096
        - name: options | type: RedirectOptions | description: How the redirect matches the paths a visitor requests.  
           - name: groupRedirect | type: boolean | description: Whether the redirect matches every path under its `from` path, carrying the rest of the URL over to the target. For example, a group redirect from `/forum/questions/` to `/forum/faqs/` sends `/forum/questions/my-post` to `/forum/faqs/my-post`. When `false`, only the exact `from` path matches.  A group redirect and an exact redirect that share a `from` path are two different redirects.  Default: `false`  
        - name: language | type: string | description: Language version of a multilingual site that the redirect applies to, as a 2-letter language code or a language tag. For example, `fr` or `en-US`.  When omitted, the redirect applies to every language on the site. A redirect scoped to a language conflicts only with redirects in the same language and with redirects that apply to every language.  Deleting a redirect scoped to a language stops it taking effect, but it can still appear in [List Redirects](https://dev.wix.com/docs/api-reference/business-management/seo/redirects/redirect-v1/list-redirects.md).  | validation: minLength 2, maxLength 5
        - name: _id | type: string | description: Redirect GUID.  You can specify your own GUID when creating a redirect. When omitted, an GUID is generated.  | validation: format GUID
        - name: _createdDate | type: Date | description: Date and time the redirect was created.  Not returned by [Create Redirect](https://dev.wix.com/docs/api-reference/business-management/seo/redirects/redirect-v1/create-redirect.md). Call [Get Redirect](https://dev.wix.com/docs/api-reference/business-management/seo/redirects/redirect-v1/get-redirect.md) or [List Redirects](https://dev.wix.com/docs/api-reference/business-management/seo/redirects/redirect-v1/list-redirects.md) to retrieve it.  | read-only: true 
  - name: bulkActionMetadata | type: BulkActionMetadata | description: Number of redirects deleted and number that failed.  
     - name: totalSuccesses | type: integer | description: Number of items that were successfully processed.  
     - name: totalFailures | type: integer | description: Number of items that couldn't be processed.  
     - name: undetailedFailures | type: integer | description: Number of failures without details because detailed failure threshold was exceeded.  

 Possible Errors:
   HTTP Code: 400 | Status Code: INVALID_ARGUMENT | Application Code:  | Description: The `redirectIds` list is missing or empty. Nothing is deleted and the response carries no per-item results.


```

### Examples

### Delete several redirects, with one unknown ID
An ID that matches no redirect fails only its own item. A successful item means the deletion was found and sent, not that it's confirmed.

```javascript
import { redirects } from "@wix/seo";

async function bulkDeleteRedirects() {
  const response = await redirects.bulkDeleteRedirects([
    "ceaef61f-387d-47a4-9256-2b17aa1a7f78",
    "fa19f816-440b-4414-b6c7-828fb13e1639",
    "3f6c1b58-9e42-4a77-8b30-1c5d0a9e7f24",
  ]);
}

/* Promise resolves to:
 * {
 *   "results": [
 *     {
 *       "itemMetadata": {
 *         "originalIndex": 0,
 *         "success": true,
 *         "_id": "ceaef61f-387d-47a4-9256-2b17aa1a7f78"
 *       }
 *     },
 *     {
 *       "itemMetadata": {
 *         "originalIndex": 1,
 *         "success": true,
 *         "_id": "fa19f816-440b-4414-b6c7-828fb13e1639"
 *       }
 *     },
 *     {
 *       "itemMetadata": {
 *         "originalIndex": 2,
 *         "success": false,
 *         "error": {
 *           "code": "REDIRECT_NOT_FOUND",
 *           "description": "Redirect 3f6c1b58-9e42-4a77-8b30-1c5d0a9e7f24 was not found"
 *         },
 *         "_id": "3f6c1b58-9e42-4a77-8b30-1c5d0a9e7f24"
 *       }
 *     }
 *   ],
 *   "bulkActionMetadata": {
 *     "totalSuccesses": 2,
 *     "totalFailures": 1,
 *     "undetailedFailures": 0
 *   }
 * }
 */

```

### bulkDeleteRedirects (self-hosted)
Self-hosted SDK calls require you to [create a client](https://dev.wix.com/docs/sdk/articles/work-with-the-sdk/about-the-wix-client.md).

```javascript
import { createClient } from '@wix/sdk';
import { redirects } from '@wix/seo';
// Import the auth strategy for the relevant access type
// Import the relevant host module if needed

const myWixClient = createClient ({
  modules: { redirects },
  // Include the auth strategy and host as relevant
});


async function bulkDeleteRedirects(redirectIds) {
  const response = await myWixClient.redirects.bulkDeleteRedirects(redirectIds);
};
```

---