Browse developer docs

REST API

Загружайте и делитесь файлами

В этом руководстве используется один локальный файл с именем demo.mp4 и преобразуется его в рабочий общий ресурс URL. Выполните шаги по порядку; каждый ответ предоставляет значение, используемое следующим запросом.

1

Создайте и сохраните ключ API

Откройте настройки разработчика, выберите «Загрузки: запись», «Файлы: чтение», «Общие ресурсы: запись» и «Общие ресурсы: чтение», затем создайте ключ. Скопируйте его сейчас — полный секрет отображается только один раз.

Доступные области: загрузки:запись, файлы:чтение, общие ресурсы:запись и общие ресурсы:чтение.

Ожидаемый результат:У вас есть секрет, который начинается с префикса ключа Video2URL. Держите это в тайне.
2

Подготовьте свой терминал

Поместите ключ в переменную среды, чтобы он не появлялся в каждой команде или в истории вашей оболочки. Замените заполнитель перед нажатием Enter.

Terminal
read -s VIDEO2URL_API_KEY
echo "key loaded"
Ожидаемый результат:Команда печатает загруженный ключ, а не сам секрет.
3

Создать задание на загрузку

Сообщите Video2URL точное имя файла, тип MIME и размер в байтах. Это возвращает временную загрузку R2 URL; видео еще не загружается.

POST /api/v1/uploads

curl
curl -sS -X POST https://video2url.com/api/v1/uploads \
  -H "Authorization: Bearer $VIDEO2URL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"filename":"demo.mp4","mimeType":"video/mp4","sizeBytes":1048576}'
Ожидаемый результат:Ответ JSON, содержащий data.uploadId и data.upload.url. Сохраните оба значения для следующих шагов.
Save response values
export UPLOAD_ID="paste data.uploadId here"
export UPLOAD_URL="paste data.upload.url here"
4

Отправьте видеобайты

Загрузите demo.mp4 непосредственно во временный URL. Не добавляйте ключ API Video2URL к этому запросу PUT. Используйте Content-Type, возвращаемый ответом create-upload. Загрузите необработанный файл в заранее заданный URL, используя возвращенный тип контента.

curl · PUT
curl --fail-with-body -X PUT "$UPLOAD_URL" \
  -H "Content-Type: video/mp4" \
  --data-binary @demo.mp4
Ожидаемый результат:Сервер загрузки возвращает HTTP 200. Пустое тело ответа — это нормально.
5

Завершите и подтвердите загрузку

После успешного выполнения PUT сообщите Video2URL проверить сохраненный объект и создать запись файла. Не вызывайте этот шаг до завершения PUT.

POST /api/v1/uploads/{uploadId}/complete · GET /api/v1/uploads/{uploadId}

curl
curl -sS -X POST "https://video2url.com/api/v1/uploads/$UPLOAD_ID/complete" \
  -H "Authorization: Bearer $VIDEO2URL_API_KEY"
Ожидаемый результат:Ответ содержит data.file.fileId. Сохранить FILE_ID; он идентифицирует завершенный файл.
Save FILE_ID
export FILE_ID="paste data.file.fileId here"
6

Создайте последний общий ресурс URL.

Создайте скрытую ссылку из FILE_ID. «Не в списке» означает, что любой, у кого есть URL, может открыть его, но он не помещен в общедоступный каталог.

  • Название не является обязательным.
  • Пароль не является обязательным.
  • Видимость не является обязательной.
  • По умолчанию видимость не указана.

POST /api/v1/shares · GET / DELETE /api/v1/shares/{shareId}

curl
curl -sS -X POST https://video2url.com/api/v1/shares \
  -H "Authorization: Bearer $VIDEO2URL_API_KEY" \
  -H "Content-Type: application/json" \
  -d "{"fileId":"$FILE_ID","visibility":"unlisted"}"
Ожидаемый результат:Ответ содержит общую запись и URL. Откройте SHARE_URL в приватном окне браузера, чтобы проверить его.
Open SHARE_URL
export SHARE_URL="paste the returned share URL here"
open "$SHARE_URL" # macOS; use xdg-open on Linux

JavaScript & Python

Создайте самый узкий ключ, который вам нужен. Ротация путем создания и развертывания замены перед отзывом старого ключа. Если платный доступ заканчивается, ключи остаются сохраненными, но звонки приостанавливаются; продление соответствующего плана восстанавливает доступ.

JavaScript
const response = await fetch('https://video2url.com/api/v1/uploads', {
  method: 'POST',
  headers: { Authorization: `Bearer ${process.env.VIDEO2URL_API_KEY}`, 'Content-Type': 'application/json' },
  body: JSON.stringify({ filename: 'demo.mp4', mimeType: 'video/mp4', sizeBytes: file.size }),
});
const created = await response.json();
Python
import os, requests
headers = {"Authorization": f"Bearer {os.environ['VIDEO2URL_API_KEY']}"}
created = requests.post("https://video2url.com/api/v1/uploads", headers=headers, json={"filename": "demo.mp4", "mimeType": "video/mp4", "sizeBytes": 1048576})
created.raise_for_status()
with open("demo.mp4", "rb") as video:
    requests.put(created.json()["data"]["upload"]["url"], data=video).raise_for_status()