# Delete a model submission

```http
DELETE /api/public/v1/competitions/modular-arithmetic-challenge/submissions/{submissionId}
```

**Scope**: `competition.write`.

Deletes one occupied model-reference slot from the caller's active competition team. Only the team owner may delete a slot, and the formal submission window must still be open.

Check `canSubmit` with [Get my participation](./get-my-participation.md) before requesting deletion. Eligibility is checked again when the request is processed.

## Path parameters

| Parameter | Type | Required | Description |
| :-------- | :--- | :------: | :---------- |
| `submissionId` | string | Yes | Opaque ID returned by [List my submissions](./list-my-submissions.md). Do not substitute a slot number. |

## Example request

```bash
curl -X DELETE "https://api.sair.foundation/api/public/v1/competitions/modular-arithmetic-challenge/submissions/$SUBMISSION_ID" \
  -H "Authorization: Bearer $SAIR_API_KEY"
```

## Response

Returns `204 No Content` with no response body. Do not attempt to parse JSON from a successful response.

After the response:

- The addressed current slot is empty and its `submissionId` is no longer valid. Other slots are unchanged.
- A later submission to the empty slot creates a new current resource with a new `submissionId`.
- The referenced Hugging Face repository and revision are not deleted.
- A separately published Contributor Network item is not withdrawn.
- Any already frozen official evaluation entry or published leaderboard result remains unchanged.

## Retries and concurrent writes

This endpoint does not use an idempotency key. Deletion is idempotent in effect: once the request succeeds, retrying the old `submissionId` cannot remove anything else. Because the deleted resource no longer exists, that retry returns `404 NOT_FOUND` rather than another `204`.

If a network failure leaves the outcome uncertain, call [List my submissions](./list-my-submissions.md). The deletion completed if the old `submissionId` is absent; retry the delete only if it is still present.

A delete and a create or replacement for the same slot are processed in a definite order. If clients issue concurrent writes, read `/submissions/mine` afterward instead of assuming which request completed last.

## Errors

| HTTP | Code | When |
| :---: | :--- | :--- |
| `403` | `EMAIL_NOT_VERIFIED` | The caller's email is not verified. |
| `403` | `ENROLL_REQUIRED` | The caller has not completed enrollment. |
| `403` | `TEAM_REQUIRED` | The caller does not currently have an active competition team. |
| `403` | `TEAM_OWNER_REQUIRED` | The caller is an active team member rather than its owner. |
| `403` | `SUBMISSION_WINDOW_NOT_OPEN` | The formal submission window has not opened. |
| `403` | `SUBMISSION_WINDOW_CLOSED` | The formal submission window has closed, including when the competition is closed. |
| `404` | `NOT_FOUND` | The competition is not publicly visible, or the submission is missing, deleted, or not owned by the caller's active team. |

Missing, deleted, and foreign submission IDs deliberately share `404 NOT_FOUND`. See [Errors](../../../errors.md) for authentication, scope, rate-limit, and standard error-envelope behavior.
