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

# Delete Experiments — ABConvert API

> Permanently delete an experiment and clean up associated Shopify variants, metafields, and scripts using the general or price-specific delete endpoints.

<Note>
  **Preview — this page is an early draft.** We're still verifying the API reference against the current endpoints. Fields, response shapes, and examples may change before this section is marked stable. Follow [PRO-1459](https://linear.app/abconvert/issue/PRO-1459) or ask in `#abconvert-dev` if you're integrating against this today.
</Note>

Deleting an experiment removes it from ABConvert and triggers cleanup of everything ABConvert created in your Shopify store on the experiment's behalf. This includes duplicate product variants, metafields, and any injected scripts or functions tied to the experiment.

Both delete endpoints are session endpoints and require Shopify authentication.

<Warning>
  Deletion is permanent. All experiment configuration and analytics data are removed and cannot be recovered. If you want to preserve analytics history, export your data before deleting.
</Warning>

***

## Delete any experiment

Deletes an experiment of any type — price, content, shipping, redirect, template, theme, or checkout. ABConvert determines what to clean up based on the experiment's type.

```
DELETE /api/experiments/:id
```

### What gets cleaned up

When you delete an experiment, ABConvert:

* **Removes duplicate variants** created for price experiments (v1 strategy).
* **Resets product prices** for any variants that were modified.
* **Deletes metafields** written to products or the store for this experiment.
* **Removes script tags** associated with the experiment if no other active experiments depend on them.
* **Deregisters Shopify Functions** for cart transform or delivery customization experiments.
* **Deletes all analytics records** (views, add-to-carts, checkouts, orders) tied to the experiment.

### Path parameters

<ParamField path="id" type="string" required>
  The experiment's `_id` value as returned by the list or get endpoints.
</ParamField>

### Example request

```bash theme={null}
curl -X DELETE "https://app.abconvert.io/api/experiments/64a1f2b3c4d5e6f7a8b9c0d1" \
  -H "Authorization: Bearer <shopi...en>" \
  -H "Content-Type: application/json"
```

### Response

```json theme={null}
"success"
```

On failure:

```json theme={null}
{
  "status": "error",
  "message": "Experiment not found"
}
```

***

## Delete a price experiment

An alternative delete endpoint specific to price experiments. Use this if you need to explicitly target a price experiment, particularly when troubleshooting cleanup issues with price variant duplicates.

```
DELETE /api/price-experiments/:id
```

### What gets cleaned up

In addition to the general cleanup described above, this endpoint specifically:

* **Archives or deletes duplicated variants** created by the v1 (duplicate variant) price testing strategy.
* **Removes cart transform function configuration** for v2 (cart transform) experiments.
* **Restores original prices** on all product variants that were part of the experiment.

### Path parameters

<ParamField path="id" type="string" required>
  The price experiment's `_id` value.
</ParamField>

### Example request

```bash theme={null}
curl -X DELETE "https://app.abconvert.io/api/price-experiments/64a1f2b3c4d5e6f7a8b9c0d1" \
  -H "Authorization: Bearer <shopi...en>" \
  -H "Content-Type: application/json"
```

### Response

```json theme={null}
"success"
```

***

## Summary

| Use case                             | Method   | Path                         |
| ------------------------------------ | -------- | ---------------------------- |
| Delete any experiment type           | `DELETE` | `/api/experiments/:id`       |
| Delete a price experiment explicitly | `DELETE` | `/api/price-experiments/:id` |

<Tip>
  Before deleting a running experiment, pause it first using `POST /api/experiments/:id/pause`. This ensures any in-flight visitor sessions complete their current assignment before the experiment is removed.
</Tip>
