---
title: "Create a song and get an upload URL"
method: POST
path: "/songs"
tags: ["Songs"]
---

# Create a song and get an upload URL

`POST /songs`

## Request

- Base URL: `https://vocaless.app/api/v1`
- URL: `https://vocaless.app/api/v1/songs`
- Auth: HTTP bearer

Creates a song record and returns a presigned URL. PUT the audio file to `upload_url` directly (do not proxy it through this API), then call the separate endpoint.

## Request body

- object
  - `file_name` string, required
  - `file_size` number, required
  - `file_type` string, required

## Response `201`

Success

- object
  - `id` string, required
  - `upload_url` string, required

## Other responses

- `400`: `INVALID_REQUEST` — The request body or query failed validation.
- `401`: `UNAUTHORIZED` — Missing, malformed, or revoked API key.
- `402`: `STORAGE_LIMIT` — The account's storage limit would be exceeded, or storage billing is delinquent.
- `429`: `RATE_LIMITED` — Too many requests for this API key.

---

[API](https://skmtc.dev/vocaless/apis/vocaless-api.md) · [All operations](https://skmtc.dev/vocaless/apis/vocaless-api/llms.txt) · [OpenAPI document](https://skmtc.dev/vocaless/apis/vocaless-api/revisions/db15b6df3aa2?raw)
