> ## Documentation Index
> Fetch the complete documentation index at: https://docs.apinizer.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Undeploy API Proxy Group

> Undeploys an API Proxy Group from a specific environment. All API Proxies in the group are undeployed together.

## Endpoint

```plaintext theme={null}
DELETE /apiops/projects/{projectName}/apiProxyGroups/{apiProxyGroupName}/environments/{environmentName}/
```

## Authentication

Requires a Personal API Access Token.

### Header

```plaintext theme={null}
Authorization: Bearer YOUR_TOKEN
```

## Request

### Headers

| Header        | Value          | Required |
| ------------- | -------------- | -------- |
| Authorization | Bearer {token} | Yes      |

### Path Parameters

| Parameter         | Type   | Required | Description                       |
| ----------------- | ------ | -------- | --------------------------------- |
| projectName       | string | Yes      | Project name                      |
| apiProxyGroupName | string | Yes      | API Proxy Group name              |
| environmentName   | string | Yes      | Environment name to undeploy from |

### Query Parameters

None.

### Request Body

Optional JSON body. When omitted, defaults are applied.

| Field       | Type    | Required | Description                                                                                                                |
| ----------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------------------- |
| description | string  | No       | Description/notes for the undeploy history record. Defaults to "Undeployed by APIOPS Api" if not provided.                 |
| persistent  | boolean | No       | If `true`, this undeploy history record will not be auto-deleted when the retention limit is reached. Defaults to `false`. |

#### Example

```json theme={null}
{
  "description": "Rollback undeploy",
  "persistent": true
}
```

## Response

### Success Response (200 OK)

```json theme={null}
{
  "success": true,
  "deploymentResult": {
    "success": true,
    "message": "Undeployment completed successfully",
    "environmentResults": [
      {
        "environmentName": "production",
        "success": true,
        "message": "Undeployed successfully"
      }
    ]
  }
}
```

### Error Response (400 Bad Request)

```json theme={null}
{
  "error": "bad_request",
  "error_description": "API Proxy Group (PaymentAPIGroup) is not found or user does not have privilege to access it!"
}
```

or

```json theme={null}
{
  "error": "bad_request",
  "error_description": "Environment (production) is not found or user does not have privilege to access it!"
}
```

## cURL Example

```bash theme={null}
curl -X DELETE \
  "https://demo.apinizer.com/apiops/projects/MyProject/apiProxyGroups/PaymentAPIGroup/environments/production/" \
  -H "Authorization: Bearer YOUR_TOKEN"
```

### With Description and Persistent Flag

```bash theme={null}
curl -X DELETE \
  "https://demo.apinizer.com/apiops/projects/MyProject/apiProxyGroups/PaymentAPIGroup/environments/production/" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"description": "Rollback undeploy", "persistent": true}'
```

## Notes and Warnings

* **Group Undeployment**:
  * All API Proxies in the group are undeployed together
  * Group-level settings are also removed

* **Environment Must Exist**:
  * Environment must exist and be accessible

## Permissions

* User must have **`API_MANAGEMENT` + `DEPLOY_UNDEPLOY`** permission in the project

## Related Documentation

* [Deploy API Proxy Group](/api-reference/api-proxy-groups/deployment/deploy-api-proxy-group) - Deploy group to environment
* [List Environments](/api-reference/api-proxy-groups/deployment/list-environments) - List environments for group
