---
title: "Upload a release file"
method: POST
path: "/distribution/v1/deliveries/files"
tags: ["Deliveries"]
---

# Upload a release file

`POST /distribution/v1/deliveries/files`

Creates a pre-signed upload URL for a release ZIP file (ERN metadata + audio). Upload the file via HTTP PUT to the returned `upload_url`, then call `POST /distribution/v1/deliveries` with the `file_id` to create the delivery.

## Request body

- CreateDeliveryFileRequest
  - `musixmatch_user_id` string, required — The Musixmatch user ID of the artist, obtained via token introspection of the user's access token

## Response `201`

Upload slot created. Use `upload_url` to upload the ZIP via HTTP PUT.

- CreateDeliveryFileEnvelope
  - `message` string — Descriptive message of performed operation
  - `data` object
    - `file` object
      - `file_id` integer — Unique identifier for this upload slot
      - `upload_url` string, uri — Pre-signed URL to upload the release ZIP file via HTTP PUT. Expires after 15 minutes.

## Other responses

- `400` — Bad request — invalid or missing parameters
- `401` — Unauthorized — missing or invalid Bearer token
- `422` — Unprocessable — the user has no controlled artist roster.
- `502` — Bad gateway — upstream service call failed or returned an unexpected response

---

[API](https://skmtc.net/musixmatch/apis/lyrics-api.md) · [All operations](https://skmtc.net/musixmatch/apis/lyrics-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/musixmatch/lyrics-api/revisions/edbc169d5499/schema)
