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

# Validating and submitting

> Check what would block submission, then send the release to review.

## Validate

```
POST /delivery/releases/{releaseId}/validate
```

Validation changes nothing, and a read-only key can run it. It applies the same rules AMM Distro uses when a release is submitted from the dashboard.

```json theme={"dark"}
{
  "ready": false,
  "errors": [
    {
      "severity": "error",
      "field": "audio",
      "track": { "externalId": "NOVA-004-01", "discNumber": 1, "trackNumber": 1 },
      "message": "Audio for \"Night Drive\" is still being processed"
    },
    {
      "severity": "error",
      "rule": "credit.production",
      "field": "credits",
      "track": { "externalId": "NOVA-004-02", "discNumber": 1, "trackNumber": 2 },
      "message": "\"Day Ride\" is missing a production credit (Producer, Engineer, Mixing Engineer…)"
    },
    {
      "severity": "error",
      "rule": "release.artist_legal_name",
      "field": "primaryArtists",
      "message": "\"Guest\" needs a legal first and last name before this can be submitted"
    }
  ],
  "warnings": [],
  "release": { "…": "the release, as in GET" }
}
```

* `ready: true` means the release can be submitted.
* `errors` block submission. `warnings` don't, but are worth reading.
* `track` says which track a problem is on, by your `externalId` and its position.
* `rule` is a stable code you can match on in your system.

Fix problems by sending the release again with `PUT`, then validate again.

## Common problems

| Problem | Fix |
| - | - |
| A file is still being processed | Wait and validate again. |
| A file has failed | Read its `error` and send a corrected file. |
| An artist needs a legal first and last name | Add `legalFirstName` and `legalLastName` to that artist. |
| A track is missing a songwriter, performer or production credit | Add credits with those roles. See [Credits](/guides/credits.md). |
| Spotify profile protection is needed | Add `spotifyProtection` to the artist. See [Artists](/guides/artists.md#spotify-profile-protection). |

## Submit

```
POST /delivery/releases/{releaseId}/submit
```

Submitting sends the release to review and returns it with status `in_review`. Submission is refused with `422 not_ready` until validation says `ready: true`; the response's `details` lists the same problems.

Other reasons a submit can be refused:

| Status | `error` | Meaning |
| - | - | - |
| 409 | `already_submitted` | It's already been submitted. |
| 409 | `submit_transfer` | It's part of a transfer. [Submit the transfer](/guides/catalog-transfers.md) instead. |
| 409 | `agreement_pending` | Your account has an agreement to sign in AMM Distro first. |
| 403 | `submissions_paused` | Submissions are paused for your account. |

After submission the release can't be changed through the API. If review asks for changes, its status becomes `changes_requested` and you can update and submit it again.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.