Explorar documentos para desarrolladores

REST API

Subir y compartir archivos

Este tutorial toma un archivo local llamado demo.mp4 y lo convierte en un recurso compartido funcional URL. Complete los pasos en orden; cada respuesta proporciona un valor utilizado por la siguiente solicitud.

1

Crear y guardar una clave API

Abra la configuración del desarrollador, seleccione uploads:write, files:read, shares:write y shares:read y luego cree la clave. Cópielo ahora: el secreto completo se muestra solo una vez.

Alcances disponibles: uploads:write, files:read, shares:write y shares:read.

Resultado esperado:Tienes un secreto que comienza con el prefijo de clave Video2URL. Mantenlo en privado.
2

Prepara tu terminal

Coloque la clave en una variable de entorno para que no aparezca en todos los comandos ni en el historial de su shell. Reemplace el marcador de posición antes de presionar Enter.

Terminal
read -s VIDEO2URL_API_KEY
echo "key loaded"
Resultado esperado:El comando imprime la clave cargada, no el secreto en sí.
3

Crear un trabajo de carga

Indique a Video2URL el nombre de archivo exacto, el tipo de MIME y el tamaño de bytes. Esto devuelve una carga temporal de R2 URL; aun no sube el video.

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}'
Resultado esperado:Una respuesta JSON que contiene data.uploadId y data.upload.url. Guarde ambos valores para los siguientes pasos.
Save response values
export UPLOAD_ID="paste data.uploadId here"
export UPLOAD_URL="paste data.upload.url here"
4

Enviar los bytes del vídeo.

Cargue demo.mp4 directamente al URL temporal. No agregue la clave Video2URL API a esta solicitud PUT. Utilice el tipo de contenido devuelto por la respuesta de creación y carga. Cargue el archivo sin formato en el URL prefirmado utilizando el tipo de contenido devuelto.

curl · PUT
curl --fail-with-body -X PUT "$UPLOAD_URL" \
  -H "Content-Type: video/mp4" \
  --data-binary @demo.mp4
Resultado esperado:El servidor de carga devuelve HTTP 200. Un cuerpo de respuesta vacío es normal.
5

Completa y verifica la carga.

Después de que PUT tenga éxito, dígale a Video2URL que verifique el objeto almacenado y cree el registro del archivo. No llame a este paso antes de que finalice 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"
Resultado esperado:La respuesta contiene data.file.fileId. Guardar FILE_ID; identifica el archivo completo.
Save FILE_ID
export FILE_ID="paste data.file.fileId here"
6

Crea el recurso compartido final URL

Cree un enlace no listado desde FILE_ID. No listado significa que cualquiera que tenga el URL puede abrirlo, pero no está ubicado en un directorio público.

  • El título es opcional.
  • La contraseña es opcional.
  • La visibilidad es opcional.
  • La visibilidad por defecto es no listada.

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"}"
Resultado esperado:La respuesta contiene el registro compartido y URL. Abra SHARE_URL en una ventana privada del navegador para verificarlo.
Open SHARE_URL
export SHARE_URL="paste the returned share URL here"
open "$SHARE_URL" # macOS; use xdg-open on Linux

JavaScript & Python

Crea la clave más estrecha que necesites. Gire creando e implementando un reemplazo antes de revocar la clave anterior. Si finaliza el acceso pago, las claves permanecen guardadas pero las llamadas se pausan; renovar un plan elegible restablece el acceso.

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()