---
title: "Name the file and get how to upload it: one PUT, or parts and a complete link"
method: POST
path: "/api/uploads/{id}/start"
tags: ["Upload page"]
---

# Name the file and get how to upload it: one PUT, or parts and a complete link

`POST /api/uploads/{id}/start`

## Request

- Base URL: `https://audo.ai`
- URL: `https://audo.ai/api/uploads/{id}/start`
- Auth: none required

## Path parameters

- `id` string, required

## Query parameters

- `t` string, required

## Request body

- object
  - `filename` string, required
  - `sizeBytes` integer, required
  - `contentType` string

## Response `200`

OK

- object
  - `file` object, required
    - `id` string, required
    - `kind` 'original' | 'output', required
    - `status` 'awaiting_upload' | 'processing' | 'ready' | 'invalid' | 'deleted', required
    - `filename` string, required
    - `contentType` string, required
    - `sizeBytes` integer, nullable, required
    - `durationSeconds` number, nullable, required
    - `format` string, nullable, required: The container, such as wav or mp4
    - `hasVideo` boolean, required
    - `hasAudio` boolean, required: False for a video without sound, which only replace_audio takes
    - `media` object, nullable, required: Audio and video details, once the file is checked. Null for text files
      - `codec` string, nullable, required: The audio codec, such as aac or pcm_s16le
      - `sampleRate` integer, nullable, required
      - `channels` integer, nullable, required
      - `width` integer, nullable, required: The video's width in pixels, or null without video
      - `height` integer, nullable, required
    - `error` object, nullable, required
      - `code` string, required
      - `message` string, required
    - `prices` object, nullable, required: Credits each tool costs to process this file, once its length is known
    - `sourceJobId` string, nullable, required
    - `createdAt` string, required: ISO 8601 time
    - `expiresAt` string, required: ISO 8601 time
  - `upload` object, nullable, required: One PUT, up to 100 MB
    - `method` 'PUT', required
    - `url` string, required
    - `headers` object, required
    - `expiresAt` string, required: ISO 8601 time
  - `multipart` object, nullable, required: Upload in parts instead, for larger files
    - `partSizeBytes` integer, required: Every part is this size, except the last
    - `partCount` integer, required
    - `partUrl` string, required: Where part n goes (PUT), with {n} in place of the part number, counting from 1
    - `completeUrl` string, required: POST here once every part is in. It joins them, or lists the parts that haven't arrived (details.missingParts)
    - `expiresAt` string, required: ISO 8601 time

## Other responses

- `default`: An error, with what went wrong and what to do next

---

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