Você pode testar esta rota diretamente em nossa documentação interativa.

Se a nota for menor que 5, o endpoint pode criar issues automaticamente e devolver os detalhes no mesmo retorno.

Endpoint

POST /api/externalAPIs/public/advisor/chunkAdvisor

Parâmetros

hostId
string
required

ID do host.

chunkId
string

UUID do chunk a ser analisado.

content
string

Conteúdo candidato para análise sem persistência.

model
string
default: "meta-llama/llama-3.1-8b-instruct"

Modelo LLM a ser usado.

provider
string
default: "openrouter"

Provider LLM a ser usado.

completionTimeoutMs
number
default: "60000"

Timeout em milissegundos para a chamada LLM.

Envie exatamente um entre chunkId e content.

Exemplo

curl -X POST {{BASE_URL}}/api/externalAPIs/public/advisor/chunkAdvisor \
  -H "Authorization: Bearer {{TOKEN}}" \
  -H "Content-Type: application/json" \
  -d '{
    "chunkId": "bf047297-ff98-4b4d-b6b7-07f8f50ca36c",
    "hostId": "b302f8ad-991b-411c-beb3-12cd648c95cc"
  }'
curl -X POST {{BASE_URL}}/api/externalAPIs/public/advisor/chunkAdvisor \
  -H "Authorization: Bearer {{TOKEN}}" \
  -H "Content-Type: application/json" \
  -d '{
    "content": "Texto de exemplo do candidato a chunk para validar qualidade.",
    "hostId": "b302f8ad-991b-411c-beb3-12cd648c95cc"
  }'

Resposta

O retorno agora vem envelopado no formato { code, data, message }.
Os campos da análise (score, issueData, costControl, etc.) ficam dentro de data.

{
  "code": 200,
  "data": {
    "score": 4.9,
    "fromCache": false,
    "cachedAt": "2026-03-17T17:00:44.069Z",
    "issueTriggered": false,
    "issueData": {
      "persisted": false,
      "reportId": null,
      "addedCount": 0,
      "keptCount": 0,
      "updatedCount": 0,
      "resolvedCount": 0,
      "reopenedCount": 0,
      "added": [],
      "kept": [],
      "updated": [],
      "createdIssuesCount": 0,
      "skippedDuplicateIssuesCount": 0,
      "detectedIssuesCount": 10,
      "issues": [
        {
          "snippet": "Suporte técnico: resolvemos problemas.",
          "practice": "1. Tamanho ideal dos chunks",
          "problemDescription": "O chunk tem apenas 13 tokens, o que é muito pequeno para ter contexto semântico relevante.",
          "recommendation": "Aumente o tamanho do chunk para incluir mais informações relevantes e contexto semântico.",
          "score": 5
        }
      ]
    },
    "costControl": {
      "usage": {
        "inputTokens": 2191,
        "outputTokens": 893,
        "totalTokens": 3084
      },
      "cost": {
        "totalCost": 0.00171463,
        "currency": "USD",
        "pricingVersion": "v1_2026_03"
      },
      "control": {
        "decision": "allow",
        "reasons": []
      },
      "references": {
        "caller": "advisor/chunks/chunkAdvisor"
      },
      "reconciliation": {
        "available": true,
        "withinTolerance": true,
        "reason": "ok"
      }
    }
  },
  "message": "OK"
}

Campos da Resposta

code
number

Código HTTP retornado pela API (ex.: 200).

message
string

Mensagem de status da resposta (ex.: OK).

data
object

Payload da análise do chunk.

Cache de 40 segundos. Aguarde pelo menos 40 segundos após alterações no Chunk antes de solicitar nova análise.

Para sugestões detalhadas de alteração, use o endpoint Insight por Demanda.

Erros

CódigoDescrição
400Erro de validação (ex.: envie exatamente um entre chunkId e content)
401Token ausente ou inválido
403Credenciais inválidas ou token ausente
500Erro interno do servidor