OpenAPI YAMLOpenAPI JSONproblèmes YAMLVue d’ensemble de l’API
Ce groupe compte 38 opérations, générées à partir de api/openapi.yaml. Filtrez par chemin, action ou authentification. Chaque point de terminaison liste ses entrées ; développez-le pour voir un modèle de requête et les codes de réponse. Les modèles demandent vos propres valeurs et un corps conforme au schéma.
Remplacez les espaces réservés en majuscules par vos valeurs. Pour une requête JSON, enregistrez un corps correspondant au schéma dans request.json. Les exemples de cookies utilisent un pot à cookies local issu d’une session authentifiée.
Téléversements médias
Lister les médias
Liste les médias prêts, les plus récents d’abord, au maximum 1000 par page. folder conserve uniquement les fichiers directement dans un dossier média (son ID), ou root uniquement ceux à la racine de la bibliothèque ; un ID de dossier bien formé qui ne nomme aucun dossier ne liste rien. next_cursor est la position de la dernière ligne retournée tant qu’il reste des lignes ; renvoyez-le comme after, avec les mêmes filtres, pour la page suivante. next_cursor est null à la dernière page.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton. |
| étiquette | requête | optionnel | Étiquette média exacte. Les objets non étiquetés sont omis lorsque ce filtre est présent. |
| primitif | requête | optionnel | |
| dossier | requête | optionnel | Un ID de dossier média ne conserve que les fichiers directement dans ce dossier, pas ceux de ses sous-dossiers ; la racine ne conserve que les fichiers à la racine de la bibliothèque. Omettre liste tous les fichiers. |
| ids | requête | optionnel | ID de médias séparés par des virgules, au plus 200 distincts ; au-delà, c’est invalid_request sur ids. Ne garde que ces fichiers : un ID qui ne désigne aucun fichier prêt est absent, et les autres filtres ainsi que la pagination s’appliquent toujours. Une valeur vide ne liste rien. |
| library | requête | optionnel | true liste le projet Bibliothèque de l’organisation au lieu de ce projet : ses éléments sont en lecture seule ici et portent library true. Une organisation sans Bibliothèque, ou le projet Bibliothèque lui-même, ne liste rien avec true. |
| après | requête | optionnel | next_cursor de la page précédente de la même liste, avec les mêmes filtres. Omission commence à la ligne la plus récente. Une valeur qui n’est pas un tel curseur est invalid_request. |
Modèle de requête et réponses
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/media'Réponses
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 200 | Médias | MediaList (application/json) |
Créer une génération de médias
Générer une image fixe à partir d’une invite, la stocker comme média privé prêt du projet et facturer son utilisation. Le POST répond 202 immédiatement avec Operation, avec ou sans Prefer: respond-async, car un proxy devant l’API abandonne une requête qui n’envoie aucun octet pendant 100 s et une image fixe de haute qualité peut prendre plus de temps.
Interrogez GET /api/operations/{id} jusqu’à ce que Operation soit succeeded, lorsque son result vaut {media_id, usage: {quality, credits, usd}} (MediaGenerationUsage), ou failed, lorsque son error indique le problème. Un refus décidé avant tout travail du fournisseur (payment_required, reseller_generation_limit, rate_limited, not_ready, invalid_request) répond toujours au POST.
Il n'inclut jamais les octets d'image, b64_json, clés d'objet, URL signées, URL du fournisseur, coût du fournisseur, jetons du fournisseur, ni le nom du modèle de déploiement. L'invite est des octets client et n'est pas renvoyée.
Avant que le prompt n’atteigne le fournisseur d’image, le serveur y ajoute des exigences de cadrage fixes : l’œuvre doit remplir le cadre de bord à bord, et aucune télévision, moniteur, écran, afficheur, bordure, cadre, montage, support, mur, pièce, maquette d’appareil, ombre portée ou photographie d’un panneau installé ne peut être représenté, et toute description dans le prompt de l’appelant indiquant où le panneau sera suspendu ou quel appareil l’affichera est traitée comme des métadonnées de placement plutôt que comme sujet.
Les règles décoratives et bordures à l’intérieur du design lui-même restent disponibles. L’invite de l’appelant n’est jamais réécrite ni supprimée et est stockée inchangée. Idempotency-Key rejoue la même Operation, jamais une deuxième tentative facturée. Les clients ne font pas de PUT ni ne valident les octets générés.
La version stockée est un WebP avec perte (qualité 90) à la taille exacte du format avec un bord court de 1080 px (16:9 est 1920x1080, 9:16 1080x1920, 1:1 1080x1080, 4:3 1440x1080, 3:4 1080x1440, 3:2 1620x1080, 2:3 1080x1620) ; la toile du fournisseur est recadrée au centre et rééchantillonnée à cette taille.
Le nom de fichier est distinctif par génération, generated-16x9-1a2b3c4d.webp, avec le suffixe tiré de l’identifiant média. Récupérez les octets avec GET /api/media/{id}/content. Own-gen-then-upload reste valide.
Sur Standard, le solde restant qui ne peut couvrir deux fois le coût fournisseur de l’image fixe, arrondi aux crédits entiers, après le plancher d’introduction (moins 1 000 000 crédits jusqu’au 2027-01-01, puis zéro) renvoie payment_required, sauf SCREENRIG__ENVIRONMENT=development, et l’admission avant l’appel fournisseur exige un solde au-dessus de ce plancher du minimum par qualité : 200 crédits pour faible, 800 pour moyen, 2000 pour élevé.
Les autres forfaits ne sont jamais refusés pour leur solde.
Une organisation facturée par l’entremise d’un revendeur est refusée avec reseller_generation_limit (402) dès que les clients délégués de son revendeur se sont vu facturer la limite mensuelle de génération d’images ($100 au prix de liste tant que le revendeur attend son examen, $1,000 ensuite, comptés par mois UTC), sauf si le crédit propre de l’organisation couvre l’image; une génération déjà admise se termine.
Une configuration vide du fournisseur sélectionné renvoie not_ready. Jeton de projet uniquement. Une seule génération en cours par organisation; tout parallélisme supplémentaire est rate_limited.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton. |
| Idempotency-Key | en-tête | obligatoire | |
| Prefer | en-tête | optionnel | Facultatif. La route répond 202 immédiatement avec Operation, avec ou sans cet en-tête ; interrogez Operation. |
Champs du corps de la requête
| Champ | Description |
|---|---|
| invite (requis, chaîne) | minLength : 1 maxLength : 4000 |
| aspect_ratio (optionnel, chaîne) | Autorisés : « 1:1 », « 16:9 », « 9:16 », « 4:3 », « 3:4 », « 3:2 », « 2:3 » par défaut : « 16:9 » |
| qualité (optionnelle, chaîne) | Autorisé : « low », « medium », « high » par défaut : « medium » |
| étiquette (optionnelle, chaîne) | modèle : "^[A-Za-z0-9]{1,32}$" |
| références (optionnelles, tableau) |
Modèle de requête et réponses
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt --header 'Idempotency-Key: REQUEST_ID' --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/media/generations'Réponses
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 202 | La génération a été acceptée et se poursuit ; interrogez GET /api/operations/{id} jusqu’à ce que Operation soit succeeded (result media_id et usage) ou failed (error). Le même Idempotency-Key répond avec la même Operation. | Opération (application/json) ; en-têtes : Preference-Applied, RateLimit-Policy, RateLimit |
| 402 | Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique. | Problème (application/problem+json) |
| 404 | Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique. | Problème (application/problem+json) |
| 500 | Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique. | Problème (application/problem+json) |
| par défaut | Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique. | Problème (application/problem+json) |
Lister les dossiers de médias
Liste chaque dossier média dans le projet, au maximum 1000, ordonnés par nom. Les dossiers organisent la bibliothèque multimédia, et un sélecteur de liste de lecture par :folder lit directement les fichiers dans un dossier. Le parent_id d’un dossier est null à la racine de la bibliothèque.
Construisez l’arbre à partir du parent_id ; le dossier d’un fichier est Media.folder_id. library=true liste à la place les dossiers de la Bibliothèque de l’organisation (en lecture seule ; un sélecteur by:folder peut en nommer un).
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton. |
| library | requête | optionnel | true liste le projet Bibliothèque de l’organisation au lieu de ce projet : ses éléments sont en lecture seule ici et portent library true. Une organisation sans Bibliothèque, ou le projet Bibliothèque lui-même, ne liste rien avec true. |
Modèle de requête et réponses
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/media-folders'Réponses
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 200 | Dossiers médias | MediaFolderList (application/json) |
| par défaut | Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique. | Problème (application/problem+json) |
Créer un dossier de médias
Crée un dossier média à la racine de la bibliothèque (parent_id nul ou absent) ou à l’intérieur de parent_id. Les noms sont rognés, contiennent de 1 à 100 caractères Unicode sans contrôles, ne sont ni « . » ni « .. », et peuvent se répéter. Une organisation contient au maximum 1000 dossiers, tous projets confondus (quota_exceeded), imbriqués au maximum à 10 niveaux (invalid_request). Émet media.folder_created.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton. |
| Idempotency-Key | en-tête | optionnel | Omettre pour une opération fraîche. Fournissez et réutilisez une clé pour dédupliquer les tentatives ; le CLI gère les clés automatiquement. |
| project_id | requête | optionnel | Avec dashboardSession, le projet affiché à la création du dossier. Si fourni, il doit correspondre au projet sélectionné dans la session, sinon resource_conflict; une valeur vide ou répétée donne invalid_request. L’omission préserve les anciens clients du tableau de bord. Les requêtes avec jeton de projet utilisent leur projet autorisé. |
Champs du corps de la requête
| Champ | Description |
|---|---|
| nom (obligatoire, chaîne) | Tronqué ; 1 à 100 caractères Unicode, sans contrôles, ni . ou .. minLength : 1 maxLength : 100 |
| parent_id (optionnel, en ligne) | Le dossier dans lequel le créer ; null ou absent pour la racine de la bibliothèque. |
Modèle de requête et réponses
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/media-folders'Réponses
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 201 | Dossier créé. | MediaFolder (application/json) ; en-têtes : ETag |
| par défaut | Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique. | Problème (application/problem+json) |
Obtenir le dossier média
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton. |
| id | chemin | obligatoire |
Modèle de requête et réponses
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/media-folders/RESOURCE_ID'Réponses
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 200 | Un dossier média. | MediaFolder (application/json) ; en-têtes : ETag |
| par défaut | Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique. | Problème (application/problem+json) |
Mettre à jour le dossier de médias
Renomme un dossier (nom) ou le déplace avec tout son contenu (parent_id, null pour la racine de la bibliothèque). Un dossier ne peut pas être déplacé dans lui-même ou dans un dossier qu’il contient, et le déplacement doit maintenir tous les dossiers dans une profondeur maximale de 10 niveaux (invalid_request). Un changement fait avancer la révision du dossier et émet media.folder_updated ; les mêmes valeurs sont une opération sans effet.
If-Match protège optionnellement la révision.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton. |
| id | chemin | obligatoire | |
| If-Match | en-tête | optionnel | Révision positive optionnelle de ressource. Omettre pour écrire la ressource actuelle ; une révision périmée fournie est revision_conflict. |
| Idempotency-Key | en-tête | optionnel | Omettre pour une opération fraîche. Fournissez et réutilisez une clé pour dédupliquer les tentatives ; le CLI gère les clés automatiquement. |
Champs du corps de la requête
| Champ | Description |
|---|---|
| nom (optionnel, chaîne) | Tronqué ; 1 à 100 caractères Unicode, sans contrôles, ni . ou .. minLength : 1 maxLength : 100 |
| parent_id (optionnel, en ligne) | Déplacez le dossier dans celui-ci ; null pour la racine de la bibliothèque. |
Modèle de requête et réponses
curl --request PATCH --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/media-folders/RESOURCE_ID'Réponses
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 200 | Dossier mis à jour. | MediaFolder (application/json) ; en-têtes : ETag |
| par défaut | Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique. | Problème (application/problem+json) |
Supprimer le dossier média
Supprime un dossier. Rien à l’intérieur n’est supprimé – ses fichiers et dossiers montent dans le parent du dossier supprimé (la racine de la bibliothèque s’il n’en avait pas), chaque fichier et dossier déplacé avance sa révision. Un sélecteur de liste de lecture par :folder qui nomme le dossier supprimé ne correspond plus à rien ; les écrans en lecture abandonnent ce primitif à leur prochaine résolution de sélecteur.
Émet media.folder_deleted. If-Match protège éventuellement la révision.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton. |
| id | chemin | obligatoire | |
| If-Match | en-tête | optionnel | Révision positive optionnelle de ressource. Omettre pour écrire la ressource actuelle ; une révision périmée fournie est revision_conflict. |
| Idempotency-Key | en-tête | optionnel | Omettre pour une opération fraîche. Fournissez et réutilisez une clé pour dédupliquer les tentatives ; le CLI gère les clés automatiquement. |
Modèle de requête et réponses
curl --request DELETE --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/media-folders/RESOURCE_ID'Réponses
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 204 | Supprimé ; son contenu est maintenant dans son parent. | pas de corps |
| par défaut | Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique. | Problème (application/problem+json) |
Déplacer les médias
Déplace des fichiers (media_ids) et des dossiers (folder_ids) dans un dossier (folder_id), ou à la racine de la bibliothèque lorsque folder_id est null, en une seule requête tout ou rien d’au plus 1000 identifiants. Chaque identifiant doit exister (not_found). Un dossier ne peut pas être déplacé dans lui-même ou un dossier à l’intérieur, et le déplacement doit maintenir chaque dossier dans 10 niveaux (invalid_request).
Les éléments déjà dans la destination sont laissés tels quels ; chaque fichier et dossier déplacé avance sa révision. Déplacer des fichiers change ce que les sélecteurs by:folder de leurs anciens et nouveaux dossiers lisent, depuis la résolution du prochain sélecteur de chaque écran ; déplacer un dossier ne change pas les fichiers propres à un dossier. Émet media.moved.
Un déplacement d’identifiant Propose rend chaque fichier déplacé en attente et met en file sa revue média, et les sélecteurs des listes de lecture approuvées le résolvent par le dossier avec lequel il a été approuvé jusqu’à ce qu’une personne approuve le changement (docs/reviews.md).
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton. |
| Idempotency-Key | en-tête | optionnel | Omettre pour une opération fraîche. Fournissez et réutilisez une clé pour dédupliquer les tentatives ; le CLI gère les clés automatiquement. |
Champs du corps de la requête
| Champ | Description |
|---|---|
| folder_id (obligatoire, en ligne) | Dossier de destination ; nul pour la racine de la bibliothèque. |
| media_ids (optionnel, tableau) | |
| folder_ids (optionnel, tableau) |
Modèle de requête et réponses
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/media/move'Réponses
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 200 | Nombre de fichiers et dossiers déplacés. | MediaMoveResult (application/json) |
| par défaut | Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique. | Problème (application/problem+json) |
Créer un téléversement de médias
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton. |
| Idempotency-Key | en-tête | obligatoire | |
| project_id | requête | optionnel | Requis avec dashboardSession : le projet où le fichier a été mis en file d’attente. Doit correspondre au projet sélectionné de la session, sinon resource_conflict. Cela lie l’admission de téléversement entre onglets. L’ID de téléversement retourné reste limité au projet pour le téléversement et la validation d’octets. Omission avec un porteur de projet. |
Champs du corps de la requête
| Champ | Description |
|---|---|
| nom de fichier (obligatoire, chaîne) | Nom des octets téléversés, tels qu’ils seront envoyés : un nom de fichier seul d’au plus 255 octets UTF-8, sans répertoire, barre oblique inverse ni caractères de contrôle. minLength : 1 maxLength : 255 |
| source_filename (optionnel, chaîne) | Nom de fichier original de l’appelant avant toute transcodification côté client. Nom de fichier seul, d’au plus 255 octets UTF-8. Stocké tel quel dans le média prêt sous source_filename et utilisé pour dériver filename. minLength : 1 maxLength : 255 |
| content_type (obligatoire, chaîne) | Autorisés : « image/png », « image/jpeg », « image/webp », « image/gif », « video/mp4 », « video/webm », « audio/mpeg » |
| octets (obligatoire, entier) | minimum : 1 maximum : 1 073 741 824 |
| sha256 (obligatoire, chaîne) | modèle : "^[a-f0-9]{64}$" |
| étiquette (optionnelle, chaîne) | modèle : "^[A-Za-z0-9]{1,32}$" |
| folder_id (facultatif, chaîne) | Le dossier de médias où arrive le média prêt ; omis, il arrive à la racine de la bibliothèque. Le dossier doit exister lorsque le téléversement est déclaré (sinon invalid_request sur folder_id) et lorsqu’il est validé (l’opération échoue avec invalid_request : déclarez-le de nouveau). Un téléverseur (docs/uploaders.md) doit envoyer l’un de ses dossiers (sinon outside_upload_scope). |
Modèle de requête et réponses
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt --header 'Idempotency-Key: REQUEST_ID' --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/media/uploads'Réponses
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 201 | Autorisation signée de courte durée pour exactement un PUT d’objet privé. Envoyez la méthode retournée et chaque en-tête retourné textuellement. C’est aussi ainsi que le tableau de bord téléverse. Son navigateur envoie les octets par PUT directement au stockage d’objets, jamais via l’API, car un proxy devant l’API refuse un corps de la requête de plus de 100 MB. Un navigateur définit Content-Length lui-même à partir du corps, donc il envoie chaque en-tête retourné sauf celui-là. | MediaUploadSession (application/json) ; en-têtes : Cache-Control, RateLimit-Policy, RateLimit |
| par défaut | Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique. | Problème (application/problem+json) |
Valider téléversement de médias
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton. |
| id | chemin | obligatoire | |
| Idempotency-Key | en-tête | obligatoire |
Champs du corps de la requête
| Champ | Description |
|---|---|
| content_type (obligatoire, chaîne) | Autorisés : « image/png », « image/jpeg », « image/webp », « image/gif », « video/mp4 », « video/webm », « audio/mpeg » |
| octets (obligatoire, entier) | minimum : 1 maximum : 1 073 741 824 |
| sha256 (obligatoire, chaîne) | modèle : "^[a-f0-9]{64}$" |
Modèle de requête et réponses
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt --header 'Idempotency-Key: REQUEST_ID' --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/media/uploads/RESOURCE_ID/commit'Réponses
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 202 | Déclaration exacte conservée pour vérification asynchrone et publication privée immuable. | Opération (application/json) |
| par défaut | Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique. | Problème (application/problem+json) |
Sélecteur d’aperçu
Aperçu en lecture seule des correspondances d’images ou vidéos prêtes appartenant au projet actuel. Retourne l’ordre des fichiers et la politique normalisée ; la lecture aléatoire est mélangée à chaque nouvelle passe sur le lecteur. Ne fait pas avancer les curseurs, créer des droits de contenu, ni modifier les manifestes. Plus de 1024 correspondances retourne invalid_request.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton. |
Champs du corps de la requête
| Champ | Description |
|---|---|
| fuseau horaire (optionnel, chaîne) | Fuseau IANA dans lequel la disponibilité des médias est lue ; UTC par défaut. |
| rect (optionnel, objet) | La taille rect de la primitive ; obligatoire avec selector.fit aspect. |
| primitif (obligatoire, chaîne) | Autorisés : « image », « video » |
| sélecteur (obligatoire, en ligne) |
Modèle de requête et réponses
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/selectors/preview'Réponses
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 200 | Correspondances actuelles du sélecteur. | SelectorPreview (application/json) |
| par défaut | Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique. | Problème (application/problem+json) |
Obtenir les médias
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton. |
| id | chemin | obligatoire |
Modèle de requête et réponses
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/media/RESOURCE_ID'Réponses
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 200 | Métadonnées médias privées prêtes. Les octets originaux sont disponibles au projet propriétaire via la route d’export du projet et à un écran uniquement via une autorisation de manifeste d’exécution exacte. | Médias (application/json) ; en-têtes : ETag |
| par défaut | Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique. | Problème (application/problem+json) |
Correctif média
Définit ou efface l’étiquette ou les étiquettes de l’élément média. Le changement d’étiquette d’une crédential Propose rend l’élément en attente et met en file son examen média ; les sélecteurs des listes de lecture approuvées le résolvent par les étiquettes avec lesquelles il a été approuvé jusqu’à ce qu’une personne approuve le changement (docs/reviews.md). Un patch qui conserve le même ensemble d’étiquettes s’applique et l’élément reste approuvé.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton. |
| id | chemin | obligatoire | |
| If-Match | en-tête | optionnel | Révision positive optionnelle de ressource. Omettre pour écrire la ressource actuelle ; une révision périmée fournie est revision_conflict. |
| Idempotency-Key | en-tête | optionnel | Omettre pour une opération fraîche. Fournissez et réutilisez une clé pour dédupliquer les tentatives ; le CLI gère les clés automatiquement. |
Modèle de requête et réponses
curl --request PATCH --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/media/RESOURCE_ID'Réponses
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 200 | Médias prêts avec la balise mise à jour. Les sélecteurs de balise d’exécution observent le changement à leur prochaine actualisation de boucle de liste de lecture. | Médias (application/json) ; en-têtes : ETag |
| par défaut | Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique. | Problème (application/problem+json) |
Supprimer le média
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton. |
| id | chemin | obligatoire | |
| If-Match | en-tête | optionnel | Révision positive optionnelle de ressource. Omettre pour écrire la ressource actuelle ; une révision périmée fournie est revision_conflict. |
| Idempotency-Key | en-tête | optionnel | Omettre pour une opération fraîche. Fournissez et réutilisez une clé pour dédupliquer les tentatives ; le CLI gère les clés automatiquement. |
Modèle de requête et réponses
curl --request DELETE --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/media/RESOURCE_ID'Réponses
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 204 | Marqué comme supprimé. Les autorisations désirées ou actives référencées ne peuvent pas être supprimées. | pas de corps |
| par défaut | Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique. | Problème (application/problem+json) |
Correctif des balises média
Une personne connectée définit les étiquettes d’un élément média. tags est l’ensemble complet et nouveau, conservé trié : l’étiquette unique d’un élément, lorsqu’il en a une, compte comme une de ses étiquettes et est remplacée par les autres, donc renvoyez-la pour la conserver. Un tableau vide efface toutes les étiquettes, et une étiquette mal formée ou répétée, ou plus de 32, est invalid_request.
C'est la modification de tag que patchMedia effectue sous une autorisation Manage, lors de la session du tableau de bord : la révision des médias avance d'un et media.updated porte la personne comme acteur, que l'ensemble ait changé ou non. Le changement d'une personne est en direct, jamais une revue.
Les médias en attente de révision par une personne (review_state pending, laissés par un téléversement ou changement d’identifiants Propose) sont refusés avec media_pending_review (409) et rien ne change : décidez d’abord de leur révision dans Révisions, ainsi une modification d’étiquette n’approuve jamais une proposition d’agent. Les sélecteurs de playlist par étiquette observent les nouvelles étiquettes à leur prochain rafraîchissement de boucle de playlist.
Le corps n’a pas d’autre membre. If-Match porte la révision du média et est requis (invalid_request s’il est absent, revision_conflict s’il est périmé). Session du tableau de bord uniquement ; les agents changent les balises avec patchMedia. listMedia avec balise trouve l’élément par ses nouvelles balises.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| id | chemin | obligatoire | |
| If-Match | en-tête | obligatoire | La révision actuelle de l’élément média, citée ou brute (l’ETag de la dernière lecture). Une révision périmée est revision_conflict avec current_revision. |
| Idempotency-Key | en-tête | optionnel | Omettre pour une opération fraîche. Fournissez et réutilisez une clé pour dédupliquer les tentatives ; le CLI gère les clés automatiquement. |
Champs du corps de la requête
| Champ | Description |
|---|---|
| étiquettes (requises, tableau) | Ensemble de balises de remplacement ; un tableau vide le vide. |
Modèle de requête et réponses
curl --request PATCH --cookie cookies.txt --cookie-jar cookies.txt --header 'If-Match: "REVISION"' --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/media/RESOURCE_ID/tags'Réponses
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 200 | L’élément média prêt tel que stocké maintenant ; l’ETag porte sa révision. | Médias (application/json) ; en-têtes : ETag |
| 409 | media_pending_review — l’élément attend la révision d’une personne ; décidez d’abord. | Problème (application/problem+json) |
| 412 | revision_conflict — If-Match est périmé; la propriété current_revision de l’erreur contient la révision actuelle. | Problème (application/problem+json) |
| par défaut | Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique. | Problème (application/problem+json) |
Modifier la disponibilité du média
Définit quand un média peut être choisi par les sélecteurs dynamiques (all, tag et folder) qui le jouent, ou supprime la règle avec availability null. La règle est celle de la programmation : from et until (civils, précision à la minute, until exclu), occurrences windows, monthly et dates et dates except, lues dans le fuseau horaire de chaque écran qui résout le sélecteur.
Un fichier hors de sa règle est exclu de la sélection à la prochaine limite de boucle de la liste de lecture, et revient quand la règle est de nouveau satisfaite ; le bord d’une fenêtre est suivi dans la minute qui suit la prochaine boucle du Player. Aucune révision de la liste de lecture ni du manifeste ne change. Les identifiants explicites (sélecteur par id ou ids) ignorent la règle, tout comme tout ce qui n’est pas un sélecteur dynamique.
Un écran hors ligne conserve sa dernière sélection jusqu’à sa reconnexion. Définir la règle que l’élément a déjà ne change rien. Un identifiant Propose ne peut pas la définir (insufficient_access) : le moment où un média est lu revient à une personne ayant l’accès Manage. Un média en attente de révision par une personne est refusé avec media_pending_review.
If-Match porte la révision du média et est obligatoire.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton. |
| id | chemin | obligatoire | |
| If-Match | en-tête | obligatoire | La révision actuelle du média, entre guillemets ou nue (l’ETag de la dernière lecture). Une révision périmée donne revision_conflict. |
| Idempotency-Key | en-tête | optionnel | Omettre pour une opération fraîche. Fournissez et réutilisez une clé pour dédupliquer les tentatives ; le CLI gère les clés automatiquement. |
Champs du corps de la requête
| Champ | Description |
|---|---|
| availability (obligatoire, en ligne) | La nouvelle règle, ou null pour que le fichier soit toujours disponible. |
Modèle de requête et réponses
curl --request PATCH --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt --header 'If-Match: "REVISION"' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/media/RESOURCE_ID/availability'Réponses
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 200 | L’élément média prêt tel que stocké maintenant ; l’ETag porte sa révision. | Médias (application/json) ; en-têtes : ETag |
| 409 | media_pending_review — l’élément attend la révision d’une personne ; décidez d’abord. | Problème (application/problem+json) |
| 412 | revision_conflict — If-Match est périmé. | Problème (application/problem+json) |
| par défaut | Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique. | Problème (application/problem+json) |
Remplacer le média
Remplace sur place le fichier d’un élément multimédia prêt par un téléversement déclaré (createMediaUpload) dont les octets ont été écrits, au lieu de l’enregistrer comme nouveau média.
Le média garde son identifiant : chaque liste de lecture et chaque horaire qui le nomme joue donc le nouveau fichier sans être reprogrammé, et les sélecteurs de dossier, d’étiquette et de tous les médias qui le choisissent le jouent à leur prochaine résolution. Le remplacement doit être du même type de fichier (image pour image, vidéo pour vidéo, audio pour audio) ; un autre type donne invalid_request.
Un changement de format d’image est permis : le résultat de l’opération contient une entrée warnings aspect_ratio_changed qui nomme les listes de lecture utilisant l’élément. Toutes les règles de téléversement s’appliquent (limite d’octets vidéo du forfait, limites de dimensions, quota de stockage).
Le fichier en service reste dans l’historique des versions du média (listMediaVersions) et compte dans les octets stockés jusqu’à la suppression de sa version. If-Match, s’il est envoyé, est la révision du média lue par l’appelant (revision_conflict si elle est périmée).
La réponse est l’opération du téléversement, comme pour commitMediaUpload : interrogez getOperation ; le résultat d’une opération réussie est {media_id, id, version, warnings}. Des octets identiques au fichier en service ne remplacent rien et font échouer l’opération avec resource_conflict.
Sous Propose effectif, le remplacement attend plutôt une révision : l’opération réussit avec result.status pending_review et result.review_id, le média continue de jouer son fichier jusqu’à l’approbation d’une personne, et un remplacement plus récent du même média remplace celui qui attend.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton. |
| id | chemin | obligatoire | |
| If-Match | en-tête | optionnel | La révision actuelle de l’élément multimédia, entre guillemets ou non. Omise, elle signifie n’importe laquelle. |
| Idempotency-Key | en-tête | optionnel | Omettre pour une opération fraîche. Fournissez et réutilisez une clé pour dédupliquer les tentatives ; le CLI gère les clés automatiquement. |
Champs du corps de la requête
| Champ | Description |
|---|---|
| upload_id (obligatoire, chaîne) | L’identifiant d’un téléversement déclaré avec createMediaUpload et écrit à son upload_url, mais non validé. minLength: 1 |
| note (facultatif, string) | Une note conservée avec la nouvelle version. maxLength: 280 |
Modèle de requête et réponses
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/media/RESOURCE_ID/replace'Réponses
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 202 | Le remplacement a été enregistré ; l’opération du téléversement porte son résultat. | Opération (application/json) |
| par défaut | Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique. | Problème (application/problem+json) |
Lister les versions du média
Liste les versions d’un élément multimédia, de la plus récente à la plus ancienne, la version en service en premier (current: true). Une version est un fichier qu’a eu l’élément : number est son époque de contenu plus un (1 pour le téléversement, puis un de plus à chaque remplacement, restauration ou changement de synchronisation du média), et ses octets sont conservés jusqu’à la suppression de la version.
Lisez les octets d’une version avec GET /api/media/{id}/content?version=N.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton. |
| id | chemin | obligatoire | |
| curseur | requête | optionnel | Le next_cursor de la page précédente. |
| limite | requête | optionnel |
Modèle de requête et réponses
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/media/RESOURCE_ID/versions'Réponses
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 200 | Une page de versions. | MediaVersionPage (application/json) |
| par défaut | Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique. | Problème (application/problem+json) |
Supprimer une version du média
Supprime une version passée : son enregistrement disparaît, ses octets sortent aussitôt des octets stockés du projet, et son objet est retiré après 24 heures, sauf si une autre version ou la version en service détient le même fichier. La version en service ne peut pas être supprimée (resource_conflict), et aucune version ne peut l’être tant qu’un remplacement du média attend une révision.
Une version supprimée ne peut pas être restaurée.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton. |
| id | chemin | obligatoire | |
| version | chemin | obligatoire | Un numéro de version de l’élément multimédia (listMediaVersions). |
Modèle de requête et réponses
curl --request DELETE --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/media/RESOURCE_ID/versions/VERSION'Réponses
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 204 | La version a été supprimée. | pas de corps |
| par défaut | Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique. | Problème (application/problem+json) |
Restaurer une version du média
Remet une version passée en service comme nouvelle version, dans l’époque de contenu suivante du média : le média garde son identifiant et la révision avance d’un cran, si bien que chaque liste de lecture et chaque horaire qui le nomme rejoue ce fichier sans être reprogrammé. La version copiée reste dans l’historique et partage ses octets ; la nouvelle version compte comme les autres dans les octets stockés.
La version en service ne peut pas être restaurée (resource_conflict). If-Match, s’il est envoyé, est la révision du média lue par l’appelant. Le corps peut porter une note. Sous Propose effectif, la restauration devient une révision : 202 pending_review, et le média garde son fichier jusqu’à l’approbation d’une personne.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton. |
| id | chemin | obligatoire | |
| version | chemin | obligatoire | Un numéro de version de l’élément multimédia (listMediaVersions). |
| If-Match | en-tête | optionnel | La révision actuelle de l’élément multimédia, entre guillemets ou non. Omise, elle signifie n’importe laquelle. |
Champs du corps de la requête
| Champ | Description |
|---|---|
| note (facultatif, string) | Une note conservée avec la nouvelle version. maxLength: 280 |
Modèle de requête et réponses
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/media/RESOURCE_ID/versions/VERSION/restore'Réponses
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 200 | Le média tel qu’il est maintenant, et les avertissements sur le fichier remis en place. | MediaRestored (application/json) ; en-têtes : ETag |
| 202 | La restauration attend la révision d’une personne. | MediaRestorePending (application/json) |
| par défaut | Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique. | Problème (application/problem+json) |
Exporter le contenu média
Exporte la version immuable originale appartenant au projet authentifié. Le détenteur du projet est facturé du crédit normal de requête API authentifiée, et les octets de réponse complétés sont enregistrés comme egress project_media_export. L’identifiant média n’est jamais authority : l’identifiant d’un autre projet renvoie not_found.
L’API diffuse depuis un stockage privé et ne publie jamais de clé d’objet, d’URL de stockage ou de GET signé. Le nom du fichier joint est l’identifiant du média plus l’extension canonique pour le type de contenu vérifié. La lecture du contenu n’est jamais refusée en raison du solde.
Une session de tableau de bord affiche les mêmes octets en ligne : les octets complétés sont enregistrés comme egress dashboard_media, et la réponse est privée, no-cache, donc le navigateur garde une copie et la revalide avec If-None-Match. Une réponse de porteur de projet reste privée, no-store.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton. |
| id | chemin | obligatoire | |
| Plage | en-tête | optionnel | V1 accepte une seule plage d’octets. |
| If-None-Match | en-tête | optionnel | ETag SHA-256 média fort exact renvoyé par cette route. |
| version | requête | optionnel | Lire cette version du média (listMediaVersions) plutôt que celle en service. |
Modèle de requête et réponses
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/media/RESOURCE_ID/content'Réponses
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 200 | Rendu original complet. | chaîne (image/png), chaîne (image/jpeg), chaîne (image/webp), chaîne (image/gif), chaîne (vidéo/mp4), chaîne (vidéo/webm), chaîne (audio/mpeg); en-têtes : Accept-Ranges, Content-Length, Content-Type, Content-Disposition, ETag, Cache-Control, X-Content-Type-Options |
| 206 | Une plage d’octets conforme aux normes. | chaîne (image/png), chaîne (image/jpeg), chaîne (image/webp), chaîne (image/gif), chaîne (vidéo/mp4), chaîne (vidéo/webm), chaîne (audio/mpeg); en-têtes : Accept-Ranges, Content-Range, Content-Length, Content-Type, Content-Disposition, ETag, Cache-Control, X-Content-Type-Options |
| 304 | L’ETag média immuable exact correspond à If-None-Match. Aucun corps ni incrément de sortie n’est produit. | pas de corps; en-têtes : ETag, Cache-Control |
| 402 | Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique. | Problème (application/problem+json) |
| 416 | Plage insatisfaisable ou mal formée. | Problème (application/problem+json) ; en-têtes : Accept-Ranges, Content-Range |
| par défaut | Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique. | Problème (application/problem+json) |
Contenu média principal
Applique les mêmes règles de propriété de projet, conditionnelles, de plage et de stockage privé que exportMediaContent sans ouvrir ni transférer la version stockée.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton. |
| id | chemin | obligatoire | |
| Plage | en-tête | optionnel | V1 accepte une seule plage d’octets. |
| If-None-Match | en-tête | optionnel | ETag SHA-256 média fort exact renvoyé par cette route. |
| version | requête | optionnel | Lire cette version du média (listMediaVersions) plutôt que celle en service. |
Modèle de requête et réponses
curl --request HEAD --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/media/RESOURCE_ID/content'Réponses
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 200 | Métadonnées de rendu complet sans corps. | pas de corps; en-têtes : Accept-Ranges, Content-Length, Content-Type, Content-Disposition, ETag, Cache-Control, X-Content-Type-Options |
| 206 | Métadonnées de plage d’octets sans corps. | pas de corps; en-têtes : Accept-Ranges, Content-Range, Content-Length, Content-Type, Content-Disposition, ETag, Cache-Control, X-Content-Type-Options |
| 304 | L’ETag média immuable exact correspond à If-None-Match. Aucun corps n’est produit. | pas de corps; en-têtes : ETag, Cache-Control |
| 402 | Le compteur d’API à 1 crédit a refusé la requête de porteur d’un projet Standard au-delà de son allocation, sans crédit. Une réponse HEAD ne porte pas de corps de problème. | pas de corps |
| 416 | Plage insatisfaisable ou mal formée. | Problème (application/problem+json) ; en-têtes : Accept-Ranges, Content-Range |
| par défaut | Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique. | Problème (application/problem+json) |
Lister les comptes de synchronisation de médias
Lists the project's media sync accounts, newest first (200 per page; next_cursor continues). Each shows its tenant and client id, its state and its last test; the client secret is never returned, only whether one is set and its last four characters.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton. |
| curseur | requête | optionnel | Le next_cursor de la page précédente. |
Modèle de requête et réponses
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://api.screenrig.ai/api/media-sync-accounts'Réponses
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 200 | Les comptes du projet. | MediaSyncAccountList (application/json); en-têtes : Cache-Control |
| par défaut | Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique. | Problème (application/problem+json) |
Créer un compte de synchronisation de médias
Ajoute un compte qui synchronise en lecture. kind microsoft365 stocke les identifiants de l’application Microsoft Entra propre au projet, de sorte que les synchronisations peuvent lire un dossier SharePoint ou OneDrive Entreprise : config.tenant_id est l’ID de répertoire ou le domaine principal du locataire (common, organizations et consumers sont refusés), config.client_id l’ID d’application de l’application, et secret la valeur de l’un des secrets client de l’application ; l’application exige l’autorisation d’application Microsoft Graph Sites.Selected (accordée sur chaque site) ou Files.Read.All, avec le consentement administrateur.
Au lieu de ces trois paramètres, config.connection_id désigne une connexion Microsoft du projet (createConnection), dans l’un ou l’autre mode, qui se connecte et détient le secret. kind canva ne prend qu’un nom : le compte est pending_consent et la réponse porte authorize_url, un lien à usage unique (valable jusqu’à authorize_expires_at) que la personne titulaire du compte Canva ouvre, connectée à Canva, pour le connecter par l’intégration Canva de screenRIG.
L’autorisation appartient au projet ; ses synchronisations survivent donc à la personne qui a effectué la connexion.
Un serveur sans l’intégration Canva répond 409 canva_not_configured. kind dropbox fonctionne comme canva : le compte est pending_consent et authorize_url est un lien à usage unique que la personne titulaire du compte Dropbox ouvre, connectée à Dropbox, pour autoriser un accès en lecture seule (files.metadata.read, files.content.read, account_info.read, sharing.read).
La connexion passe par l’application Dropbox de screenRIG, ou par l’application Dropbox propre au client lorsque config.app_key la désigne (PKCE, donc sans secret d’application ; l’application doit déclarer https://API_ORIGIN/api/dropbox/callback comme URI de redirection).
Un serveur sans l’application Dropbox de screenRIG répond 409 dropbox_not_configured à un compte dropbox sans app_key. kind google_drive est ready d’emblée et lit les dossiers partagés avec config.service_account_email : le compte de service de screenRIG, ou celui du client lorsque secret est la clé JSON de ce compte de service.
Un dossier partagé avec le compte de service de screenRIG ne se synchronise que si un membre du projet dont le courriel est vérifié l’a partagé ou en est propriétaire. Un serveur sans le compte de service de screenRIG répond 409 google_drive_not_configured à un compte google_drive sans clé. Un secret est scellé au repos et n’est jamais renvoyé ni journalisé. Ajoute media_sync_account.created.
Une nouvelle tentative identique avec la même Idempotency-Key renvoie le même compte (une nouvelle tentative Canva ou Dropbox reçoit un nouveau lien).
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton. |
| Idempotency-Key | en-tête | optionnel | Omettre pour une opération fraîche. Fournissez et réutilisez une clé pour dédupliquer les tentatives ; le CLI gère les clés automatiquement. |
Champs du corps de la requête
| Champ | Description |
|---|---|
| type (obligatoire, chaîne) | Autorisés : « microsoft365 », « canva », « dropbox », « google_drive » |
| nom (obligatoire, chaîne) | minLength : 1 maxLength : 80 |
| config (facultatif, object) | Pour microsoft365, soit tenant_id et client_id (les deux) avec secret, soit connection_id seul : l’ID d’une connexion Microsoft de ce projet. Pour dropbox, app_key nomme facultativement l’application Dropbox propre au client. Non accepté pour canva ni pour google_drive. |
| secret (facultatif, chaîne) | Requis pour microsoft365 avec tenant_id et client_id : la valeur de l’un des secrets client de l’application (pas son ID), 1024 caractères au plus. Pour google_drive, facultatif : la clé JSON du compte de service Google Cloud propre au client (type service_account), dont le client_email devient le service_account_email du compte ; sans elle, la lecture passe par le compte de service de screenRIG. Non accepté avec connection_id, ni pour canva ni pour dropbox. minLength: 1 maxLength: 8192 |
Modèle de requête et réponses
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/media-sync-accounts'Réponses
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 201 | Créé, avec son secret masqué ; un compte Canva ou Dropbox porte aussi authorize_url. | MediaSyncAccountConnect (application/json); en-têtes : ETag, Cache-Control |
| 400 | invalid_request. | Problème (application/problem+json) |
| 402 | feature_not_in_plan — le forfait du projet n’inclut pas la synchronisation de médias ; required_plan nomme le forfait qui l’inclut. | Problème (application/problem+json) |
| 409 | canva_not_configured (ce serveur n’a pas d’intégration Canva ; kind canva seulement), dropbox_not_configured (aucune application Dropbox de screenRIG et aucun config.app_key ; kind dropbox seulement), google_drive_not_configured (aucun compte de service de screenRIG et aucune clé ; kind google_drive seulement), resource_conflict ou idempotency_mismatch. | Problème (application/problem+json) |
| par défaut | Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique. | Problème (application/problem+json) |
Obtenir le compte de synchronisation de médias
Un compte de synchronisation de médias, avec son secret masqué.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton. |
| id | chemin | obligatoire |
Modèle de requête et réponses
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://api.screenrig.ai/api/media-sync-accounts/RESOURCE_ID'Réponses
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 200 | Un compte. | MediaSyncAccount (application/json); en-têtes : ETag, Cache-Control |
| par défaut | Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique. | Problème (application/problem+json) |
Modifier le compte de synchronisation de médias
Changes the name, tenant, client id or secret; an omitted secret keeps the stored one. A change of credentials discards the last test. A Canva account takes only a name; media sync account connect renews its connection. Appends media_sync_account.updated. If-Match guards the revision.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton. |
| id | chemin | obligatoire | |
| If-Match | en-tête | optionnel | Révision positive optionnelle de ressource. Omettre pour écrire la ressource actuelle ; une révision périmée fournie est revision_conflict. |
| Idempotency-Key | en-tête | optionnel | Omettre pour une opération fraîche. Fournissez et réutilisez une clé pour dédupliquer les tentatives ; le CLI gère les clés automatiquement. |
Champs du corps de la requête
| Champ | Description |
|---|---|
| nom (optionnel, chaîne) | minLength : 1 maxLength : 80 |
| config (facultatif, MediaSyncAccountConfig) | |
| secret (facultatif, chaîne) | Remplace le secret stocké (un secret client microsoft365, ou la clé de compte de service propre à un compte google_drive, qui doit appartenir au même client_email) ; omettez-le pour conserver celui qui est stocké. minLength: 1 maxLength: 8192 |
Modèle de requête et réponses
curl --request PATCH --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/media-sync-accounts/RESOURCE_ID'Réponses
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 200 | Compte mis à jour. | MediaSyncAccount (application/json); en-têtes : ETag, Cache-Control |
| 400 | invalid_request. | Problème (application/problem+json) |
| 402 | feature_not_in_plan — le forfait du projet n’inclut pas la synchronisation de médias ; required_plan nomme le forfait qui l’inclut. Un changement qui ne fait que remplacer le secret est toujours autorisé, de sorte qu’un compte dont le secret client a expiré reste à jour. | Problème (application/problem+json) |
| 412 | revision_conflict — If-Match est périmé; la propriété current_revision de l’erreur contient la révision actuelle. | Problème (application/problem+json) |
| par défaut | Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique. | Problème (application/problem+json) |
Supprimer le compte de synchronisation de médias
Deletes the account. Refused 409 resource_conflict while a sync reads through it; the detail names those syncs. Deleting a Canva account also revokes its tokens at Canva (a failure to revoke is logged and does not undo the delete). Appends media_sync_account.deleted. If-Match guards the revision.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton. |
| id | chemin | obligatoire | |
| If-Match | en-tête | optionnel | Révision positive optionnelle de ressource. Omettre pour écrire la ressource actuelle ; une révision périmée fournie est revision_conflict. |
| Idempotency-Key | en-tête | optionnel | Omettre pour une opération fraîche. Fournissez et réutilisez une clé pour dédupliquer les tentatives ; le CLI gère les clés automatiquement. |
Modèle de requête et réponses
curl --request DELETE --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://api.screenrig.ai/api/media-sync-accounts/RESOURCE_ID'Réponses
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 204 | Supprimé. | pas de corps |
| 409 | resource_conflict (le compte est utilisé par des synchronisations) ou idempotency_mismatch. | Problème (application/problem+json) |
| 412 | revision_conflict — If-Match est périmé; la propriété current_revision de l’erreur contient la révision actuelle. | Problème (application/problem+json) |
| par défaut | Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique. | Problème (application/problem+json) |
Tester le compte de synchronisation de médias
Signs in with the account's app and reports what Microsoft granted it: whether the credentials work and which Graph application permissions the token carries (Sites.Selected, Files.Read.All and the like). Sites.Selected is reported with a warning, because each site needs a grant for the app.
For a Canva account it reports whether Canva still accepts the connection. It does not judge a site's grant, a folder or a design, or consent beyond what the token carries. The result is stored as last_test. A failed check is ok false in the answer, not a problem.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton. |
| id | chemin | obligatoire | |
| Idempotency-Key | en-tête | optionnel | Omettre pour une opération fraîche. Fournissez et réutilisez une clé pour dédupliquer les tentatives ; le CLI gère les clés automatiquement. |
Modèle de requête et réponses
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://api.screenrig.ai/api/media-sync-accounts/RESOURCE_ID/test'Réponses
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 200 | Ce que porte le jeton de l’application. | MediaSyncTest (application/json); en-têtes : Cache-Control |
| par défaut | Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique. | Problème (application/problem+json) |
Connecter le compte de synchronisation de médias
Crée un nouveau lien de consentement à usage unique (authorize_url, valide jusqu’à authorize_expires_at) pour un compte Canva ou Dropbox, à envoyer à la personne titulaire de ce compte ; elle l’ouvre en étant connectée à Canva ou à Dropbox et autorise l’accès. Il remplace tout lien précédent.
Un compte connecté reste connecté jusqu’à ce que le nouveau consentement soit terminé ; cela permet donc aussi de renouveler une connexion (état reconnect_required) ou de la déplacer vers un autre compte Canva ou Dropbox. Le lien est un identifiant du consentement : ne l’envoyez qu’à cette personne.
Un serveur sans l’intégration Canva répond 409 canva_not_configured ; un compte Dropbox sans app_key sur un serveur sans l’application Dropbox de screenRIG répond 409 dropbox_not_configured.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton. |
| id | chemin | obligatoire | |
| Idempotency-Key | en-tête | optionnel | Omettre pour une opération fraîche. Fournissez et réutilisez une clé pour dédupliquer les tentatives ; le CLI gère les clés automatiquement. |
Modèle de requête et réponses
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://api.screenrig.ai/api/media-sync-accounts/RESOURCE_ID/connect'Réponses
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 200 | Le compte avec un nouveau authorize_url. | MediaSyncAccountConnect (application/json); en-têtes : ETag, Cache-Control |
| 400 | invalid_request : le compte n’est pas un compte Canva ou Dropbox. | Problème (application/problem+json) |
| 409 | canva_not_configured (ce serveur n’a pas d’intégration Canva) ou dropbox_not_configured (aucune application Dropbox de screenRIG et le compte n’a pas d’app_key). | Problème (application/problem+json) |
| par défaut | Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique. | Problème (application/problem+json) |
Lister les designs de synchronisation de médias
Lists the Canva designs the connected person can see, most recently changed first (50 per page; continuation continues), optionally those matching query. Each shows its id, title, last change, page count and a view address. An account that is not connected is 409 canva_reconnect_required; a server without the Canva integration is 409 canva_not_configured.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton. |
| id | chemin | obligatoire | |
| requête | requête | optionnel | Ne liste que les designs dont le titre ou le texte correspond. |
| continuation | requête | optionnel | La suite de la page précédente. |
Modèle de requête et réponses
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://api.screenrig.ai/api/media-sync-accounts/RESOURCE_ID/designs'Réponses
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 200 | Une page de designs. | MediaSyncDesignList (application/json); en-têtes : Cache-Control |
| 400 | invalid_request : le compte n’est pas un compte Canva, ou query ou continuation n’est pas valide. | Problème (application/problem+json) |
| 409 | canva_reconnect_required (le compte n’est pas connecté, ou Canva n’honore plus la connexion) ou canva_not_configured (ce serveur n’a pas d’intégration Canva). | Problème (application/problem+json) |
| par défaut | Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique. | Problème (application/problem+json) |
Terminer le consentement Canva
L’endroit où Canva renvoie la personne après qu’elle a autorisé (ou refusé) l’accès dans un lien de consentement.
It carries no credential: the one-time state in the query finds the Canva account, must be unexpired and is used once, in the same write that stores the connection. screenRIG exchanges the code (PKCE, client authentication with the integration's credentials), reads whose Canva account it is, seals the tokens and appends media_sync_account.connected.
The answer is a short page naming the account and the project it was connected to; an error, an unknown, expired or used state, or a refused code renders the same page with the reason and changes nothing. Answers only on the API host.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| code | requête | optionnel | |
| état | requête | optionnel | |
| erreur | requête | optionnel |
Modèle de requête et réponses
curl --request GET 'https://api.screenrig.ai/api/canva/callback'Réponses
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 200 | La page qui indique que le compte est connecté. | chaîne (text/html) |
| 400 | La page qui indique pourquoi rien n’a été connecté. | chaîne (text/html) |
| 502 | Canva est inaccessible ; le même lien fonctionne de nouveau. | chaîne (text/html) |
| 409 | Canva n’est pas configuré sur ce serveur. | chaîne (text/html) |
| par défaut | Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique. | Problème (application/problem+json) |
Terminer le consentement Dropbox
L’endroit où Dropbox renvoie la personne après qu’elle a autorisé (ou refusé) l’accès dans un lien de consentement.
Elle ne porte aucun identifiant : le state à usage unique de la requête retrouve le compte Dropbox, ne doit pas être expiré et n’est utilisé qu’une fois, dans la même écriture qui stocke la connexion. screenRIG échange le code (PKCE, avec l’application Dropbox de screenRIG ou l’app_key propre au compte), lit de quel compte Dropbox il s’agit, scelle les jetons et ajoute media_sync_account.connected.
The answer is a short page naming the account and the project it was connected to; an error, an unknown, expired or used state, or a refused code renders the same page with the reason and changes nothing. Answers only on the API host.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| code | requête | optionnel | |
| état | requête | optionnel | |
| erreur | requête | optionnel |
Modèle de requête et réponses
curl --request GET 'https://api.screenrig.ai/api/dropbox/callback'Réponses
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 200 | La page qui indique que le compte est connecté. | chaîne (text/html) |
| 400 | La page qui indique pourquoi rien n’a été connecté. | chaîne (text/html) |
| 502 | Dropbox est inaccessible ; le même lien fonctionne de nouveau. | chaîne (text/html) |
| 409 | Le compte n’a pas d’app_key et l’application Dropbox de screenRIG n’est pas configurée sur ce serveur. | chaîne (text/html) |
| par défaut | Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique. | Problème (application/problem+json) |
Lister les synchronisations de médias
Lists the project's media syncs, newest first (200 per page; next_cursor continues), optionally of one account_id or state. Each shows its source folder, the media folder it fills, its cadence, state, next run and the summary of its last run.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton. |
| curseur | requête | optionnel | Le next_cursor de la page précédente. |
| account_id | requête | optionnel | Ne liste que les synchronisations qui lisent via ce compte. |
| état | requête | optionnel | Ne liste que les synchronisations dans cet état. |
Modèle de requête et réponses
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://api.screenrig.ai/api/media-syncs'Réponses
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 200 | Les synchronisations du projet. | MediaSyncList (application/json); en-têtes : Cache-Control |
| par défaut | Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique. | Problème (application/problem+json) |
Créer une synchronisation de médias
provider canva : lit le design (design est son id ou son adresse canva.com/design/ID/...) via un compte Canva connecté, et enregistre la synchronisation, à exécuter maintenant.
Each run asks Canva for the design's last change and, when it moved, exports the pages (pages, default all; format png gives one image per page and mp4 one video) and imports them into the media folder, replacing the bytes of a page already imported under the same media id so the playlists that use it update; a page the design no longer has leaves play like a removed SharePoint file.
Un design que Canva ne montre plus arrête la synchronisation à l’état error (erreur d’exécution design_unavailable) et conserve les médias.
Un design ou une page que le compte ne peut pas voir est 409 media_sync_source_refused. provider dropbox : url est l’adresse du dossier dans Dropbox (https://www.dropbox.com/home/...), un lien de dossier partagé que le compte connecté a ajouté à son Dropbox, ou un chemin commençant par / ; elle est lue une fois par un compte Dropbox connecté et la synchronisation est stockée, à exécuter maintenant.
Les dossiers d’un espace d’équipe sont lus à partir de la racine de l’équipe. Chaque exécution reprend à la position que Dropbox a enregistrée dans le dossier ; seuls les changements sont donc lus.
Un dossier que le compte ne peut pas ouvrir est 409 media_sync_source_refused ; un compte dont Dropbox n’honore plus la connexion est 409 dropbox_reconnect_required. provider google_drive : url est l’adresse Google Drive du dossier (https://drive.google.com/drive/folders/ID) ou son ID, le dossier étant partagé (le rôle Lecteur suffit) avec le service_account_email du compte.
Chaque exécution liste le dossier et compare la somme de contrôle de chaque fichier. Les fichiers Google Docs, Sheets et Slides sont ignorés comme unsupported_type. Un dossier que l’adresse ne permet pas d’ouvrir est 409 media_sync_source_refused.
Lorsqu’il est lu par le compte de service de screenRIG, le dossier doit être partagé par un membre du projet dont le courriel est vérifié, ou lui appartenir (403 media_sync_sharer_not_member), et chaque exécution le revérifie (l’erreur d’exécution sharer_not_member arrête la synchronisation à l’état error). provider sharepoint : lit l’adresse du dossier par le compte (une adresse de site SharePoint comme https://TENANT.sharepoint.com/sites/SITE/LIBRARY/FOLDER, ou un lien de partage ; l’application doit pouvoir y accéder : Sites.Selected exige une autorisation sur le site, un lien de partage exige Files.Read.All) et stocke la synchronisation, à exécuter maintenant. folder_id est le dossier de médias où aboutissent les fichiers ; sans lui, la synchronisation en crée un nommé d’après le dossier source.
Each run imports the images (png, jpeg, webp, gif), videos (mp4, webm) and audio (mp3) directly in the source folder, replaces the bytes of a file that changed under the same media id so playlists that use it update, and takes a file removed at the source out of play: its media is deleted, or, while screens still hold it, moved to a Removed subfolder and deleted later.
Subfolders are ignored; other files are listed as skipped with the reason. every is the seconds between runs, 300 to 86400, default 900. A folder the provider refuses is 409 media_sync_source_refused and one it cannot reach is 500 media_sync_source_unavailable; nothing is stored. Appends media_sync.created.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton. |
| Idempotency-Key | en-tête | optionnel | Omettre pour une opération fraîche. Fournissez et réutilisez une clé pour dédupliquer les tentatives ; le CLI gère les clés automatiquement. |
Champs du corps de la requête
| Champ | Description |
|---|---|
| provider (obligatoire, chaîne) | Autorisés : « sharepoint », « canva », « dropbox », « google_drive » |
| account_id (obligatoire, chaîne) | Un compte du type du fournisseur : microsoft365 pour sharepoint, canva, dropbox ou google_drive. |
| url (optionnelle, chaîne) | sharepoint (obligatoire) : l’adresse SharePoint du dossier ou un lien de partage, lue une fois pour trouver le dossier et non stockée. dropbox (obligatoire) : l’adresse Dropbox du dossier, un lien de dossier partagé que le compte a ajouté, ou un chemin commençant par /. google_drive (obligatoire) : l’adresse Google Drive du dossier ou son ID. maxLength: 4096 |
| design (facultatif, chaîne) | canva (obligatoire) : l’identifiant du design, ou son adresse canva.com/design/ID/... maxLength: 2048 |
| pages (optionnel, tableau) | canva : les pages à synchroniser ; omettez-le pour toutes les pages. Un design qui compte ensuite moins de pages retire du jeu les pages manquantes. |
| format (facultatif, chaîne) | canva : png donne une image par page ; mp4 une vidéo des pages. Allowed: "png", "mp4" default: "png" |
| folder_id (facultatif, chaîne) | Le dossier de médias où arrivent les fichiers. Omettez-le pour en créer un du nom du dossier source. |
| every (facultatif, entier) | Secondes entre les exécutions ; 900 par défaut. minimum: 300 maximum: 86400 |
| nom (optionnel, chaîne) | Par défaut, le nom du dossier source. minLength: 1 maxLength: 80 |
Modèle de requête et réponses
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/media-syncs'Réponses
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 201 | Créée, à exécuter maintenant. | MediaSync (application/json); en-têtes : ETag, Cache-Control |
| 400 | invalid_request. | Problème (application/problem+json) |
| 402 | feature_not_in_plan — le forfait du projet n’inclut pas la synchronisation de médias ; required_plan nomme le forfait qui l’inclut. | Problème (application/problem+json) |
| 403 | media_sync_sharer_not_member : un dossier Google Drive lu par le compte de service de screenRIG n’a pas été partagé par un membre du projet dont le courriel est vérifié et ne lui appartient pas. | Problème (application/problem+json) |
| 409 | media_sync_source_refused (le fournisseur a refusé l’application, sa permission ou le dossier), dropbox_reconnect_required (le compte Dropbox doit être reconnecté), dropbox_not_configured, google_drive_not_configured, resource_conflict (la même source est déjà synchronisée dans ce dossier de médias) ou idempotency_mismatch. | Problème (application/problem+json) |
| 500 | media_sync_source_unavailable : le fournisseur est inaccessible ou a répondu par un échec. | Problème (application/problem+json) |
| par défaut | Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique. | Problème (application/problem+json) |
Obtenir la synchronisation de médias
Une synchronisation de médias, avec le résumé de sa dernière exécution.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton. |
| id | chemin | obligatoire |
Modèle de requête et réponses
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://api.screenrig.ai/api/media-syncs/RESOURCE_ID'Réponses
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 200 | Une synchronisation. | MediaSync (application/json); en-têtes : ETag, Cache-Control |
| par défaut | Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique. | Problème (application/problem+json) |
Modifier la synchronisation de médias
Changes the name, every (seconds between runs), state (active or paused; active also resumes a sync an error stopped) or folder_id. A new folder_id points the sync at another media folder and makes its next run read the whole source again, which puts every synced file there. Appends media_sync.updated. If-Match guards the revision.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton. |
| id | chemin | obligatoire | |
| If-Match | en-tête | optionnel | Révision positive optionnelle de ressource. Omettre pour écrire la ressource actuelle ; une révision périmée fournie est revision_conflict. |
| Idempotency-Key | en-tête | optionnel | Omettre pour une opération fraîche. Fournissez et réutilisez une clé pour dédupliquer les tentatives ; le CLI gère les clés automatiquement. |
Champs du corps de la requête
| Champ | Description |
|---|---|
| nom (optionnel, chaîne) | minLength : 1 maxLength : 80 |
| every (facultatif, entier) | Secondes entre les exécutions. minimum: 300 maximum: 86400 |
| state (facultatif, chaîne) | Autorisés : « active », « paused » |
| folder_id (facultatif, chaîne) |
Modèle de requête et réponses
curl --request PATCH --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/media-syncs/RESOURCE_ID'Réponses
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 200 | Synchronisation mise à jour. | MediaSync (application/json); en-têtes : ETag, Cache-Control |
| 400 | invalid_request. | Problème (application/problem+json) |
| 402 | feature_not_in_plan — le forfait du projet n’inclut pas la synchronisation de médias ; required_plan nomme le forfait qui l’inclut. Mettre une synchronisation en pause est toujours autorisé. | Problème (application/problem+json) |
| 412 | revision_conflict — If-Match est périmé; la propriété current_revision de l’erreur contient la révision actuelle. | Problème (application/problem+json) |
| par défaut | Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique. | Problème (application/problem+json) |
Supprimer la synchronisation de médias
Arrête la synchronisation et oublie quel fichier source est devenu quel média. Les médias et leur dossier restent. Ajoute media_sync.deleted. If-Match protège la révision.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton. |
| id | chemin | obligatoire | |
| If-Match | en-tête | optionnel | Révision positive optionnelle de ressource. Omettre pour écrire la ressource actuelle ; une révision périmée fournie est revision_conflict. |
| Idempotency-Key | en-tête | optionnel | Omettre pour une opération fraîche. Fournissez et réutilisez une clé pour dédupliquer les tentatives ; le CLI gère les clés automatiquement. |
Modèle de requête et réponses
curl --request DELETE --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://api.screenrig.ai/api/media-syncs/RESOURCE_ID'Réponses
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 204 | Supprimé. | pas de corps |
| 412 | revision_conflict — If-Match est périmé; la propriété current_revision de l’erreur contient la révision actuelle. | Problème (application/problem+json) |
| par défaut | Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique. | Problème (application/problem+json) |
Exécuter la synchronisation de médias
Rend la synchronisation exigible maintenant et répond 202 ; un worker l’exécute en 30 secondes environ, et la réponse de GET /api/media-syncs/{id} montre son last_run.
Une synchronisation arrêtée par une erreur redémarre ; une synchronisation en pause est refusée tant qu’elle n’est pas reprise. force=true fait exporter le design par une synchronisation Canva même si Canva le signale inchangé (refusé pour une synchronisation SharePoint : elle télécharge déjà chaque fichier modifié).
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton. |
| id | chemin | obligatoire | |
| Idempotency-Key | en-tête | optionnel | Omettre pour une opération fraîche. Fournissez et réutilisez une clé pour dédupliquer les tentatives ; le CLI gère les clés automatiquement. |
| forcer | requête | optionnel | Une synchronisation Canva exporte le design même lorsque Canva le signale comme inchangé. |
Modèle de requête et réponses
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://api.screenrig.ai/api/media-syncs/RESOURCE_ID/run'Réponses
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 202 | La synchronisation, à exécuter maintenant. | MediaSync (application/json); en-têtes : ETag, Cache-Control |
| 400 | invalid_request. | Problème (application/problem+json) |
| par défaut | Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique. | Problème (application/problem+json) |