> ## 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.

# Submit for review

> Sends the release to review. After this it can't be changed through the API unless review requests changes. Releases in a transfer are submitted with the transfer. Needs a key with `delivery:write`.



## OpenAPI

````yaml /api-reference/openapi.json post /delivery/releases/{releaseId}/submit
openapi: 3.1.0
info:
  title: AMM Distro API
  version: '2026-10-22'
  description: >-
    Deliver releases and catalog transfers to AMM Distro from your own systems,
    check readiness, and follow each release's status.


    API access is turned on per account by AMM Distro. The account's admins then
    create keys in **Settings → API**.
  contact:
    name: AMM Distro support
    email: support@ammdistro.com
    url: https://ammdistro.com
servers:
  - url: https://api.ammdistro.com/api/v2/external
    description: Production
security:
  - bearerAuth: []
tags:
  - name: Accounts
  - name: Releases
    description: Create, update, validate and submit releases, and read their status.
  - name: Files
    description: Upload artwork and audio yourself instead of sending URLs.
  - name: Catalog transfers
    description: Move already-released catalog from another distributor.
  - name: Reference data
  - name: Ingestion check
    description: Look up any UPC or ISRC in the account's catalog.
paths:
  /delivery/releases/{releaseId}/submit:
    post:
      tags:
        - Releases
      summary: Submit for review
      description: >-
        Sends the release to review. After this it can't be changed through the
        API unless review requests changes. Releases in a transfer are submitted
        with the transfer. Needs a key with `delivery:write`.
      operationId: submitRelease
      parameters:
        - name: releaseId
          in: path
          required: true
          description: Your ID for the release.
          schema:
            type: string
            pattern: ^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$
          example: NOVA-004
        - name: accountId
          in: query
          required: false
          description: Required when the key covers more than one account.
          schema:
            type: string
      responses:
        '200':
          description: Submitted.
          content:
            application/json:
              schema:
                type: object
                properties:
                  release:
                    $ref: '#/components/schemas/Release'
        '400':
          description: Bad request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                account_required:
                  value:
                    error: account_required
                    message: This key covers more than one account. Pass accountId.
                invalid_external_id:
                  value:
                    error: invalid_external_id
                    message: 'IDs are 1-128 letters, digits, or . _ : -'
        '401':
          description: No key, or a revoked key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                missing_api_key:
                  value:
                    error: missing_api_key
                    message: 'Send your API key as `Authorization: Bearer <key>`.'
                invalid_api_key:
                  value:
                    error: invalid_api_key
                    message: API key is invalid or has been revoked.
        '403':
          description: The key can't do this, or API access is off for its accounts.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                insufficient_scope:
                  value:
                    error: insufficient_scope
                    message: This key does not grant delivery:write.
                api_access_disabled:
                  value:
                    error: api_access_disabled
                    message: >-
                      API access is not turned on for the accounts this key
                      covers.
        '404':
          description: No such release, transfer or account for this key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                not_found:
                  value:
                    error: not_found
                    message: No release with ID NOVA-004 in this account.
        '409':
          description: Can't submit.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                already_submitted:
                  value:
                    error: already_submitted
                    message: This release is already in review.
                submit_transfer:
                  value:
                    error: submit_transfer
                    message: >-
                      This release is part of a transfer. Submit the transfer
                      instead.
                agreement_pending:
                  value:
                    error: agreement_pending
                    message: >-
                      This account has an agreement to sign before releases can
                      be submitted. Sign it in AMM Distro.
        '422':
          description: Not ready; `details` has the same problems as validate.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                not_ready:
                  value:
                    error: not_ready
                    message: The release is not ready to submit.
        '429':
          description: >-
            Rate limit reached. Wait for the time in the `RateLimit-Reset`
            header.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                rate_limited:
                  value:
                    error: rate_limited
                    message: >-
                      Rate limit of 60 requests per minute exceeded for this
                      key.
components:
  schemas:
    Release:
      type: object
      properties:
        externalId:
          type: string
          example: NOVA-004
        id:
          type: string
          description: AMM Distro's ID for the release.
        accountId:
          type: string
        kind:
          type: string
          enum:
            - new
            - transfer
        status:
          type: string
          enum:
            - draft
            - in_review
            - changes_requested
            - delivering
            - delivered
            - live
            - rejected
            - taken_down
          description: See the Statuses page.
        title:
          type: string
        version:
          type:
            - string
            - 'null'
        type:
          type: string
        releaseDate:
          type:
            - string
            - 'null'
          format: date
        originalReleaseDate:
          type:
            - string
            - 'null'
          format: date
        upc:
          type:
            - string
            - 'null'
          description: Appears once assigned.
        catalogNumber:
          type:
            - string
            - 'null'
        transfer:
          type:
            - object
            - 'null'
          properties:
            batch:
              type:
                - string
                - 'null'
        artwork:
          type: object
          properties:
            present:
              type: boolean
              description: Artwork is in place on the release.
            file:
              $ref: '#/components/schemas/FileStatus'
        tracks:
          type: array
          items:
            type: object
            properties:
              externalId:
                type:
                  - string
                  - 'null'
              id:
                type: string
              discNumber:
                type: integer
              trackNumber:
                type: integer
              title:
                type: string
              isrc:
                type:
                  - string
                  - 'null'
              durationMs:
                type:
                  - integer
                  - 'null'
              audio:
                type: object
                properties:
                  present:
                    type: boolean
                  file:
                    $ref: '#/components/schemas/FileStatus'
        storeLinks:
          type: object
          description: Fills in as stores go live.
          properties:
            spotify:
              type: string
              format: uri
            appleMusic:
              type: string
              format: uri
            deezer:
              type: string
              format: uri
            tidal:
              type: string
              format: uri
            amazonMusic:
              type: string
              format: uri
            youtubeMusic:
              type: string
              format: uri
        submittedAt:
          type:
            - string
            - 'null'
          format: date-time
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
    Error:
      type: object
      required:
        - error
        - message
      properties:
        error:
          type: string
          description: Stable code to branch on.
          example: invalid_payload
        message:
          type: string
          description: What happened, in plain words.
        details:
          type: array
          description: >-
            Per-field problems (payload errors) or per-release problems
            (transfer submit).
          items:
            oneOf:
              - $ref: '#/components/schemas/PayloadProblem'
              - $ref: '#/components/schemas/Issue'
              - $ref: '#/components/schemas/TransferReleaseProblem'
    FileStatus:
      type:
        - object
        - 'null'
      properties:
        id:
          type: string
          description: Use as `fileId` for uploads.
        source:
          type: string
          enum:
            - url
            - upload
        status:
          type: string
          enum:
            - awaiting_upload
            - pending
            - ready
            - failed
        error:
          type:
            - string
            - 'null'
          description: Why the file can't be used (when failed).
          example: The artwork file is 1200×1200; artwork must be at least 1400×1400
        details:
          type: object
          description: >-
            What we read from the file, e.g. width/height, or format,
            sampleRate, bitDepth, channels, durationMs.
    PayloadProblem:
      type: object
      required:
        - path
        - message
      properties:
        path:
          type: string
          description: Where in your request body the problem is.
          example: tracks[2].credits[0].roles[1]
        message:
          type: string
          example: '"Wizard" is not a known role (see GET /reference/credit-roles)'
    Issue:
      type: object
      required:
        - severity
        - message
      properties:
        severity:
          type: string
          enum:
            - error
            - warning
        rule:
          type: string
          description: Stable rule code, when the problem comes from a release rule.
          example: credit.production
        field:
          type:
            - string
            - 'null'
          example: credits
        track:
          type: object
          description: Which track, when the problem is on one.
          properties:
            externalId:
              type:
                - string
                - 'null'
            discNumber:
              type: integer
            trackNumber:
              type: integer
        message:
          type: string
    TransferReleaseProblem:
      type: object
      properties:
        externalId:
          type: string
        errors:
          type: array
          items:
            $ref: '#/components/schemas/Issue'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: An API key from Settings → API in AMM Distro.

````

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