Ir al contenido

Documentación de la API de Fileverity

Referencia de la API

Todos los endpoints de la API de Fileverity con sus parámetros, esquemas de solicitud y de respuesta, códigos de error y ejemplos, generados a partir de la especificación OpenAPI 3.1.

Ver como MarkdownActualizado el 2026-11-04

Esta referencia se genera a partir del documento OpenAPI 3.1 de la API, disponible en https://api.fileverity.com/v1/openapi.json, por lo que siempre coincide con la API. Para conceptos y guías, empiece por la Descripción general.

Convenciones

URL base: https://api.fileverity.com/v1. Autentique cada solicitud con Authorization: Bearer <key>. Los errores comparten un único formato, descrito en Errores. Cada respuesta incluye un encabezado x-request-id, y las respuestas autenticadas incluyen los encabezados del límite de frecuencia descritos en Límites de frecuencia y encabezados. Los objetos anidados se abren en secciones desplegables bajo la tabla.

Detecciones de texto

Detectar texto escrito con IA

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

Clasifica el texto sin formato como escrito con IA, escrito en parte con IA o escrito por una persona, y devuelve los pasajes escritos con IA. El texto se evalúa y se descarta; no se almacena. La facturación cuenta puntos de código Unicode en unidades de 1000 caracteres, redondeadas hacia arriba en cada solicitud. Las solicitudes rechazadas antes de la evaluación no se cobran. Las claves de prueba devuelven sin cargo un resultado fijo de texto escrito por una persona.

Parámetros

NombreUbicaciónTipoObligatorioDescripción
Idempotency-KeyencabezadocadenaNoClave única de hasta 255 caracteres. Repetir la solicitud con la misma clave y el mismo cuerpo en un plazo de 24 horas devuelve la primera respuesta con el encabezado idempotent-replayed: true; la misma clave con un cuerpo distinto devuelve 409.

Cuerpo de la solicitud: application/json, obligatorio

CampoTipoObligatorioDescripción
modelcadenaNoID de modelo o ID de versión fechada. Valor predeterminado: "fvdoc-3-text".
textcadenaSíTexto sin formato, de al menos 100 palabras y como máximo 100 000 caracteres.
languageuno de "en", "fr", "de", "es", "zh", nullNoCódigo ISO 639-1. Se detecta automáticamente si se omite. Valor predeterminado: null.

Respuestas

EstadoDescripciónCuerpo
200El resultado de la detección.TextDetection
400Solicitud no válida. Códigos de error: invalid_json, missing_parameter, text_too_short, unsupported_language, invalid_parameter.Error
401Clave de API ausente o no válida. Códigos de error: missing_api_key, invalid_api_key.Error
402El saldo o el límite de gasto mensual de la clave no cubre la solicitud. Códigos de error: insufficient_balance, spend_limit_reached.Error
404Recurso no encontrado. Códigos de error: model_not_found.Error
409Conflicto con el estado actual. Códigos de error: idempotency_mismatch, idempotency_in_progress.Error
413Se superó un límite de tamaño. Códigos de error: text_too_long.Error
415Tipo de medio o formato de archivo no admitido. Códigos de error: unsupported_media_type.Error
429Demasiadas solicitudes. Códigos de error: rate_limited.Error
500Error interno; no se cobra. Códigos de error: internal_error.Error
502No se pudo completar el análisis; no se cobra. Códigos de error: analysis_failed.Error
503No disponible temporalmente u ocupado; no se cobra. Reintente tras el número de segundos que indica el encabezado retry-after. Códigos de error: service_unavailable.Error

Respuesta 200: TextDetection

CampoTipoObligatorioDescripción
idcadenaSí
object"text.detection"Sí
createdenteroSíMarca de tiempo Unix.
modelcadenaSíVersión fechada que produjo el resultado.
livemodebooleanoSíFalse con claves de prueba.
languageuno de "en", "fr", "de", "es", "zh"Sí
verdictuno de "ai", "mixed", "human"Síai: el texto parece escrito con IA en su totalidad; mixed: pasajes escritos con IA dentro de un texto escrito por una persona; human: no se encontró ningún pasaje escrito con IA.
scorenúmeroSíPuntuación del modelo para el pasaje más parecido a un texto escrito con IA. Mínimo 0. Máximo 1.
ai_fractionnúmeroSíProporción del texto evaluado que está dentro de segmentos escritos con IA. Mínimo 0. Máximo 1.
segmentsarray de objetosSíPasajes escritos con IA, como posiciones en el texto enviado medidas en puntos de código Unicode. Los límites son aproximados y pueden incluir oraciones adyacentes.
usageobjetoSí
segments: campos
CampoTipoObligatorioDescripción
startenteroSí
endenteroSíExclusivo.
scorenúmeroSíMínimo 0. Máximo 1.
usage: campos
CampoTipoObligatorioDescripción
charactersenteroSíPuntos de código Unicode evaluados.
free_charactersenteroSíCaracteres cubiertos por su asignación de inicio gratuito; no se facturan.
billed_unitsenteroSíUnidades de 1000 caracteres realmente cobradas, una vez descontados los caracteres gratuitos; billed_units × precio unitario es el coste.

Códigos de error

CódigoEstado
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

Ejemplo

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  }}

Archivos

Subir un archivo

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

Sube un archivo para analizarlo. Envíe los archivos de hasta 4 MB como multipart/form-data en el campo file; la respuesta tiene el estado uploaded. Los archivos de más de 4 MB deben subirse con una URL prefirmada. Envíe JSON con filename, content_type y bytes (documentos de hasta 50 MB); la respuesta tiene el estado pending y un objeto upload con una URL prefirmada: envíe a ella los bytes del archivo con PUT y los encabezados indicados antes de que caduque. Un archivo se elimina cuando se inicia un análisis y, como máximo, a las 24 horas. Un espacio de trabajo puede contener a la vez hasta 50 archivos sin caducar y 200 MB por modo.

Parámetros

NombreUbicaciónTipoObligatorioDescripción
Idempotency-KeyencabezadocadenaNoClave única de hasta 255 caracteres. Repetir la solicitud con la misma clave y el mismo cuerpo en un plazo de 24 horas devuelve la primera respuesta con el encabezado idempotent-replayed: true; la misma clave con un cuerpo distinto devuelve 409.

Cuerpo de la solicitud: multipart/form-data, obligatorio

CampoTipoObligatorioDescripción
filecadenaSíFormato binary.

Cuerpo de la solicitud: application/json, obligatorio

CampoTipoObligatorioDescripción
filenamecadenaNo
content_typecadenaSíTipo MIME del archivo, por ejemplo image/jpeg o application/pdf.
bytesenteroSíTamaño exacto en bytes. Mínimo 1. Máximo 52 428 800.

Respuestas

EstadoDescripciónCuerpo
201El archivo.File
400Solicitud no válida. Códigos de error: invalid_json, missing_parameter, invalid_parameter.Error
401Clave de API ausente o no válida. Códigos de error: missing_api_key, invalid_api_key.Error
409Conflicto con el estado actual. Códigos de error: idempotency_mismatch, idempotency_in_progress.Error
413Se superó un límite de tamaño. Códigos de error: file_too_large.Error
415Tipo de medio o formato de archivo no admitido. Códigos de error: unsupported_media_type, unsupported_file.Error
422No se puede procesar el archivo. Códigos de error: invalid_file.Error
429Demasiadas solicitudes. Códigos de error: pending_files_limit, rate_limited.Error
500Error interno; no se cobra. Códigos de error: internal_error.Error

Respuesta 201: File

CampoTipoObligatorioDescripción
idcadenaSí
object"file"Sí
filenamecadena o nullSí
bytesentero o nullSí
content_typecadenaSí
statusuno de "pending", "uploaded"Sípending hasta que han llegado los bytes enviados a la URL prefirmada.
livemodebooleanoSíLos archivos solo son visibles para las claves del mismo modo.
createdenteroSíMarca de tiempo Unix.
expires_atenteroSíMarca de tiempo Unix a partir de la cual se elimina el archivo.
uploadobjetoNoPresente en la respuesta a una solicitud de subida en JSON.
upload: campos
CampoTipoObligatorioDescripción
urlcadenaSíLas claves de prueba reciben una URL de marcador de posición (test: true); no se sube ni se almacena nada.
method"PUT"Sí
headersobjeto de cadenasSí
expires_atenteroSíMarca de tiempo Unix.
testtrueNo

Códigos de error

CódigoEstado
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

Ejemplo

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}

Recuperar un archivo

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

Devuelve el archivo y si sus bytes han llegado.

Parámetros

NombreUbicaciónTipoObligatorioDescripción
idrutacadenaSíID del archivo.

Respuestas

EstadoDescripciónCuerpo
200El archivo.File
401Clave de API ausente o no válida. Códigos de error: missing_api_key, invalid_api_key.Error
404Recurso no encontrado. Códigos de error: not_found.Error
429Demasiadas solicitudes. Códigos de error: rate_limited.Error
500Error interno; no se cobra. Códigos de error: internal_error.Error

Respuesta 200: File

CampoTipoObligatorioDescripción
idcadenaSí
object"file"Sí
filenamecadena o nullSí
bytesentero o nullSí
content_typecadenaSí
statusuno de "pending", "uploaded"Sípending hasta que han llegado los bytes enviados a la URL prefirmada.
livemodebooleanoSíLos archivos solo son visibles para las claves del mismo modo.
createdenteroSíMarca de tiempo Unix.
expires_atenteroSíMarca de tiempo Unix a partir de la cual se elimina el archivo.
uploadobjetoNoPresente en la respuesta a una solicitud de subida en JSON.
upload: campos
CampoTipoObligatorioDescripción
urlcadenaSíLas claves de prueba reciben una URL de marcador de posición (test: true); no se sube ni se almacena nada.
method"PUT"Sí
headersobjeto de cadenasSí
expires_atenteroSíMarca de tiempo Unix.
testtrueNo

Códigos de error

CódigoEstado
not_found404
missing_api_key401
invalid_api_key401
rate_limited429
internal_error500

Ejemplo

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}

Eliminar un archivo

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

Elimina un archivo subido y sus bytes almacenados.

Parámetros

NombreUbicaciónTipoObligatorioDescripción
idrutacadenaSíID del archivo.

Respuestas

EstadoDescripciónCuerpo
200El archivo se eliminó.FileDeleted
401Clave de API ausente o no válida. Códigos de error: missing_api_key, invalid_api_key.Error
404Recurso no encontrado. Códigos de error: not_found.Error
429Demasiadas solicitudes. Códigos de error: rate_limited.Error
500Error interno; no se cobra. Códigos de error: internal_error.Error

Respuesta 200: FileDeleted

CampoTipoObligatorioDescripción
idcadenaSí
object"file"Sí
deletedtrueSí

Códigos de error

CódigoEstado
not_found404
missing_api_key401
invalid_api_key401
rate_limited429
internal_error500

Ejemplo

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

Análisis

Crear un análisis

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

Analiza un archivo subido con fvimg-2 (imágenes) o fvdoc-3 (documentos). Un análisis es una comprobación de imagen o de documento. La respuesta es 202 con el estado processing; el resultado llega por webhook o consultando periódicamente GET /analyses/{id}. Envíe Prefer: wait=N (hasta 60 segundos) para mantener la solicitud abierta hasta que el resultado esté listo; un análisis terminado devuelve 200. El precio se reserva cuando se crea el análisis y se libera si falla o se cancela. Los resultados se conservan 7 días. Cuando la capacidad está ocupada, la API devuelve 503 service_unavailable con un encabezado retry-after y no cobra nada: reintente con la misma Idempotency-Key y ejecute los análisis de imágenes uno tras otro para obtener el mejor rendimiento. Las claves de prueba devuelven un resultado de ejemplo y nunca se cobran; el informe de ejemplo solo contiene unos pocos campos.

Parámetros

NombreUbicaciónTipoObligatorioDescripción
Idempotency-KeyencabezadocadenaNoClave única de hasta 255 caracteres. Repetir la solicitud con la misma clave y el mismo cuerpo en un plazo de 24 horas devuelve la primera respuesta con el encabezado idempotent-replayed: true; la misma clave con un cuerpo distinto devuelve 409.
PreferencabezadocadenaNowait=N mantiene la solicitud abierta hasta N segundos (máximo 60) o hasta que termina el análisis.

Cuerpo de la solicitud: application/json, obligatorio

CampoTipoObligatorioDescripción
modeluno de "fvimg-2", "fvimg-2-2026-10-30", "fvdoc-3", "fvdoc-3-2026-11-03"SíID de modelo o ID de versión fechada. fvimg-2 analiza imágenes y fvdoc-3, documentos.
filecadenaSíID de un archivo subido.
metadataobjeto de cadenasNoHasta 16 pares de cadenas (claves de hasta 40 caracteres, valores de hasta 500) que se devuelven en el análisis y en los webhooks.
optionsobjetoNo
options: campos
CampoTipoObligatorioDescripción
passwordcadenaNoContraseña de un documento cifrado. Longitud máxima 256.
localeuno de "en", "fr", "de", "es", "zh", "vi", "ar"NoIdioma de los hallazgos del documento. Valor predeterminado: "en".

Respuestas

EstadoDescripciónCuerpo
200El análisis terminado.Analysis
202El análisis se está procesando.Analysis
400Solicitud no válida. Códigos de error: invalid_json, missing_parameter, file_not_found, invalid_parameter.Error
401Clave de API ausente o no válida. Códigos de error: missing_api_key, invalid_api_key.Error
402El saldo o el límite de gasto mensual de la clave no cubre la solicitud. Códigos de error: insufficient_balance, spend_limit_reached.Error
404Recurso no encontrado. Códigos de error: model_not_found.Error
409Conflicto con el estado actual. Códigos de error: idempotency_mismatch, idempotency_in_progress.Error
413Se superó un límite de tamaño. Códigos de error: file_too_large, too_many_pixels, too_many_pages, document_too_long.Error
415Tipo de medio o formato de archivo no admitido. Códigos de error: unsupported_media_type, unsupported_file.Error
422No se puede procesar el archivo. Códigos de error: invalid_file, password_required, wrong_password, not_examinable.Error
429Demasiadas solicitudes. Códigos de error: rate_limited.Error
500Error interno; no se cobra. Códigos de error: internal_error.Error
502No se pudo completar el análisis; no se cobra. Códigos de error: analysis_failed.Error
503No disponible temporalmente u ocupado; no se cobra. Reintente tras el número de segundos que indica el encabezado retry-after. Códigos de error: service_unavailable.Error

Respuesta 200: Analysis

CampoTipoObligatorioDescripción
idcadenaSí
object"analysis"Sí
createdenteroSíMarca de tiempo Unix.
modelcadenaSíVersión fechada que produjo el resultado.
livemodebooleanoSí
statusuno de "processing", "succeeded", "failed", "canceled"Sí
fileobjetoSí
report_idcadena o nullSíID de informe verificable, FV-XXXX-XXXX-XXXX.
report_urlcadena o nullSíPágina de verificación pública del informe.
summaryImageSummary o DocumentSummary o nullSíEl veredicto breve y estable: un ImageSummary para imágenes, un DocumentSummary para documentos, null hasta que el análisis termina con éxito.
resultobjeto o nullSíPresente cuando status es succeeded y hasta que caduca el resultado.
errorobjeto o nullSí
progressobjeto o nullSí
usageobjetoSí
metadataobjeto o nullSí
completed_atentero o nullSí
expires_atentero o nullSíMarca de tiempo Unix a partir de la cual se elimina el resultado.
file: campos
CampoTipoObligatorioDescripción
namecadena o nullNo
bytesentero o nullNo
formatcadena o nullNo
summary (ImageSummary): campos
CampoTipoObligatorioDescripción
leveluno de "L0", "L1", "L2", "L3", "L4", "L5"SíNivel de riesgo, de L0 a L5.
assessmentuno de "authentic_untouched", "authentic_locally_edited", "ai_generated", "undetermined"Sí
actionuno de "accept", "review", "reject", "resubmit"Sí
aiuno de "labelled", "very_likely", "suspected", "undecided", "low", "very_low", "not_evaluated"SíEl hallazgo sobre la generación con IA.
edituno de "detected", "suspected", "suspected_record", "review", "generative", "minor", "none", "not_applicable", "not_evaluated"SíEl hallazgo sobre la edición local.
summary (DocumentSummary): campos
CampoTipoObligatorioDescripción
kind"docpro"Sí
leveluno de "L0", "L1", "L2", "L3", "L4", "L5"SíNivel de riesgo, de L0 a L5.
actionuno de "accept", "note", "review", "reject", "resubmit"Sínote: revise el contenido de IA señalado en el informe según su política.
reasoncadena o nullSíEl hallazgo o la condición que hay detrás del nivel, por ejemplo clean o incomplete, o un ID de hallazgo.
findingsarray de cadenasSíID de los hallazgos relevantes.
pagesenteroSíPáginas del documento.
imagesenteroSíFotos incrustadas examinadas.
textuno de "ai_generated", "mixed", "human", "inconclusive", nullSíEl veredicto sobre el texto del documento, o null cuando no se evaluó el texto.
strongtrueNoPresente cuando un hallazgo de la lista es sólido.
result: campos
CampoTipoObligatorioDescripción
reportImageReport o DocumentReportNoEl informe completo. report.schema es fileverity.report/1 para imágenes y fileverity.docpro/1 para documentos.
stamped_atentero o nullNoMarca de tiempo Unix de la marca de tiempo RFC 3161 emitida para el informe, o null.
report (ImageReport): campos
CampoTipoObligatorioDescripción
schema"fileverity.report/1"Sí
idcadenaSíID del informe, FV-XXXX-XXXX-XXXX.
sampletrueNoPresente en los informes de ejemplo fijos que devuelven las claves de prueba.
issuedAtcadenaNoCuándo se emitió el informe, en ISO 8601 y UTC. Formato date-time.
issuerobjetoNoQuién emitió el informe.
fileobjetoNoLa imagen comprobada.
proobjetoNoEl veredicto. Los mismos valores que summary, con reason.
scoreentero o nullNoPuntuación de autenticidad de 0 a 100 en pasos de 5: en qué medida las pruebas respaldan que la imagen es una captura auténtica y sin editar. null cuando no se evaluó.
confidenceuno de "high", "medium", "low"NoHasta qué punto este archivo permite que el análisis llegue a conclusiones. Una confianza baja suele deberse al propio archivo, por ejemplo, a una resolución baja o a una compresión intensa.
questionsobjetoNoLas tres preguntas a las que responde el informe.
generatorobjeto o nullNoEl generador de IA identificado para la imagen, o null.
regionsarray de objetosNoRegiones marcadas, en píxeles de la imagen mostrada.
provenanceobjetoNoLo que dicen los propios registros del archivo sobre su origen.
digestcadenaNoHuella del contenido del informe, que usa la página de verificación.
issuer: campos
CampoTipoObligatorioDescripción
namecadenaNo
operatorcadenaNo
verifycadenaNoPágina de verificación pública del informe.
file: campos
CampoTipoObligatorioDescripción
namecadena o nullNo
sha256cadenaNoSHA-256 del archivo comprobado, en hexadecimal.
bytesenteroNo
widthenteroNoAncho en píxeles tal como se muestra.
heightenteroNoAlto en píxeles tal como se muestra.
formatcadenaNo
pro: campos
CampoTipoObligatorioDescripción
leveluno de "L0", "L1", "L2", "L3", "L4", "L5"NoNivel de riesgo, de L0 a L5.
actionuno de "accept", "review", "reject", "resubmit"No
assessmentuno de "authentic_untouched", "authentic_locally_edited", "ai_generated", "undetermined"No
reasoncadena o nullNo
questions: campos
CampoTipoObligatorioDescripción
aiobjetoNo
editobjetoNo
sourceobjetoNo
ai: campos
CampoTipoObligatorioDescripción
keyuno de "labelled", "very_likely", "suspected", "undecided", "low", "very_low", "not_evaluated"No
basisuno de "verified", "detected", "declared", nullNoEn qué se basa la respuesta.
strengthuno de "strong", "moderate", "limited", nullNoCon qué solidez respalda la evidencia la respuesta.
likelihoodentero o nullNoProbabilidad de generación con IA de 0 a 100 en pasos de 5, o null.
edit: campos
CampoTipoObligatorioDescripción
keyuno de "detected", "suspected", "suspected_record", "review", "generative", "minor", "none", "not_applicable", "not_evaluated"No
basisuno de "verified", "detected", "declared", nullNoEn qué se basa la respuesta.
strengthuno de "strong", "moderate", "limited", nullNoCon qué solidez respalda la evidencia la respuesta.
regionsenteroNoNúmero de regiones marcadas.
source: campos
CampoTipoObligatorioDescripción
keycadenaNo
basisuno de "verified", "detected", "declared", nullNoEn qué se basa la respuesta.
strengthuno de "strong", "moderate", "limited", nullNoCon qué solidez respalda la evidencia la respuesta.
signercadena o nullNo
aiClaimbooleanoNoIndica si los registros del propio archivo declaran que se generó con IA.
generator: campos
CampoTipoObligatorioDescripción
namecadenaNo
basiscadenaNoCómo se identificó el generador.
regions: campos
CampoTipoObligatorioDescripción
idcadenaNo
xenteroNo
yenteroNo
wenteroNo
henteroNo
strengthuno de "high", "medium"No
provenance: campos
CampoTipoObligatorioDescripción
credentialsuno de "valid", "unverified", "issues", "invalid", "removed", "none"NoEstado de las Credenciales de contenido.
signercadena o nullNo
softwarearray de cadenasNoSoftware citado en los registros del archivo.
cameracadena o nullNo
capturedcadena o nullNoHora de captura registrada en el archivo, si la hay.
report (DocumentReport): campos
CampoTipoObligatorioDescripción
schema"fileverity.docpro/1"Sí
idcadenaSíID del informe, FV-XXXX-XXXX-XXXX.
sampletrueNoPresente en los informes de ejemplo fijos que devuelven las claves de prueba.
issuedAtcadenaNoCuándo se emitió el informe, en ISO 8601 y UTC. Formato date-time.
receivedAtcadenaNoCuándo se recibió el archivo, en ISO 8601 y UTC. Formato date-time.
issuerobjetoNoQuién emitió el informe.
fileobjetoNoEl documento comprobado.
leveluno de "L0", "L1", "L2", "L3", "L4", "L5"NoNivel de riesgo, de L0 a L5.
actionuno de "accept", "note", "review", "reject", "resubmit"No
reasoncadena o nullNoEl hallazgo o la condición que determina el nivel.
findingsarray de objetosNoLos hallazgos que determinan el nivel, cada uno con las páginas y las fotos incrustadas a las que se refiere.
textobjetoNoEl resultado para el texto del documento.
imagesarray de objetosNoLas fotos y los gráficos incrustados, numerados en el orden del documento.
structureobjeto o nullNoEl historial de ediciones del archivo, o null si no se examinó.
provenanceobjetoNoLo que dicen los propios registros del archivo sobre su origen.
digestcadenaNoHuella del contenido del informe, que usa la página de verificación.
issuer: campos
CampoTipoObligatorioDescripción
namecadenaNo
operatorcadenaNo
verifycadenaNoPágina de verificación pública del informe.
file: campos
CampoTipoObligatorioDescripción
namecadena o nullNo
sha256cadenaNoSHA-256 del archivo comprobado, en hexadecimal.
bytesenteroNo
formatcadenaNo
pagesenteroNo
textLayeruno de "present", "partial", "absent"NoIndica si el documento incluye una capa de texto.
findings: campos
CampoTipoObligatorioDescripción
idcadenaNo
basisuno de "verified", "detected", "declared"No
strengthuno de "strong", "moderate", "limited"No
materialbooleanoNoIndica si el hallazgo cuenta para el nivel.
pagesarray de enterosNo
imagesarray de enterosNo
text: campos
CampoTipoObligatorioDescripción
statusuno de "evaluated", "insufficient_text", "unsupported_language", "no_text"No
verdictuno de "ai_generated", "mixed", "human", "inconclusive"NoPresente cuando status es evaluated.
wordsenteroNo
languagesarray de cadenasNo
passagesenteroNoNúmero de pasajes señalados.
images: campos
CampoTipoObligatorioDescripción
nenteroNo
pagesarray de enterosNo
kinduno de "photo", "graphic"No
widthenteroNo
heightenteroNo
leveluno de "L0", "L1", "L2", "L3", "L4", "L5", nullNo
assessmentuno de "authentic_untouched", "authentic_locally_edited", "ai_generated", "undetermined", nullNo
aiuno de "labelled", "very_likely", "suspected", "undecided", "low", "very_low", "not_evaluated", nullNo
edituno de "detected", "suspected", "suspected_record", "review", "generative", "minor", "none", "not_applicable", "not_evaluated", nullNo
structure: campos
CampoTipoObligatorioDescripción
revisionsentero o nullNo
changedPagesarray de enterosNo
addedPagesenteroNo
signaturesenteroNo
provenance: campos
CampoTipoObligatorioDescripción
credentialscadenaNoEstado de las Credenciales de contenido.
signercadena o nullNo
aiClaimbooleanoNoIndica si los registros del propio archivo declaran que se generó con IA.
softwarearray de cadenasNo
createdcadena o nullNo
modifiedcadena o nullNo
revisionsentero o nullNo
signedbooleano o nullNo
error: campos
CampoTipoObligatorioDescripción
codeuno de "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"No
messagecadenaNo
progress: campos
CampoTipoObligatorioDescripción
stageuno de "queued", "reading", "analyzing", "reporting"No
doneenteroNoUnidades terminadas en la fase actual, cuando se conocen; en caso contrario, 0.
totalenteroNoUnidades de la fase actual, cuando se conocen; en caso contrario, 0.
positionenteroNoPosición en la cola mientras la fase es queued.
usage: campos
CampoTipoObligatorioDescripción
amountenteroNoCargo en centavos; 0 en las comprobaciones del inicio gratuito y en los fallos.
currency"usd"No
fundinguno de "trial", "balance", nullNo

Códigos de error

CódigoEstado
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

Ejemplo

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}

Listar análisis

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

Lista los análisis de imágenes y documentos de su espacio de trabajo, del más reciente al más antiguo. Las claves de prueba siempre reciben una lista vacía.

Parámetros

NombreUbicaciónTipoObligatorioDescripción
limitconsultaenteroNoValor predeterminado: 20. Mínimo 1. Máximo 100.
starting_afterconsultacadenaNoCursor: el next_cursor de la página anterior.
typeconsultauno de "image", "document"No

Respuestas

EstadoDescripciónCuerpo
200Una página de análisis.AnalysisList
400Solicitud no válida. Códigos de error: invalid_parameter.Error
401Clave de API ausente o no válida. Códigos de error: missing_api_key, invalid_api_key.Error
429Demasiadas solicitudes. Códigos de error: rate_limited.Error
500Error interno; no se cobra. Códigos de error: internal_error.Error

Respuesta 200: AnalysisList

CampoTipoObligatorioDescripción
object"list"Sí
dataarray de AnalysisSí
has_morebooleanoSí
next_cursorcadena o nullSíPáselo como starting_after para obtener la página siguiente.
data: campos
CampoTipoObligatorioDescripción
idcadenaSí
object"analysis"Sí
createdenteroSíMarca de tiempo Unix.
modelcadenaSíVersión fechada que produjo el resultado.
livemodebooleanoSí
statusuno de "processing", "succeeded", "failed", "canceled"Sí
fileobjetoSí
report_idcadena o nullSíID de informe verificable, FV-XXXX-XXXX-XXXX.
report_urlcadena o nullSíPágina de verificación pública del informe.
summaryImageSummary o DocumentSummary o nullSíEl veredicto breve y estable: un ImageSummary para imágenes, un DocumentSummary para documentos, null hasta que el análisis termina con éxito.
resultobjeto o nullSíPresente cuando status es succeeded y hasta que caduca el resultado.
errorobjeto o nullSí
progressobjeto o nullSí
usageobjetoSí
metadataobjeto o nullSí
completed_atentero o nullSí
expires_atentero o nullSíMarca de tiempo Unix a partir de la cual se elimina el resultado.
file: campos
CampoTipoObligatorioDescripción
namecadena o nullNo
bytesentero o nullNo
formatcadena o nullNo
result: campos
CampoTipoObligatorioDescripción
reportImageReport o DocumentReportNoEl informe completo. report.schema es fileverity.report/1 para imágenes y fileverity.docpro/1 para documentos.
stamped_atentero o nullNoMarca de tiempo Unix de la marca de tiempo RFC 3161 emitida para el informe, o null.
error: campos
CampoTipoObligatorioDescripción
codeuno de "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"No
messagecadenaNo
progress: campos
CampoTipoObligatorioDescripción
stageuno de "queued", "reading", "analyzing", "reporting"No
doneenteroNoUnidades terminadas en la fase actual, cuando se conocen; en caso contrario, 0.
totalenteroNoUnidades de la fase actual, cuando se conocen; en caso contrario, 0.
positionenteroNoPosición en la cola mientras la fase es queued.
usage: campos
CampoTipoObligatorioDescripción
amountenteroNoCargo en centavos; 0 en las comprobaciones del inicio gratuito y en los fallos.
currency"usd"No
fundinguno de "trial", "balance", nullNo

Códigos de error

CódigoEstado
invalid_parameter400
missing_api_key401
invalid_api_key401
rate_limited429
internal_error500

Ejemplo

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}

Recuperar un análisis

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

Devuelve el análisis, con su resultado una vez que ha terminado con éxito y hasta que caduque.

Parámetros

NombreUbicaciónTipoObligatorioDescripción
idrutacadenaSíID del análisis.

Respuestas

EstadoDescripciónCuerpo
200El análisis.Analysis
401Clave de API ausente o no válida. Códigos de error: missing_api_key, invalid_api_key.Error
404Recurso no encontrado. Códigos de error: not_found.Error
429Demasiadas solicitudes. Códigos de error: rate_limited.Error
500Error interno; no se cobra. Códigos de error: internal_error.Error

Respuesta 200: Analysis

CampoTipoObligatorioDescripción
idcadenaSí
object"analysis"Sí
createdenteroSíMarca de tiempo Unix.
modelcadenaSíVersión fechada que produjo el resultado.
livemodebooleanoSí
statusuno de "processing", "succeeded", "failed", "canceled"Sí
fileobjetoSí
report_idcadena o nullSíID de informe verificable, FV-XXXX-XXXX-XXXX.
report_urlcadena o nullSíPágina de verificación pública del informe.
summaryImageSummary o DocumentSummary o nullSíEl veredicto breve y estable: un ImageSummary para imágenes, un DocumentSummary para documentos, null hasta que el análisis termina con éxito.
resultobjeto o nullSíPresente cuando status es succeeded y hasta que caduca el resultado.
errorobjeto o nullSí
progressobjeto o nullSí
usageobjetoSí
metadataobjeto o nullSí
completed_atentero o nullSí
expires_atentero o nullSíMarca de tiempo Unix a partir de la cual se elimina el resultado.
file: campos
CampoTipoObligatorioDescripción
namecadena o nullNo
bytesentero o nullNo
formatcadena o nullNo
result: campos
CampoTipoObligatorioDescripción
reportImageReport o DocumentReportNoEl informe completo. report.schema es fileverity.report/1 para imágenes y fileverity.docpro/1 para documentos.
stamped_atentero o nullNoMarca de tiempo Unix de la marca de tiempo RFC 3161 emitida para el informe, o null.
error: campos
CampoTipoObligatorioDescripción
codeuno de "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"No
messagecadenaNo
progress: campos
CampoTipoObligatorioDescripción
stageuno de "queued", "reading", "analyzing", "reporting"No
doneenteroNoUnidades terminadas en la fase actual, cuando se conocen; en caso contrario, 0.
totalenteroNoUnidades de la fase actual, cuando se conocen; en caso contrario, 0.
positionenteroNoPosición en la cola mientras la fase es queued.
usage: campos
CampoTipoObligatorioDescripción
amountenteroNoCargo en centavos; 0 en las comprobaciones del inicio gratuito y en los fallos.
currency"usd"No
fundinguno de "trial", "balance", nullNo

Códigos de error

CódigoEstado
not_found404
missing_api_key401
invalid_api_key401
rate_limited429
internal_error500

Ejemplo

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}

Cancelar un análisis

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

Cancela un análisis de documento que aún se está procesando y libera su cargo. Los análisis de imágenes no se pueden cancelar una vez creados.

Parámetros

NombreUbicaciónTipoObligatorioDescripción
idrutacadenaSíID del análisis.
Idempotency-KeyencabezadocadenaNoClave única de hasta 255 caracteres. Repetir la solicitud con la misma clave y el mismo cuerpo en un plazo de 24 horas devuelve la primera respuesta con el encabezado idempotent-replayed: true; la misma clave con un cuerpo distinto devuelve 409.

Respuestas

EstadoDescripciónCuerpo
200El análisis cancelado.Analysis
400Solicitud no válida. Códigos de error: invalid_parameter.Error
401Clave de API ausente o no válida. Códigos de error: missing_api_key, invalid_api_key.Error
404Recurso no encontrado. Códigos de error: not_found.Error
409Conflicto con el estado actual. Códigos de error: not_cancelable, idempotency_mismatch, idempotency_in_progress.Error
429Demasiadas solicitudes. Códigos de error: rate_limited.Error
500Error interno; no se cobra. Códigos de error: internal_error.Error

Respuesta 200: Analysis

CampoTipoObligatorioDescripción
idcadenaSí
object"analysis"Sí
createdenteroSíMarca de tiempo Unix.
modelcadenaSíVersión fechada que produjo el resultado.
livemodebooleanoSí
statusuno de "processing", "succeeded", "failed", "canceled"Sí
fileobjetoSí
report_idcadena o nullSíID de informe verificable, FV-XXXX-XXXX-XXXX.
report_urlcadena o nullSíPágina de verificación pública del informe.
summaryImageSummary o DocumentSummary o nullSíEl veredicto breve y estable: un ImageSummary para imágenes, un DocumentSummary para documentos, null hasta que el análisis termina con éxito.
resultobjeto o nullSíPresente cuando status es succeeded y hasta que caduca el resultado.
errorobjeto o nullSí
progressobjeto o nullSí
usageobjetoSí
metadataobjeto o nullSí
completed_atentero o nullSí
expires_atentero o nullSíMarca de tiempo Unix a partir de la cual se elimina el resultado.
file: campos
CampoTipoObligatorioDescripción
namecadena o nullNo
bytesentero o nullNo
formatcadena o nullNo
result: campos
CampoTipoObligatorioDescripción
reportImageReport o DocumentReportNoEl informe completo. report.schema es fileverity.report/1 para imágenes y fileverity.docpro/1 para documentos.
stamped_atentero o nullNoMarca de tiempo Unix de la marca de tiempo RFC 3161 emitida para el informe, o null.
error: campos
CampoTipoObligatorioDescripción
codeuno de "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"No
messagecadenaNo
progress: campos
CampoTipoObligatorioDescripción
stageuno de "queued", "reading", "analyzing", "reporting"No
doneenteroNoUnidades terminadas en la fase actual, cuando se conocen; en caso contrario, 0.
totalenteroNoUnidades de la fase actual, cuando se conocen; en caso contrario, 0.
positionenteroNoPosición en la cola mientras la fase es queued.
usage: campos
CampoTipoObligatorioDescripción
amountenteroNoCargo en centavos; 0 en las comprobaciones del inicio gratuito y en los fallos.
currency"usd"No
fundinguno de "trial", "balance", nullNo

Códigos de error

CódigoEstado
not_found404
not_cancelable409
invalid_parameter400
idempotency_mismatch409
idempotency_in_progress409
missing_api_key401
invalid_api_key401
rate_limited429
internal_error500

Ejemplo

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}

Descargar el informe en PDF

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

Devuelve el informe en PDF sellado de un análisis que ha terminado con éxito mientras se conserve su resultado. Las claves de prueba reciben 404. Las evidencias del documento, como las imágenes de páginas, están disponibles durante 3 horas tras el análisis; después el PDF las omite, lo que se indica con x-evidence-included: false.

Parámetros

NombreUbicaciónTipoObligatorioDescripción
idrutacadenaSíID del análisis.
localeconsultauno de "en", "fr", "de", "es", "zh", "vi", "ar"NoValor predeterminado: "en".

Respuestas

EstadoDescripciónCuerpo
200El informe en PDF.Archivo PDF
400Solicitud no válida. Códigos de error: invalid_parameter.Error
401Clave de API ausente o no válida. Códigos de error: missing_api_key, invalid_api_key.Error
404Recurso no encontrado. Códigos de error: not_found.Error
429Demasiadas solicitudes. Códigos de error: rate_limited.Error
500Error interno; no se cobra. Códigos de error: internal_error.Error

Códigos de error

CódigoEstado
invalid_parameter400
not_found404
missing_api_key401
invalid_api_key401
rate_limited429
internal_error500

Ejemplo

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

Modelos

Listar modelos

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

Lista los modelos disponibles para su clave de API.

Respuestas

EstadoDescripciónCuerpo
200Los modelos disponibles.ModelList
401Clave de API ausente o no válida. Códigos de error: missing_api_key, invalid_api_key.Error
429Demasiadas solicitudes. Códigos de error: rate_limited.Error
500Error interno; no se cobra. Códigos de error: internal_error.Error

Respuesta 200: ModelList

CampoTipoObligatorioDescripción
object"list"Sí
dataarray de ModelSí
data: campos
CampoTipoObligatorioDescripción
idcadenaSí
object"model"Sí
createdenteroSíMarca de tiempo Unix de la versión fechada actual.
owned_bycadenaSí
namecadenaSí
typeuno de "image", "document", "text"Sí
descriptioncadenaSí
snapshotcadenaSíVersión fechada a la que apunta actualmente el ID.
statusuno de "available", "preview", "deprecated"Sí
inputobjetoSíEntrada admitida. En los archivos se indican los formatos y los límites de tamaño; en el texto, los idiomas y los límites de longitud.
outputobjetoSí
pricingobjetoSí
input: campos
CampoTipoObligatorioDescripción
formatsarray de cadenasNo
max_bytesenteroNo
max_megapixelsenteroNo
max_pagesenteroNo
languagesarray de cadenasNo
min_wordsenteroNo
max_charactersenteroNo
output: campos
CampoTipoObligatorioDescripción
schemacadenaSíEsquema del informe en los resultados del análisis.
pricing: campos
CampoTipoObligatorioDescripción
currency"usd"Sí
unitcadenaSí
unit_amountenteroSíPrecio por unidad en centavos.

Códigos de error

CódigoEstado
missing_api_key401
invalid_api_key401
rate_limited429
internal_error500

Ejemplo

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      }    }  ]}

Recuperar un modelo

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

Recupera un modelo por su ID o su ID de versión fechada.

Parámetros

NombreUbicaciónTipoObligatorioDescripción
modelrutacadenaSíID de modelo o ID de versión fechada.

Respuestas

EstadoDescripciónCuerpo
200El modelo.Model
401Clave de API ausente o no válida. Códigos de error: missing_api_key, invalid_api_key.Error
404Recurso no encontrado. Códigos de error: model_not_found.Error
429Demasiadas solicitudes. Códigos de error: rate_limited.Error
500Error interno; no se cobra. Códigos de error: internal_error.Error

Respuesta 200: Model

CampoTipoObligatorioDescripción
idcadenaSí
object"model"Sí
createdenteroSíMarca de tiempo Unix de la versión fechada actual.
owned_bycadenaSí
namecadenaSí
typeuno de "image", "document", "text"Sí
descriptioncadenaSí
snapshotcadenaSíVersión fechada a la que apunta actualmente el ID.
statusuno de "available", "preview", "deprecated"Sí
inputobjetoSíEntrada admitida. En los archivos se indican los formatos y los límites de tamaño; en el texto, los idiomas y los límites de longitud.
outputobjetoSí
pricingobjetoSí
input: campos
CampoTipoObligatorioDescripción
formatsarray de cadenasNo
max_bytesenteroNo
max_megapixelsenteroNo
max_pagesenteroNo
languagesarray de cadenasNo
min_wordsenteroNo
max_charactersenteroNo
output: campos
CampoTipoObligatorioDescripción
schemacadenaSíEsquema del informe en los resultados del análisis.
pricing: campos
CampoTipoObligatorioDescripción
currency"usd"Sí
unitcadenaSí
unit_amountenteroSíPrecio por unidad en centavos.

Códigos de error

CódigoEstado
model_not_found404
missing_api_key401
invalid_api_key401
rate_limited429
internal_error500

Ejemplo

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  }}

Eventos de webhook

Fileverity envía estos eventos a sus endpoints de webhook. Las reglas de verificación y de entrega están en Webhooks.

Evento analysis.completed

Se entrega a sus endpoints de webhook conforme a la especificación Standard Webhooks: los encabezados webhook-id, webhook-timestamp y webhook-signature (v1,<base64 HMAC-SHA256 de id.timestamp.body>, con la parte base64 de su secreto whsec_ como clave). Responda con cualquier 2xx en un plazo de 10 segundos; los fallos se reintentan con retroceso exponencial durante 3 días.

Cuerpo de la solicitud: application/json, obligatorio

CampoTipoObligatorioDescripción
idcadenaSíTambién se envía como encabezado webhook-id; úselo para descartar los reintentos duplicados.
object"event"Sí
typeuno de "analysis.completed", "analysis.failed", "balance.low"Sí
createdenteroSíMarca de tiempo Unix.
dataAnalysis o BalanceLowSíLos eventos analysis.* incluyen el mismo objeto que GET /analyses/{id}, con result siempre null; obtenga el resultado con ese endpoint. Los eventos balance.low incluyen el saldo y el umbral en centavos.
data (BalanceLow): campos
CampoTipoObligatorioDescripción
balanceenteroSíSaldo en centavos.
thresholdenteroSíUmbral de alerta en centavos.

Evento analysis.failed

Se entrega a sus endpoints de webhook conforme a la especificación Standard Webhooks: los encabezados webhook-id, webhook-timestamp y webhook-signature (v1,<base64 HMAC-SHA256 de id.timestamp.body>, con la parte base64 de su secreto whsec_ como clave). Responda con cualquier 2xx en un plazo de 10 segundos; los fallos se reintentan con retroceso exponencial durante 3 días.

Cuerpo de la solicitud: application/json, obligatorio

CampoTipoObligatorioDescripción
idcadenaSíTambién se envía como encabezado webhook-id; úselo para descartar los reintentos duplicados.
object"event"Sí
typeuno de "analysis.completed", "analysis.failed", "balance.low"Sí
createdenteroSíMarca de tiempo Unix.
dataAnalysis o BalanceLowSíLos eventos analysis.* incluyen el mismo objeto que GET /analyses/{id}, con result siempre null; obtenga el resultado con ese endpoint. Los eventos balance.low incluyen el saldo y el umbral en centavos.

Evento balance.low

Se entrega a sus endpoints de webhook conforme a la especificación Standard Webhooks: los encabezados webhook-id, webhook-timestamp y webhook-signature (v1,<base64 HMAC-SHA256 de id.timestamp.body>, con la parte base64 de su secreto whsec_ como clave). Responda con cualquier 2xx en un plazo de 10 segundos; los fallos se reintentan con retroceso exponencial durante 3 días.

Cuerpo de la solicitud: application/json, obligatorio

CampoTipoObligatorioDescripción
idcadenaSíTambién se envía como encabezado webhook-id; úselo para descartar los reintentos duplicados.
object"event"Sí
typeuno de "analysis.completed", "analysis.failed", "balance.low"Sí
createdenteroSíMarca de tiempo Unix.
dataAnalysis o BalanceLowSíLos eventos analysis.* incluyen el mismo objeto que GET /analyses/{id}, con result siempre null; obtenga el resultado con ese endpoint. Los eventos balance.low incluyen el saldo y el umbral en centavos.
curl https://api.fileverity.com/v1/openapi.json