Skip to content

Obtener extracción

GET /v1/extractions/{id}

Recupera un registro de extracción individual por ID. Este endpoint se utiliza principalmente para consultar el resultado de una extracción asíncrona.

Pruébalo

Prueba este endpoint de forma interactiva en la Swagger UI.

Autorización requerida

Incluye tu clave API en el encabezado Authorization.

Solicitud

Encabezados

EncabezadoValorRequerido
AuthorizationBearer <token>

Parámetros de ruta

ParámetroTipoRequeridoDescripción
idstringEl ID de extracción devuelto por el endpoint Ejecutar extracción.

Ejemplos de código

bash
curl https://api.docmap.io/v1/extractions/extract_9k2m4n6p8q0r1s3t \
  -H "Authorization: Bearer dm_live_abc123def456ghi789jkl012mno345"
typescript
const apiKey = process.env.DOCMAP_API_KEY

const response = await fetch(
  'https://api.docmap.io/v1/extractions/extract_9k2m4n6p8q0r1s3t',
  { headers: { 'Authorization': `Bearer ${apiKey}` } },
)

const { data } = await response.json()
console.log(data.status, data.extractedData)
python
import requests

api_key = "dm_live_abc123def456ghi789jkl012mno345"

response = requests.get(
    "https://api.docmap.io/v1/extractions/extract_9k2m4n6p8q0r1s3t",
    headers={"Authorization": f"Bearer {api_key}"},
)

data = response.json()["data"]
print(data["status"], data["extractedData"])

Respuesta

Estado: 200 OK

El cuerpo de la respuesta está envuelto en un objeto data que contiene un solo registro de extracción.

Campos

Cada campo es el mismo que en la respuesta de Ejecutar extracción.

CampoTipoDescripción
idstringID único de extracción.
userIdstringID del usuario propietario de esta extracción.
templateIdstringID de la plantilla utilizada para la extracción.
templateNamestringNombre visible de la plantilla utilizada.
fileNamestringNombre original del archivo del documento subido.
status"processing" | "completed" | "failed"Estado actual de la extracción.
extractedDataobject | nullDatos extraídos que coinciden con los campos de la plantilla. null mientras se procesa o si falló.
errorstring | nullMensaje de error si falló. null en caso contrario.
variablesVariable[]Array de definiciones de variables de la plantilla utilizadas durante la extracción.
source"dashboard" | "api"Cómo se activó la extracción.
runIdstring | nullID de ejecución por lotes, si se proporcionó.
processingTimeMsnumber | nullDuración total del procesamiento en milisegundos. null mientras aún se procesa.
createdAtstringMarca de tiempo ISO 8601 de cuándo se creó la extracción.

Ejemplo (completada)

json
{
  "data": {
    "id": "extract_9k2m4n6p8q0r1s3t",
    "userId": "uid_a1b2c3d4e5f6",
    "templateId": "tmpl_8f3a2b1c4d5e6f7g",
    "templateName": "Invoice Template",
    "fileName": "invoice-2024-001.pdf",
    "status": "completed",
    "extractedData": {
      "vendor_name": "Acme Corp",
      "invoice_number": "INV-2024-001",
      "total_amount": 1250.00
    },
    "error": null,
    "variables": [
      {
        "name": "vendor_name",
        "type": "string",
        "description": "Name of the vendor or supplier"
      }
    ],
    "source": "api",
    "runId": null,
    "processingTimeMs": 3842,
    "createdAt": "2024-11-20T14:30:00.000Z"
  }
}

Ejemplo (en proceso)

json
{
  "data": {
    "id": "extract_9k2m4n6p8q0r1s3t",
    "userId": "uid_a1b2c3d4e5f6",
    "templateId": "tmpl_8f3a2b1c4d5e6f7g",
    "templateName": "Invoice Template",
    "fileName": "invoice-2024-001.pdf",
    "status": "processing",
    "extractedData": null,
    "error": null,
    "variables": [
      {
        "name": "vendor_name",
        "type": "string",
        "description": "Name of the vendor or supplier"
      }
    ],
    "source": "api",
    "runId": null,
    "processingTimeMs": null,
    "createdAt": "2024-11-20T14:30:00.000Z"
  }
}

Patrón de consulta periódica

Cuando uses extracciones asíncronas, consulta este endpoint hasta que el estado ya no sea "processing":

typescript
async function pollExtraction(extractionId: string, apiKey: string) {
  const maxAttempts = 30
  const intervalMs = 2000

  for (let i = 0; i < maxAttempts; i++) {
    const response = await fetch(
      `https://api.docmap.io/v1/extractions/${extractionId}`,
      { headers: { 'Authorization': `Bearer ${apiKey}` } },
    )

    const { data } = await response.json()

    if (data.status !== 'processing') {
      return data
    }

    await new Promise((resolve) => setTimeout(resolve, intervalMs))
  }

  throw new Error('Extraction timed out')
}
python
import time
import requests

def poll_extraction(extraction_id: str, api_key: str):
    max_attempts = 30
    interval_s = 2

    for _ in range(max_attempts):
        response = requests.get(
            f"https://api.docmap.io/v1/extractions/{extraction_id}",
            headers={"Authorization": f"Bearer {api_key}"},
        )

        data = response.json()["data"]

        if data["status"] != "processing":
            return data

        time.sleep(interval_s)

    raise TimeoutError("Extraction timed out")

TIP

Se recomienda un intervalo de consulta de 2 segundos. La mayoría de las extracciones se completan en 5--30 segundos.

Errores

EstadoCódigoDescripción
401UNAUTHORIZEDClave API / token faltante, inválido o expirado.
403FORBIDDENLa extracción pertenece a un usuario diferente.
404NOT_FOUNDNo existe ninguna extracción con el ID especificado.

Documentación de la API de DocMap