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

# Upload a release file

`POST /distribution/v1/deliveries/files`

## Request

- Base URL: `https://api.musixmatch.com`
- URL: `https://api.musixmatch.com/distribution/v1/deliveries/files`
- Auth: API key in query parameter `apikey`
- TypeScript: <https://skmtc.dev/musixmatch/apis/lyrics-api/docs/distribution/v1/deliveries/files/post.ts> (a function with typed inputs; its response is checked against the schema)

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.dev/musixmatch/apis/lyrics-api.md) - [All operations](https://skmtc.dev/musixmatch/apis/lyrics-api/llms.txt) - [OpenAPI document](https://skmtc.dev/musixmatch/apis/lyrics-api/revisions/edbc169d5499?raw)
