Guías

Automatizar um fluxo

O caminho completo: dos catálogos a um resultado consultável, sem abrir o Kaax.

  1. 1

    Leia os catálogos primeiro

    Os reportType e as estatísticas válidas são editados pelo super admin da Kaax. Fixá-los no código garante quebra no dia em que alguém adicionar um índice. Atenção a `defaults.mapResolution`: é um número (72, 150 ou 300), e enviá-lo como texto é recusado pelo tipo.

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

    Monte o template a partir de um preset

    Escrever `layouts` à mão é escrever coordenadas normalizadas 0..1 aninhadas. O preset já traz a estrutura; você só troca o nome.

    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

    Resolva o lote e a configuração

    Somente lotes com área medida podem rodar: um sem geometria não pode ser casado com um raster e a fila o ignora. A `tag` da configuração é o que um passo de fila referencia, e seu `modelId` é o modelo de detecção amarrado a essa 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

    Acompanhe a fila e colete o resultado

    O Kaax não envia notificações push, então o estado é consultado. Quando um passo fica `completed`, seu `analysisId` é a ponte para o 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);
    }

Enfileirar continua manual. Criar e executar uma fila consome créditos e armazenamento, então a API pública só lê. Monta-se pelo painel ou conversando com o MCP.