Utilisez l’API de provenance du contenu pour vérifier si une image ou un fichier audio contient
des signaux de provenance OpenAI pris en charge. Envoyez un fichier à
POST /v1/content_provenance_checks pour recevoir les résultats complets de la vérification
dans la même réponse. Utilisez ces signaux dans vos workflows de révision de contenu,
de vérification des faits, d’étiquetage et de confiance et sécurité.
Pour vérifier un fichier dans votre navigateur, utilisez l’outil web disponible sur openai.com/verify.
Pour connaître les paramètres des requêtes et les schémas des réponses, consultez la référence de l’API de provenance du contenu.
Un résultat not_detected signifie que l’outil n’a trouvé aucun signal pris en charge dans
le fichier envoyé. Le contenu peut néanmoins avoir été généré par OpenAI si ses métadonnées
ont été supprimées ou présentent des signes de falsification, si son filigrane a été dégradé,
s’il provient d’un ancien modèle de génération ou s’il a été créé avant que les signaux de provenance
soient disponibles. L’outil ne détecte pas actuellement les contenus générés par
un modèle d’IA d’une autre entreprise. Un résultat not_detected n’exclut donc pas non plus
cette possibilité.
Signaux recherchés lors de la vérification de provenance du contenu
La vérification de provenance du contenu recherche les signaux suivants dans les fichiers pris en charge :
| Signal | S’applique à | Éléments vérifiés |
|---|---|---|
| Content Credentials C2PA | Images | Métadonnées signées contenant des informations sur l’émetteur et l’utilisation de l’IA |
| SynthID | Images et audio | Filigrane intégré directement aux médias pris en charge |
Les métadonnées C2PA apportent davantage de contexte sur l’origine d’un fichier. La modification, la conversion ou le partage d’un fichier peuvent supprimer ses métadonnées. Un filigrane SynthID fait partie intégrante de l’image ou du contenu audio et peut résister à certaines transformations.
L’API recherche les signaux OpenAI pris en charge. Ce n’est pas un détecteur universel de contenus générés par l’IA : elle ne permet pas d’identifier les contenus générés par tous les systèmes d’IA. Les filigranes et les étiquettes visibles sont distincts des signaux de provenance vérifiés par l’API.
Vérifiez un fichier
Envoyez une image ou un fichier audio dans le champ file avec le SDK OpenAI. Le SDK
construit la requête multipart et lit votre clé API dans la variable d’environnement
OPENAI_API_KEY :
import { createReadStream } from "node:fs";
import OpenAI, { toStreamingFile } from "openai";
const client = new OpenAI();
const result = await client.contentProvenanceChecks.create({
file: toStreamingFile(createReadStream("myimage.png"), "myimage.png", {
type: "image/png",
}),
});
console.log(result);Utilisez les versions suivantes du SDK OpenAI ou des versions ultérieures : Python 2.52.0, Go 3.49.0 et Ruby 0.75.0.
Pour vérifier un fichier audio Opus, utilisez le même point de terminaison et définissez le type de média
du fichier envoyé sur audio/ogg :
curl https://api.openai.com/v1/content_provenance_checks \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-F "file=@./example.opus;type=audio/ogg"
La réponse contient le résultat complet. Par exemple, la vérification d’une image renvoie :
{
"object": "content_provenance_check",
"created_at": 1778000000,
"results": [
{
"type": "c2pa",
"outcome": "detected",
"validation_state": "trusted",
"issuer": "OpenAI OpCo, LLC",
"model": "gpt-image",
"generated_at": "2026-07-27T18:34:12Z"
},
{
"type": "synthid",
"outcome": "not_detected",
"model": null,
"generated_at": null
}
]
}
Le champ object identifie la réponse, et created_at indique l’heure de création
de la vérification sous forme d’horodatage Unix en secondes. Les entrées de results dépendent
du fichier envoyé : les images incluent des résultats C2PA et SynthID, et les fichiers audio incluent un
résultat SynthID. L’API omet les vérifications qui ne s’appliquent pas au lieu de renvoyer
not_detected.
L’API termine la vérification avant de renvoyer la réponse. Vous n’avez pas besoin de créer une tâche en arrière-plan, d’interroger périodiquement un autre point de terminaison ni d’envoyer le fichier à l’API Files.
Si une requête échoue, vérifiez le code de statut HTTP et error.code, si ce champ est disponible.
Un fichier mal formé, non pris en charge ou bloqué renvoie 400 ; une organisation sans
accès reçoit 404 ; les requêtes qui dépassent la limite de débit renvoient 429. Réessayez uniquement
en cas d’échec temporaire, par exemple une limite de débit atteinte ou une erreur serveur. Pour des conseils généraux,
consultez les codes d’erreur de l’API.
Comprenez les résultats de vérification
Lisez séparément chaque entrée applicable de results. Les résultats pour les images incluent
des entrées C2PA et SynthID, tandis que ceux des fichiers audio incluent une entrée SynthID.
La réponse ne contient pas de champ outcome au niveau racine.
Résultats C2PA
Un résultat C2PA décrit l’état des Content Credentials d’une image :
{
"type": "c2pa",
"outcome": "detected",
"validation_state": "trusted",
"issuer": "OpenAI OpCo, LLC",
"model": "gpt-image",
"generated_at": "2026-07-27T18:34:12Z"
}
Utilisez les champs comme suit :
outcomeindique si des attestations de génération par IA émises par OpenAI ont été détectées (detected) ou non (not_detected).validation_stateindique si le manifeste est à l’étattrusted,valid,invalidounot_present.issueridentifie l’émetteur du manifeste lorsque cette information est disponible.modelidentifie le modèle qui a généré le contenu lorsque cette information est disponible.generated_atindique le moment où le contenu a été généré lorsque cette information est disponible.
Le résultat est detected uniquement lorsqu’un manifeste à l’état trusted ou valid identifie
OpenAI comme émetteur et inclut une action de génération par IA. Un manifeste émis par un tiers,
un manifeste sans action de génération par IA, un manifeste à l’état invalid ou
à l’état not_present produit le résultat not_detected. Les champs issuer et
validation_state peuvent tout de même décrire un manifeste, même lorsque le résultat est
not_detected.
Ne considérez pas un manifeste à l’état invalid comme une preuve fiable de provenance.
Un résultat not_present signifie qu’aucun manifeste C2PA n’est disponible pour l’image.
Résultats SynthID
Un résultat SynthID indique si l’outil de vérification a détecté un filigrane pris en charge dans une image ou un fichier audio :
{
"type": "synthid",
"outcome": "detected",
"model": null,
"generated_at": null
}
Un résultat detected signifie que le fichier contient un filigrane reconnu.
Un résultat not_detected signifie que l’outil de vérification n’a pas détecté ce filigrane. Cela
n’exclut pas que le contenu ait été généré ou modifié par l’IA. Les champs model et
generated_at indiquent le modèle utilisé et le moment de la génération lorsque ces informations sont disponibles ;
chacun de ces champs peut avoir la valeur null.
Formats pris en charge et disponibilité
L’API prend en charge les formats de fichiers suivants :
- Images : PNG, JPEG et WebP.
- Audio : MP3, Opus, AAC, FLAC, WAV et PCM.
Limitez chaque fichier envoyé à 50 MiB. La durée de l’audio ne doit pas dépasser 60 secondes après décodage.
Définissez le type de média de la partie file envoyée. Par exemple, utilisez image/png pour une image PNG
ou audio/ogg pour un fichier audio Opus. N’ajoutez pas de champ type distinct et
ne définissez pas manuellement l’en-tête de requête multipart/form-data. L’option -F de curl
définit le type de contenu de la requête et le délimiteur multipart. Envoyez un seul fichier par requête.
Les vérifications de provenance du contenu ne sont pas éligibles à la politique de non-conservation des données.
Des limites de débit strictes contribuent à protéger l’API contre les utilisations abusives. Les organisations peuvent demander des limites plus élevées, et OpenAI examine chaque demande au cas par cas.
Si l’API renvoie 429 rate_limit_exceeded, réduisez la fréquence de vos requêtes et
respectez l’en-tête Retry-After lorsqu’il est présent. Consultez la section
limites de débit pour des conseils généraux sur les nouvelles tentatives.
Utilisez les résultats de vérification de manière responsable
Utilisez les résultats de vérification comme éléments de preuve dans un processus de révision plus large :
- Considérez
detectedcomme la preuve de la présence d’un signal précis pris en charge, et non comme l’historique complet d’un fichier. - Considérez
not_detectedcomme une absence d’éléments de preuve détectés, et non comme la preuve que le contenu a été créé par un humain ou n’a pas été généré avec OpenAI. - Vérifiez l’émetteur C2PA avant d’attribuer une image à un fournisseur particulier.
- Vérifiez le fichier d’origine lorsque c’est possible. La compression, le recadrage, les captures d’écran, la suppression des métadonnées et les conversions de format peuvent effacer ou affaiblir un signal.
- Tenez compte du produit et du modèle d’origine, du format de fichier et de la date de création. Les contenus générés par OpenAI ne contiennent pas tous un signal pris en charge.
- Associez les décisions automatisées à une révision humaine dans les workflows à forts enjeux.
- N’utilisez pas de requêtes répétées pour procéder à l’ingénierie inverse d’un filigrane, le supprimer ou contourner sa détection.
- Ne déduisez ni le prompt, ni le compte, ni l’identité du créateur à partir d’un résultat de vérification.
L’utilisation de l’API de provenance du contenu est soumise au Contrat de services OpenAI.
Pour en savoir plus sur les paramètres de surveillance et de conservation à l’échelle de la plateforme, consultez les contrôles des données.