Aller au contenu

Documentation de l’API Fileverity

Fichiers

Téléversez des images et des documents vers Fileverity : multipart pour les fichiers jusqu’à 4 Mo, téléversement par URL présignée jusqu’à 50 Mo. Objet fichier, limites et conservation.

Voir en MarkdownMis à jour le 2026-11-04

Les images et les documents sont vérifiés en deux étapes. Vous téléversez d’abord le fichier avec POST /files et recevez un ID de fichier. Vous créez ensuite une analyse qui fait référence à cet ID. Le texte n’a pas besoin de fichier : utilisez les Détections de texte.

Fichiers pris en charge

Images (fvimg-2)Documents (fvdoc-3)
Formatsjpeg, png, webppdf, docx, doc, rtf, odt, pptx, txt
Taille maximale10 Mo50 Mo
Autres limites40 mégapixels100 pages

Deux façons de téléverser

MéthodeRequêteTailleStatut du fichier dans la réponse
Multipartmultipart/form-data avec le champ fileJusqu’à 4 Mouploaded
URL présignéeJSON avec filename, content_type et bytes, puis un PUT des octetsJusqu’à 50 Mopending jusqu’à l’arrivée des octets

Les images sont limitées à la taille d’image indiquée ci-dessus, quelle que soit la méthode utilisée.

Téléversement multipart

Envoyez les fichiers de 4 Mo maximum en multipart/form-data, dans le champ file. Le format est détecté à partir du contenu du fichier, et non de son nom ou de son type déclaré.

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}

Téléversement par URL présignée

Pour les fichiers de plus de 4 Mo, jusqu’à 50 Mo, demandez une URL de téléversement, puis envoyez les octets directement au stockage.

  1. POST /files avec un corps JSON : filename (facultatif), content_type et la taille exacte en bytes. La réponse contient status: pending et un objet upload.
  2. Envoyez par PUT les octets du fichier à upload.url avec les en-têtes de upload.headers, avant upload.expires_at. Aucun en-tête Authorization n’est nécessaire pour cette requête.
  3. Si vous le souhaitez, interrogez GET /files/{id} jusqu’à ce que status soit uploaded.
  4. Créez l’analyse avec l’ID du fichier.
FILE=$(curl -s https://api.fileverity.com/v1/files \  -H "Authorization: Bearer $FILEVERITY_API_KEY" \  -H "Content-Type: application/json" \  -d '{"filename": "contract.pdf", "content_type": "application/pdf", "bytes": 18874368}') UPLOAD_URL=$(echo "$FILE" | jq -r .upload.url)FILE_ID=$(echo "$FILE" | jq -r .id) curl -X PUT "$UPLOAD_URL" \  -H "content-type: application/pdf" \  --data-binary @contract.pdf
{  "id": "file_Pw3mY6zB8Hk2pQ4vN9sL1xR7",  "object": "file",  "filename": "contract.pdf",  "bytes": 18874368,  "content_type": "application/pdf",  "status": "pending",  "livemode": true,  "created": 1793700000,  "expires_at": 1793786400,  "upload": {    "url": "https://example.private.blob.vercel-storage.com/f/0d6f1c2e-7b1a-4c53-9a0e-5e8a41b3c7d2?signature=...",    "method": "PUT",    "headers": {      "content-type": "application/pdf"    },    "expires_at": 1793703600  }}

L’URL affichée est raccourcie. Utilisez telle quelle celle de votre réponse. Envoyez l’en-tête content-type exactement comme il est renvoyé dans upload.headers.

Types de contenu acceptés

CatégorieTypes de contenu
Imagesimage/jpeg, image/png, image/webp
Documentsapplication/pdf, application/vnd.openxmlformats-officedocument.wordprocessingml.document, application/msword, application/rtf, application/vnd.oasis.opendocument.text, application/vnd.openxmlformats-officedocument.presentationml.presentation, text/plain

L’objet fichier

ChampTypeDescription
idchaîneID de fichier, avec le préfixe file_.
objectchaîneToujours file.
filenamechaîne ou nullNom de fichier nettoyé.
bytesentier ou nullTaille en octets.
content_typechaîneType de contenu détecté ou déclaré.
statuschaînepending jusqu’à l’arrivée des octets téléversés, puis uploaded.
livemodebooléenfalse pour les fichiers créés avec une clé de test. Les fichiers sont séparés par mode.
createdentierHorodatage Unix.
expires_atentierHorodatage Unix après lequel le fichier est supprimé.
uploadobjetPrésent uniquement dans la réponse à une requête de téléversement JSON : url, method (PUT), headers et expires_at.

Conservation

  • Un fichier est conservé 24 heures au plus (voir expires_at), puis supprimé.
  • Un fichier est supprimé dès qu’une analyse démarre à partir de celui-ci. Chaque fichier téléversé sert à une seule analyse ; téléversez-le à nouveau pour le vérifier de nouveau.
  • DELETE /files/{id} supprime un fichier et ses octets stockés avant l’échéance.
  • Un espace de travail peut contenir au plus 50 fichiers non expirés et 200 Mo par mode à la fois. Au-delà, les téléversements échouent avec pending_files_limit (HTTP 429, sans retry-after) jusqu’à ce que des fichiers soient utilisés, supprimés ou expirés.
  • Un ID de fichier inconnu, expiré ou déjà utilisé renvoie file_not_found lorsque vous créez une analyse, et not_found lorsque vous le récupérez ou le supprimez. file_not_found est aussi renvoyé lorsque le téléversement vers upload.url n’est pas encore terminé : attendez donc que GET /files/{id} indique uploaded.

Erreurs

CodeStatutCause
missing_parameter400Aucun champ file dans le corps multipart.
unsupported_media_type415Le corps n’est ni en multipart/form-data ni en JSON.
unsupported_file415Le format n’est pas pris en charge.
invalid_file422Le fichier est vide, endommagé ou illisible.
file_too_large413Un fichier multipart de plus de 4 Mo, ou bytes supérieur à 50 Mo.
invalid_parameter400Un champ JSON est absent, d’un type incorrect ou inconnu.
invalid_json400Le corps JSON n’est pas un objet.
pending_files_limit429Trop de téléversements non expirés dans l’espace de travail. La réponse n’est pas accompagnée d’un en-tête retry-after.
idempotency_mismatch, idempotency_in_progress409La Idempotency-Key a été utilisée avec une autre requête, ou sa première requête est encore en cours.

Les clés de test valident les téléversements mais ne conservent pas les octets. Une requête de téléversement JSON avec une clé de test renvoie un objet de téléversement de test (upload.test vaut true, le fichier est déjà uploaded) : il n’y a rien à envoyer par PUT.