Report Nama App

https://ai-search-api.nama.ai/api/v1/threads

Guia de Integração — API de Relatórios (Report)

Referência prática para consumir os endpoints de relatório do AI Search. Todos os endpoints retornam JSON (exceto o download, que retorna .xlsx) e exigem autenticação via Bearer token.


Índice

  1. Autenticação
  2. Permissões por Role
  3. Visão Geral dos Endpoints
  4. GET /api/v1/overview
  5. GET /api/v1/credits_resume
  6. GET /api/v1/token_resume
  7. GET /api/v1/threads
  8. GET /api/v1/report_download
  9. Erros Comuns
  10. Exemplos com cURL

1. Autenticação

Todos os endpoints exigem o header Authorization. Há duas formas de autenticar:

Bearer Token de usuário (mais comum)

Authorization: Bearer <seu_jwt_token>

Obtido no login via plataforma Nama. O token identifica o usuário e sua organização.

Token de Projeto

Authorization: Bearer <project_token>

Token fixo de um projeto específico, utilizado para integrações de serviço.

2. Permissões por Role

Os endpoints de relatório exigem roles específicos. A tabela abaixo mostra o acesso por role:

Roleoverviewcredits_resumetoken_resumethreadsreport_download
OWNER
ADMIN
EDITOR
VIEWER

Tentativas de acesso sem permissão retornam 403 Forbidden.


3. Visão Geral dos Endpoints

EndpointMétodoO que retorna
/api/v1/overviewGETDashboard geral: plano, limites, uso de créditos e projetos
/api/v1/credits_resumeGETConsumo de créditos no período com histórico e top datamodels
/api/v1/token_resumeGETConsumo de tokens no período com histórico e top datamodels
/api/v1/threadsGETLista paginada de conversas com suas interações
/api/v1/report_downloadGETDownload de relatório completo em formato .xlsx

4. GET /api/v1/overview

Retorna um painel consolidado da organização: plano contratado, limites, uso de créditos e contadores de projetos.

Query Parameters

ParâmetroTipoObrigatórioPadrãoDescrição
start_dateYYYY-MM-DDNão1º dia do mês atualInício do período
end_dateYYYY-MM-DDNãoÚltimo dia do mês atualFim do período

Exemplo de Requisição

GET /api/v1/overview?start_date=2026-03-01&end_date=2026-03-31
Authorization: Bearer <token>

Resposta de Sucesso (200 OK)

{
  "user": "[email protected]",
  "plan": "Pro",
  "end_date": "2026-03-31",
  "plan_interval": "monthly",
  "trial_period": false,
  "did_trial_period": true,
  "datamodel_count": "3 / 10",
  "private_smartpage_count": "2 / 5",
  "private_smartpage_limit": 5,
  "public_smartpage_count": "1 / 3",
  "public_smartpage_limit": 3,
  "private_smartpage_user_count": "4 / 20",
  "private_smartpage_user_limit": 20,
  "credit_limit": 1000000,
  "addon": {
    "addon_name": "Extra Credits Pack",
    "credits": 500000
  },
  "total_credit_used": 234567,
  "overflow_credits_usage": 0,
  "percentage_credit_used": 23.46,
  "project_data": {
    "datamodels": 3,
    "datasets": 5,
    "contents": 120,
    "smartpages": 3,
    "private_smartpages": 2,
    "public_smartpages": 1,
    "private_smartpage_users": 4,
    "indexed_tokens_limit": 5000000,
    "total_indexed_tokens": 1200000,
    "total_processed_tokens": 234567,
    "total_api_requests": 890
  }
}

Campos Principais

CampoDescrição
planNome do plano ativo
plan_intervalmonthly ou yearly
credit_limitLimite total de créditos do plano
total_credit_usedTotal de créditos consumidos no período
percentage_credit_usedPercentual do limite de créditos utilizado
overflow_credits_usageCréditos consumidos além do limite (excedente)
addonPacote adicional de créditos contratado (ou null)
project_dataContadores de recursos do projeto (datamodels, datasets, tokens, etc.)

5. GET /api/v1/credits_resume

Retorna o histórico de consumo de créditos (tokens com fee) no período, comparação com o período anterior e os top 5 datamodels por consumo.

Query Parameters

ParâmetroTipoObrigatórioPadrãoDescrição
start_dateYYYY-MM-DDNão1º dia do mês atualMínimo: 2025-02-01
end_dateYYYY-MM-DDNãoÚltimo dia do mês atual

Exemplo de Requisição

GET /api/v1/credits_resume?start_date=2026-03-01&end_date=2026-03-31
Authorization: Bearer <token>

Resposta de Sucesso (200 OK)

{
  "credits": [
    {
      "date": "2026-03-01",
      "workspace_credits": 1200,
      "smartpage_credits": 800,
      "api_credits": 12345
    },
    {
      "date": "2026-03-02",
      "workspace_credits": 900,
      "smartpage_credits": 600,
      "api_credits": 9800
    }
  ],
  "credits_usage_details": {
    "total_credits_used": 234567,
    "credits_previous_period_comparison": {
      "current_period_usage": 234567,
      "previous_period_usage": 198000,
      "percent_difference": 18.47
    },
  },
  "top_datamodels_by_credit_usage": [
    {
      "name": "produto-faq",
      "dataset": "base-conhecimento",
      "credits_used": 89000,
      "tokens_processed": 80000,
      "api_requests": 320,
      "percentage": 37.95
    }
  ]
}

Campos Principais

CampoDescrição
creditsArray com consumo por data (granularidade automática)
credits[].workspace_creditsCréditos consumidos via workspace
credits[].smartpage_creditsCréditos consumidos via smartpage
credits[].api_creditsCréditos consumidos via API
total_credits_usedTotal do período selecionado
percent_differenceVariação % vs. período anterior (positivo = aumento)
top_datamodels_by_credit_usageTop 5 datamodels com maior consumo

6. GET /api/v1/token_resume

Retorna o histórico de tokens processados no período, comparação com o período anterior e os top 5 datamodels por uso de tokens.

Query Parameters

ParâmetroTipoObrigatórioPadrãoDescrição
start_dateYYYY-MM-DDNão1º dia do mês atualMínimo: 2025-02-01
end_dateYYYY-MM-DDNãoÚltimo dia do mês atual
datamodel_namestringNãoFiltra por datamodel específico
offsetintNão0Offset para paginação
limitintNão30Limite de itens por página

Exemplo de Requisição

GET /api/v1/token_resume?start_date=2026-03-01&end_date=2026-03-31
Authorization: Bearer <token>

Resposta de Sucesso (200 OK)

{
  "tokens": [
    {
      "date": "2026-03-01",
      "processed_tokens": 45000,
      "api_requests": 120
    },
    {
      "date": "2026-03-02",
      "processed_tokens": 38000,
      "api_requests": 98
    }
  ],
  "token_usage_details": {
    "total_tokens_processed": 450000,
    "tokens_previous_period_comparison": {
      "current_period": 450000,
      "previous_period": 390000
    },
    "usage_by_origin": {
      "smartpage": 90000,
      "api": 340000,
      "workspace": 20000
    }
  },
  "top_datamodels_by_token_usage": [
    {
      "name": "produto-faq",
      "dataset": "base-conhecimento",
      "tokens_processed": 180000,
      "api_requests": 350,
      "percentage": 40.0
    }
  ]
}

Diferença entre Tokens e Créditos

  • Tokens (token_resume): volume bruto de tokens processados pelo modelo de linguagem.
  • Créditos (credits_resume): tokens com multiplicador de fee aplicado (varia por modelo e tipo de operação). É a unidade de cobrança efetiva.

7. GET /api/v1/threads

Lista paginada das conversas (threads) da organização, com todas as interações de cada conversa. Ideal para análise de qualidade, auditoria e monitoramento de uso.

Query Parameters

ParâmetroTipoObrigatórioPadrãoDescrição
start_dateYYYY-MM-DDNão2025-02-01Início do período
end_dateYYYY-MM-DDNãoFim do período (sem limite padrão)
questionstringNãoBusca textual no campo pergunta (case-insensitive)
evaluationstring (CSV)NãoFiltra por avaliação: positive, negative, neutral
feedbacktrue/falseNãotrue = apenas com feedback; false = apenas sem feedback
datamodelstring (CSV)NãoNomes de datamodels separados por vírgula
interaction_typesstring (CSV)Nãosearch, stream, deepsearch
limitintNão-Máximo de threads por página
offsetintNão0Offset para paginação

Exemplo de Requisição

# Listar threads com avaliação negativa do datamodel "suporte"
GET /api/v1/threads?evaluation=negative&datamodel=suporte&limit=50&offset=0
Authorization: Bearer <token>

Resposta de Sucesso (200 OK)

{
  "count": 42,
  "next": true,
  "previous": false,
  "results": [
    {
      "conversation_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "conversation_identifier": "user-session-xyz",
      "created_at": "2026-03-10T14:00:00Z",
      "updated_at": "2026-03-10T14:05:32Z",
      "interactions": [
        {
          "identifier": "8d2e1c3a-0001-4abc-b000-000000000001",
          "type": "stream",
          "interaction_type": "Stream",
          "question": "Qual é o prazo de entrega?",
          "content": "O prazo padrão é de 5 a 7 dias úteis...",
          "datamodel": "suporte",
          "dataset": "politicas-entrega",
          "generative_model": "gpt-4o",
          "preset": "default",
          "preset_id": 1,
          "project_id": 7,
          "project_name": "Portal Suporte",
          "total_tokens": 520,
          "total_tokens_with_fee": 572,
          "prompt_tokens": 320,
          "completion_tokens": 200,
          "evaluation": "positive",
          "feedback": "Resposta clara e completa",
          "feedback_options": null,
          "user": {
            "name": "Maria Silva",
            "email": "[email protected]"
          },
          "api_call_id": 1042,
          "created_at": "2026-03-10T14:00:00Z",
          "updated_at": "2026-03-10T14:00:05Z",
          "extra": {},
          "search": {},
          "user_prompt": "Qual é o prazo de entrega?",
          "template_prompt": "Você é um assistente de suporte..."
        }
      ]
    }
  ]
}

Campos Principais

CampoDescrição
countTotal de threads no filtro aplicado
nexttrue se há mais páginas; false caso contrário
results[].conversation_idUUID único da conversa
results[].interactionsArray com todas as interações da conversa
interactions[].typeTipo da interação: search, stream, deepsearch
interactions[].questionPergunta feita pelo usuário
interactions[].contentResposta gerada pelo modelo
interactions[].evaluationAvaliação do usuário: positive, negative, neutral ou null
interactions[].feedbackTexto de feedback livre deixado pelo usuário
interactions[].total_tokensTokens totais consumidos na interação
interactions[].total_tokens_with_feeTokens com multiplicador (= créditos usados)
interactions[].userDados do usuário que fez a pergunta
interactions[].generative_modelModelo de LLM utilizado (ex: gpt-4o)

8. GET /api/v1/report_download

Gera e faz download de um arquivo Excel (.xlsx) com até três abas: resumo de créditos, resumo de tokens e lista de threads.

Query Parameters

ParâmetroTipoObrigatórioPadrãoDescrição
start_dateYYYY-MM-DDNão2025-02-01Início do período
end_dateYYYY-MM-DDNãoData atualFim do período
sectionstringNãoallall, credits, tokens ou threads
datamodel_idintNãoFiltra por ID do datamodel
datamodel_namestringNãoFiltra por nome do datamodel
interaction_typesstring (CSV)Nãosearch, stream, deepsearch
languageen / ptNãoenIdioma dos cabeçalhos das colunas
limitintNão10000Limite de threads incluídas na aba Threads

Abas do Excel gerado

AbaDisponível quando section
Credits Resumeall ou credits
Tokens Resumeall ou tokens
Threadsall ou threads

Exemplo de Requisição

# Baixar apenas a aba de threads em português
GET /api/v1/report_download?section=threads&start_date=2026-03-01&language=pt
Authorization: Bearer <token>

Resposta de Sucesso (200 OK)

Retorna um arquivo binário com os headers:

Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
Content-Disposition: attachment; filename="minha-org_report_2026-03-01_2026-03-31.xlsx"

Exemplo: salvar o arquivo com cURL

curl -X GET \\
  "<https://api.nama.ai/api/v1/report_download?section=all&start_date=2026-03-01&end_date=2026-03-31&language=pt>" \\
  -H "Authorization: Bearer <seu_token>" \\
  --output relatorio-marco-2026.xlsx

9. Erros Comuns

CódigoSignificadoCausa mais comum
401 UnauthorizedToken ausente ou inválidoHeader Authorization não enviado ou token expirado
403 ForbiddenSem permissãoRole do usuário não tem acesso ao endpoint
400 Bad RequestParâmetro inválidoFormato de data incorreto (usar YYYY-MM-DD) ou parâmetro desconhecido
404 Not FoundRecurso não encontradoOrganização ou projeto não existe para o token informado
500 Internal Server ErrorErro internoProblema no servidor — contate o suporte

Formato de erro

{
  "detail": "Você não tem permissão para realizar esta ação."
}

10. Exemplos com cURL

Overview do mês atual

curl -X GET \\
  "<https://api.nama.ai/api/v1/overview>" \\
  -H "Authorization: Bearer <seu_token>"

Consumo de créditos de um datamodel específico

curl -X GET \\
  "<https://api.nama.ai/api/v1/credits_resume?start_date=2026-03-01&end_date=2026-03-31&datamodel_name=suporte>" \\
  -H "Authorization: Bearer <seu_token>"

Threads com avaliação negativa nos últimos 7 dias

curl -X GET \\
  "<https://api.nama.ai/api/v1/threads?start_date=2026-03-09&end_date=2026-03-16&evaluation=negative&limit=100>" \\
  -H "Authorization: Bearer <seu_token>"

Threads filtrando por múltiplos datamodels e tipo de interação

curl -X GET \\
  "<https://api.nama.ai/api/v1/threads?datamodel=suporte,vendas&interaction_types=stream,deepsearch&limit=200>" \\
  -H "Authorization: Bearer <seu_token>"

Download do relatório completo

curl -X GET \\
  "<https://api.nama.ai/api/v1/report_download?section=all&language=pt&start_date=2026-03-01&end_date=2026-03-31>" \\
  -H "Authorization: Bearer <seu_token>" \\
  --output relatorio.xlsx