Guías

Automatizar un flujo

El recorrido completo: de los catálogos a un resultado consultable, sin abrir Kaax.

  1. 1

    Leé los catálogos primero

    Los reportType y las estadísticas válidas los edita el super admin de Kaax. Codificarlos es garantizar que se rompa cuando alguien agregue un índice. Ojo con `defaults.mapResolution`: es un número (72, 150 o 300) y mandarlo como texto se rechaza por el tipo.

    javascript
    const types = await kaax("/api/v2/catalogs/report-types");
    const vi = await kaax("/api/v2/catalogs/vegetation-index-defaults");
  2. 2

    Armá la plantilla desde un preset

    Escribir `layouts` a mano es escribir coordenadas normalizadas 0..1 anidadas. El preset ya trae la estructura; solo cambiás el nombre.

    javascript
    const { data: presets } = await kaax("/api/v2/templates/presets");
    const preset = presets.find((p) => p.key === "counting-density");
    
    const template = await kaax("/api/v2/templates", {
      method: "POST",
      body: { ...preset.seedPayload, name: "Densidad — Banano Álamos" },
    });
  3. 3

    Resolvé el lote y la configuración

    Solo los lotes con área medida se pueden ejecutar: uno sin geometría no se puede casar con un raster y la cola lo salta. El `tag` de la configuración es lo que un paso de cola referencia, y su `modelId` es el modelo de detección atado a esa etiqueta.

    javascript
    const { data: lots } = await kaax("/api/v2/lots?withGeometry=true");
    const { data: configs } = await kaax("/api/v2/analysis-configs");
    
    const tag = configs.counting[0]?.tag;
  4. 4

    Seguí la cola y recogé el resultado

    Kaax no manda notificaciones push, así que el estado se consulta. Cuando un paso queda en `completed`, su `analysisId` es el puente al resultado.

    javascript
    const { data: runs } = await kaax("/api/v2/queue-runs?status=completed");
    
    const done = runs.flatMap((r) => r.steps).filter((s) => s.analysisId);
    const { data: analyses } = await kaax("/api/v2/analyses?limit=100");
    
    for (const step of done) {
      const result = analyses.find((a) => a._id === step.analysisId);
    }

Encolar sigue siendo manual. Crear y ejecutar una cola consume créditos y almacenamiento, así que la API pública solo lee. Se arma desde el panel o conversando con el MCP.