API Documentation
ISO 27001SOC 2 CertifiedGDPR Compliant

API de Detección de PDF con IA

Documentación completa para integrar la API de detección de PDF con IA de TruthScan en sus aplicaciones.

Pruébala sin código visitando nuestro endpoint FastAPI: https://detect-text.truthscan.com/docs

Precios y créditos

La detección de PDF deduce 1.000 créditos por página (p. ej., un PDF de 5 páginas usa 5.000 créditos).

Consulte su saldo con GET /check-user-credits. Ver planes de precios

Autenticación

TruthScan usa claves de API para permitir el acceso a la API. Puede obtener su clave de API en la parte superior de la página en nuestro portal de desarrolladores.

Para solicitudes de URL de carga prefirmada (`GET /get-presigned-url`), incluya su clave de API en el encabezado `apikey`.

Para solicitudes de detección de PDF (`POST /detect-pdf`), incluya su clave de API en el cuerpo JSON como `key`.

Debe reemplazar YOUR API KEY GOES HERE con su clave de API personal.

Detector de PDF

El detector de PDF analiza documentos PDF cargados en busca de indicios de generación por IA y manipulación digital. Los PDF se procesan de forma asíncrona: suba el archivo, envíelo a detección mediante `/detect-pdf` y luego consulte los resultados.

El detector ejecuta varios módulos de análisis en cada documento. De forma predeterminada se ejecutan todos los módulos. Puede elegir qué módulos ejecutar incluyendo el parámetro `modules` en su solicitud:

  • Metadatos: metadata

    Revisa los metadatos del documento en busca de artefactos de manipulación dejados por IA o herramientas de edición digital.

  • Estructura: structure

    Inspecciona el documento en busca de ediciones digitales, como capas de texto oculto.

Selección de modelo

Envíe `model` en el cuerpo de la solicitud como uno de los valores siguientes. Cualquier otro valor devuelve 400 Bad Request.

  • pdf_detector: Versión más reciente (actualmente `pdf_detector/v5`). Equivale a omitir `model`.
  • pdf_detector/v1: Detecta si el PDF fue generado por una herramienta de IA en los metadatos PDF.
  • pdf_detector/v3: Comprueba ediciones digitales y señales de documentos generados por IA.
  • pdf_detector/v4: Comprueba ediciones digitales y señales de documentos generados por IA, con rendimiento general mejorado respecto a v3.
  • pdf_detector/v5: Detector más reciente. Ejecuta análisis de metadatos y de estructura.

Selección de módulos

Envíe `modules` en el cuerpo de la solicitud como uno de los valores siguientes.

  • []: Todos los módulos (predeterminado). Equivale a omitir `modules`.
  • ["metadata"]: Solo análisis de metadatos.
  • ["structure"]: Solo análisis de estructura.

Flujo de trabajo

  • Obtenga una URL de carga preautorizada: `GET /get-presigned-url`
  • Suba el PDF: `PUT` de los bytes del archivo a la URL preautorizada
  • Envíe para detección: `POST /detect-pdf`
  • Consulte los resultados: `POST /query` con el `id` del documento devuelto hasta que `status` sea `done`

Requisitos de archivo

Los archivos deben ser `.pdf`, de como máximo 2 MB y estar accesibles públicamente en la URL que proporcione.

Deducción de créditos

La detección de PDF consume 1.000 créditos por página, independientemente de los módulos seleccionados. Un PDF de 5 páginas cuesta 5.000 créditos. Verifique su saldo con `GET /check-user-credits` antes de enviar documentos grandes.

Paso 1 : Obtener una URL de carga preautorizada

Solicite una URL de carga preautorizada antes de enviar un PDF para detección. `file_name` (obligatorio): el nombre del archivo PDF (debe terminar en `.pdf`). `expiration` (opcional): tiempo de expiración de la URL en segundos (predeterminado: 3600).

Encabezados

Incluya su clave API en el encabezado `apikey`.

GET https://detect-text.truthscan.com/get-presigned-url

Ejemplo de solicitud

curl -X 'GET' \
  'https://detect-text.truthscan.com/get-presigned-url?file_name=report.pdf&expiration=3600' \
  -H 'accept: application/json' \
  -H 'apikey: YOUR-API-KEY-GOES-HERE'

Suba el archivo con un PUT a la `presigned_url` de la respuesta antes de llamar a `/detect-pdf`.

Ejemplo de respuesta

{
    "status": "success",
    "presigned_url": "https://...digitaloceanspaces.com/...?X-Amz-Algorithm=...",
    "file_path": "userId_20250604120000_report.pdf"
}

Paso 2 : Subir el PDF

Use la `presigned_url` proporcionada para subir su PDF mediante una solicitud `PUT`.

Ejemplo de solicitud

curl -X PUT 'https://nyc3.digitaloceanspaces.com/ai-detector-prod/uploads/581d47c7-3ef4-42af-88d9-6dab6bf69389_20250611-121955_report.pdf...' \
  --header 'Content-Type: application/pdf' \
  --header 'x-amz-acl: private' \
  --data-binary '@report.pdf'

Paso 3 : Enviar para detección

Envíe un PDF que ya se haya subido al almacenamiento de objetos.

Cuerpo de la solicitud

  • url (obligatorio): URL de almacenamiento de objetos del PDF subido (host de `presigned_url` + `file_path`).
  • key (obligatorio): Su clave API.
  • model: El modelo del detector a usar. El valor predeterminado es `pdf_detector` (más reciente). Los valores versionados admitidos incluyen `pdf_detector/v1`, `pdf_detector/v3`, `pdf_detector/v4` y `pdf_detector/v5`.
  • modules: Array de módulos a ejecutar: `["metadata"]`, `["structure"]` o `["metadata", "structure"]`. Omita o envíe `[]` para ejecutar todos. Se aplica a v4 y v5; se ignora en versiones heredadas.
POST https://detect-text.truthscan.com/detect-pdf

Ejemplo de solicitud : todos los módulos (predeterminado)

curl -X 'POST' \
  'https://detect-text.truthscan.com/detect-pdf' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{
  "url": "https://your-bucket.region.digitaloceanspaces.com/userId_20250604120000_report.pdf",
  "key": "YOUR-API-KEY-GOES-HERE"
}'

Ejemplo de solicitud : solo metadatos

curl -X 'POST' \
  'https://detect-text.truthscan.com/detect-pdf' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{
  "url": "https://your-bucket.region.digitaloceanspaces.com/userId_20250604120000_report.pdf",
  "key": "YOUR-API-KEY-GOES-HERE",
  "modules": ["metadata"]
}'

Ejemplo de respuesta

{
    "id": "77565038-9e3d-4e6a-8c80-e20785be5ee9",
    "model": "pdf_detector",
    "result": null,
    "result_details": null,
    "status": "pending",
    "retry_count": 0
}

La respuesta contiene un `id` de documento. Úselo para consultar resultados mediante `POST /query`. El procesamiento suele completarse en unos segundos.

Paso 4 : Consultar resultados

Use el endpoint `/query` (el mismo que la detección de texto) para comprobar el estado y obtener resultados. El formato de respuesta depende del `model` usado en el trabajo. Consulte hasta que `status` sea `done`.

POST https://detect-text.truthscan.com/query

Ejemplo de solicitud

curl -X 'POST' \
  'https://detect-text.truthscan.com/query' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{
  "id": "DOCUMENT-ID-FROM-STEP-3"
}'

Ejemplo de respuesta : documento manipulado

{
    "id": "594502f3-5474-4d2f-9a7a-039f85485854",
    "model": "pdf_detector",
    "status": "done",
    "retry_count": 0,
    "modules": {
        "metadata": {
            "status": "done",
            "result_details": {
                "prediction": "ChatGPT",
                "rule": "PyMuPDF - Creator: OpenAI",
                "base_category": "Possibly AI Generated/Edited",
                "basic_source": "ChatGPT"
            },
            "source_details": {
                "source": "AI Generated",
                "credits_deducted": 1000
            },
            "label": "Tampered"
        },
        "structure": {
            "status": "done",
            "result_details": {
                "prediction": "Suspicious",
                "rule": { "hidden": "medium" },
                "max_severity": "medium",
                "signals_flagged": 1,
                "signals": {
                    "hidden": {
                        "label": "Hidden Text",
                        "flagged": true,
                        "severity": "medium",
                        "findings": [
                            {
                                "severity": "medium",
                                "detail": "Page 1: invisible text layer found beneath visible content."
                            }
                        ]
                    }
                }
            },
            "detailed_explanation": "Page 1 contains a hidden text layer beneath visible content, suggesting possible content manipulation.",
            "label": "Suspicious"
        }
    },
    "summary": {
        "label": "Tampered",
        "detection_steps": ["metadata", "structure"],
        "detection_rules": {
            "metadata": "PyMuPDF - Creator: OpenAI",
            "structure": "1 signals fired"
        },
        "details": {
            "is_ai": true,
            "ai_detection_steps": ["metadata"],
            "is_digitally_edited": true,
            "digital_edit_detection_steps": ["structure"]
        }
    }
}

Módulo de metadatos

  • label: Tampered si se encontró una huella de IA; Genuine en caso contrario.
  • result_details.prediction: La herramienta de IA identificada (p. ej. `"ChatGPT"`) o `"No Tampering Detected"`.
  • source_details: Anidado en `modules.metadata`.
  • source_details.source: `"AI Generated"`, `"Digitally Edited"` o `null`.
  • source_details.credits_deducted: Créditos cobrados por este trabajo con claves de TruthScan; `null` en caso contrario.

Ejemplo de respuesta: documento genuino

{
    "id": "e4c0f5d7-b061-4d4e-af9c-5b8da03e6f44",
    "model": "pdf_detector",
    "status": "done",
    "retry_count": 0,
    "modules": {
        "metadata": {
            "status": "done",
            "result_details": {
                "prediction": "No Tampering Detected",
                "rule": null,
                "base_category": "No Tampering Detected",
                "basic_source": null
            },
            "source_details": {
                "source": null,
                "credits_deducted": 1000
            },
            "label": "Genuine"
        },
        "structure": {
            "status": "done",
            "result_details": {
                "prediction": "Genuine",
                "rule": {},
                "max_severity": null,
                "signals_flagged": 0,
                "signals": {
                    "hidden": {
                        "label": "Hidden Text",
                        "flagged": false,
                        "severity": null,
                        "findings": []
                    }
                }
            },
            "detailed_explanation": "No AI-generation or tampering fingerprints were detected; the PDF looks clean.",
            "label": "Genuine"
        }
    },
    "summary": {
        "label": "Genuine",
        "detection_steps": [],
        "detection_rules": {},
        "details": {
            "is_ai": false,
            "ai_detection_steps": [],
            "is_digitally_edited": false,
            "digital_edit_detection_steps": []
        }
    }
}

Cómo entender la respuesta

`summary.label` es el veredicto general. `summary.detection_steps` indica qué módulos marcaron el documento. `summary.detection_rules` registra qué activó cada módulo marcado. `summary.details.is_ai` es `true` si el documento se identificó como generado por IA. `summary.details.is_digitally_edited` es `true` si se detectaron ediciones estructurales.

Módulo de estructura

  • label: Tampered, Suspicious o Genuine.
  • result_details.signals: Desglose por señal. `hidden` detecta capas de texto oculto en el documento.
  • result_details.signals_flagged: Número total de señales que se activaron.
  • detailed_explanation: Resumen en lenguaje natural de los hallazgos.

Veredicto

  • Tampered: Evidencia sólida de manipulación de contenido u origen generado por IA.
  • Suspicious: Una o más señales detectadas, pero no en el nivel de confianza más alto.
  • Genuine: No se detectaron señales de manipulación.

Niveles de severidad

Cada hallazgo individual tiene un nivel de severidad: `"low"`, `"medium"` o `"high"`.

Errores

La mayoría de los errores serán por parámetros incorrectos enviados a la API. Verifique nuevamente los parámetros de cada llamada de API para asegurarse de que esté formateado correctamente e intente ejecutar el código de ejemplo proporcionado.

Los códigos de error genéricos que usamos se ajustan al estándar REST:

Código de ErrorSignificado
400Bad Request -- Su solicitud es inválida.
403Prohibido -- La clave de API no es válida o no hay créditos suficientes (1.000 por página del PDF).
404Not Found -- El recurso especificado no existe.
405Method Not Allowed -- Intentó acceder a un recurso con un método inválido.
406Not Acceptable -- Solicitó un formato que no es JSON.
410Gone -- El recurso en este endpoint ha sido eliminado.
422Invalid Request Body -- El cuerpo de su solicitud está formateado incorrectamente o es inválido o tiene parámetros faltantes.
429Too Many Requests -- ¡Está enviando demasiadas solicitudes! ¡Reduzca la velocidad!
500Internal Server Error -- Tuvimos un problema con nuestro servidor. Intente nuevamente más tarde.
503Service Unavailable -- Estamos temporalmente fuera de línea para mantenimiento. Intente nuevamente más tarde.

Precios

Obtenga informes forenses completos - mapas de calor, indicadores clave y descripciones detalladas.

Free

$0/mes

Pruebe el motor completo

  • 25 resultados/mes (imágenes + páginas de PDF)
  • Indicadores detallados en cada resultado
  • Acceso completo a la API
  • Historial de detección en el panel
  • Gratis para siempre — sin periodo de prueba
  • Extensión Chrome, asientos ilimitados

Starter

$24/mes

$0,03 / resultado - $290/año

Para individuos y equipos pequeños

  • 1.000 resultados/mes incluidos
  • $0,03 por resultado adicional
  • Exportación CSV del historial
  • Cargas por lotes
  • Informes auditables
  • Soporte estándar
  • Extensión Chrome, asientos ilimitados
Más popular

Professional

$83/mes

$0,02 / resultado - $990/año

Para equipos en producción

  • 5.000 resultados/mes incluidos
  • $0,02 por resultado adicional
  • Procesamiento prioritario
  • Límites de API más altos
  • Extensión Chrome, asientos ilimitados

Business

$333/mes

$0,01 / resultado - $3.990/año

Para operaciones de alto volumen

  • 40.000 resultados/mes incluidos
  • $0,01 por resultado adicional
  • Zero Data Retention (ZDR)
  • Límites self-serve más altos
  • Soporte prioritario
  • Extensión Chrome, asientos ilimitados

Enterprise

Personalice un plan según sus necesidades

$0,005 o menos por resultado

Contactar ventas
  • Los descuentos escalan con el volumen
  • SLAs personalizados con créditos de servicio
  • Zero Data Retention (ZDR)
  • Integraciones personalizadas
  • MSA y DPA personalizados
  • Throughput dedicado
  • Equipo de cuenta nominado 24/7
  • Implementación dedicada / on-prem

API Frequently Asked Questions

Find answers to the most common questions about our AI PDF detection API.