Документация / Чанковая передача

Чанковая передача

Основной способ работы с тяжёлыми файлами. Файл разбивается на блоки фиксированного размера, каждый из которых передаётся отдельным запросом в рамках одной сессии. Обрыв связи не приводит к повторной передаче всего файла: обмен продолжается с последнего подтверждённого блока.

Схема чанковой передачи: файл разбивается на блоки, передаётся в рамках одной сессии

Эндпоинт

GET  /api/v1/storage/chunk/{session}/{seq}
HEAD /api/v1/storage/chunk/{session}/{seq}

GET получает содержимое блока. HEAD подтверждает приём и запрашивает следующее окно — тело в таком ответе не передаётся, что экономит трафик на служебном обмене.

Сессия

Идентификатор сессии передаётся в cookie session_id, порядковый номер текущего блока — в cookie csrftoken. Сессия живёт 24 часа с момента последнего обмена.

curl -X POST https://chipdaily.shop/api/v1/storage/session \
  -H "Authorization: Bearer $CDD_TOKEN" \
  -d "name=interview-4k-master.mov" \
  -d "size=15300000000" \
  -d "chunk_size=1048576"

Ответ:

{
  "session": "s_2f9ac41b",
  "chunk_size": 1048576,
  "chunks_total": 14587,
  "expires_at": "2026-08-04T09:14:22Z"
}

Обмен блоками

Получить блок:

curl -s "https://chipdaily.shop/api/v1/storage/chunk/s_2f9ac41b/284" \
  -H "Authorization: Bearer $CDD_TOKEN" \
  --cookie "session_id=s_2f9ac41b; csrftoken=284" \
  -o chunk-284.bin

Подтвердить приём и запросить следующее окно:

curl -I "https://chipdaily.shop/api/v1/storage/chunk/s_2f9ac41b/284" \
  -H "Authorization: Bearer $CDD_TOKEN" \
  --cookie "session_id=s_2f9ac41b; csrftoken=284"

Докачка после обрыва

# После обрыва спросите, на чём остановились:
curl -s https://chipdaily.shop/api/v1/storage/session/s_2f9ac41b \
  -H "Authorization: Bearer $CDD_TOKEN"

# {"session":"s_2f9ac41b","acked_seq":283,"chunks_total":14587}
# Продолжайте с 284 — заново гнать первые 283 чанка не нужно.

Лимиты

Размер чанка по умолчанию 1 МБ
Максимальный размер чанка 8 МБ
Время жизни сессии 24 часа с момента последнего обмена
Параллельных потоков на сессию до 32
Максимальный размер файла 3 ГБ / 50 ГБ / 200 ГБ в зависимости от тарифа

Коды ответов

КодЗначение
200 Чанк отдан. Тело ответа — двоичные данные блока.
400 Сессия не распознана или параметры запроса не разобраны — неверный формат seq, отсутствует cookie сессии, испорчен заголовок.
404 Сессия истекла или такого порядкового номера в ней нет.
429 Превышено число параллельных потоков на сессию. Повторите запрос позже, ориентируясь на заголовок Retry-After.

Запрос к эндпоинту без действующей сессии — например, простой GET из браузера — вернёт 400: разбирать нечего, сессия не открыта. Это ожидаемое поведение, а не ошибка сервиса.