Aller au contenu

Documentation de l’API Fileverity

Référence de l’API

Tous les points d’accès de l’API Fileverity avec leurs paramètres, schémas de requête et de réponse, codes d’erreur et exemples, générés à partir de la spécification OpenAPI 3.1.

Voir en MarkdownMis à jour le 2026-11-04

Cette référence est générée à partir du document OpenAPI 3.1 de l’API, disponible à l’adresse https://api.fileverity.com/v1/openapi.json, et reste donc toujours conforme à l’API. Pour les concepts et les guides, commencez par la Vue d’ensemble.

Conventions

URL de base : https://api.fileverity.com/v1. Authentifiez chaque requête avec Authorization: Bearer <key>. Les erreurs ont toutes le même format, décrit dans Erreurs. Chaque réponse comporte un en-tête x-request-id, et les réponses authentifiées comportent les en-têtes de limite de débit décrits dans Limites de débit et en-têtes. Les objets imbriqués s’ouvrent dans des sections repliables sous le tableau.

Détections de texte

Détecter un texte rédigé par IA

POST https://api.fileverity.com/v1/text/detections

Classe un texte brut comme rédigé par IA, en partie rédigé par IA ou rédigé par une personne, et renvoie les passages rédigés par IA. Le texte est évalué puis supprimé ; il n’est pas conservé. La facturation compte les points de code Unicode par tranches de 1 000 caractères, arrondies à la tranche supérieure pour chaque requête. Les requêtes rejetées avant l’évaluation ne sont pas facturées. Les clés de test renvoient sans frais un résultat fixe correspondant à un texte rédigé par une personne.

Paramètres

NomEmplacementTypeObligatoireDescription
Idempotency-Keyen-têtechaîneNonClé unique de 255 caractères au maximum. Répéter la requête avec la même clé et le même corps dans un délai de 24 heures renvoie la première réponse avec l’en-tête idempotent-replayed: true ; la même clé avec un corps différent renvoie 409.

Corps de la requête : application/json, obligatoire

ChampTypeObligatoireDescription
modelchaîneNonID de modèle ou ID d’instantané. Valeur par défaut : "fvdoc-3-text".
textchaîneOuiTexte brut, d’au moins 100 mots et de 100 000 caractères au maximum.
languageune valeur parmi "en", "fr", "de", "es", "zh", nullNonCode ISO 639-1. Détecté automatiquement s’il est omis. Valeur par défaut : null.

Réponses

StatutDescriptionCorps
200Le résultat de la détection.TextDetection
400Requête invalide. Codes d’erreur : invalid_json, missing_parameter, text_too_short, unsupported_language, invalid_parameter.Error
401Clé d’API manquante ou invalide. Codes d’erreur : missing_api_key, invalid_api_key.Error
402Le solde ou la limite de dépense mensuelle de la clé ne permet pas de couvrir la requête. Codes d’erreur : insufficient_balance, spend_limit_reached.Error
404Ressource introuvable. Codes d’erreur : model_not_found.Error
409Conflit avec l’état actuel. Codes d’erreur : idempotency_mismatch, idempotency_in_progress.Error
413Une limite de taille a été dépassée. Codes d’erreur : text_too_long.Error
415Type de média ou format de fichier non pris en charge. Codes d’erreur : unsupported_media_type.Error
429Trop de requêtes. Codes d’erreur : rate_limited.Error
500Erreur interne ; rien n’est facturé. Codes d’erreur : internal_error.Error
502L’analyse n’a pas pu aboutir ; rien n’est facturé. Codes d’erreur : analysis_failed.Error
503Temporairement indisponible ou saturé ; rien n’est facturé. Réessayez après le nombre de secondes indiqué dans l’en-tête retry-after. Codes d’erreur : service_unavailable.Error

Réponse 200 : TextDetection

ChampTypeObligatoireDescription
idchaîneOui
object"text.detection"Oui
createdentierOuiHorodatage Unix.
modelchaîneOuiInstantané qui a produit le résultat.
livemodebooléenOuiVaut false pour les clés de test.
languageune valeur parmi "en", "fr", "de", "es", "zh"Oui
verdictune valeur parmi "ai", "mixed", "human"Ouiai : le texte semble entièrement rédigé par IA ; mixed : des passages rédigés par IA au sein d’un texte humain ; human : aucun passage rédigé par IA trouvé.
scorenombreOuiScore du modèle pour le passage qui ressemble le plus à du texte rédigé par IA. Minimum : 0. Maximum : 1.
ai_fractionnombreOuiPart du texte évalué contenue dans des segments rédigés par IA. Minimum : 0. Maximum : 1.
segmentstableau d’objetsOuiPassages rédigés par IA, indiqués par leurs positions dans le texte soumis, en points de code Unicode. Les limites sont approximatives et peuvent inclure des phrases adjacentes.
usageobjetOui
segments : champs
ChampTypeObligatoireDescription
startentierOui
endentierOuiBorne exclue.
scorenombreOuiMinimum : 0. Maximum : 1.
usage : champs
ChampTypeObligatoireDescription
charactersentierOuiPoints de code Unicode évalués.
free_charactersentierOuiCaractères couverts par le quota de votre démarrage gratuit, non facturés.
billed_unitsentierOuiUnités de 1 000 caractères effectivement facturées, après déduction des caractères gratuits ; billed_units × prix unitaire correspond au coût.

Codes d’erreur

CodeStatut
invalid_json400
missing_parameter400
unsupported_media_type415
text_too_short400
text_too_long413
unsupported_language400
model_not_found404
insufficient_balance402
spend_limit_reached402
service_unavailable503
analysis_failed502
invalid_parameter400
idempotency_mismatch409
idempotency_in_progress409
missing_api_key401
invalid_api_key401
rate_limited429
internal_error500

Exemple

curl https://api.fileverity.com/v1/text/detections \  -H "Authorization: Bearer $FILEVERITY_API_KEY" \  -H "Content-Type: application/json" \  -d "$(jq -Rs '{text: .}' essay.txt)"
{  "id": "tdet_8Hk2pQ4vN9sL1xR7cW3mY6zB",  "object": "text.detection",  "created": 1793664000,  "model": "fvdoc-3-text-2026-11-03",  "livemode": true,  "language": "en",  "verdict": "mixed",  "score": 0.97,  "ai_fraction": 0.41,  "segments": [    {      "start": 212,      "end": 433,      "score": 0.97    },    {      "start": 579,      "end": 790,      "score": 0.93    }  ],  "usage": {    "characters": 1412,    "free_characters": 0,    "billed_units": 2  }}

Fichiers

Téléverser un fichier

POST https://api.fileverity.com/v1/files

Téléverse un fichier en vue de son analyse. Envoyez les fichiers de 4 Mo maximum en multipart/form-data, dans le champ file ; la réponse a le statut uploaded. Les fichiers de plus de 4 Mo doivent être téléversés avec une URL présignée. Envoyez du JSON avec filename, content_type et bytes (documents de 50 Mo maximum) ; la réponse a le statut pending et un objet upload contenant une URL présignée : envoyez-y les octets du fichier avec PUT et les en-têtes indiqués avant son expiration. Un fichier est supprimé au démarrage d’une analyse et, au plus tard, après 24 heures. Un espace de travail peut contenir au maximum 50 fichiers non expirés et 200 Mo par mode à la fois.

Paramètres

NomEmplacementTypeObligatoireDescription
Idempotency-Keyen-têtechaîneNonClé unique de 255 caractères au maximum. Répéter la requête avec la même clé et le même corps dans un délai de 24 heures renvoie la première réponse avec l’en-tête idempotent-replayed: true ; la même clé avec un corps différent renvoie 409.

Corps de la requête : multipart/form-data, obligatoire

ChampTypeObligatoireDescription
filechaîneOuiFormat : binary.

Corps de la requête : application/json, obligatoire

ChampTypeObligatoireDescription
filenamechaîneNon
content_typechaîneOuiType MIME du fichier, par exemple image/jpeg ou application/pdf.
bytesentierOuiTaille exacte en octets. Minimum : 1. Maximum : 52 428 800.

Réponses

StatutDescriptionCorps
201Le fichier.File
400Requête invalide. Codes d’erreur : invalid_json, missing_parameter, invalid_parameter.Error
401Clé d’API manquante ou invalide. Codes d’erreur : missing_api_key, invalid_api_key.Error
409Conflit avec l’état actuel. Codes d’erreur : idempotency_mismatch, idempotency_in_progress.Error
413Une limite de taille a été dépassée. Codes d’erreur : file_too_large.Error
415Type de média ou format de fichier non pris en charge. Codes d’erreur : unsupported_media_type, unsupported_file.Error
422Le fichier ne peut pas être traité. Codes d’erreur : invalid_file.Error
429Trop de requêtes. Codes d’erreur : pending_files_limit, rate_limited.Error
500Erreur interne ; rien n’est facturé. Codes d’erreur : internal_error.Error

Réponse 201 : File

ChampTypeObligatoireDescription
idchaîneOui
object"file"Oui
filenamechaîne ou nullOui
bytesentier ou nullOui
content_typechaîneOui
statusune valeur parmi "pending", "uploaded"Ouipending jusqu’à l’arrivée des octets envoyés à l’URL présignée.
livemodebooléenOuiLes fichiers ne sont visibles que par les clés du même mode.
createdentierOuiHorodatage Unix.
expires_atentierOuiHorodatage Unix après lequel le fichier est supprimé.
uploadobjetNonPrésent dans la réponse à une requête de téléversement JSON.
upload : champs
ChampTypeObligatoireDescription
urlchaîneOuiLes clés de test reçoivent une URL factice (test: true) ; rien n’est téléversé ni conservé.
method"PUT"Oui
headersobjet de chaînesOui
expires_atentierOuiHorodatage Unix.
testtrueNon

Codes d’erreur

CodeStatut
invalid_json400
missing_parameter400
unsupported_media_type415
unsupported_file415
invalid_file422
file_too_large413
pending_files_limit429
invalid_parameter400
idempotency_mismatch409
idempotency_in_progress409
missing_api_key401
invalid_api_key401
rate_limited429
internal_error500

Exemple

curl https://api.fileverity.com/v1/files \  -H "Authorization: Bearer $FILEVERITY_API_KEY" \  -F file=@claim-photo.jpg
{  "id": "file_8Hk2pQ4vN9sL1xR7cW3mY6zB",  "object": "file",  "filename": "claim-photo.jpg",  "bytes": 2481920,  "content_type": "image/jpeg",  "status": "uploaded",  "livemode": true,  "created": 1793700000,  "expires_at": 1793786400}

Récupérer un fichier

GET https://api.fileverity.com/v1/files/{id}

Renvoie le fichier et indique si ses octets sont arrivés.

Paramètres

NomEmplacementTypeObligatoireDescription
idcheminchaîneOuiID de fichier.

Réponses

StatutDescriptionCorps
200Le fichier.File
401Clé d’API manquante ou invalide. Codes d’erreur : missing_api_key, invalid_api_key.Error
404Ressource introuvable. Codes d’erreur : not_found.Error
429Trop de requêtes. Codes d’erreur : rate_limited.Error
500Erreur interne ; rien n’est facturé. Codes d’erreur : internal_error.Error

Réponse 200 : File

ChampTypeObligatoireDescription
idchaîneOui
object"file"Oui
filenamechaîne ou nullOui
bytesentier ou nullOui
content_typechaîneOui
statusune valeur parmi "pending", "uploaded"Ouipending jusqu’à l’arrivée des octets envoyés à l’URL présignée.
livemodebooléenOuiLes fichiers ne sont visibles que par les clés du même mode.
createdentierOuiHorodatage Unix.
expires_atentierOuiHorodatage Unix après lequel le fichier est supprimé.
uploadobjetNonPrésent dans la réponse à une requête de téléversement JSON.
upload : champs
ChampTypeObligatoireDescription
urlchaîneOuiLes clés de test reçoivent une URL factice (test: true) ; rien n’est téléversé ni conservé.
method"PUT"Oui
headersobjet de chaînesOui
expires_atentierOuiHorodatage Unix.
testtrueNon

Codes d’erreur

CodeStatut
not_found404
missing_api_key401
invalid_api_key401
rate_limited429
internal_error500

Exemple

curl https://api.fileverity.com/v1/files/file_8Hk2pQ4vN9sL1xR7cW3mY6zB \  -H "Authorization: Bearer $FILEVERITY_API_KEY"
{  "id": "file_8Hk2pQ4vN9sL1xR7cW3mY6zB",  "object": "file",  "filename": "claim-photo.jpg",  "bytes": 2481920,  "content_type": "image/jpeg",  "status": "uploaded",  "livemode": true,  "created": 1793700000,  "expires_at": 1793786400}

Supprimer un fichier

DELETE https://api.fileverity.com/v1/files/{id}

Supprime un fichier téléversé et les octets stockés.

Paramètres

NomEmplacementTypeObligatoireDescription
idcheminchaîneOuiID de fichier.

Réponses

StatutDescriptionCorps
200Le fichier a été supprimé.FileDeleted
401Clé d’API manquante ou invalide. Codes d’erreur : missing_api_key, invalid_api_key.Error
404Ressource introuvable. Codes d’erreur : not_found.Error
429Trop de requêtes. Codes d’erreur : rate_limited.Error
500Erreur interne ; rien n’est facturé. Codes d’erreur : internal_error.Error

Réponse 200 : FileDeleted

ChampTypeObligatoireDescription
idchaîneOui
object"file"Oui
deletedtrueOui

Codes d’erreur

CodeStatut
not_found404
missing_api_key401
invalid_api_key401
rate_limited429
internal_error500

Exemple

curl -X DELETE https://api.fileverity.com/v1/files/file_8Hk2pQ4vN9sL1xR7cW3mY6zB \  -H "Authorization: Bearer $FILEVERITY_API_KEY"
{  "id": "file_8Hk2pQ4vN9sL1xR7cW3mY6zB",  "object": "file",  "deleted": true}

Analyses

Créer une analyse

POST https://api.fileverity.com/v1/analyses

Analyse un fichier téléversé avec fvimg-2 (images) ou fvdoc-3 (documents). Une analyse correspond à une vérification d’image ou de document. La réponse est 202 avec le statut processing ; le résultat arrive par webhook ou par interrogation de GET /analyses/{id}. Envoyez Prefer: wait=N (jusqu’à 60 secondes) pour maintenir la requête ouverte jusqu’à ce que le résultat soit prêt ; une analyse terminée renvoie 200. Le prix est réservé à la création de l’analyse et libéré si elle échoue ou est annulée. Les résultats sont conservés 7 jours. Lorsque la capacité est saturée, l’API renvoie 503 service_unavailable avec un en-tête retry-after et ne facture rien : réessayez avec la même Idempotency-Key, et exécutez les analyses d’images l’une après l’autre pour un débit optimal. Les clés de test renvoient un résultat d’exemple et ne sont jamais facturées ; le rapport d’exemple ne contient que quelques champs.

Paramètres

NomEmplacementTypeObligatoireDescription
Idempotency-Keyen-têtechaîneNonClé unique de 255 caractères au maximum. Répéter la requête avec la même clé et le même corps dans un délai de 24 heures renvoie la première réponse avec l’en-tête idempotent-replayed: true ; la même clé avec un corps différent renvoie 409.
Preferen-têtechaîneNonwait=N maintient la requête ouverte jusqu’à N secondes (60 au maximum), le temps que l’analyse se termine.

Corps de la requête : application/json, obligatoire

ChampTypeObligatoireDescription
modelune valeur parmi "fvimg-2", "fvimg-2-2026-10-30", "fvdoc-3", "fvdoc-3-2026-11-03"OuiID de modèle ou ID d’instantané. fvimg-2 analyse les images, fvdoc-3 les documents.
filechaîneOuiID d’un fichier téléversé.
metadataobjet de chaînesNonJusqu’à 16 paires de chaînes (clés de 40 caractères au maximum, valeurs de 500 au maximum), renvoyées avec l’analyse et dans les webhooks.
optionsobjetNon
options : champs
ChampTypeObligatoireDescription
passwordchaîneNonMot de passe d’un document chiffré. Longueur maximale : 256.
localeune valeur parmi "en", "fr", "de", "es", "zh", "vi", "ar"NonLangue des constats du document. Valeur par défaut : "en".

Réponses

StatutDescriptionCorps
200L’analyse terminée.Analysis
202L’analyse est en cours de traitement.Analysis
400Requête invalide. Codes d’erreur : invalid_json, missing_parameter, file_not_found, invalid_parameter.Error
401Clé d’API manquante ou invalide. Codes d’erreur : missing_api_key, invalid_api_key.Error
402Le solde ou la limite de dépense mensuelle de la clé ne permet pas de couvrir la requête. Codes d’erreur : insufficient_balance, spend_limit_reached.Error
404Ressource introuvable. Codes d’erreur : model_not_found.Error
409Conflit avec l’état actuel. Codes d’erreur : idempotency_mismatch, idempotency_in_progress.Error
413Une limite de taille a été dépassée. Codes d’erreur : file_too_large, too_many_pixels, too_many_pages, document_too_long.Error
415Type de média ou format de fichier non pris en charge. Codes d’erreur : unsupported_media_type, unsupported_file.Error
422Le fichier ne peut pas être traité. Codes d’erreur : invalid_file, password_required, wrong_password, not_examinable.Error
429Trop de requêtes. Codes d’erreur : rate_limited.Error
500Erreur interne ; rien n’est facturé. Codes d’erreur : internal_error.Error
502L’analyse n’a pas pu aboutir ; rien n’est facturé. Codes d’erreur : analysis_failed.Error
503Temporairement indisponible ou saturé ; rien n’est facturé. Réessayez après le nombre de secondes indiqué dans l’en-tête retry-after. Codes d’erreur : service_unavailable.Error

Réponse 200 : Analysis

ChampTypeObligatoireDescription
idchaîneOui
object"analysis"Oui
createdentierOuiHorodatage Unix.
modelchaîneOuiInstantané qui a produit le résultat.
livemodebooléenOui
statusune valeur parmi "processing", "succeeded", "failed", "canceled"Oui
fileobjetOui
report_idchaîne ou nullOuiID de rapport vérifiable, FV-XXXX-XXXX-XXXX.
report_urlchaîne ou nullOuiPage de vérification publique du rapport.
summaryImageSummary ou DocumentSummary ou nullOuiLe verdict court et stable : un ImageSummary pour les images, un DocumentSummary pour les documents, null tant que l’analyse n’a pas abouti.
resultobjet ou nullOuiPrésent dès que le statut est succeeded et jusqu’à l’expiration du résultat.
errorobjet ou nullOui
progressobjet ou nullOui
usageobjetOui
metadataobjet ou nullOui
completed_atentier ou nullOui
expires_atentier ou nullOuiHorodatage Unix après lequel le résultat est supprimé.
file : champs
ChampTypeObligatoireDescription
namechaîne ou nullNon
bytesentier ou nullNon
formatchaîne ou nullNon
summary (ImageSummary) : champs
ChampTypeObligatoireDescription
levelune valeur parmi "L0", "L1", "L2", "L3", "L4", "L5"OuiNiveau de risque, de L0 à L5.
assessmentune valeur parmi "authentic_untouched", "authentic_locally_edited", "ai_generated", "undetermined"Oui
actionune valeur parmi "accept", "review", "reject", "resubmit"Oui
aiune valeur parmi "labelled", "very_likely", "suspected", "undecided", "low", "very_low", "not_evaluated"OuiLe constat sur la génération par IA.
editune valeur parmi "detected", "suspected", "suspected_record", "review", "generative", "minor", "none", "not_applicable", "not_evaluated"OuiLe constat sur la retouche locale.
summary (DocumentSummary) : champs
ChampTypeObligatoireDescription
kind"docpro"Oui
levelune valeur parmi "L0", "L1", "L2", "L3", "L4", "L5"OuiNiveau de risque, de L0 à L5.
actionune valeur parmi "accept", "note", "review", "reject", "resubmit"Ouinote : vérifiez le contenu IA marqué dans le rapport au regard de votre politique.
reasonchaîne ou nullOuiLe constat ou la condition à l’origine du niveau, par exemple clean ou incomplete, ou un ID de constat.
findingstableau de chaînesOuiID des constats importants.
pagesentierOuiPages du document.
imagesentierOuiPhotos intégrées examinées.
textune valeur parmi "ai_generated", "mixed", "human", "inconclusive", nullOuiLe verdict sur le texte du document, ou null lorsque le texte n’a pas été évalué.
strongtrueNonPrésent lorsqu’un des constats répertoriés est solide.
result : champs
ChampTypeObligatoireDescription
reportImageReport ou DocumentReportNonLe rapport complet. report.schema vaut fileverity.report/1 pour les images et fileverity.docpro/1 pour les documents.
stamped_atentier ou nullNonHorodatage Unix correspondant à l’horodatage RFC 3161 émis pour le rapport, ou null.
report (ImageReport) : champs
ChampTypeObligatoireDescription
schema"fileverity.report/1"Oui
idchaîneOuiID de rapport, FV-XXXX-XXXX-XXXX.
sampletrueNonPrésent dans les rapports d’exemple fixes renvoyés par les clés de test.
issuedAtchaîneNonDate d’émission du rapport, ISO 8601 en UTC. Format : date-time.
issuerobjetNonÉmetteur du rapport.
fileobjetNonL’image vérifiée.
proobjetNonLe verdict. Les mêmes valeurs que summary, avec reason.
scoreentier ou nullNonScore d’authenticité de 0 à 100 par paliers de 5 : dans quelle mesure les preuves étayent le caractère authentique et non retouché de la prise de vue. null si non évalué.
confidenceune valeur parmi "high", "medium", "low"NonCe que ce fichier permet à l’analyse d’établir. Une confiance faible tient en général au fichier lui-même, par exemple une faible résolution ou une forte compression.
questionsobjetNonLes trois questions auxquelles le rapport répond.
generatorobjet ou nullNonLe générateur d’IA identifié pour l’image, ou null.
regionstableau d’objetsNonZones signalées, en pixels de l’image affichée.
provenanceobjetNonCe que les données propres au fichier indiquent sur son origine.
digestchaîneNonEmpreinte du contenu du rapport, utilisée par la page de vérification.
issuer : champs
ChampTypeObligatoireDescription
namechaîneNon
operatorchaîneNon
verifychaîneNonPage de vérification publique du rapport.
file : champs
ChampTypeObligatoireDescription
namechaîne ou nullNon
sha256chaîneNonSHA-256 du fichier vérifié, en hexadécimal.
bytesentierNon
widthentierNonLargeur en pixels, telle qu’affichée.
heightentierNonHauteur en pixels, telle qu’affichée.
formatchaîneNon
pro : champs
ChampTypeObligatoireDescription
levelune valeur parmi "L0", "L1", "L2", "L3", "L4", "L5"NonNiveau de risque, de L0 à L5.
actionune valeur parmi "accept", "review", "reject", "resubmit"Non
assessmentune valeur parmi "authentic_untouched", "authentic_locally_edited", "ai_generated", "undetermined"Non
reasonchaîne ou nullNon
questions : champs
ChampTypeObligatoireDescription
aiobjetNon
editobjetNon
sourceobjetNon
ai : champs
ChampTypeObligatoireDescription
keyune valeur parmi "labelled", "very_likely", "suspected", "undecided", "low", "very_low", "not_evaluated"Non
basisune valeur parmi "verified", "detected", "declared", nullNonCe sur quoi repose la réponse.
strengthune valeur parmi "strong", "moderate", "limited", nullNonDans quelle mesure les preuves étayent la réponse.
likelihoodentier ou nullNonProbabilité de génération par IA, de 0 à 100 par paliers de 5, ou null.
edit : champs
ChampTypeObligatoireDescription
keyune valeur parmi "detected", "suspected", "suspected_record", "review", "generative", "minor", "none", "not_applicable", "not_evaluated"Non
basisune valeur parmi "verified", "detected", "declared", nullNonCe sur quoi repose la réponse.
strengthune valeur parmi "strong", "moderate", "limited", nullNonDans quelle mesure les preuves étayent la réponse.
regionsentierNonNombre de zones signalées.
source : champs
ChampTypeObligatoireDescription
keychaîneNon
basisune valeur parmi "verified", "detected", "declared", nullNonCe sur quoi repose la réponse.
strengthune valeur parmi "strong", "moderate", "limited", nullNonDans quelle mesure les preuves étayent la réponse.
signerchaîne ou nullNon
aiClaimbooléenNonIndique si les données propres au fichier affirment une génération par IA.
generator : champs
ChampTypeObligatoireDescription
namechaîneNon
basischaîneNonComment le générateur a été identifié.
regions : champs
ChampTypeObligatoireDescription
idchaîneNon
xentierNon
yentierNon
wentierNon
hentierNon
strengthune valeur parmi "high", "medium"Non
provenance : champs
ChampTypeObligatoireDescription
credentialsune valeur parmi "valid", "unverified", "issues", "invalid", "removed", "none"NonÉtat des Content Credentials.
signerchaîne ou nullNon
softwaretableau de chaînesNonLogiciel nommé dans les données du fichier.
camerachaîne ou nullNon
capturedchaîne ou nullNonDate de prise de vue enregistrée dans le fichier, le cas échéant.
report (DocumentReport) : champs
ChampTypeObligatoireDescription
schema"fileverity.docpro/1"Oui
idchaîneOuiID de rapport, FV-XXXX-XXXX-XXXX.
sampletrueNonPrésent dans les rapports d’exemple fixes renvoyés par les clés de test.
issuedAtchaîneNonDate d’émission du rapport, ISO 8601 en UTC. Format : date-time.
receivedAtchaîneNonDate de réception du fichier, ISO 8601 en UTC. Format : date-time.
issuerobjetNonÉmetteur du rapport.
fileobjetNonLe document vérifié.
levelune valeur parmi "L0", "L1", "L2", "L3", "L4", "L5"NonNiveau de risque, de L0 à L5.
actionune valeur parmi "accept", "note", "review", "reject", "resubmit"Non
reasonchaîne ou nullNonLe constat ou la condition à l’origine du niveau.
findingstableau d’objetsNonLes constats à l’origine du niveau, chacun avec les pages et les photos intégrées auxquelles il se rapporte.
textobjetNonLe résultat pour le texte du document.
imagestableau d’objetsNonLes photos et graphiques intégrés, numérotés dans l’ordre du document.
structureobjet ou nullNonL’historique des modifications du fichier, ou null s’il n’a pas été examiné.
provenanceobjetNonCe que les données propres au fichier indiquent sur son origine.
digestchaîneNonEmpreinte du contenu du rapport, utilisée par la page de vérification.
issuer : champs
ChampTypeObligatoireDescription
namechaîneNon
operatorchaîneNon
verifychaîneNonPage de vérification publique du rapport.
file : champs
ChampTypeObligatoireDescription
namechaîne ou nullNon
sha256chaîneNonSHA-256 du fichier vérifié, en hexadécimal.
bytesentierNon
formatchaîneNon
pagesentierNon
textLayerune valeur parmi "present", "partial", "absent"NonIndique si le document contient une couche de texte.
findings : champs
ChampTypeObligatoireDescription
idchaîneNon
basisune valeur parmi "verified", "detected", "declared"Non
strengthune valeur parmi "strong", "moderate", "limited"Non
materialbooléenNonIndique si le constat compte dans le niveau.
pagestableau d’entiersNon
imagestableau d’entiersNon
text : champs
ChampTypeObligatoireDescription
statusune valeur parmi "evaluated", "insufficient_text", "unsupported_language", "no_text"Non
verdictune valeur parmi "ai_generated", "mixed", "human", "inconclusive"NonPrésent lorsque le statut est evaluated.
wordsentierNon
languagestableau de chaînesNon
passagesentierNonNombre de passages marqués.
images : champs
ChampTypeObligatoireDescription
nentierNon
pagestableau d’entiersNon
kindune valeur parmi "photo", "graphic"Non
widthentierNon
heightentierNon
levelune valeur parmi "L0", "L1", "L2", "L3", "L4", "L5", nullNon
assessmentune valeur parmi "authentic_untouched", "authentic_locally_edited", "ai_generated", "undetermined", nullNon
aiune valeur parmi "labelled", "very_likely", "suspected", "undecided", "low", "very_low", "not_evaluated", nullNon
editune valeur parmi "detected", "suspected", "suspected_record", "review", "generative", "minor", "none", "not_applicable", "not_evaluated", nullNon
structure : champs
ChampTypeObligatoireDescription
revisionsentier ou nullNon
changedPagestableau d’entiersNon
addedPagesentierNon
signaturesentierNon
provenance : champs
ChampTypeObligatoireDescription
credentialschaîneNonÉtat des Content Credentials.
signerchaîne ou nullNon
aiClaimbooléenNonIndique si les données propres au fichier affirment une génération par IA.
softwaretableau de chaînesNon
createdchaîne ou nullNon
modifiedchaîne ou nullNon
revisionsentier ou nullNon
signedbooléen ou nullNon
error : champs
ChampTypeObligatoireDescription
codeune valeur parmi "invalid_json", "missing_parameter", "invalid_parameter", "text_too_short", "text_too_long", "unsupported_media_type", "unsupported_language", "file_not_found", "unsupported_file", "file_too_large", "too_many_pixels", "too_many_pages", "document_too_long", "invalid_file", "password_required", "wrong_password", "not_examinable", "missing_api_key", "invalid_api_key", "insufficient_balance", "spend_limit_reached", "not_found", "model_not_found", "not_cancelable", "canceled", "idempotency_mismatch", "idempotency_in_progress", "pending_files_limit", "rate_limited", "internal_error", "analysis_failed", "service_unavailable"Non
messagechaîneNon
progress : champs
ChampTypeObligatoireDescription
stageune valeur parmi "queued", "reading", "analyzing", "reporting"Non
doneentierNonUnités terminées dans l’étape en cours, lorsqu’elles sont connues ; sinon 0.
totalentierNonUnités dans l’étape en cours, lorsqu’elles sont connues ; sinon 0.
positionentierNonPosition dans la file d’attente tant que l’étape est queued.
usage : champs
ChampTypeObligatoireDescription
amountentierNonMontant facturé en cents ; 0 pour les vérifications du démarrage gratuit et pour les échecs.
currency"usd"Non
fundingune valeur parmi "trial", "balance", nullNon

Codes d’erreur

CodeStatut
invalid_json400
missing_parameter400
unsupported_media_type415
model_not_found404
file_not_found400
unsupported_file415
invalid_file422
file_too_large413
too_many_pixels413
too_many_pages413
document_too_long413
password_required422
wrong_password422
not_examinable422
insufficient_balance402
spend_limit_reached402
service_unavailable503
analysis_failed502
invalid_parameter400
idempotency_mismatch409
idempotency_in_progress409
missing_api_key401
invalid_api_key401
rate_limited429
internal_error500

Exemple

curl https://api.fileverity.com/v1/analyses \  -H "Authorization: Bearer $FILEVERITY_API_KEY" \  -H "Content-Type: application/json" \  -H "Prefer: wait=60" \  -d '{"model": "fvimg-2", "file": "file_8Hk2pQ4vN9sL1xR7cW3mY6zB"}'
{  "id": "an_8Hk2pQ4vN9sL1xR7cW3mY6zB",  "object": "analysis",  "created": 1793700120,  "model": "fvimg-2-2026-10-30",  "livemode": true,  "status": "succeeded",  "file": {    "name": "claim-photo.jpg",    "bytes": 2481920,    "format": "jpeg"  },  "report_id": "FV-7K2M-9QXD-4T8R",  "report_url": "https://fileverity.com/verify/FV-7K2M-9QXD-4T8R",  "summary": {    "level": "L2",    "assessment": "authentic_untouched",    "action": "accept",    "ai": "very_low",    "edit": "none"  },  "result": {    "report": {      "schema": "fileverity.report/1",      "id": "FV-7K2M-9QXD-4T8R"    },    "stamped_at": 1793700130  },  "error": null,  "progress": null,  "usage": {    "amount": 199,    "currency": "usd",    "funding": "balance"  },  "metadata": {    "order_id": "A-10492"  },  "completed_at": 1793700131,  "expires_at": 1794304931}

Lister les analyses

GET https://api.fileverity.com/v1/analyses

Liste les analyses d’images et de documents de votre espace de travail, des plus récentes aux plus anciennes. Les clés de test reçoivent toujours une liste vide.

Paramètres

NomEmplacementTypeObligatoireDescription
limitrequêteentierNonValeur par défaut : 20. Minimum : 1. Maximum : 100.
starting_afterrequêtechaîneNonCurseur : le next_cursor de la page précédente.
typerequêteune valeur parmi "image", "document"Non

Réponses

StatutDescriptionCorps
200Une page d’analyses.AnalysisList
400Requête invalide. Codes d’erreur : invalid_parameter.Error
401Clé d’API manquante ou invalide. Codes d’erreur : missing_api_key, invalid_api_key.Error
429Trop de requêtes. Codes d’erreur : rate_limited.Error
500Erreur interne ; rien n’est facturé. Codes d’erreur : internal_error.Error

Réponse 200 : AnalysisList

ChampTypeObligatoireDescription
object"list"Oui
datatableau de AnalysisOui
has_morebooléenOui
next_cursorchaîne ou nullOuiÀ transmettre comme starting_after pour obtenir la page suivante.
data : champs
ChampTypeObligatoireDescription
idchaîneOui
object"analysis"Oui
createdentierOuiHorodatage Unix.
modelchaîneOuiInstantané qui a produit le résultat.
livemodebooléenOui
statusune valeur parmi "processing", "succeeded", "failed", "canceled"Oui
fileobjetOui
report_idchaîne ou nullOuiID de rapport vérifiable, FV-XXXX-XXXX-XXXX.
report_urlchaîne ou nullOuiPage de vérification publique du rapport.
summaryImageSummary ou DocumentSummary ou nullOuiLe verdict court et stable : un ImageSummary pour les images, un DocumentSummary pour les documents, null tant que l’analyse n’a pas abouti.
resultobjet ou nullOuiPrésent dès que le statut est succeeded et jusqu’à l’expiration du résultat.
errorobjet ou nullOui
progressobjet ou nullOui
usageobjetOui
metadataobjet ou nullOui
completed_atentier ou nullOui
expires_atentier ou nullOuiHorodatage Unix après lequel le résultat est supprimé.
file : champs
ChampTypeObligatoireDescription
namechaîne ou nullNon
bytesentier ou nullNon
formatchaîne ou nullNon
result : champs
ChampTypeObligatoireDescription
reportImageReport ou DocumentReportNonLe rapport complet. report.schema vaut fileverity.report/1 pour les images et fileverity.docpro/1 pour les documents.
stamped_atentier ou nullNonHorodatage Unix correspondant à l’horodatage RFC 3161 émis pour le rapport, ou null.
error : champs
ChampTypeObligatoireDescription
codeune valeur parmi "invalid_json", "missing_parameter", "invalid_parameter", "text_too_short", "text_too_long", "unsupported_media_type", "unsupported_language", "file_not_found", "unsupported_file", "file_too_large", "too_many_pixels", "too_many_pages", "document_too_long", "invalid_file", "password_required", "wrong_password", "not_examinable", "missing_api_key", "invalid_api_key", "insufficient_balance", "spend_limit_reached", "not_found", "model_not_found", "not_cancelable", "canceled", "idempotency_mismatch", "idempotency_in_progress", "pending_files_limit", "rate_limited", "internal_error", "analysis_failed", "service_unavailable"Non
messagechaîneNon
progress : champs
ChampTypeObligatoireDescription
stageune valeur parmi "queued", "reading", "analyzing", "reporting"Non
doneentierNonUnités terminées dans l’étape en cours, lorsqu’elles sont connues ; sinon 0.
totalentierNonUnités dans l’étape en cours, lorsqu’elles sont connues ; sinon 0.
positionentierNonPosition dans la file d’attente tant que l’étape est queued.
usage : champs
ChampTypeObligatoireDescription
amountentierNonMontant facturé en cents ; 0 pour les vérifications du démarrage gratuit et pour les échecs.
currency"usd"Non
fundingune valeur parmi "trial", "balance", nullNon

Codes d’erreur

CodeStatut
invalid_parameter400
missing_api_key401
invalid_api_key401
rate_limited429
internal_error500

Exemple

curl "https://api.fileverity.com/v1/analyses?limit=20&type=image" \  -H "Authorization: Bearer $FILEVERITY_API_KEY"
{  "object": "list",  "data": [    {      "id": "an_8Hk2pQ4vN9sL1xR7cW3mY6zB",      "object": "analysis",      "created": 1793700120,      "model": "fvimg-2-2026-10-30",      "livemode": true,      "status": "succeeded",      "file": {        "name": "claim-photo.jpg",        "bytes": 2481920,        "format": "jpeg"      },      "report_id": "FV-7K2M-9QXD-4T8R",      "report_url": "https://fileverity.com/verify/FV-7K2M-9QXD-4T8R",      "summary": {        "level": "L2",        "assessment": "authentic_untouched",        "action": "accept",        "ai": "very_low",        "edit": "none"      },      "result": {        "report": {          "schema": "fileverity.report/1",          "id": "FV-7K2M-9QXD-4T8R"        },        "stamped_at": 1793700130      },      "error": null,      "progress": null,      "usage": {        "amount": 199,        "currency": "usd",        "funding": "balance"      },      "metadata": {        "order_id": "A-10492"      },      "completed_at": 1793700131,      "expires_at": 1794304931    }  ],  "has_more": false,  "next_cursor": null}

Récupérer une analyse

GET https://api.fileverity.com/v1/analyses/{id}

Renvoie l’analyse, avec son résultat une fois qu’elle a abouti et jusqu’à son expiration.

Paramètres

NomEmplacementTypeObligatoireDescription
idcheminchaîneOuiID de l’analyse.

Réponses

StatutDescriptionCorps
200L’analyse.Analysis
401Clé d’API manquante ou invalide. Codes d’erreur : missing_api_key, invalid_api_key.Error
404Ressource introuvable. Codes d’erreur : not_found.Error
429Trop de requêtes. Codes d’erreur : rate_limited.Error
500Erreur interne ; rien n’est facturé. Codes d’erreur : internal_error.Error

Réponse 200 : Analysis

ChampTypeObligatoireDescription
idchaîneOui
object"analysis"Oui
createdentierOuiHorodatage Unix.
modelchaîneOuiInstantané qui a produit le résultat.
livemodebooléenOui
statusune valeur parmi "processing", "succeeded", "failed", "canceled"Oui
fileobjetOui
report_idchaîne ou nullOuiID de rapport vérifiable, FV-XXXX-XXXX-XXXX.
report_urlchaîne ou nullOuiPage de vérification publique du rapport.
summaryImageSummary ou DocumentSummary ou nullOuiLe verdict court et stable : un ImageSummary pour les images, un DocumentSummary pour les documents, null tant que l’analyse n’a pas abouti.
resultobjet ou nullOuiPrésent dès que le statut est succeeded et jusqu’à l’expiration du résultat.
errorobjet ou nullOui
progressobjet ou nullOui
usageobjetOui
metadataobjet ou nullOui
completed_atentier ou nullOui
expires_atentier ou nullOuiHorodatage Unix après lequel le résultat est supprimé.
file : champs
ChampTypeObligatoireDescription
namechaîne ou nullNon
bytesentier ou nullNon
formatchaîne ou nullNon
result : champs
ChampTypeObligatoireDescription
reportImageReport ou DocumentReportNonLe rapport complet. report.schema vaut fileverity.report/1 pour les images et fileverity.docpro/1 pour les documents.
stamped_atentier ou nullNonHorodatage Unix correspondant à l’horodatage RFC 3161 émis pour le rapport, ou null.
error : champs
ChampTypeObligatoireDescription
codeune valeur parmi "invalid_json", "missing_parameter", "invalid_parameter", "text_too_short", "text_too_long", "unsupported_media_type", "unsupported_language", "file_not_found", "unsupported_file", "file_too_large", "too_many_pixels", "too_many_pages", "document_too_long", "invalid_file", "password_required", "wrong_password", "not_examinable", "missing_api_key", "invalid_api_key", "insufficient_balance", "spend_limit_reached", "not_found", "model_not_found", "not_cancelable", "canceled", "idempotency_mismatch", "idempotency_in_progress", "pending_files_limit", "rate_limited", "internal_error", "analysis_failed", "service_unavailable"Non
messagechaîneNon
progress : champs
ChampTypeObligatoireDescription
stageune valeur parmi "queued", "reading", "analyzing", "reporting"Non
doneentierNonUnités terminées dans l’étape en cours, lorsqu’elles sont connues ; sinon 0.
totalentierNonUnités dans l’étape en cours, lorsqu’elles sont connues ; sinon 0.
positionentierNonPosition dans la file d’attente tant que l’étape est queued.
usage : champs
ChampTypeObligatoireDescription
amountentierNonMontant facturé en cents ; 0 pour les vérifications du démarrage gratuit et pour les échecs.
currency"usd"Non
fundingune valeur parmi "trial", "balance", nullNon

Codes d’erreur

CodeStatut
not_found404
missing_api_key401
invalid_api_key401
rate_limited429
internal_error500

Exemple

curl https://api.fileverity.com/v1/analyses/an_8Hk2pQ4vN9sL1xR7cW3mY6zB \  -H "Authorization: Bearer $FILEVERITY_API_KEY"
{  "id": "an_8Hk2pQ4vN9sL1xR7cW3mY6zB",  "object": "analysis",  "created": 1793700120,  "model": "fvimg-2-2026-10-30",  "livemode": true,  "status": "succeeded",  "file": {    "name": "claim-photo.jpg",    "bytes": 2481920,    "format": "jpeg"  },  "report_id": "FV-7K2M-9QXD-4T8R",  "report_url": "https://fileverity.com/verify/FV-7K2M-9QXD-4T8R",  "summary": {    "level": "L2",    "assessment": "authentic_untouched",    "action": "accept",    "ai": "very_low",    "edit": "none"  },  "result": {    "report": {      "schema": "fileverity.report/1",      "id": "FV-7K2M-9QXD-4T8R"    },    "stamped_at": 1793700130  },  "error": null,  "progress": null,  "usage": {    "amount": 199,    "currency": "usd",    "funding": "balance"  },  "metadata": {    "order_id": "A-10492"  },  "completed_at": 1793700131,  "expires_at": 1794304931}

Annuler une analyse

POST https://api.fileverity.com/v1/analyses/{id}/cancel

Annule une analyse de document encore en cours et libère le montant réservé. Les analyses d’images ne peuvent plus être annulées une fois créées.

Paramètres

NomEmplacementTypeObligatoireDescription
idcheminchaîneOuiID de l’analyse.
Idempotency-Keyen-têtechaîneNonClé unique de 255 caractères au maximum. Répéter la requête avec la même clé et le même corps dans un délai de 24 heures renvoie la première réponse avec l’en-tête idempotent-replayed: true ; la même clé avec un corps différent renvoie 409.

Réponses

StatutDescriptionCorps
200L’analyse annulée.Analysis
400Requête invalide. Codes d’erreur : invalid_parameter.Error
401Clé d’API manquante ou invalide. Codes d’erreur : missing_api_key, invalid_api_key.Error
404Ressource introuvable. Codes d’erreur : not_found.Error
409Conflit avec l’état actuel. Codes d’erreur : not_cancelable, idempotency_mismatch, idempotency_in_progress.Error
429Trop de requêtes. Codes d’erreur : rate_limited.Error
500Erreur interne ; rien n’est facturé. Codes d’erreur : internal_error.Error

Réponse 200 : Analysis

ChampTypeObligatoireDescription
idchaîneOui
object"analysis"Oui
createdentierOuiHorodatage Unix.
modelchaîneOuiInstantané qui a produit le résultat.
livemodebooléenOui
statusune valeur parmi "processing", "succeeded", "failed", "canceled"Oui
fileobjetOui
report_idchaîne ou nullOuiID de rapport vérifiable, FV-XXXX-XXXX-XXXX.
report_urlchaîne ou nullOuiPage de vérification publique du rapport.
summaryImageSummary ou DocumentSummary ou nullOuiLe verdict court et stable : un ImageSummary pour les images, un DocumentSummary pour les documents, null tant que l’analyse n’a pas abouti.
resultobjet ou nullOuiPrésent dès que le statut est succeeded et jusqu’à l’expiration du résultat.
errorobjet ou nullOui
progressobjet ou nullOui
usageobjetOui
metadataobjet ou nullOui
completed_atentier ou nullOui
expires_atentier ou nullOuiHorodatage Unix après lequel le résultat est supprimé.
file : champs
ChampTypeObligatoireDescription
namechaîne ou nullNon
bytesentier ou nullNon
formatchaîne ou nullNon
result : champs
ChampTypeObligatoireDescription
reportImageReport ou DocumentReportNonLe rapport complet. report.schema vaut fileverity.report/1 pour les images et fileverity.docpro/1 pour les documents.
stamped_atentier ou nullNonHorodatage Unix correspondant à l’horodatage RFC 3161 émis pour le rapport, ou null.
error : champs
ChampTypeObligatoireDescription
codeune valeur parmi "invalid_json", "missing_parameter", "invalid_parameter", "text_too_short", "text_too_long", "unsupported_media_type", "unsupported_language", "file_not_found", "unsupported_file", "file_too_large", "too_many_pixels", "too_many_pages", "document_too_long", "invalid_file", "password_required", "wrong_password", "not_examinable", "missing_api_key", "invalid_api_key", "insufficient_balance", "spend_limit_reached", "not_found", "model_not_found", "not_cancelable", "canceled", "idempotency_mismatch", "idempotency_in_progress", "pending_files_limit", "rate_limited", "internal_error", "analysis_failed", "service_unavailable"Non
messagechaîneNon
progress : champs
ChampTypeObligatoireDescription
stageune valeur parmi "queued", "reading", "analyzing", "reporting"Non
doneentierNonUnités terminées dans l’étape en cours, lorsqu’elles sont connues ; sinon 0.
totalentierNonUnités dans l’étape en cours, lorsqu’elles sont connues ; sinon 0.
positionentierNonPosition dans la file d’attente tant que l’étape est queued.
usage : champs
ChampTypeObligatoireDescription
amountentierNonMontant facturé en cents ; 0 pour les vérifications du démarrage gratuit et pour les échecs.
currency"usd"Non
fundingune valeur parmi "trial", "balance", nullNon

Codes d’erreur

CodeStatut
not_found404
not_cancelable409
invalid_parameter400
idempotency_mismatch409
idempotency_in_progress409
missing_api_key401
invalid_api_key401
rate_limited429
internal_error500

Exemple

curl -X POST https://api.fileverity.com/v1/analyses/an_8Hk2pQ4vN9sL1xR7cW3mY6zB/cancel \  -H "Authorization: Bearer $FILEVERITY_API_KEY"
{  "id": "an_8Hk2pQ4vN9sL1xR7cW3mY6zB",  "object": "analysis",  "created": 1793700120,  "model": "fvimg-2-2026-10-30",  "livemode": true,  "status": "canceled",  "file": {    "name": "claim-photo.jpg",    "bytes": 2481920,    "format": "jpeg"  },  "report_id": null,  "report_url": null,  "summary": null,  "result": null,  "error": {    "code": "canceled",    "message": "The analysis was canceled. You were not charged."  },  "progress": null,  "usage": {    "amount": 0,    "currency": "usd",    "funding": null  },  "metadata": null,  "completed_at": 1793700135,  "expires_at": null}

Télécharger le rapport PDF

GET https://api.fileverity.com/v1/analyses/{id}/report.pdf

Renvoie le rapport PDF scellé d’une analyse réussie tant que son résultat est conservé. Les clés de test reçoivent 404. Les preuves du document, comme les images de pages, sont disponibles pendant 3 heures après l’analyse ; ensuite, le PDF ne les contient plus, ce que signale x-evidence-included: false.

Paramètres

NomEmplacementTypeObligatoireDescription
idcheminchaîneOuiID de l’analyse.
localerequêteune valeur parmi "en", "fr", "de", "es", "zh", "vi", "ar"NonValeur par défaut : "en".

Réponses

StatutDescriptionCorps
200Le rapport PDF.Fichier PDF
400Requête invalide. Codes d’erreur : invalid_parameter.Error
401Clé d’API manquante ou invalide. Codes d’erreur : missing_api_key, invalid_api_key.Error
404Ressource introuvable. Codes d’erreur : not_found.Error
429Trop de requêtes. Codes d’erreur : rate_limited.Error
500Erreur interne ; rien n’est facturé. Codes d’erreur : internal_error.Error

Codes d’erreur

CodeStatut
invalid_parameter400
not_found404
missing_api_key401
invalid_api_key401
rate_limited429
internal_error500

Exemple

curl "https://api.fileverity.com/v1/analyses/an_8Hk2pQ4vN9sL1xR7cW3mY6zB/report.pdf?locale=en" \  -H "Authorization: Bearer $FILEVERITY_API_KEY" \  -o Fileverity-FV-7K2M-9QXD-4T8R.pdf

Modèles

Lister les modèles

GET https://api.fileverity.com/v1/models

Liste les modèles disponibles pour votre clé d’API.

Réponses

StatutDescriptionCorps
200Les modèles disponibles.ModelList
401Clé d’API manquante ou invalide. Codes d’erreur : missing_api_key, invalid_api_key.Error
429Trop de requêtes. Codes d’erreur : rate_limited.Error
500Erreur interne ; rien n’est facturé. Codes d’erreur : internal_error.Error

Réponse 200 : ModelList

ChampTypeObligatoireDescription
object"list"Oui
datatableau de ModelOui
data : champs
ChampTypeObligatoireDescription
idchaîneOui
object"model"Oui
createdentierOuiHorodatage Unix de l’instantané actuel.
owned_bychaîneOui
namechaîneOui
typeune valeur parmi "image", "document", "text"Oui
descriptionchaîneOui
snapshotchaîneOuiInstantané daté vers lequel pointe actuellement l’ID.
statusune valeur parmi "available", "preview", "deprecated"Oui
inputobjetOuiEntrée acceptée. Pour les fichiers : formats et limites de taille ; pour le texte : langues et limites de longueur.
outputobjetOui
pricingobjetOui
input : champs
ChampTypeObligatoireDescription
formatstableau de chaînesNon
max_bytesentierNon
max_megapixelsentierNon
max_pagesentierNon
languagestableau de chaînesNon
min_wordsentierNon
max_charactersentierNon
output : champs
ChampTypeObligatoireDescription
schemachaîneOuiSchéma du rapport dans les résultats d’analyse.
pricing : champs
ChampTypeObligatoireDescription
currency"usd"Oui
unitchaîneOui
unit_amountentierOuiPrix unitaire en cents.

Codes d’erreur

CodeStatut
missing_api_key401
invalid_api_key401
rate_limited429
internal_error500

Exemple

curl https://api.fileverity.com/v1/models \  -H "Authorization: Bearer $FILEVERITY_API_KEY"
{  "object": "list",  "data": [    {      "id": "fvimg-2",      "object": "model",      "created": 1793318400,      "owned_by": "fileverity",      "name": "FVIMG V2",      "type": "image",      "description": "Image authenticity analysis. Detects AI generation and local edits, checks content credentials and metadata, and returns a verifiable report.",      "snapshot": "fvimg-2-2026-10-30",      "status": "available",      "input": {        "formats": [          "jpeg",          "png",          "webp"        ],        "max_bytes": 10485760,        "max_megapixels": 40      },      "output": {        "schema": "fileverity.report/1"      },      "pricing": {        "currency": "usd",        "unit": "image",        "unit_amount": 199      }    },    {      "id": "fvdoc-3",      "object": "model",      "created": 1793664000,      "owned_by": "fileverity",      "name": "FVDOC V3",      "type": "document",      "description": "Document fraud analysis. Evaluates AI-written text, embedded photos, edit history and signatures, and returns a verifiable report.",      "snapshot": "fvdoc-3-2026-11-03",      "status": "available",      "input": {        "formats": [          "pdf",          "docx",          "doc",          "rtf",          "odt",          "pptx",          "txt"        ],        "max_bytes": 52428800,        "max_pages": 100      },      "output": {        "schema": "fileverity.docpro/1"      },      "pricing": {        "currency": "usd",        "unit": "document",        "unit_amount": 599      }    },    {      "id": "fvdoc-3-text",      "object": "model",      "created": 1793664000,      "owned_by": "fileverity",      "name": "FVDOC V3 Text",      "type": "text",      "description": "AI-written text detection. Classifies plain text as AI-written, partly AI-written or human-written and marks the AI-written passages.",      "snapshot": "fvdoc-3-text-2026-11-03",      "status": "available",      "input": {        "languages": [          "en",          "fr",          "de",          "es",          "zh"        ],        "min_words": 100,        "max_characters": 100000      },      "output": {        "schema": "fileverity.text-detection/1"      },      "pricing": {        "currency": "usd",        "unit": "1000_characters",        "unit_amount": 14      }    }  ]}

Récupérer un modèle

GET https://api.fileverity.com/v1/models/{model}

Récupère un modèle à partir de son ID ou de son ID d’instantané.

Paramètres

NomEmplacementTypeObligatoireDescription
modelcheminchaîneOuiID de modèle ou ID d’instantané.

Réponses

StatutDescriptionCorps
200Le modèle.Model
401Clé d’API manquante ou invalide. Codes d’erreur : missing_api_key, invalid_api_key.Error
404Ressource introuvable. Codes d’erreur : model_not_found.Error
429Trop de requêtes. Codes d’erreur : rate_limited.Error
500Erreur interne ; rien n’est facturé. Codes d’erreur : internal_error.Error

Réponse 200 : Model

ChampTypeObligatoireDescription
idchaîneOui
object"model"Oui
createdentierOuiHorodatage Unix de l’instantané actuel.
owned_bychaîneOui
namechaîneOui
typeune valeur parmi "image", "document", "text"Oui
descriptionchaîneOui
snapshotchaîneOuiInstantané daté vers lequel pointe actuellement l’ID.
statusune valeur parmi "available", "preview", "deprecated"Oui
inputobjetOuiEntrée acceptée. Pour les fichiers : formats et limites de taille ; pour le texte : langues et limites de longueur.
outputobjetOui
pricingobjetOui
input : champs
ChampTypeObligatoireDescription
formatstableau de chaînesNon
max_bytesentierNon
max_megapixelsentierNon
max_pagesentierNon
languagestableau de chaînesNon
min_wordsentierNon
max_charactersentierNon
output : champs
ChampTypeObligatoireDescription
schemachaîneOuiSchéma du rapport dans les résultats d’analyse.
pricing : champs
ChampTypeObligatoireDescription
currency"usd"Oui
unitchaîneOui
unit_amountentierOuiPrix unitaire en cents.

Codes d’erreur

CodeStatut
model_not_found404
missing_api_key401
invalid_api_key401
rate_limited429
internal_error500

Exemple

curl https://api.fileverity.com/v1/models/fvimg-2 \  -H "Authorization: Bearer $FILEVERITY_API_KEY"
{  "id": "fvimg-2",  "object": "model",  "created": 1793318400,  "owned_by": "fileverity",  "name": "FVIMG V2",  "type": "image",  "description": "Image authenticity analysis. Detects AI generation and local edits, checks content credentials and metadata, and returns a verifiable report.",  "snapshot": "fvimg-2-2026-10-30",  "status": "available",  "input": {    "formats": [      "jpeg",      "png",      "webp"    ],    "max_bytes": 10485760,    "max_megapixels": 40  },  "output": {    "schema": "fileverity.report/1"  },  "pricing": {    "currency": "usd",    "unit": "image",    "unit_amount": 199  }}

Événements webhook

Fileverity envoie ces événements à vos points de terminaison webhook. Les règles de vérification et d’envoi sont décrites dans Webhooks.

Événement analysis.completed

Envoyé à vos points de terminaison webhook selon la spécification Standard Webhooks : les en-têtes webhook-id, webhook-timestamp et webhook-signature (v1,<base64 HMAC-SHA256 de id.timestamp.body>, avec pour clé la partie base64 de votre secret whsec_). Répondez par un code 2xx quelconque dans un délai de 10 secondes ; les échecs donnent lieu à de nouvelles tentatives avec un backoff exponentiel pendant 3 jours.

Corps de la requête : application/json, obligatoire

ChampTypeObligatoireDescription
idchaîneOuiÉgalement envoyé dans l’en-tête webhook-id ; utilisez-le pour dédupliquer les nouvelles tentatives.
object"event"Oui
typeune valeur parmi "analysis.completed", "analysis.failed", "balance.low"Oui
createdentierOuiHorodatage Unix.
dataAnalysis ou BalanceLowOuiLes événements analysis.* contiennent le même objet que GET /analyses/{id}, avec result toujours à null ; récupérez le résultat avec ce point d’accès. Les événements balance.low contiennent le solde et le seuil en cents.
data (BalanceLow) : champs
ChampTypeObligatoireDescription
balanceentierOuiSolde en cents.
thresholdentierOuiSeuil d’alerte en cents.

Événement analysis.failed

Envoyé à vos points de terminaison webhook selon la spécification Standard Webhooks : les en-têtes webhook-id, webhook-timestamp et webhook-signature (v1,<base64 HMAC-SHA256 de id.timestamp.body>, avec pour clé la partie base64 de votre secret whsec_). Répondez par un code 2xx quelconque dans un délai de 10 secondes ; les échecs donnent lieu à de nouvelles tentatives avec un backoff exponentiel pendant 3 jours.

Corps de la requête : application/json, obligatoire

ChampTypeObligatoireDescription
idchaîneOuiÉgalement envoyé dans l’en-tête webhook-id ; utilisez-le pour dédupliquer les nouvelles tentatives.
object"event"Oui
typeune valeur parmi "analysis.completed", "analysis.failed", "balance.low"Oui
createdentierOuiHorodatage Unix.
dataAnalysis ou BalanceLowOuiLes événements analysis.* contiennent le même objet que GET /analyses/{id}, avec result toujours à null ; récupérez le résultat avec ce point d’accès. Les événements balance.low contiennent le solde et le seuil en cents.

Événement balance.low

Envoyé à vos points de terminaison webhook selon la spécification Standard Webhooks : les en-têtes webhook-id, webhook-timestamp et webhook-signature (v1,<base64 HMAC-SHA256 de id.timestamp.body>, avec pour clé la partie base64 de votre secret whsec_). Répondez par un code 2xx quelconque dans un délai de 10 secondes ; les échecs donnent lieu à de nouvelles tentatives avec un backoff exponentiel pendant 3 jours.

Corps de la requête : application/json, obligatoire

ChampTypeObligatoireDescription
idchaîneOuiÉgalement envoyé dans l’en-tête webhook-id ; utilisez-le pour dédupliquer les nouvelles tentatives.
object"event"Oui
typeune valeur parmi "analysis.completed", "analysis.failed", "balance.low"Oui
createdentierOuiHorodatage Unix.
dataAnalysis ou BalanceLowOuiLes événements analysis.* contiennent le même objet que GET /analyses/{id}, avec result toujours à null ; récupérez le résultat avec ce point d’accès. Les événements balance.low contiennent le solde et le seuil en cents.
curl https://api.fileverity.com/v1/openapi.json