---
title: "Delete Records"
method: DELETE
path: "/records"
tags: ["Sports Inventory"]
---

# Delete Records

`DELETE /records`

## Request

- Base URL: `https://api.opti-x.optimove.net/sports-inventory/v1`
- URL: `https://api.opti-x.optimove.net/sports-inventory/v1/records`
- Auth: API key in header `x-api-key`

Deletes sports inventory entities. Each object in the array must contain exactly one identifying key — do not send multiple key types in the same object.

**Cascade scope** — deleting a parent deletes its descendants: Category → Classes, Types, Events, Markets, Selections; Class → Types and below; Type → Events and below; Event → Markets and Selections; Market → Selections.

**Safe parent-delete rule** — send parent deletes individually (one Category, Class, Type, Event, or Market per request) when you rely on descendant cascading: batch optimisation can delete the named parents without applying the same immediate descendant cascade. Leaf Selection deletes may be batched freely.

Deleting a key that is already absent is effectively a no-op; the asynchronous acceptance response does not report whether a matching row existed. `X-Expires-After` is not accepted on DELETE.

## Headers

- `x-api-key` string, required
- `x-brand-key` string, required

## Request body

- union[]: Deletes entities - deleting a parent cascades automatically, so all Markets and Selections are deleted when their Event is deleted. Send one parent (Category, Class, Type, Event or Market) per request; only Selection deletes may be batched.
  - union
    - object: The selection key to be deleted
      - `selectionKey` string, required
    - object: The market key to be deleted
      - `marketKey` string, required
    - object: The event key to be deleted
      - `eventKey` string, required
    - object: The category key to be deleted
      - `categoryKey` string, required
    - object: The class key to be deleted
      - `classKey` string, required
    - object: The type key to be deleted
      - `typeKey` string, required

## Response `202`

Accepted request

- Response: A 202 confirms **acceptance only**: the array passed validation and was accepted for asynchronous processing. It does not confirm that entities are visible downstream, that hierarchy references resolve, that a PUT matched an existing row, or that a DELETE matched an existing row. Treat a 202 with `success: false` as retryable — do not rely on the HTTP status alone.
  - `success` boolean: Have all records been accepted successfully. If false, some or all records may not have been recorded

## Other responses

- `400`: Bad Request

---

[API](https://skmtc.dev/optimove/apis/personalize-api.md) - [All operations](https://skmtc.dev/optimove/apis/personalize-api/llms.txt) - [OpenAPI document](https://skmtc.dev/optimove/apis/personalize-api/revisions/acd0c1299e2b?raw)
