Перейти к содержанию

Загрузки

Эндпоинты загрузки материалов в Slicer API — создать загрузку, отправить файл целиком, по частям или по одноразовой ссылке, импорт по адресу, статус и отмена.

На этой странице

Загрузка — видео, фото или аудио, из которого собирается монтаж. Сначала загрузка создаётся (createUpload), затем файл отправляется одним из способов, после проверки статус становится ready. Как выбрать способ и обработать ошибки — в руководстве Загрузка файлов.

Начать загрузку

POST/v1/uploads
Области доступа
projects:write
Лимит
обычный

Возвращает загрузку и одноразовую ссылку uploadUrl. Дальше — PUT всего файла на uploadUrl (без токена) или на /v1/uploads/{id}/content, либо части по 8 МиБ на /v1/uploads/{id}/parts/{n} и complete.

Тело запроса CreateUploadRequest

Поле Тип Описание
fileNameобязательноеstringИмя файла с расширением: по нему определяется вид≤ 255
sizeобязательноеintegerРазмер файла, байт≥ 1
mimeTypestring≤ 128
purposestringsource (по умолчанию) — материал монтажаsource · media · music

Запрос

curl
JavaScript
Python
curl -X POST "https://api.slicer.media/v1/uploads" \
  -H "Authorization: Bearer $SLICER_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"fileName":"interview.mp4","size":104857600}'

Ответ

Поля ответа: CreatedUpload (3)
Поле Тип Описание
uploadобязательноеUpload
uploadUrlобязательноеstring (uri)Одноразовая ссылка: PUT всего файла без токена (≤ 1 ч, только запись)
uploadUrlExpiresAtобязательноеstringДата и время ISO 8601, UTC
Пример ответа
{
  "ok": true,
  "data": {
    "upload": {
      "id": "6f1c2a4e-8b3d-4c1a-9e2f-3b5d7a9c1e20",
      "fileName": "interview.mp4",
      "purpose": "source",
      "origin": "client",
      "sizeBytes": 104857600,
      "status": "uploading",
      "partSize": 104857600,
      "partCount": 13,
      "uploadedParts": [
        1
      ],
      "progress": 0.5,
      "media": {
        "kind": null,
        "durationSec": null,
        "width": null,
        "height": null,
        "hasAudio": null
      },
      "error": "string",
      "createdAt": "2026-10-16T09:30:00Z"
    },
    "uploadUrl": "https://api.slicer.media/v1/…",
    "uploadUrlExpiresAt": "2026-10-16T09:30:00Z"
  }
}
PUT/v1/upload-links/{secret}
Области доступа
без токена
Лимит
обычный

Без токена: разрешение — секрет в адресе. Только запись, один файл, ≤ 1 ч. curl -T video.mp4 <uploadUrl>

Параметры пути

Поле Тип Описание
secretобязательноеstring

Тело запроса

Байты файла (application/octet-stream).

Запрос

curl
JavaScript
Python
curl -X PUT "https://api.slicer.media/v1/upload-links/upl_…" \
  -H "Content-Type: application/octet-stream" \
  --data-binary @video.mp4

Ответ

Поля ответа: Upload (18)
Поле Тип Описание
idобязательноеstring (uuid)
fileNameобязательноеstring
purposeобязательноеstringsource · media · music
originобязательноеstringclient · import · server
sizeBytesобязательноеinteger
statusобязательноеstringuploading · processing · ready · failed · aborted
partSizeобязательноеintegerРазмер части для PUT …/parts/{n}, байт (8 МиБ)
partCountобязательноеinteger
uploadedPartsобязательноеinteger[]
progressобязательноеnumber | nullПрогресс импорта 0–1 при загрузке по адресу0–1
mediaобязательноеobject | null
media.kindобязательноеstringvideo · image · audio
media.durationSecобязательноеnumber
media.widthобязательноеinteger
media.heightобязательноеinteger
media.hasAudioобязательноеboolean
errorобязательноеstring | null
createdAtобязательноеstringДата и время ISO 8601, UTC
Пример ответа
{
  "ok": true,
  "data": {
    "id": "6f1c2a4e-8b3d-4c1a-9e2f-3b5d7a9c1e20",
    "fileName": "interview.mp4",
    "purpose": "source",
    "origin": "client",
    "sizeBytes": 104857600,
    "status": "uploading",
    "partSize": 104857600,
    "partCount": 13,
    "uploadedParts": [
      1
    ],
    "progress": 0.5,
    "media": {
      "kind": "video",
      "durationSec": 42.5,
      "width": 1,
      "height": 1,
      "hasAudio": true
    },
    "error": "string",
    "createdAt": "2026-10-16T09:30:00Z"
  }
}

Загрузить файл целиком

PUT/v1/uploads/{id}/content
Области доступа
projects:write
Лимит
обычный

Тело — байты файла, Content-Length равен заявленному размеру. Загрузка завершается сама.

Параметры пути

Поле Тип Описание
idобязательноеstring (uuid)

Тело запроса

Байты файла (application/octet-stream).

Запрос

curl
JavaScript
Python
curl -X PUT "https://api.slicer.media/v1/uploads/6f1c2a4e-8b3d-4c1a-9e2f-3b5d7a9c1e20/content" \
  -H "Authorization: Bearer $SLICER_TOKEN" \
  -H "Content-Type: application/octet-stream" \
  --data-binary @video.mp4

Ответ

Поля ответа: Upload (18)
Поле Тип Описание
idобязательноеstring (uuid)
fileNameобязательноеstring
purposeобязательноеstringsource · media · music
originобязательноеstringclient · import · server
sizeBytesобязательноеinteger
statusобязательноеstringuploading · processing · ready · failed · aborted
partSizeобязательноеintegerРазмер части для PUT …/parts/{n}, байт (8 МиБ)
partCountобязательноеinteger
uploadedPartsобязательноеinteger[]
progressобязательноеnumber | nullПрогресс импорта 0–1 при загрузке по адресу0–1
mediaобязательноеobject | null
media.kindобязательноеstringvideo · image · audio
media.durationSecобязательноеnumber
media.widthобязательноеinteger
media.heightобязательноеinteger
media.hasAudioобязательноеboolean
errorобязательноеstring | null
createdAtобязательноеstringДата и время ISO 8601, UTC
Пример ответа
{
  "ok": true,
  "data": {
    "id": "6f1c2a4e-8b3d-4c1a-9e2f-3b5d7a9c1e20",
    "fileName": "interview.mp4",
    "purpose": "source",
    "origin": "client",
    "sizeBytes": 104857600,
    "status": "uploading",
    "partSize": 104857600,
    "partCount": 13,
    "uploadedParts": [
      1
    ],
    "progress": 0.5,
    "media": {
      "kind": "video",
      "durationSec": 42.5,
      "width": 1,
      "height": 1,
      "hasAudio": true
    },
    "error": "string",
    "createdAt": "2026-10-16T09:30:00Z"
  }
}

Загрузить часть

PUT/v1/uploads/{id}/parts/{n}
Области доступа
projects:write
Лимит
части загрузки

Части нумеруются с 1; все, кроме последней, — ровно partSize байт. Части можно слать параллельно и повторять.

Параметры пути

Поле Тип Описание
idобязательноеstring (uuid)
nобязательноеinteger≥ 1

Тело запроса

Байты файла (application/octet-stream).

Запрос

curl
JavaScript
Python
curl -X PUT "https://api.slicer.media/v1/uploads/6f1c2a4e-8b3d-4c1a-9e2f-3b5d7a9c1e20/parts/1" \
  -H "Authorization: Bearer $SLICER_TOKEN" \
  -H "Content-Type: application/octet-stream" \
  --data-binary @video.mp4

Ответ

Поля ответа: object (2)
Поле Тип Описание
partобязательноеinteger
etagобязательноеstring
Пример ответа
{
  "ok": true,
  "data": {
    "part": 1,
    "etag": "string"
  }
}

Завершить загрузку по частям

POST/v1/uploads/{id}/complete
Области доступа
projects:write
Лимит
обычный

Параметры пути

Поле Тип Описание
idобязательноеstring (uuid)

Запрос

curl
JavaScript
Python
curl -X POST "https://api.slicer.media/v1/uploads/6f1c2a4e-8b3d-4c1a-9e2f-3b5d7a9c1e20/complete" \
  -H "Authorization: Bearer $SLICER_TOKEN"

Ответ

Поля ответа: Upload (18)
Поле Тип Описание
idобязательноеstring (uuid)
fileNameобязательноеstring
purposeобязательноеstringsource · media · music
originобязательноеstringclient · import · server
sizeBytesобязательноеinteger
statusобязательноеstringuploading · processing · ready · failed · aborted
partSizeобязательноеintegerРазмер части для PUT …/parts/{n}, байт (8 МиБ)
partCountобязательноеinteger
uploadedPartsобязательноеinteger[]
progressобязательноеnumber | nullПрогресс импорта 0–1 при загрузке по адресу0–1
mediaобязательноеobject | null
media.kindобязательноеstringvideo · image · audio
media.durationSecобязательноеnumber
media.widthобязательноеinteger
media.heightобязательноеinteger
media.hasAudioобязательноеboolean
errorобязательноеstring | null
createdAtобязательноеstringДата и время ISO 8601, UTC
Пример ответа
{
  "ok": true,
  "data": {
    "id": "6f1c2a4e-8b3d-4c1a-9e2f-3b5d7a9c1e20",
    "fileName": "interview.mp4",
    "purpose": "source",
    "origin": "client",
    "sizeBytes": 104857600,
    "status": "uploading",
    "partSize": 104857600,
    "partCount": 13,
    "uploadedParts": [
      1
    ],
    "progress": 0.5,
    "media": {
      "kind": "video",
      "durationSec": 42.5,
      "width": 1,
      "height": 1,
      "hasAudio": true
    },
    "error": "string",
    "createdAt": "2026-10-16T09:30:00Z"
  }
}

Загрузить файл по адресу

POST/v1/uploads/import
Области доступа
projects:write
Лимит
обычный

Скачивает публичный https-файл в фоне. Опрашивайте GET /v1/uploads/{id} или ждите вебхук upload.ready.

Тело запроса ImportUploadRequest

Поле Тип Описание
urlобязательноеstring (uri)Публичный https-адрес файла≤ 2048
fileNamestringИмя с расширением, если его нет в адресе≤ 255
purposestringsource · media · music

Запрос

curl
JavaScript
Python
curl -X POST "https://api.slicer.media/v1/uploads/import" \
  -H "Authorization: Bearer $SLICER_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com/hook"}'

Ответ

Поля ответа: Upload (18)
Поле Тип Описание
idобязательноеstring (uuid)
fileNameобязательноеstring
purposeобязательноеstringsource · media · music
originобязательноеstringclient · import · server
sizeBytesобязательноеinteger
statusобязательноеstringuploading · processing · ready · failed · aborted
partSizeобязательноеintegerРазмер части для PUT …/parts/{n}, байт (8 МиБ)
partCountобязательноеinteger
uploadedPartsобязательноеinteger[]
progressобязательноеnumber | nullПрогресс импорта 0–1 при загрузке по адресу0–1
mediaобязательноеobject | null
media.kindобязательноеstringvideo · image · audio
media.durationSecобязательноеnumber
media.widthобязательноеinteger
media.heightобязательноеinteger
media.hasAudioобязательноеboolean
errorобязательноеstring | null
createdAtобязательноеstringДата и время ISO 8601, UTC
Пример ответа
{
  "ok": true,
  "data": {
    "id": "6f1c2a4e-8b3d-4c1a-9e2f-3b5d7a9c1e20",
    "fileName": "interview.mp4",
    "purpose": "source",
    "origin": "client",
    "sizeBytes": 104857600,
    "status": "uploading",
    "partSize": 104857600,
    "partCount": 13,
    "uploadedParts": [
      1
    ],
    "progress": 0.5,
    "media": {
      "kind": "video",
      "durationSec": 42.5,
      "width": 1,
      "height": 1,
      "hasAudio": true
    },
    "error": "string",
    "createdAt": "2026-10-16T09:30:00Z"
  }
}

Статус загрузки

GET/v1/uploads/{id}
Области доступа
projects:read
Лимит
обычный

Параметры пути

Поле Тип Описание
idобязательноеstring (uuid)

Запрос

curl
JavaScript
Python
curl "https://api.slicer.media/v1/uploads/6f1c2a4e-8b3d-4c1a-9e2f-3b5d7a9c1e20" \
  -H "Authorization: Bearer $SLICER_TOKEN"

Ответ

Поля ответа: Upload (18)
Поле Тип Описание
idобязательноеstring (uuid)
fileNameобязательноеstring
purposeобязательноеstringsource · media · music
originобязательноеstringclient · import · server
sizeBytesобязательноеinteger
statusобязательноеstringuploading · processing · ready · failed · aborted
partSizeобязательноеintegerРазмер части для PUT …/parts/{n}, байт (8 МиБ)
partCountобязательноеinteger
uploadedPartsобязательноеinteger[]
progressобязательноеnumber | nullПрогресс импорта 0–1 при загрузке по адресу0–1
mediaобязательноеobject | null
media.kindобязательноеstringvideo · image · audio
media.durationSecобязательноеnumber
media.widthобязательноеinteger
media.heightобязательноеinteger
media.hasAudioобязательноеboolean
errorобязательноеstring | null
createdAtобязательноеstringДата и время ISO 8601, UTC
Пример ответа
{
  "ok": true,
  "data": {
    "id": "6f1c2a4e-8b3d-4c1a-9e2f-3b5d7a9c1e20",
    "fileName": "interview.mp4",
    "purpose": "source",
    "origin": "client",
    "sizeBytes": 104857600,
    "status": "uploading",
    "partSize": 104857600,
    "partCount": 13,
    "uploadedParts": [
      1
    ],
    "progress": 0.5,
    "media": {
      "kind": "video",
      "durationSec": 42.5,
      "width": 1,
      "height": 1,
      "hasAudio": true
    },
    "error": "string",
    "createdAt": "2026-10-16T09:30:00Z"
  }
}

Отменить загрузку

DELETE/v1/uploads/{id}
Области доступа
projects:write
Лимит
обычный

Параметры пути

Поле Тип Описание
idобязательноеstring (uuid)

Запрос

curl
JavaScript
Python
curl -X DELETE "https://api.slicer.media/v1/uploads/6f1c2a4e-8b3d-4c1a-9e2f-3b5d7a9c1e20" \
  -H "Authorization: Bearer $SLICER_TOKEN"

Ответ

Поля ответа: object (2)
Поле Тип Описание
idобязательноеstring (uuid)
deletedобязательноеboolean
Пример ответа
{
  "ok": true,
  "data": {
    "id": "6f1c2a4e-8b3d-4c1a-9e2f-3b5d7a9c1e20",
    "deleted": true
  }
}

Схемы

Upload

Поле Тип Описание
idобязательноеstring (uuid)
fileNameобязательноеstring
purposeобязательноеstringsource · media · music
originобязательноеstringclient · import · server
sizeBytesобязательноеinteger
statusобязательноеstringuploading · processing · ready · failed · aborted
partSizeобязательноеintegerРазмер части для PUT …/parts/{n}, байт (8 МиБ)
partCountобязательноеinteger
uploadedPartsобязательноеinteger[]
progressобязательноеnumber | nullПрогресс импорта 0–1 при загрузке по адресу0–1
mediaобязательноеobject | null
media.kindобязательноеstringvideo · image · audio
media.durationSecобязательноеnumber
media.widthобязательноеinteger
media.heightобязательноеinteger
media.hasAudioобязательноеboolean
errorобязательноеstring | null
createdAtобязательноеstringДата и время ISO 8601, UTC

CreatedUpload

Поле Тип Описание
uploadобязательноеUpload
uploadUrlобязательноеstring (uri)Одноразовая ссылка: PUT всего файла без токена (≤ 1 ч, только запись)
uploadUrlExpiresAtобязательноеstringДата и время ISO 8601, UTC