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 archivos PDF cargados de forma asíncrona. Los PDF deben subirse primero al almacenamiento de objetos y luego enviarse mediante `/detect-pdf`. Consulte `/query` hasta que `status` sea `done`.
Hay tres versiones del detector disponibles. Cada una responde a una pregunta diferente, elija la que coincida con su caso de uso (o ejecute v1 y v3/v4 en el mismo archivo enviándolo dos veces con distintos valores de `model`):
- v1:
pdf_detector/v1Detecta si el PDF fue generado por una herramienta de IA en los metadatos PDF.
- v3:
pdf_detector/v3Comprueba ediciones digitales y señales de documentos generados por IA.
- v4:
pdf_detector/v4(predeterminado / más reciente)Versión más reciente del detector de manipulación con rendimiento general mejorado y recomendada para nuevas integraciones.
Selección de modelo
pdf_detector: Omita `model`, o envíe `pdf_detector`, para usar la versión más reciente (actualmente `pdf_detector/v4`).pdf_detector/v1: Envíe `model: pdf_detector/v1` para detección de metadatos de generación por IA.pdf_detector/v3: Envíe `model: pdf_detector/v3` para fijar v3.pdf_detector/v4: Envíe `model: pdf_detector/v4` para fijar v4 explícitamente.model: Cualquier otro valor de `model` devuelve 400 Bad Request.
Flujo de trabajo
- `GET /get-presigned-url` con un nombre de archivo `.pdf` y su clave API en el encabezado `apikey`.
- `PUT` de los bytes del PDF a la `presigned_url` devuelta.
- `POST /detect-pdf` con la `url` pública del objeto, su `key` API y un `model` opcional.
- `POST /query` con el `id` del documento devuelto hasta que finalice el procesamiento.
Límites de archivo
Los archivos PDF deben ser `.pdf`, de como máximo 2 MB y accesibles en la `url` enviada.
Deducción de créditos
La detección de PDF deduce 1.000 créditos por página. Un PDF de 5 páginas consume 5.000 créditos. Verifique su saldo con `/check-user-credits` antes de enviar documentos grandes.
Obtener una URL de carga preautorizada
Solicite una URL de carga preautorizada antes de enviar un PDF para detección.
Encabezados
Incluya su clave API en el encabezado `apikey`.
GET https://detect-text.truthscan.com/get-presigned-urlEjemplo 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"
}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'Detectar PDF
Envíe un PDF que ya se haya subido al almacenamiento de objetos.
Cuerpo de la solicitud
url(obligatorio): URL pública en almacenamiento de objetos del PDF subido.key(obligatorio): Su clave API.model: `pdf_detector/v1`, `pdf_detector/v3`, `pdf_detector/v4` o `pdf_detector` (más reciente). El valor predeterminado es `pdf_detector/v4`.
POST https://detect-text.truthscan.com/detect-pdfEjemplo de solicitud — predeterminado (v4 / más reciente)
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 — fijar v1 (metadatos de generación por IA)
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",
"model": "pdf_detector/v1"
}'Ejemplo de respuesta
{
"id": "77565038-9e3d-4e6a-8c80-e20785be5ee9",
"model": "pdf_detector/v4",
"result_details": null,
"status": "pending",
"retry_count": 0
}La respuesta contiene el ID de documento asignado por el servidor. Use `POST /query` para consultar resultados. El tiempo típico de finalización es de unos segundos.
Consulta
Consulte el estado y los resultados de detección PDF por ID de documento (mismo endpoint que la detección de texto). El formato de respuesta depende del `model` usado en el trabajo.
POST https://detect-text.truthscan.com/queryEjemplo de solicitud
curl -X 'POST' \
'https://detect-text.truthscan.com/query' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"id": "DOCUMENT-ID-GOES-HERE"
}'Ejemplo de respuesta — v1 huella de IA encontrada
{
"id": "077eaa29-db75-4266-8eae-8a49d41c25ad",
"model": "pdf_detector/v1",
"status": "done",
"label": "Tampering Detected",
"result_details": {
"prediction": "Grok",
"base_category": "Possibly AI Generated/Edited"
},
"result_categories": null,
"source_details": {
"source": "Grok",
"confidence": null,
"credits_deducted": null
},
"retry_count": 0
}Campos v1
label: "Tampering Detected" cuando se marca; "No Tampering Detected" en caso contrario.result_details.prediction: Nombre específico de herramienta (p. ej. "Grok", "ChatGPT"), "AI Generated" genérico o "No Tampering Detected".result_details.base_category: "Possibly AI Generated/Edited" o "No Tampering Detected".source_details.source: Fuente atribuida en una coincidencia; null cuando no se encuentra huella.
Ejemplo de respuesta — v1 sin huella de IA
{
"id": "077eaa29-db75-4266-8eae-8a49d41c25ad",
"model": "pdf_detector/v1",
"status": "done",
"label": "No Tampering Detected",
"result_details": {
"prediction": "No Tampering Detected",
"base_category": "No Tampering Detected"
},
"result_categories": null,
"source_details": null,
"retry_count": 0
}Ejemplo de respuesta — v3 manipulación estructural detectada
{
"id": "5395e0d8-41d6-4e30-add7-97b8a7ffbbc9",
"model": "pdf_detector/v3",
"status": "done",
"label": "Tampered",
"result_details": {
"status": "ok",
"structure": {
"prediction": "Tampered",
"rule": { "hidden": "high" },
"max_severity": "high",
"signals_flagged": 1,
"signals": {
"hidden": {
"label": "Hidden Text",
"flagged": true,
"severity": "high",
"findings": [
{
"severity": "high",
"detail": "Invisible or off-page text detected on page 1."
}
]
}
}
},
"detailed_explanation": "Hidden text was found on page 1 that is not visible in the rendered document."
}
}Ejemplo de respuesta — v3 sin manipulación detectada (Genuine)
{
"id": "5395e0d8-41d6-4e30-add7-97b8a7ffbbc9",
"model": "pdf_detector/v3",
"status": "done",
"label": "Genuine",
"result_details": {
"status": "ok",
"structure": {
"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."
}
}Ejemplo de respuesta — v4 (mismo formato que v3)
v4 devuelve el mismo formato de respuesta que v3. El campo `model` mostrará `pdf_detector/v4`.
Campos v3 / v4
label: Refleja `structure.prediction`: "Tampered", "Suspicious" o "Genuine".result_details.structure.signals: Desglose de la señal `hidden`. Incluye `label`, `flagged`, `severity` y `findings` (con `changes` opcional que muestra valores antes/después cuando están disponibles).result_details.detailed_explanation: Resumen en lenguaje natural de los hallazgos.
Niveles de veredicto
Tampered: Evidencia sólida de manipulación de contenido u origen generado por IA.Suspicious: Una o más señales detectadas, pero ninguna en el nivel de confianza más alto.Genuine: No se detectaron señales de manipulación.
Niveles de severidad
Cada hallazgo usa `"low"`, `"medium"` o `"high"` para indicar confianza.
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 Error | Significado |
|---|---|
| 400 | Bad Request -- Su solicitud es inválida. |
| 403 | Prohibido -- La clave de API no es válida o no hay créditos suficientes (1.000 por página del PDF). |
| 404 | Not Found -- El recurso especificado no existe. |
| 405 | Method Not Allowed -- Intentó acceder a un recurso con un método inválido. |
| 406 | Not Acceptable -- Solicitó un formato que no es JSON. |
| 410 | Gone -- El recurso en este endpoint ha sido eliminado. |
| 422 | Invalid Request Body -- El cuerpo de su solicitud está formateado incorrectamente o es inválido o tiene parámetros faltantes. |
| 429 | Too Many Requests -- ¡Está enviando demasiadas solicitudes! ¡Reduzca la velocidad! |
| 500 | Internal Server Error -- Tuvimos un problema con nuestro servidor. Intente nuevamente más tarde. |
| 503 | Service Unavailable -- Estamos temporalmente fuera de línea para mantenimiento. Intente nuevamente más tarde. |
¿Necesita Ayuda?
Para obtener más información sobre cómo usar nuestra API o para soporte técnico, contáctenos.
API Frequently Asked Questions
Find answers to the most common questions about our AI PDF detection API.