Aller au contenu

Journal des modifications

Les modifications de l’API et du tableau de bord, des plus récentes aux plus anciennes. L’API v1 est gelée : les modifications incompatibles n’arrivent que dans une nouvelle version, annoncée 12 mois à l’avance.

 : Kennmarq.com en allemand, en français et en italien

  • La page d’accueil et sa carte, les tarifs, l’inscription et la connexion, le vérificateur, l’index des lois et les pages des lois et des pays de l’UE, de la France et de l’Italie en allemand (/de), en français (/fr) et en italien (/it) ; le reste du site suit. Les conditions d’utilisation, la politique de confidentialité et l’accord de traitement des données restent en anglais, le texte qui fait foi.
  • L’article sur le 2 décembre, en allemand : KI-Verordnung, Art. 50.
  • Dans Lois sur les contenus IA, la ligne de chaque loi indique désormais la couverture propre à cette loi, comme sa page. Elle indiquait auparavant celle de son pays, si bien que quelques lignes affichaient « Couvert » pour des fichiers qui attendent les mentions orales ou les mentions dans les termes mêmes d’une loi.
  • Chaque page de loi et de pays, la documentation, la référence de l’API, les guides des lois, le centre de confiance et le journal de transparence aussi en allemand, en français et en italien ; et les e-mails d’un compte créé dans l’une de ces langues arrivent dans cette langue.
  • Le tableau de bord dans la langue de votre compte, que vous changez dans les paramètres, et les conditions d’utilisation, la politique de confidentialité, l’accord de traitement des données et la liste des sous-traitants ultérieurs traduits à titre de courtoisie : seule la version anglaise fait foi.

 : Inscription ouverte, connexion avec GitHub et outils pour les agents de codage

  • L’inscription est ouverte : un compte avec votre adresse e-mail, ou Continuer avec GitHub, qui crée le compte et vous permet de créer une clé aussitôt.
  • Un serveur MCP sans clé à https://api.kennmarq.com/mcp : ce que les lois de chaque marché exigent d’un fichier, et le code pour chaque stack. Il figure dans le registre MCP officiel sous com.kennmarq/kennmarq, et le kit pour agents (un skill, une règle Cursor, un plugin Claude Code et une extension Gemini) est sur GitHub.
  • @kennmarq/ai-sdk : un middleware pour le Vercel AI SDK qui marque les images, la parole et les vidéos qu’il renvoie.
  • Une page pour chaque loi, comme l’article 50 de l’AI Act, et pour chaque pays doté d’une loi ou d’un projet ; et le blog (en anglais), qui commence par l’échéance du 2 décembre pour les systèmes d’IA déjà sur le marché de l’UE.
  • Les nœuds ComfyUI 0.2.2 : une fiche plus claire dans le ComfyUI Registry et deux workflows d’exemple.

 : Les règles de nouveaux pays sur la carte des lois

  • Azerbaïdjan : depuis le 6 mai 2026, les photos, vidéos et contenus audio produits par l’IA et diffusés publiquement en ligne doivent porter un marquage clair. Avec markets=az, les images et les vidéos reçoivent la mention visible ; les morceaux sont refusés jusqu’à l’arrivée des mentions orales (décembre 2026).
  • De nouvelles règles qui ne visent que certains contenus, sur la carte et dans les lois sur les contenus IA : les médias audiovisuels et la presse en Roumanie, en Slovénie, en Arménie, aux Maldives, au Bénin et au Sénégal ; les contenus électoraux en Israël, au Mexique (images et voix de mineurs), au Kentucky et au Mississippi, et au Japon à partir du 1er mars 2027. Des projets de loi en Angola, en Argentine, au Chili, en Colombie, en Équateur et en Roumanie.
  • Des notes pour 17 pays de plus, comme les infractions de « montage » au Bénin, à Djibouti, en Guinée et au Mali, auxquelles échappe un montage qui indique ce qu’il est. Le projet de loi espagnol sur la gouvernance de l’IA est devenu caduc avec la dissolution du Parlement.
  • Là où nous n’avons trouvé aucune règle, la carte l’indique : « Aucune règle trouvée ».

 : Chaque pays est un marché, et la carte du monde

  • markets sur POST /v1/mark accepte le code ISO de n’importe quel pays (de, jp, br), en plus de eu, des États américains et de us. Un État membre de l’UE reçoit les règles de l’AI Act et les siennes ; un pays sans règle sur l’étiquetage des contenus IA reçoit les deux marquages, et son justificatif indique qu’aucune règle n’a été trouvée. La Chine, ainsi que les hypertrucages au Viêt Nam, sont refusés jusqu’à ce que nous ajoutions ce qu’exigent leurs règles.
  • La carte de la page d’accueil et les lois sur les contenus IA : les règles de chaque pays, ce que chacune exige pour les images, la vidéo, l’audio, le texte et la 3D, quand elle s’applique et ce qu’ajoute un appel, avec les dates de ce qui vient ensuite. Les sources sont des sites officiels.

 : Les nœuds ComfyUI dans le ComfyUI Registry

  • Les nœuds ComfyUI sont dans le ComfyUI Registry sous le nom comfyui-kennmarq : installez-les depuis ComfyUI-Manager (recherchez « Kennmarq.com ») ou avec comfy node install comfyui-kennmarq.
  • Le SDK Python 0.2.1 : en mode local aussi, une image très détaillée ou bruitée enregistrée en JPEG est marquée au lieu d’échouer.

 : Le SDK JavaScript, et le SDK Python sur PyPI

  • Le SDK JavaScript, npm install @kennmarq/sdk : marquez, contrôlez et vérifiez depuis Node.js 20 ou version ultérieure, Next.js, Bun, Deno et les runtimes edge, avec des types et sans dépendances. Les fichiers de plus de 4 Mo passent par un envoi, et le SDK attend la fin de la tâche d’une vidéo.
  • Le SDK Python est sur PyPI : pip install kennmarq, et pip install "kennmarq[local]" pour le mode local.
  • Une image très détaillée ou bruitée enregistrée en JPEG est marquée au lieu d’échouer.

 : Mentions visibles, Corée du Sud et Inde

  • label=true sur POST /v1/mark appose la mention visible de l’UE sur une image ou sur chaque image d’une vidéo, avant le filigrane : « AI GENERATED », ou « AI MODIFIED » pour les modifications, en anglais, en coréen ou en chinois, dans n’importe quel coin, en trois tailles et dans les quatre styles du code de bonne pratique. Le manifeste l’enregistre, et le vérificateur l’affiche.
  • deepfake=true active la mention, comme le demande l’art. 50, par. 4, de l’AI Act pour les hypertrucages.
  • Deux nouveaux marchés : kr (loi-cadre sur l’IA de la Corée du Sud, la mention pour les hypertrucages) et in (IT Rules 2026 de l’Inde, la mention sur chaque image et chaque vidéo, et app_name obligatoire). Les justificatifs indiquent la mention visible.

 : Le vérificateur lit les images larges

  • Vérifier une image lit le filigrane d’une image plus de deux fois plus large que haute, ou deux fois plus haute que large, comme une bannière ou une capture d’écran de téléphone : la lecture se fait dans le carré central, là où TrustMark place le marquage.

 : POST /v1/verify lit les images pivotées

  • POST /v1/verify lit aussi notre filigrane à chaque quart de tour : une image enregistrée sur le côté ou à l’envers mène toujours à ses Content Credentials.
  • Un filigrane TrustMark qui n’est pas le nôtre ne s’affiche que si la lecture du centre de l’image donne exactement le même : une image sans marquage n’en affiche donc plus par hasard, dans les résultats comme dans les résultats signés.

 : Marchés et justificatifs

  • Un nouveau champ markets sur POST /v1/mark et dans le SDK Python : eu, us-ca, us-wa, us-ut ou us. Un appel auquel il manque ce qu’exigent ces lois est refusé, avant tout marquage ou décompte.
  • Un marquage effectué en indiquant des marchés a un justificatif : ce que porte son fichier pour chaque loi, et ce qui reste à votre charge, signé avec la clé de notre vérificateur si vous le demandez.

 : Le vérificateur lit les images pivotées

  • Vérifier une image lit aussi notre filigrane à chaque quart de tour, comme le peut le décodeur de TrustMark lui-même : une image enregistrée sur le côté mène toujours à ses Content Credentials.
  • Un filigrane TrustMark qui n’est pas le nôtre ne s’affiche que si la lecture du centre de l’image donne exactement le même : une image sans marquage n’en affiche donc plus par hasard.

 : La divulgation latente de la loi californienne

  • Deux nouveaux champs sur POST /v1/mark, dans le SDK Python et les nœuds ComfyUI : provider, votre raison sociale, et app_version, la version de votre système d’IA, à côté de app_name. Avec l’heure, les identifiants uniques et la source que nous enregistrons déjà, un marquage porte les cinq éléments de la divulgation latente prévue par la loi californienne.
  • Sans app_name, un manifeste ne nous désigne plus comme le système d’IA qui a créé le contenu : il n’en désigne aucun.
  • Le vérificateur et POST /v1/verify affichent le fournisseur, le système d’IA et sa version, le modèle et l’heure de création : un nouvel objet origin dans le résultat.
  • Nouveaux guides : l’AI Act européen et l’AI Transparency Act de Californie.

 : L’offre Free : une par personne

  • Les 1 000 marquages par mois de l’offre Free forment un seul quota par personne : votre première organisation en dispose, et toute autre organisation que vous créez démarre sans aucun marquage tant qu’elle n’a pas d’offre payante (402 quota_exceeded l’indique).
  • Avec l’offre Free, les clés de test disposent de 100 marquages et de 100 Mo par mois ; avec les offres payantes, d’autant qu’en production. Le nombre de nouveaux comptes est plafonné par jour pour l’ensemble du service ; au-delà, les inscriptions rouvrent à minuit UTC.

 : Limites par organisation

  • Les appels par minute de l’offre valent pour toute l’organisation, toutes ses clés confondues. Les marquages et les contrôles qui échouent une fois leur traitement commencé ont un plafond quotidien par organisation.
  • Les limites par adresse comptent une adresse IPv6 par son /64. Sans clé, l’ensemble du service répond au maximum à 5 000 vérifications par jour (500 signées) ; avec une clé (gratuite), les vérifications comptent dans les appels par minute de votre organisation. Le SDK Python patiente quand un 429 demande d’attendre une minute ou moins.

 : Limites des vidéos

  • Une vidéo compte jusqu’à 4 500 images (2,5 minutes à 30 images par seconde, 75 secondes à 60) : ce que nous pouvons marquer dans le temps imparti à une tâche. Pour une vidéo peu texturée, l’intensité du filigrane est désormais choisie à partir d’un échantillon avant que chaque image soit marquée : une seule passe suffit.
  • Chaque offre marque quelques vidéos à la fois (Free 1, Indie 2, Startup 3, Scale 5), et les vidéos qui échouent une fois leur traitement commencé ont un plafond quotidien. Au-delà de l’une ou l’autre limite : 429 rate_limited avec Retry-After.

 : Téléchargement des vidéos

  • Le fichier d’une vidéo terminée est conservé une journée, et chaque lien de téléchargement fonctionne 5 minutes, jusqu’à 5 liens par vidéo. Redemander un lien pendant ces 5 minutes donne la même échéance. Chaque lien après le premier compte la taille du fichier dans les données du mois. Nouveaux champs : download_links_left et download_error.
  • Les vidéos marquées sont renvoyées avec un débit vidéo allant jusqu’à 20 Mbit/s.

 : Morceaux et vidéos

  • POST /v1/mark marque les morceaux : MP3, WAV et M4A jusqu’à 15 minutes, avec AudioSeal de Meta dans le son, modelé sous la musique pour que personne ne l’entende, et des Content Credentials signés et horodatés. Un morceau compte cinq marquages par minute entamée. Nouveaux en-têtes : X-Marks-Counted et X-Audio-Watermark.
  • Et les vidéos : MP4 jusqu’à 5 minutes en 1080p, avec Video Seal de Meta dans chaque image, porteur d’un ID qui mène aux Content Credentials durables de la vidéo, et AudioSeal dans le son. Une vidéo est une tâche : 202, puis GET /v1/marks/{id} pour son statut et un lien de téléchargement. Une vidéo compte cinq marquages par seconde entamée ; son contrôle de sécurité analyse 12 images, à deux marquages chacune.
  • Les envois acceptent une vidéo jusqu’à 1 Go. POST /v1/verify lit les morceaux et les vidéos, et POST /v1/check les vidéos. Un nouvel événement de webhook, mark.failed, pour une vidéo dont la tâche a échoué.
  • Le SDK Python 0.2.0 marque les morceaux et les vidéos (il attend la fin de la tâche d’une vidéo), et les nœuds ComfyUI ajoutent Mark & Save Audio et Mark & Save Video.

 : Lancement : offres, envois, webhooks et gel de l’API v1

  • Offres payantes : Indie, Startup et Scale, mensuelles ou annuelles, souscrites et modifiées depuis la page Facturation du tableau de bord, via Stripe. Les offres mensuelles continuent au-delà de leur quota en dépassement (0,0003 USD par marquage, 0,10 USD par Go de données), facturé le 1er du mois, jusqu’à dix fois le quota ; l’offre Free et les offres annuelles s’arrêtent au quota. GET /v1/usage ajoute marks.ceiling.
  • POST /v1/uploads : une requête porte désormais au plus 4 Mo ; les fichiers jusqu’à 25 Mo sont d’abord envoyés directement vers notre stockage à Zurich, et les appels les désignent dans upload (ou input_upload). Le SDK Python s’en charge tout seul. Nouveaux codes d’erreur : upload_not_found, storage_unavailable.
  • Webhooks : mark.completed et check.blocked, signés (Kennmarq-Signature, selon le schéma de Stripe), renvoyés pendant une journée. Les endpoints s’ajoutent dans le tableau de bord.
  • L’API v1 est gelée : uniquement des ajouts, un préavis de 12 mois avant toute modification incompatible (gestion des versions), et un document OpenAPI 3.1 à l’adresse /v1/openapi.json.
  • Le centre de confiance, la page d’état du service, le rapport de robustesse des marquages d’images, et les pages juridiques : conditions d’utilisation, confidentialité, DPA et nos deux sous-traitants ultérieurs.

 : Le mode local, le SDK Python et les nœuds ComfyUI

  • POST /v1/sign : la signature du mode local. Le filigrane et les Content Credentials sont créés sur votre machine, et seul le manifeste (environ 13 Ko, jamais de pixels) nous parvient pour être signé et horodaté. Nous ne signons que ce que porte un marquage dans le cloud : un type de source IA, aucune miniature, chaque assertion telle que la déclaration en enregistre l’empreinte. Les clés doivent avoir la portée sign ; chaque fichier compte pour un marquage.
  • Le SDK Python : l’API cloud, le mode local, le contrôle de sécurité sur votre machine, et la vérification. Et les nœuds ComfyUI : Mark & Save Image et Safety Check. Tous deux arrivent bientôt sur PyPI et dans le ComfyUI Registry.
  • Un nouveau type d’entrée dans le journal de transparence, c2pa.local_signature, qui contient la liaison stricte (hard binding) du fichier là où l’entrée d’une signature dans le cloud contient son empreinte. Les marquages locaux avec filigrane conservent aussi des Content Credentials durables, sans empreinte du fichier : same_file vaut alors null.

 : Le contrôle de sécurité

  • POST /v1/check : analyse une image pour y détecter un contenu sexuel impliquant un mineur apparent ou un visage réaliste, visé par les interdictions de l’art. 5 de l’AI Act, selon la politique ai-act ou safe-only. Il répond : autoriser, signaler ou bloquer, avec le motif ; jamais un âge ni une identité. Deux marquages par image ; les clés doivent avoir la nouvelle portée check.
  • check sur POST /v1/mark : le fichier et tout fichier d’entrée sont contrôlés avant le marquage. Un blocage répond 422 content_blocked avec le contrôle, et rien n’est marqué ; un signalement marque, avec X-Safety-Verdict et X-Safety-Reason.
  • Notre propre limite, sur chaque marquage et quelle que soit la politique : un contenu explicite impliquant une personne qui semble être un enfant n’est jamais marqué.
  • Les modèles du contrôle, leurs licences et leurs taux d’erreur mesurés sont publiés.

 : Le vérificateur gratuit

  • Vérifier une image : si elle porte des Content Credentials et un filigrane TrustMark, les nôtres ou ceux de n’importe qui, et ce qu’ils disent. La vérification s’exécute dans le navigateur ; l’image ne quitte jamais l’appareil.
  • POST /v1/verify : la même vérification via l’API, sans clé, 10 fichiers par minute et 200 par jour par adresse. Avec signed=true, un résultat signé par la clé de notre vérificateur (JWS, ES256), inscrit dans le journal de transparence avant d’être renvoyé, avec X-Log-Index ; la clé se trouve à GET /v1/verify/key. Voir POST /v1/verify.
  • Content Credentials durables : les manifestes de chaque fichier filigrané sont conservés sous l’ID de son filigrane, si bien qu’une copie dont les métadonnées ont été supprimées y mène. GET /v1/credentials/{watermark_id} les renvoie, en JSON ou sous forme de fichier .c2pa.
  • Un nouveau type d’entrée dans le journal de transparence, checker.result : les empreintes de chaque résultat signé et du fichier qu’il concerne.

 : Le journal de transparence

  • Chaque signature de POST /v1/mark et chaque jeton de POST /v1/tsa/{key} est ajouté à un journal public en ajout seul avant d’être renvoyé. Les deux réponses indiquent sa position dans X-Log-Index.
  • GET /v1/log/root, /roots, /proof/{entry}, /consistency, /entries et /key : des racines signées et les preuves pour les vérifier, sans clé. Voir le journal de transparence.
  • La tête du journal d’audit de chaque organisation est ancrée dans le journal de transparence chaque fois qu’elle change ; la page d’audit du tableau de bord affiche le dernier ancrage.

 : Aperçu de l’API v1 : le marquage des images

  • POST /v1/mark : un filigrane invisible et des Content Credentials C2PA signés et horodatés pour les images PNG, JPEG et WebP jusqu’à 25 Mo.
  • POST /v1/tsa/{key} : notre serveur d’horodatage RFC 3161, avec des clés limitées à la portée tsa.
  • GET /v1/certificate et GET /v1/usage.
  • Les organisations avec des rôles, les projets, les clés de test et de production avec portées et listes d’IP autorisées, et un journal d’audit chaîné par hachage, exportable en CSV et en JSON.