Detalle del vídeo
Lea una instantánea de video almacenada sin activar una recuperación de YouTube en vivo.
https://api.shortsmonkey.com/v1/videos/abc1231 crédito cuando se encuentre
Detalle del vídeo#
Lea una instantánea de video almacenada sin activar una recuperación de YouTube en vivo.
Autenticación#
Envíe Authorization: Bearer sm_live_.... Nunca coloque la clave completa en URL, cookies, cuerpos, registros o análisis.
Actualización de datos#
Las clasificaciones leen instantáneas estables publicadas por el trabajador. Las lecturas públicas nunca activan una actualización de YouTube.
Pedido#
| Artículo | Valor | Descripción |
|---|---|---|
| Método | GET | Método de solicitud HTTP |
| Completo URL | https://api.shortsmonkey.com/v1/videos/abc123 | Producción API URL |
| Autenticación | Authorization: Bearer sm_live_... | Enviar la clave completa solo en el encabezado |
| Tipo de contenido | Sin cuerpo de solicitud | Las solicitudes GET no tienen cuerpo de solicitud |
| Créditos | 1 crédito cuando se encuentre | Las respuestas de error cuestan 0 créditos |
Solicitar parámetros#
| Nombre | Ubicación | Tipo | Requerido | Por defecto | Valores o límites | Descripción |
|---|---|---|---|---|---|---|
video_id | Camino | string | Sí | — | 6 a 32 caracteres seguros para URL | ID de vídeo YouTube almacenado; los registros faltantes devuelven 404 a coste cero |
Campos de respuesta exitosa#
all_data es una página sin filtrar de la instantánea estable; filter_data es una página de la misma instantánea después de los valores predeterminados del punto final y los filtros de solicitud. Cada resultado se pagina de forma independiente.
La notación de puntos representa objetos anidados y [] representa elementos de matriz. El recuento de suscriptores desconocidos es null con subscriber_count_hidden: true. Una solicitud se factura una vez utilizando el mayor número de artículos devueltos, nunca la suma de ambos conjuntos.
| Camino de campo | Tipo | Anulable | Descripción |
|---|---|---|---|
data.all_data.items | array<object> | No | Elementos de vídeo sin filtrar en la página actual |
data.all_data.items[].video_id | string | No | ID de vídeo YouTube |
data.all_data.items[].title | string | No | Título del vídeo |
data.all_data.items[].video_url | string | No | Vídeo YouTube URL |
data.all_data.items[].channel.id | string | Sí | ID de canal |
data.all_data.items[].channel.title | string | No | Título del canal |
data.all_data.items[].channel.subscribers | integer | Sí | Recuento de suscriptores; null cuando está oculto |
data.all_data.items[].channel.subscriber_count_hidden | boolean | No | Si el recuento de suscriptores está oculto |
data.all_data.items[].views | integer | No | Instantánea del recuento de vistas |
data.all_data.items[].views_to_subscribers_ratio | number | Sí | Relación vistas-suscriptores |
data.all_data.items[].opportunity_score | number | Sí | Puntuación de oportunidad |
data.all_data.items[].duration_seconds | integer | No | Duración del vídeo en segundos. |
data.all_data.items[].published_at | string(date-time) | Sí | Hora de publicación del vídeo en UTC ISO 8601 |
data.all_data.items[].snapshot_at | string(date-time) | Sí | tiempo de recolección de datos |
data.all_data.items[].niche | string | Sí | Nicho o categoría |
data.all_data.items[].track | string | Sí | Identificador de seguimiento del conjunto de datos |
data.all_data.items[].region | string | Sí | código de región |
data.all_data.items[].reasons | array<string> | No | Razones de clasificación |
data.all_data.items[].video_type | string | No | shorts o long |
data.all_data.next_cursor | string | Sí | Página siguiente cursor para este conjunto de resultados; null cuando termine |
data.filter_data.items | array<object> | No | Elementos de vídeo después de los valores predeterminados y los filtros de solicitud |
data.filter_data.items[].video_id | string | No | ID de vídeo YouTube |
data.filter_data.items[].title | string | No | Título del vídeo |
data.filter_data.items[].video_url | string | No | Vídeo YouTube URL |
data.filter_data.items[].channel.id | string | Sí | ID de canal |
data.filter_data.items[].channel.title | string | No | Título del canal |
data.filter_data.items[].channel.subscribers | integer | Sí | Recuento de suscriptores; null cuando está oculto |
data.filter_data.items[].channel.subscriber_count_hidden | boolean | No | Si el recuento de suscriptores está oculto |
data.filter_data.items[].views | integer | No | Instantánea del recuento de vistas |
data.filter_data.items[].views_to_subscribers_ratio | number | Sí | Relación vistas-suscriptores |
data.filter_data.items[].opportunity_score | number | Sí | Puntuación de oportunidad |
data.filter_data.items[].duration_seconds | integer | No | Duración del vídeo en segundos. |
data.filter_data.items[].published_at | string(date-time) | Sí | Hora de publicación del vídeo en UTC ISO 8601 |
data.filter_data.items[].snapshot_at | string(date-time) | Sí | tiempo de recolección de datos |
data.filter_data.items[].niche | string | Sí | Nicho o categoría |
data.filter_data.items[].track | string | Sí | Identificador de seguimiento del conjunto de datos |
data.filter_data.items[].region | string | Sí | código de región |
data.filter_data.items[].reasons | array<string> | No | Razones de clasificación |
data.filter_data.items[].video_type | string | No | shorts o long |
data.filter_data.next_cursor | string | Sí | Página siguiente cursor para este conjunto de resultados; null cuando termine |
meta.request_id | string | No | Solicitar ID de seguimiento |
credits.cost | integer | No | 1 cuando se encuentra el video |
credits.remaining | integer | No | Créditos restantes de la cuenta |
credits.period_ends_at | string(date-time) | No | Fin del período de crédito actual |
Paginación y cursor#
Envíe all_data.next_cursor como all_cursor y filter_data.next_cursor como filter_cursor. Los cursor son independientes, opacos, firmados y válidos por 24 horas; El cursor heredado es solo un alias para filter_cursor.
etiqueta ET#
Las clasificaciones admiten If-None-Match. Un acierto devuelve HTTP 304 con X-Credits-Cost: 0.
Errores y límites de tarifa#
Cada error contiene code, message, request_id y details en inglés estable. Todas las respuestas 4xx/5xx cuestan cero créditos.
| Estado HTTP | Código | Causa | Acción sugerida |
|---|---|---|---|
| 400 | INVALID_REQUEST | Formato, combinación o rango de parámetro no válido | Corrija los parámetros usando details.issues |
| 401 | INVALID_API_KEY | La clave no es válida o está inactiva. | Verifique el encabezado del portador y el estado de la clave |
| 402 | SUBSCRIPTION_REQUIRED / CREDITS_EXHAUSTED | La suscripción o los créditos no están disponibles | Consulta el plan, el equilibrio y el presupuesto clave de seguridad. |
| 429 | RATE_LIMITED | Se superó el límite de tasa o simultaneidad | Reintentar después del intervalo Retry-After |
| 503 | DATA_STALE / SERVICE_UNAVAILABLE | Los datos o el servicio no están disponibles temporalmente | Vuelva a intentarlo más tarde y conserve request_id |
curl -X GET "https://api.shortsmonkey.com/v1/videos/abc123" \
-H "Authorization: Bearer $SHORTSMONKEY_API_KEY"