https://ytsave.appBuild downloads with YTSave
Resolve a public media URL, select an exact format, create an asynchronous job and hand the signed result to your user. The same bounded production pipeline powers the YTSave website.
Inicio rápido
YTSave handles API host by first identifying support-activated credentials. It follows with an assigned tenant endpoint and keeps a server-only call path in view.
X-API-Key: ys_live_…YTSaveClientv1# Available only after support activation
export YTSAVE_API_KEY="issued-after-review"
curl -X POST https://ytsave.app/v1/resolve \
-H "X-API-Key: $YTSAVE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url":"https://www.youtube.com/watch?v=VIDEO_ID"}'To explain Credential safety, YTSave separates server-side secret storage from no client bundle embedding. An evidence record gives no public logs or repositories its own place.
Resolver un enlace
YTSave handles Resolve operation by first identifying source detection. It follows with formats from one submitted URL and keeps no invented outputs in view.
/v1/resolveAlcance: resolver| sobre el terreno | Tipo de | Necesarios | Descripción de la actividad |
|---|---|---|---|
url | URL HTTPS | Sí | Página de medios pública o autorizada a analizar. |
tenant | cadena | No | Dominio de inquilino asignado. Por lo general, se omite. |
{
"success": true,
"platform": "youtube",
"title": "Example video",
"formats": [
{"id":"18","type":"video","quality":"360p","container":"mp4"}
],
"cached": false
}To explain Format identifier, YTSave separates the returned value unchanged from per-link availability. An evidence record gives no guessed quality label its own place.
Crear y seguir un trabajo de descarga
For Job creation, YTSave begins with asynchronous preparation. Its evidence record pairs that with a short HTTP request and ends with bounded worker execution.
/v1/jobsAlcance: empleos| sobre el terreno | Tipo de | Necesarios | Descripción de la actividad |
|---|---|---|---|
url | URL HTTPS | Sí | La misma fuente normalizada sometida a resolver. |
format_id | cadena | Sí | Un ID exacto de la respuesta de resolución. |
tenant | cadena | No | Dominio de inquilino asignado. Por lo general, se omite. |
curl -X POST https://ytsave.app/v1/jobs \
-H "X-API-Key: $YTSAVE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url":"https://www.youtube.com/watch?v=VIDEO_ID","format_id":"18"}'job_id.GET /v1/jobs/{job_id} with the same key.| Situación actual | Significado | Acción del cliente |
|---|---|---|
queued | Admitido en la cola acotada. | Encuesta de nuevo con retroceso. |
extracting | Actualización de metadatos de origen o ruta. | Continúa encuestando. |
processing | Descargar, remuxar o fusionar. | Mostrar el progreso del servidor. |
ready | Descarga firmada está disponible. | Envía la URL al usuario. |
failed | Error estructurado de terminal. | Read error_code. Retry only when advised. |
expired | Se eliminó la salida temporal. | Crea un nuevo trabajo. |
curl https://ytsave.app/v1/jobs/JOB_ID \
-H "X-API-Key: $YTSAVE_API_KEY"YTSave makes Job polling easy to scan. The page starts with one-second initial wait, moves to capped backoff, and clearly states temporary signed delivery.
Errores predecibles
For Error contract, YTSave checks one non-2xx envelope before a support request ID. This evidence record also makes predictable client handling clear.
{
"success": false,
"error": {
"code": "RATE_LIMITED",
"category": "rate_limited",
"message": "Too many requests. Please try again shortly.",
"retryable": true,
"details": {"retry_after_seconds": 20}
},
"request_id": "…"
}| HTTP | Significado típico | Medidas |
|---|---|---|
| 400 | URL, cuerpo o formato no disponible no válido. | Corrija la solicitud. Vuelva a resolver los formatos. |
| 401 | Falta clave, no válida, caducada o con alcance incorrecto. | Compruebe la credencial del lado del servidor. |
| 403 | La directiva de inquilino o de origen rechazó la solicitud. | No elude la política. Contacte con el soporte. |
| 404 | Trabajo desconocido o caducado. | Cree un nuevo trabajo si es apropiado. |
| 429 | Se alcanzó el límite de solicitudes o trabajos activos. | Honor retry_after_seconds. |
| 503 | Cola/capacidad o upstream temporalmente no disponible. | Vuelva a intentarlo con retroceso exponencial y fluctuación. |
Contrato de explotación
YTSave issues an operational quota with each approval to safeguard the API consumer and upstream media services.
- Utilice la lógica de aplicación idempotente y nunca inicie trabajos duplicados para el mismo clic del usuario.
- La caché resuelve los metadatos brevemente, pero siempre trata las URL de descarga firmadas como si expiraran.
- Use bounded exponential backoff with jitter for
429,503and retryable errors. - Procesa solo medios públicos o medios a los que estás autorizado a acceder, sin omitir los controles de acceso ni DRM.
- Mantenga los ID de solicitud y los ID de trabajo en registros operativos privados. No registre las URL enviadas innecesariamente.
YTSave handles Schema access by first identifying activation before exploration. It follows with assigned authentication and keeps documented request shapes in view. Referencia de OpenAPI
Request your API key
Document the API consumer, its monthly request estimate and supported platform requirements. YTSave reviews whether resolve, job submission or both are justified before issuing a once-visible key.
Request API access Las claves están limitadas al ámbito del inquilino, son revocables y se emiten a través del formulario de contacto.