# Fuentes y opciones de transcripción

> Revisa qué enlaces puedes enviar y cómo elegir subtítulos o IA, identificar hablantes y configurar el idioma.

Canonical: https://transcript1.com/es/docs/sources-and-options
Language: es
Last updated: 2026-10-20

Puedes enviar un enlace de YouTube, X, TikTok, Instagram, Facebook o Bluesky, o subir tu propio archivo. Más abajo encontrarás las demás plataformas y los enlaces que acepta cada una. Para elegir entre subtítulos e IA, identificar hablantes o indicar el idioma, agrega `source`, `diarize` y `language` al cuerpo de `POST /v1/transcriptions`. Los tres campos son opcionales.

## ¿De qué plataformas puedes enviar enlaces?

Pon el enlace en `url`. No necesitas enviar `platform`: la API reconoce la plataforma. Si incluyes ese campo, su valor debe corresponder al enlace.

| Plataforma | Enlaces aceptados |
|---|---|
| YouTube (`youtube`) | Consulta los formatos de URL de video en la siguiente sección. |
| X (`x`) | Enlaces a publicaciones con video de `x.com` o `twitter.com`, por ejemplo `https://x.com/user/status/1234567890`. |
| TikTok (`tiktok`) | Enlaces a videos de `tiktok.com`. También funcionan los enlaces cortos de `vm.tiktok.com`, `vt.tiktok.com` y `www.tiktok.com/t/`. |
| Instagram (`instagram`) | Videos y reels de `instagram.com` con las rutas `/reel/`, `/reels/`, `/p/` o `/tv/`. El enlace también puede llevar el nombre de usuario antes de la ruta del reel o de la publicación. |
| Facebook (`facebook`) | Videos y reels de `facebook.com`, incluidos los enlaces de watch. También acepta enlaces cortos de `fb.watch`, `/share/v/` y `/share/r/`. |
| Bluesky (`bluesky`) | Enlaces a publicaciones con video de `bsky.app`, por ejemplo `https://bsky.app/profile/user.example/post/3l3w4b5c6d7e2`. |
| [Twitch](https://transcript1.com/es/features/transcribir-vod-de-twitch) (`twitch`) | Grabaciones de transmisiones ya terminadas: `twitch.tv/videos/<id>` o `/<channel>/v/<id>` (también admite `video`). Para clips: `clips.twitch.tv/<slug>`, `twitch.tv/<channel>/clip/<slug>` y `/clip/<slug>`. Acepta los hosts `twitch.tv`, `www`, `m`, `go` y `clips.twitch.tv`. |
| [Dailymotion](https://transcript1.com/es/features/transcribir-video-de-dailymotion) (`dailymotion`) | Videos con las rutas `dailymotion.com/video/<id>`, con `_title` opcional, `/embed/video/<id>` o `dai.ly/<id>`. Acepta también `www.dailymotion.com` y `touch.dailymotion.com`. |
| [Pinterest](https://transcript1.com/es/features/transcribir-video-de-pinterest) (`pinterest`) | Pines cuyo video está alojado en Pinterest: `pinterest.com` o `www.pinterest.com`, con `/pin/<id>/` o `/pin/<slug>--<id>/`. Toma el primer bloque de video nativo. No acepta videos insertados desde otro sitio, imágenes, tableros, `pin.it` ni dominios regionales. |
| [LinkedIn](https://transcript1.com/es/features/transcribir-video-de-linkedin) (`linkedin`) | Videos de publicaciones públicas en `linkedin.com` o `www.linkedin.com`, con `/posts/<slug>-<activity-id>-<four-character-suffix>` o `/feed/update/urn:li:activity:<id>/`. No acepta perfiles, LinkedIn Learning, eventos ni enlaces `lnkd.in`. |
| [Snapchat Spotlight](https://transcript1.com/es/features/transcripcion-de-snapchat-spotlight) (`snapchat`) | Enlaces de Spotlight en `snapchat.com` o `www.snapchat.com` con la ruta `/spotlight/<id>`. Las historias y los perfiles no funcionan. |

Para Twitch, Dailymotion, Pinterest, LinkedIn y Snapchat Spotlight, usa HTTPS, sin credenciales en la URL ni puertos personalizados. El enlace debe apuntar a una grabación individual y pública. No funcionan las publicaciones privadas o que exigen iniciar sesión, las transmisiones en vivo o aún en procesamiento, los perfiles, los feeds ni las colecciones. transcript1 no envía cookies de cuentas. Los parámetros de tiempo del enlace no recortan la grabación. En clips de Twitch y videos de Snapchat Spotlight, conserva `media_id` tal como lo recibes: puede ser una cadena opaca que no se deduce de la URL.

En X, TikTok, Instagram, Facebook y Bluesky, elige una publicación pública con video. Si contiene varios videos, solo se transcribe el primero. No envíes perfiles, historias, páginas de transmisiones en vivo ni publicaciones de fotos de TikTok. Si hace falta iniciar sesión para ver la publicación, recibirás `login_required`. Si el video no tiene pista de audio, recibirás `no_audio`. En ambos casos, no pagas nada.

En YouTube, X, TikTok, Bluesky, Dailymotion y LinkedIn puedes obtener subtítulos si el video tiene una pista que se pueda usar en su idioma original. Instagram, Facebook, Twitch, Pinterest y Snapchat siempre transcriben el audio con IA: aceptan `auto` o `stt`, pero rechazan `captions`. El precio por minuto es el mismo en todas las plataformas y para los archivos subidos; se calcula con la duración medida.

Solo funcionan los enlaces cortos indicados en la tabla. Si al enviar un enlace para compartir todavía no se conoce el ID de la publicación, no se puede buscar una transcripción anterior de ese video. Usa el enlace completo cuando quieras reutilizarla.

| Plataforma | Subtítulos y marcas de tiempo |
|---|---|
| YouTube y X | Usa las pistas disponibles. Las marcas de tiempo por palabra solo existen en los subtítulos que YouTube genera automáticamente. |
| TikTok | Lee los subtítulos nativos VTT o SRT disponibles, con marcas de tiempo por segmento. |
| Bluesky | Lee las pistas nativas del video en el PDS de confianza compatible, no en cualquier host federado ni en videos citados o externos. Incluye marcas de tiempo por segmento. |
| Dailymotion | Lee archivos SRT directos, no playlists de subtítulos. Incluye marcas de tiempo por segmento. Las pistas identificadas como en-auto/fr-auto indican auto_generated. |
| LinkedIn | Lee las pistas VTT disponibles de videos nativos en publicaciones públicas, no de LinkedIn Learning. Incluye marcas de tiempo por segmento. |

## Enlaces de YouTube que puedes usar

Envía la URL del video en `url` y deja fuera `platform`, o usa `youtube`. Estos formatos funcionan con o sin `www.`:

| Tipo de enlace | Ejemplo |
|---|---|
| Página de reproducción | `https://www.youtube.com/watch?v=dQw4w9WgXcQ` |
| Enlace corto | `https://youtu.be/dQw4w9WgXcQ` |
| Shorts | `https://www.youtube.com/shorts/dQw4w9WgXcQ` |
| Video insertado | `https://www.youtube.com/embed/dQw4w9WgXcQ` |
| Ruta de transmisión | `https://www.youtube.com/live/dQw4w9WgXcQ` |
| YouTube para celular y YouTube Music | `https://m.youtube.com/watch?v=dQw4w9WgXcQ`, `https://music.youtube.com/watch?v=dQw4w9WgXcQ` |

No necesitas limpiar parámetros como `t`, `list` o `si`: la API los ignora y reconoce el mismo video en todos sus formatos de enlace. Sí necesitas enviar la URL completa; el ID de 11 caracteres por sí solo no basta. Los enlaces a canales, a playlists sin video o a direcciones no admitidas devuelven `422 invalid_url`. Si envías un valor desconocido en `platform`, recibirás `422 unsupported_platform` y la lista `supported_platforms`.

El video puede ser público o no listado. Si es privado, tiene restricción de edad o sigue en vivo, la transcripción falla con `media_private`, `age_restricted` o `live_stream`, respectivamente. Si tienes el archivo, puedes [subirlo directamente](https://transcript1.com/es/docs/uploads).

## source

Con `source` eliges si quieres usar los subtítulos de la plataforma o transcribir el audio.

| Valor | Qué hace |
|---|---|
| `auto` (por defecto) | Busca primero subtítulos en el idioma original en YouTube, X, TikTok, Bluesky, Dailymotion y LinkedIn. Si no puede usarlos, transcribe el audio con IA. |
| `captions` | Modo `captions` (solo subtítulos), disponible únicamente en las plataformas que los admiten. Nunca descarga audio ni usa STT. Si no hay una pista válida, falla con `no_captions` sin cobrar minutos. Si falla la descarga de los subtítulos, devuelve `fetch_failed`. Las demás plataformas rechazan esta opción con `422 invalid_request`. |
| `stt` | Transcribe siempre el audio con IA, aunque haya subtítulos. |

Para archivos subidos siempre se usa voz a texto. Puedes indicar `auto` o `stt` en `source`; si envías `captions`, recibirás `422 invalid_request`.

La pista debe estar en el idioma que pediste. Con `language` en `auto`, debe coincidir con el idioma original del video. En YouTube se usan subtítulos subidos por el creador o generados por YouTube en ese idioma, nunca traducciones automáticas. Se da prioridad a las pistas del creador, después a las de origen desconocido y por último a las generadas automáticamente. No atribuyas al creador una pista cuyo origen se desconoce.

X usa las pistas VTT disponibles. Sus marcas de tiempo son por segmento, incluso en subtítulos automáticos; no hay marcas por palabra. En modo `auto`, la API puede pasar a STT si no consigue los subtítulos o no puede interpretar su contenido. No lo hace por errores de rutas, almacenamiento o programación. Con `stt`, va directamente al audio.

## diarize

Activa `diarize` para identificar quién habla en cada fragmento. Su valor por defecto es `false`.

- La identificación de hablantes necesita voz a texto. Si usas `source` en `auto` y `diarize: true`, se omiten los subtítulos y se transcribe el audio.
- No combines `source: "captions"` con `diarize: true`: la API devuelve `422 invalid_request`.
- Recibirás etiquetas como `Speaker 1` y `Speaker 2` en `transcript.speakers` y en el campo `speaker` de cada segmento. En `text` y `srt` se añade el prefijo `Speaker 1: `; en `vtt`, la etiqueta de voz `<v Speaker 1>`.

```json
{ "platform": "youtube", "url": "https://youtu.be/dQw4w9WgXcQ", "source": "stt", "diarize": true }
```

## language

Deja `language` en `auto`, su valor por defecto, o indica un código ISO 639-1 de dos letras: por ejemplo, `en`, `de` o `es`.

- Si usas subtítulos, este campo elige el idioma de la pista. Con `auto`, se usa el idioma original del video.
- Si transcribes el audio, el proveedor recibe el idioma como una pista para reconocer el habla. Con `auto`, lo detecta automáticamente y cada segmento incluye su propio `language`.

En el objeto de transcripción, `language` indica el idioma predominante.

## De dónde viene el texto y qué incluye

Revisa `transcript_source` para saber de dónde salió el texto: `youtube_captions`, `x_captions`, `tiktok_captions`, `bluesky_captions`, `dailymotion_captions`, `linkedin_captions` o `speech_to_text`. Cuando viene de subtítulos, `caption_kind` indica `manual`, `auto_generated` o `null`. El valor `null` significa que se desconoce el origen; no significa que el creador los haya subido.

| | `youtube_captions`, `caption_kind` `manual` | `youtube_captions`, `caption_kind` `auto_generated` | `speech_to_text` |
|---|---|---|---|
| Segmentos | Un segmento por cada bloque de subtítulos | Un segmento por cada bloque de subtítulos | Se separan al cambiar de hablante o idioma, al terminar una oración o al llegar a 15 segundos |
| Marcas de tiempo por palabra con `include=words` | No incluye (`words` es `null`) | Inicio de cada palabra; el final coincide con el inicio de la siguiente | Inicio y fin de cada palabra, con `confidence` |
| Identificación de hablantes | No disponible | No disponible | Disponible con `diarize` en `true` |
| Idioma | El de la pista de subtítulos | El de la pista de subtítulos | El de cada segmento |

El texto de YouTube conserva lo que publicó la plataforma, incluidas etiquetas como `[Music]`. Para transcribir audio con IA, la grabación puede durar hasta 5 horas. Si dura más, recibirás `media_too_long`.

Los subtítulos de X (`x_captions`), TikTok, Bluesky, Dailymotion y LinkedIn no incluyen identificación de hablantes ni marcas por palabra. Aunque pidas `include=words`, cada segmento devuelve `words: null`, también en pistas generadas automáticamente. Para obtener marcas de tiempo por palabra, elige `source: "stt"`. Para identificar hablantes, activa `diarize: true` con `auto` o `stt`.

## Cuánto cuesta

Elige por el tipo de transcripción que necesitas, no por el precio: subtítulos y voz a texto cuestan lo mismo. Consumes un crédito por cada minuto de grabación, redondeando hacia arriba. Consulta [Facturación y límites](https://transcript1.com/es/docs/billing-and-limits).
