Skip to content

Uploads and imports

Each file in a project arrives one of two ways, chosen per file with source when you create the project.

{ "fileName": "episode-12.wav" }

The file gets an upload with a url and fields. POST to url as multipart/form-data with every field from fields, then the file as file, last. The form is valid for three hours and accepts up to 5 GB (500 MB in test mode). Accepted: WAV, MP3, M4A, MP4, AVI, FLAC, OGG, AAC and a few more; we read the file itself, not its name.

A file’s uploadStatus is pending until the project is submitted; then done. If validation finds a file unreadable, that file gets a new upload (new location): upload it again and submit.

We fetch the file for you. Imports start as soon as the project is created (uploadStatus: "importing", no upload); you can submit right away and validation waits for them.

source
{"type": "url", "url": "https://…"} Any public https file, e.g. a signed link from your own storage.
{"type": "dropbox", "url": "https://www.dropbox.com/…"} A Dropbox share link.
{"type": "googleDrive", "fileId": "…", "accessToken": "…"} A Google Drive file, with an OAuth access token that can read it (the drive.file scope covers files the user picked). We use the token once and don’t keep it.
{
"files": [
{ "fileName": "host.wav", "source": { "type": "url", "url": "https://files.example.com/ep12/host.wav?sig=…" } },
{ "fileName": "guest.wav" }
]
}

Rules for imports:

  • https only, and the host must resolve to a public address. We follow up to five redirects, checking each one.
  • Dropbox imports stay on Dropbox’s hosts and Drive imports on Google’s.
  • Up to 5 GB per file (500 MB in test mode), and an hour per download.
  • At most 24 files importing at once per account (429 import_limit).

When an import fails because of its link (a 4xx answer, too large, a private address), the file’s uploadStatus is import_failed with the reason in importError, and validation rejects the project with import_failed. Create the project again with a working link.