REST API
Imagen, PDF " procesamiento de archivos API
Todos los procesadores de archivos comparten un punto final de trabajo. Elija la operación con toolName; encuentre parámetros y ejemplos completos para cada herramienta a continuación.
- Registrarse, verifique su correo electrónico y regístrese en una cuenta gratuita.
- Configuración abierta → API claves (también disponible en el menú del usuario), ingrese un nombre y cree una clave.
- La clave completa se muestra una vez. Copiar a su variable de entorno API_KEY lado servidor. Revoque y reemplace una clave perdida.
Authorization: Bearer $API_KEY
Subidas, trabajos, votación, descargas y gestión de reglas requieren una clave API válida o una sesión web firmada. Utilice una tecla API para scripts, MCP y automatización; nunca la ponga en código de frontend. Las teclas revocadas dejan de funcionar inmediatamente.
Cada clave permite hasta las solicitudes 120/minuto por defecto, incluyendo la votación. Las cuotas de trabajo se comparten a través de la cuenta y las claves: predeterminados gratuitos a 20/día, Pro a 100/día. Lea GET /api/tools/entitlements para la configuración actual.
| Solicitud | Entrada / respuesta |
|---|---|
| POST /api/tools/files | multipart campo archivo → data.file.id; un archivo por subida |
| POST /api/tools/jobs | {toolName, input: {fileId / fileIds, execution: "async", …}} → data.job.id |
| GET /api/tools/jobs?id=JOB_ID | data.job.status + data.job.result |
| GET /api/tools/artifacts?id=ARTIFACT_ID&download=1 | Descarga binaria autenticada; ID at data.job.result.data.artifact.id |
| DELETE /api/tools/jobs?id=JOB_ID | Cancelar un trabajo pendiente; los trabajos terminales pueden devolver 409 |
HTTP 202 (status: accepted) no está terminada. Votar cada 2 segundos hasta que los datos.job.status se complete, se cancele o vence. Lea los datos de éxito en data.job.result.data y los detalles de fallo en data.job.result.details. Inspection devuelve JSON sin un archivo de descarga.
Modo: must_pass requiere que cada regla pase; best_effort puede devolver a un candidato con advertencias. Envía reglas de línea o un ruleId salvado, nunca ambas. Herramientas de un solo cálculo aceptan un fileId por trabajo; crea un trabajo por imagen.
Subidas y artefactos normalmente duran 24 horas; uso expiresAt. Establecer Idempotency-Key en la creación de empleo y reutilizarlo con el mismo cuerpo después de fallas de red. 25 MB combinados, 100 páginas, 40 MP y hasta 10 entradas. Pro permite 100 entradas; los límites del motor siguen vigentes.
3. Parámetros y ejemplos por herramienta
validate_filePOST /api/tools/validateEl archivo contiene los hechos suministrados y las reglas contiene restricciones. No se cargan ni inspeccionan los bytes. Guardado ruleId requiere autenticación.
{
"file": {
"name": "example.png",
"mimeType": "image/png",
"bytes": 180000
},
"rules": {
"maxBytes": 200000
},
"mode": "must_pass"
}Abrir herramienta y generar código de su formulariocompress_imagePOST /api/tools/jobsfileId, targetBytes (bytes), formato, allowDownscale; reglas.maxBytes puede validar la salida.
{
"toolName": "compress_image",
"input": {
"fileId": "FILE_ID",
"mode": "best_effort",
"format": "jpeg",
"targetBytes": 200000,
"allowDownscale": true,
"execution": "async"
}
}Abrir herramienta y generar código de su formularioconvert_imagePOST /api/tools/jobsfileId, formato; fondo opcional (#RRGGBB) y dpi (JPEG/PNG únicamente).
{
"toolName": "convert_image",
"input": {
"fileId": "FILE_ID",
"mode": "best_effort",
"format": "webp",
"execution": "async"
}
}Abrir herramienta y generar código de su formularioresize_imagePOST /api/tools/jobsfileId, al menos uno de ancho/altura (pixels), ajuste (contain/cover), allowUpscale, formato, dpi.
{
"toolName": "resize_image",
"input": {
"fileId": "FILE_ID",
"mode": "best_effort",
"width": 1200,
"fit": "contain",
"allowUpscale": false,
"format": "jpeg",
"execution": "async"
}
}Abrir herramienta y generar código de su formulariocrop_imagePOST /api/tools/jobsfileId, cultivo: {x,y,width,height} en píxeles desde la esquina superior izquierda; el formato selecciona el tipo de salida.
{
"toolName": "crop_image",
"input": {
"fileId": "FILE_ID",
"mode": "best_effort",
"crop": {
"x": 0,
"y": 0,
"width": 200,
"height": 200
},
"format": "png",
"execution": "async"
}
}Abrir herramienta y generar código de su formularioremove_backgroundPOST /api/tools/jobsQuita el fondo y descarga un PNG transparente.
{
"toolName": "remove_background",
"input": {
"fileId": "FILE_ID",
"execution": "async"
}
}Abrir herramienta y generar código de su formularioinspect_imagePOST /api/tools/jobsfileId; devuelve las dimensiones descodificadas, DPI y EXIF/GPS hechos.
{
"toolName": "inspect_image",
"input": {
"fileId": "FILE_ID",
"execution": "async"
}
}Abrir herramienta y generar código de su formularioconvert_image_to_pdfPOST /api/tools/jobsfileIds en orden de página; pageSize (original/a4/letter), pageOrientation (portrait/landscape), marginPoints (A/C.)0–144 pt), pageDpi (A/C.)36–600).
{
"toolName": "convert_image_to_pdf",
"input": {
"fileIds": [
"FILE_ID_1",
"FILE_ID_2"
],
"mode": "best_effort",
"pageSize": "a4",
"pageOrientation": "portrait",
"marginPoints": 24,
"pageDpi": 150,
"execution": "async"
}
}Abrir herramienta y generar código de su formularioinspect_filePOST /api/tools/jobsfileId; devuelve páginas PDF reales, dimensiones, fuentes y datos de imagen incrustados.
{
"toolName": "inspect_file",
"input": {
"fileId": "FILE_ID",
"execution": "async"
}
}Abrir herramienta y generar código de su formulariocompress_pdfPOST /api/tools/jobsfileId; rules.maxBytes establece el objetivo en bytes. El modo más estricto falla con un informe de reglas si el objetivo no se puede cumplir.
{
"toolName": "compress_pdf",
"input": {
"fileId": "FILE_ID",
"mode": "best_effort",
"rules": {
"maxBytes": 200000
},
"execution": "async"
}
}Abrir herramienta y generar código de su formulariomerge_pdfsPOST /api/tools/jobsfileIds, al menos 2, fusionado en orden de matriz; reglas opcionales validan el resultado.
{
"toolName": "merge_pdfs",
"input": {
"fileIds": [
"FILE_ID_1",
"FILE_ID_2"
],
"mode": "best_effort",
"execution": "async"
}
}Abrir herramienta y generar código de su formulariosplit_pdfPOST /api/tools/jobsfileId, pageRange (por ejemplo, 1-3,5,2) o matriz de páginas; los números de página comienzan en 1 y pueden ser reordenados o repetidos.
{
"toolName": "split_pdf",
"input": {
"fileId": "FILE_ID",
"mode": "best_effort",
"pageRange": "1-2",
"execution": "async"
}
}Abrir herramienta y generar código de su formulariorotate_pdfPOST /api/tools/jobsfileId, rotación (90/180/270); opcional pageRange/pages, omitido para rotar todas las páginas.
{
"toolName": "rotate_pdf",
"input": {
"fileId": "FILE_ID",
"mode": "best_effort",
"rotation": 90,
"pageRange": "1",
"execution": "async"
}
}Abrir herramienta y generar código de su formulariocreate_submission_packagePOST /api/tools/jobsfileIds, packageName, namingTemplate; plantilla gratuita: {index}-{name}.{ext}. Las plantillas personalizadas requieren Pro. ZIP incluye archivos, informes manifiestos y por archivo.
{
"toolName": "create_submission_package",
"input": {
"fileIds": [
"FILE_ID_1",
"FILE_ID_2"
],
"mode": "best_effort",
"packageName": "submission-package",
"namingTemplate": "{index}-{name}.{ext}",
"execution": "async"
}
}Abrir herramienta y generar código de su formulario401: llave desaparecida, inválida o revocada. 403: cuenta/key carece de permiso. 429 / rate_limited: tarifa de solicitud o cuota diaria alcanzada; retroceder sólo cuando se permite la reinstalación. invalid_input: Parámetros de verificación. subscription_required: la capacidad del plan necesaria. processing_failed/rule failures: inspectir error.details. Polling HTTP 200 solo no significa que el procesamiento haya tenido éxito.
El catálogo, OpenAPI y los artefactos suministrados /api/tools/validate endpoint son públicos. El procesamiento web de invitados tiene una sesión separada / ruta limitada por IP, no credenciales de automatización anónimas. Los archivos, trabajos, reglas y artefactos son controlados por el propietario.
Utiliza /api/tools/rules (GET/POST/DELETE) para reglas guardadas y GET /api/tools/jobs para la historia. OpenAPI contiene esquemas completos. MCP y REST compartir herramientas y cuotas de cuenta. Pro checkout y top-ups no están abiertos todavía.
# CLI: ATTACHREADY_BASE_URL + ATTACHREADY_API_KEY
node scripts/tools-cli.mjs run convert_image --input '{"fileId":"FILE_ID","format":"webp"}' --wait