ShortsMonkey DocumentationConsole APICréer une clé

Recherche vidéo Outlier

Recherchez les données stockées par mot-clé, niche, région et ratio vues/abonnés.

POST
https://api.shortsmonkey.com/v1/videos/outliers/search

2 crédits pour 1 à 20 éléments réels

Recherche vidéo Outlier#

Recherchez les données stockées par mot-clé, niche, région et ratio vues/abonnés.

Authentification#

Envoyez Authorization: Bearer sm_live_.... Ne placez jamais la clé complète dans les URL, les cookies, les corps, les journaux ou les analyses.

Fraîcheur des données#

Les classements lisent les instantanés stables publiés par le travailleur. Les lectures publiques ne déclenchent jamais une actualisation YouTube.

Demande#

ArticleValeurDescription
MéthodePOSTMéthode de requête HTTP
Complet URLhttps://api.shortsmonkey.com/v1/videos/outliers/searchProduction API URL
AuthentificationAuthorization: Bearer sm_live_...Envoyer la clé complète uniquement dans l'en-tête
Type de contenuapplication/jsonLe corps de la requête utilise JSON
Crédits2 crédits pour 1 à 20 éléments réelsLes réponses aux erreurs coûtent 0 crédit

Paramètres de la demande#

NomEmplacementTaperRequisDéfautValeurs ou limitesDescription
keywordCorps JSONstringNon1 à 120 caractèresMot clé correspondant au titre stocké ou au texte de niche
nicheCorps JSONstringNon1 à 80 caractèresFiltre de niche ou de catégorie
video_typeCorps JSONstringNonallshorts / long / allType de vidéo
regionCorps JSONstringNon2 à 16 caractèresCode de région
max_channel_subscribersCorps JSONintegerNon0–10,000,000Nombre maximum d'abonnés à la chaîne
min_viewsCorps JSONintegerNon0–1,000,000,000Nombre minimum de vues
min_vs_ratioCorps JSONnumberNon100–100,000Ratio minimum de vues par abonnés
time_windowCorps JSONstringNon7d24h / 3d / 7d / 30dFenêtre de publication vidéo
limitCorps JSONintegerNon201–50Nombre maximum d'éléments sur cette page
all_cursorCorps JSONstringNondata.all_data.next_cursorRécupérer la page suivante non filtrée
filter_cursorCorps JSONstringNondata.filter_data.next_cursorRécupérer la page filtrée suivante sans changer les filtres
cursorCorps JSONstringNonParamètre de compatibilité obsolèteAlias ​​pour filter_cursor ; n'envoyez pas les deux

Champs de réponse de réussite#

all_data est une page non filtrée de l'instantané stable ; filter_data est une page du même instantané après les paramètres par défaut du point de terminaison et les filtres de demande. Chaque résultat est paginé indépendamment.

La notation par points représente les objets imbriqués et [] représente les éléments du tableau. Le nombre d'abonnés inconnus est null avec subscriber_count_hidden: true. Une demande est facturée une seule fois en utilisant le plus grand nombre d'articles retournés, jamais la somme des deux ensembles.

Chemin de champTaperNullableDescription
data.all_data.itemsarray<object>NonÉléments vidéo non filtrés sur la page actuelle
data.all_data.items[].video_idstringNonID vidéo YouTube
data.all_data.items[].titlestringNonTitre de la vidéo
data.all_data.items[].video_urlstringNonVidéo YouTube URL
data.all_data.items[].channel.idstringOuiID de chaîne
data.all_data.items[].channel.titlestringNonTitre de la chaîne
data.all_data.items[].channel.subscribersintegerOuiNombre d'abonnés ; null lorsqu'il est masqué
data.all_data.items[].channel.subscriber_count_hiddenbooleanNonSi le nombre d'abonnés est masqué
data.all_data.items[].viewsintegerNonInstantané du nombre de vues
data.all_data.items[].views_to_subscribers_rationumberOuiRatio vues/abonnés
data.all_data.items[].opportunity_scorenumberOuiScore d'opportunité
data.all_data.items[].duration_secondsintegerNonDurée de la vidéo en secondes
data.all_data.items[].published_atstring(date-time)OuiHeure de publication de la vidéo en UTC ISO 8601
data.all_data.items[].snapshot_atstring(date-time)OuiTemps de collecte des données
data.all_data.items[].nichestringOuiNiche ou catégorie
data.all_data.items[].trackstringOuiIdentifiant de la piste de l'ensemble de données
data.all_data.items[].regionstringOuiCode de région
data.all_data.items[].reasonsarray<string>NonRaisons du classement
data.all_data.items[].video_typestringNonshorts ou long
data.all_data.next_cursorstringOuiPage suivante cursor pour cet ensemble de résultats ; null une fois terminé
data.filter_data.itemsarray<object>NonÉléments vidéo après les valeurs par défaut et les filtres de demande
data.filter_data.items[].video_idstringNonID vidéo YouTube
data.filter_data.items[].titlestringNonTitre de la vidéo
data.filter_data.items[].video_urlstringNonVidéo YouTube URL
data.filter_data.items[].channel.idstringOuiID de chaîne
data.filter_data.items[].channel.titlestringNonTitre de la chaîne
data.filter_data.items[].channel.subscribersintegerOuiNombre d'abonnés ; null lorsqu'il est masqué
data.filter_data.items[].channel.subscriber_count_hiddenbooleanNonSi le nombre d'abonnés est masqué
data.filter_data.items[].viewsintegerNonInstantané du nombre de vues
data.filter_data.items[].views_to_subscribers_rationumberOuiRatio vues/abonnés
data.filter_data.items[].opportunity_scorenumberOuiScore d'opportunité
data.filter_data.items[].duration_secondsintegerNonDurée de la vidéo en secondes
data.filter_data.items[].published_atstring(date-time)OuiHeure de publication de la vidéo en UTC ISO 8601
data.filter_data.items[].snapshot_atstring(date-time)OuiTemps de collecte des données
data.filter_data.items[].nichestringOuiNiche ou catégorie
data.filter_data.items[].trackstringOuiIdentifiant de la piste de l'ensemble de données
data.filter_data.items[].regionstringOuiCode de région
data.filter_data.items[].reasonsarray<string>NonRaisons du classement
data.filter_data.items[].video_typestringNonshorts ou long
data.filter_data.next_cursorstringOuiPage suivante cursor pour cet ensemble de résultats ; null une fois terminé
meta.request_idstringNonDemander l'ID de trace
meta.snapshot_idstringNonID d'instantané stable
meta.snapshot_atstring(date-time)NonHorodatage de l'instantané
meta.data_statusstringNonStatut de l'ensemble de données
credits.costintegerNonCrédits réels facturés
credits.remainingintegerNonCrédits de compte restants
credits.period_ends_atstring(date-time)NonFin de la période de crédit en cours

Pagination et cursor#

Envoyez all_data.next_cursor sous la forme all_cursor et filter_data.next_cursor sous la forme filter_cursor. Les cursor sont indépendants, opaques, signés et valables 24 heures ; l'ancien cursor n'est qu'un alias pour filter_cursor.

Etag#

Les classements prennent en charge If-None-Match. Un hit renvoie HTTP 304 avec X-Credits-Cost: 0.

Erreurs et limites de débit#

Chaque erreur contient code, l'anglais stable message, request_id et details. Toutes les réponses 4xx/5xx ne coûtent aucun crédit.

Statut HTTPCodeCauseAction suggérée
400INVALID_REQUESTFormat, combinaison ou plage de paramètre non valideCorrigez les paramètres à l'aide de details.issues
401INVALID_API_KEYLa clé est invalide ou inactiveVérifiez l’en-tête Bearer et l’état de la clé
402SUBSCRIPTION_REQUIRED / CREDITS_EXHAUSTEDL'abonnement ou les crédits ne sont pas disponiblesVérifiez le plan, le solde et le budget de sécurité clé
429RATE_LIMITEDLimite de débit ou de simultanéité dépasséeRéessayez après l'intervalle Retry-After
503DATA_STALE / SERVICE_UNAVAILABLELes données ou le service sont temporairement indisponiblesRéessayez plus tard et conservez request_id
curl -X POST "https://api.shortsmonkey.com/v1/videos/outliers/search" \
  -H "Authorization: Bearer $SHORTSMONKEY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"keyword":"finance","video_type":"all","time_window":"7d","min_vs_ratio":10,"limit":20}'