Referência · versão v1
Documentação da API e do MCP
Os números da sua conta na Jodda por HTTP, com uma chave de API, ou no seu assistente de IA, pelo Jodda MCP.
https://api.joddaia.com.br/v1Visão geral
Os dados da sua conta por HTTP, com os mesmos números do site e do assistente: vendas, pedidos, cancelamentos, produtos, ADS e finanças. Para levar o lucro pedido a pedido ao Power BI, a uma planilha ou ao seu próprio sistema.
| Item | Valor |
|---|---|
| Endereço base | https://api.joddaia.com.br/v1 |
| Acesso | Só leitura. Todas as rotas são GET. |
| Formato | application/json |
| Autenticação | Authorization: Bearer jda_… |
| Especificação | https://api.joddaia.com.br/v1/openapi.json OpenAPI, pública, sem chave |
- Só leitura: nenhuma rota altera dados da conta.
- Só o titular da conta cria a chave, em Integrações → Extensão e API → API da Jodda.
- A chave aparece uma vez só, na criação: guarde-a num lugar seguro. Ela não vence e vale até o titular revogá-la.
- A chave lê todas as páginas e todas as empresas da conta.
- Limite de 60 chamadas por minuto por chave.
- A conta é identificada pelo org_uuid, o "ID da conta" que aparece no Perfil, nunca por um número interno.
O uso da API segue a cláusula da API nos Termos de Uso.
Autenticação
Envie a chave no cabeçalho Authorization de toda chamada. Chave na URL (na query string) é recusada com 401, mesmo que seja válida.
Authorization: Bearer jda_…Parâmetros comuns
As rotas com período aceitam os mesmos três parâmetros. Use periodo ou inicio + fim, nunca os dois juntos.
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| periodo | hoje · ontem · 7d · 30d · mes_atual · mes_anterior | Não | Período pronto, calculado no horário de Brasília. 7d e 30d incluem hoje. O padrão muda por rota (veja cada uma). |
| inicio | data (AAAA-MM-DD) | Não | Primeiro dia do intervalo (inclusive). Vai sempre junto de fim. |
| fim | data (AAAA-MM-DD) | Não | Último dia do intervalo (inclusive). Vai sempre junto de inicio. |
- Um valor por parâmetro: o mesmo parâmetro repetido na URL dá 400.
- Parâmetro desconhecido dá 400, em vez de ser ignorado: um nome digitado errado não passa despercebido.
- Os filtros marketplace e conta usam o rótulo exato que aparece na Jodda: descubra os valores em GET /v1/filtros. Em GET /v1/ads/resumo, conta é o ID da loja, não o rótulo.
Erros
Toda resposta é JSON. O erro vem sempre como {"error": "...", "code": "..."}: a mensagem em português é para pessoas, e a integração decide pelo code, que não muda.
{
"error": "Mensagem em português explicando o que aconteceu.",
"code": "INVALID_PARAMS"
}| HTTP | code | Quando |
|---|---|---|
| 400 | INVALID_PARAMS | Parâmetro inválido ou desconhecido. |
| 401 | UNAUTHENTICATED | Sem chave, chave na URL, chave desconhecida ou revogada. |
| 401 | ORG_MUDOU | Quem criou a chave não é mais o titular da conta dela. |
| 403 | ORG_AMBIGUA | O titular tem duas contas na Jodda. |
| 403 | ASSINATURA_NECESSARIA | A conta está sem assinatura ativa. |
| 403 | FORBIDDEN_PAGE | A chave não tem acesso à página da rota. |
| 404 | NOT_FOUND | Rota ou pedido que não existe. |
| 429 | RATE_LIMITED | Mais de 60 chamadas no minuto. Espere o tempo do Retry-After. |
| 500 | INTERNAL | Erro da Jodda. Informe o X-Request-Id ao suporte. |
| 502 | UPSTREAM_AUTH | Falha entre serviços da Jodda. |
| 503 | UPSTREAM_UNAVAILABLE / TRANSIENT_DB | Indisponível no momento. Tente de novo. |
Cabeçalhos da resposta
| Cabeçalho | Descrição |
|---|---|
| X-Request-Id | Identifica a chamada para o suporte. |
| X-RateLimit-Limit | Chamadas por minuto permitidas para a chave. |
| X-RateLimit-Remaining | Quantas ainda restam no minuto. |
| Retry-After | Na resposta 429: quantos segundos esperar antes de chamar de novo. |
Limites
- Até 60 chamadas por minuto por chave de API.
- As respostas trazem X-RateLimit-Limit (o limite da chave) e X-RateLimit-Remaining (quantas chamadas ainda restam no minuto).
- Acima do limite, a resposta é 429 com o code RATE_LIMITED e o cabeçalho Retry-After, com os segundos até poder chamar de novo. Espere esse tempo antes de repetir a chamada.
Servidor MCP
A Jodda expõe um servidor MCP (Model Context Protocol) oficial. Claude, ChatGPT e outros clientes compatíveis passam a consultar a sua operação pedido a pedido — com autorização segura e os mesmos números da plataforma.
https://mcp.joddaia.com.br/mcp| Item | Valor |
|---|---|
| Protocolo | MCP por Streamable HTTP |
| Autorização | OAuth 2.1 com PKCE, com o login da Jodda. Sem chave de API; o registro do cliente é automático. |
| Ferramentas | 11 (veja Ferramentas) |
O que você precisa
- Uma conta ativa na Jodda (o mesmo login do app).
- Um assistente com suporte a conectores MCP remotos: Claude.ai, Claude Desktop, ChatGPT (modo desenvolvedor), Cursor, VS Code e similares.
- Nenhuma chave de API: a autorização é feita com o seu login da Jodda, via OAuth.
- Para o assistente cadastrar produtos ou atualizar o custo dos pedidos, marque a permissão de escrita na tela de autorização. A atualização de custo pede também acesso às páginas Pedidos e Produtos.
Como conectar
Leva menos de dois minutos. Em todos os casos, a URL é a mesma.
Claude
- No Claude.ai, abra Configurações → Conectores e clique em Adicionar conector personalizado.
- Cole a URL do servidor MCP e confirme.
- O Claude abre a tela de autorização da Jodda: faça login (se pedir), clique em Permitir e pergunte, por exemplo, "qual foi meu lucro este mês?".
ChatGPT
- No ChatGPT, abra Configurações → Aplicativos e conectores e ative o modo desenvolvedor.
- Clique em Criar, dê um nome (ex.: Jodda) e cole a URL do servidor MCP.
- O ChatGPT abre a tela de autorização da Jodda: faça login (se pedir) e clique em Permitir. Depois, ative o conector na conversa e pergunte.
Outros clientes MCP
- Qualquer cliente compatível com MCP por Streamable HTTP + OAuth funciona (Cursor, VS Code, Claude Desktop etc.).
- Adicione um servidor MCP remoto com a URL da Jodda; o registro do cliente é automático.
- Na primeira chamada o cliente abre a tela de autorização da Jodda: faça login e clique em Permitir.
Ferramentas
Três níveis por ferramenta. O avançado é onde a Jodda rende mais: quando o assistente cruza duas ou três consultas para chegar a uma decisão.
| Ferramenta | Nome técnico | Acesso | O que faz |
|---|---|---|---|
| Ping | ping | Somente leitura | Confirma que a conexão funciona, qual conta da Jodda está sendo lida e quais áreas o seu usuário pode consultar. |
| Filtros disponíveis | filtros_disponiveis | Somente leitura | Os rótulos exatos de marketplaces, contas (lojas) e CNPJs com venda recente — a base para qualquer pergunta filtrada. |
| Resumo de vendas | resumo_vendas | Somente leitura | Os mesmos números do Dashboard: faturamento, pedidos, ticket médio, lucro, margem, imposto, ADS e previsão do mês — por período, marketplace, conta e CNPJ. |
| Listar pedidos | listar_pedidos | Somente leitura | Pedidos de um período, uma linha por item/SKU, com total, comissão, frete, custo, imposto e lucro — filtráveis por métrica, logística, conta e texto. |
| Detalhar pedido | pedido | Somente leitura | Um pedido pelo número (do marketplace ou do ERP): logística, UF, totais e cada item com custo, comissão, frete e imposto. |
| Cancelamentos | cancelamentos | Somente leitura | Quantidade, faturamento e lucro perdidos, taxa de cancelamento e produtos mais cancelados, sempre com o período anterior para comparar. |
| Análise de ADS | resumo_ads | Somente leitura | ADS de Mercado Livre, Shopee e Amazon por CNPJ, conta, produto, anúncio ou campanha: gasto, receita atribuída, ACOS, ROAS, cliques, conversões e gasto sem venda. Na Amazon, só gasto e TACoS. |
| Análise de Produtos | consultar_produtos | Somente leitura | Resumo por produto, lista com piso de margem e ação sugerida, curva ABC, detalhe de SKU com custos e pedidos, anúncios do produto, kits e produtos sem custo. |
| Análise de Finanças | consultar_financas | Somente leitura | DRE como a tela mostra (receita líquida, margem de contribuição, lucro líquido, ponto de equilíbrio) e movimentações financeiras por período. |
| Editar cadastro | editar_cadastro_produto | Leitura e escrita | Cria ou edita produtos e kits de origem Jodda em duas etapas: prévia com o diff primeiro, gravação só depois da sua confirmação. Não altera produtos sincronizados de ERPs ou marketplaces. |
| Atualizar custo dos pedidos | atualizar_custo_pedidos | Leitura e escrita | Leva o custo atual de um produto do cadastro Jodda (e dos kits Jodda que o contêm) aos pedidos que já entraram, num período de até 30 dias. Muda só custo, lucro e margem dos pedidos: nada muda no marketplace nem no ERP. Primeiro a prévia, sem gravar; a gravação só acontece depois da sua confirmação. |
Exemplos de conversa por ferramenta
Resumo de vendas
Somente leituraresumo_vendasOs mesmos números do Dashboard: faturamento, pedidos, ticket médio, lucro, margem, imposto, ADS e previsão do mês — por período, marketplace, conta e CNPJ.
Gerencie as conexões no app
Em Integrações → Assistentes de IA você vê quais assistentes estão conectados, quando foram autorizados, o último uso e pode desconectar cada um com um clique.
Abrir Integrações na JoddaEndpoints
Todas as rotas são GET, respondem JSON e leem uma página do app: a chave precisa ter essa página liberada.
| Rota | O que faz | Página |
|---|---|---|
| GET /v1/conta | Conta e chave da chamada | — |
| GET /v1/filtros | Filtros disponíveis | Dashboard |
| GET /v1/vendas/resumo | Resumo de vendas | Dashboard |
| GET /v1/pedidos | Listar pedidos | Pedidos |
| GET /v1/pedidos/{numero} | Detalhar pedido | Pedidos |
| GET /v1/cancelamentos | Cancelamentos | Pedidos |
| GET /v1/produtos | Análise de Produtos | Produtos |
| GET /v1/ads/resumo | Análise de ADS | Produtos |
| GET /v1/financas | Análise de Finanças | Finanças |
GET/v1/conta
Conta e chave da chamada
De qual conta é a chave, quais páginas ela lê e quando foi criada. Sem parâmetros: o primeiro teste de quem integra.
- Página exigida
- nenhuma (qualquer chave válida)
- Resposta
- application/json
Parâmetros
Esta rota não recebe parâmetros.
Exemplo
curl "https://api.joddaia.com.br/v1/conta" \
-H "Authorization: Bearer $JODDA_API_KEY"import os
import requests
resposta = requests.get(
"https://api.joddaia.com.br/v1/conta",
headers={"Authorization": f"Bearer {os.environ['JODDA_API_KEY']}"},
timeout=30,
)
resposta.raise_for_status()
dados = resposta.json(){
"conta": {
"org_uuid": "5f0c2a4e-8b1d-4c7e-9a3f-2d6b8e1c4a70",
"paginas": ["dashboard", "pedidos", "produtos", "dre"],
"escopos": ["jodda:read"]
},
"chave": {
"prefixo": "jda_Ab12Cd34",
"nome": "Power BI do financeiro",
"criada_em": "2026-11-13 12:00:00"
},
"avisos": []
}GET/v1/filtros
Filtros disponíveis
Lista os rótulos exatos de marketplaces, contas (lojas) e CNPJs da conta da Jodda, para usar como filtro em GET /v1/vendas/resumo e GET /v1/pedidos. Chame antes de filtrar por marketplace ou conta: o filtro exige o texto exato e um rótulo errado devolve zero. Não devolve valores de venda.
- Página exigida
- Dashboard
- Resposta
- application/json
Parâmetros
Esta rota não recebe parâmetros.
Exemplo
curl "https://api.joddaia.com.br/v1/filtros" \
-H "Authorization: Bearer $JODDA_API_KEY"import os
import requests
resposta = requests.get(
"https://api.joddaia.com.br/v1/filtros",
headers={"Authorization": f"Bearer {os.environ['JODDA_API_KEY']}"},
timeout=30,
)
resposta.raise_for_status()
dados = resposta.json()GET/v1/vendas/resumo
Resumo de vendas
Resumo de vendas de um período com os mesmos números do Dashboard da Jodda: faturamento, pedidos, ticket médio, unidades, lucro, margem, imposto, previsão do mês, gasto de ADS, comparação com o período anterior e quebras por marketplace, conta, CNPJ, UF e logística. Filtros opcionais por marketplace, conta e CNPJ exigem o rótulo exato (veja GET /v1/filtros). NÃO lista pedidos individuais (use GET /v1/pedidos) e NÃO detalha um pedido (use GET /v1/pedidos/{numero}). Toda resposta traz avisos que devem ser considerados ao interpretar os números.
- Página exigida
- Dashboard
- Resposta
- application/json
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| periodo | hoje · ontem · 7d · 30d · mes_atual · mes_anterior | Não | Padrão: mes_atual. Preset calculado no horário de Brasília: "7d" e "30d" incluem hoje. No lugar de inicio + fim, nunca junto. |
| inicio | data (AAAA-MM-DD) | Não | Início do intervalo (inclusive), junto de fim. |
| fim | data (AAAA-MM-DD) | Não | Fim do intervalo (inclusive), junto de inicio. |
| marketplace | texto, 1 a 80 caracteres | Não | Rótulo exato do marketplace como aparece no dashboard (ex.: "Mercado Livre", "Shopee", "Amazon", "Via ERP"). Use GET /v1/filtros para descobrir os valores válidos. |
| conta | texto, 1 a 120 caracteres | Não | Rótulo exato da conta/loja como aparece no dashboard: o nome da conta cadastrada; venda sem conta cadastrada aparece com o nome do marketplace (ex.: "Via ERP"). Use GET /v1/filtros para descobrir os valores válidos. |
| cnpj | texto, 11 a 18 caracteres | Não | CNPJ formatado (XX.XXX.XXX/XXXX-XX) ou só dígitos. |
| status | Aprovado · Cancelado | Não | "Aprovado" = tudo que não foi cancelado (padrão). "Cancelado" = só cancelados. |
| incluir_serie_diaria | true ou false | Não | Devolve serie_diaria (um ponto por dia). Padrão: true em períodos curtos (hoje, ontem, 7d ou até 14 dias), false nos longos. |
| incluir_top_produtos | inteiro, 0 a 10 | Não | Devolve os N produtos de maior faturamento em top_produtos (0 a 10). Padrão: 5 em períodos curtos, 0 nos longos. |
Exemplo
curl "https://api.joddaia.com.br/v1/vendas/resumo?periodo=30d&marketplace=Shopee" \
-H "Authorization: Bearer $JODDA_API_KEY"import os
import requests
resposta = requests.get(
"https://api.joddaia.com.br/v1/vendas/resumo",
params={"periodo": "30d", "marketplace": "Shopee"},
headers={"Authorization": f"Bearer {os.environ['JODDA_API_KEY']}"},
timeout=30,
)
resposta.raise_for_status()
dados = resposta.json()GET/v1/pedidos
Listar pedidos
Lista pedidos (uma linha por item/SKU) de um período com os mesmos valores da aba Pedidos: número, data, marketplace, conta, status, SKU, quantidade, total, comissão, frete, desconto, custo, imposto, lucro, margem, repasse, logística e UF. Traz KPIs do filtro inteiro (total de linhas, faturamento, lucro, margem, cancelados) e paginação. Filtros: status, marketplace, conta, busca textual, logística e uma condição numérica (ex.: margem_pct lte 10). NÃO agrega por marketplace/período (use GET /v1/vendas/resumo). Considere avisos ao interpretar.
- Página exigida
- Pedidos
- Resposta
- application/json
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| periodo | hoje · ontem · 7d · 30d · mes_atual · mes_anterior | Não | Padrão: 7d. Preset calculado no horário de Brasília: "7d" e "30d" incluem hoje. No lugar de inicio + fim, nunca junto. |
| inicio | data (AAAA-MM-DD) | Não | Início do intervalo (inclusive), junto de fim. |
| fim | data (AAAA-MM-DD) | Não | Fim do intervalo (inclusive), junto de inicio. |
| status | Aprovado · Cancelado · Todos | Não | "Todos" (padrão) lista aprovados e cancelados; os KPIs separam os cancelados. |
| marketplace | texto, 1 a 80 caracteres | Não | Rótulo exato do marketplace como aparece no dashboard (ex.: "Mercado Livre", "Shopee", "Amazon", "Via ERP"). Use GET /v1/filtros para descobrir os valores válidos. |
| conta | texto, 1 a 120 caracteres | Não | Rótulo exato da conta/loja como aparece no dashboard: o nome da conta cadastrada; venda sem conta cadastrada aparece com o nome do marketplace (ex.: "Via ERP"). Use GET /v1/filtros para descobrir os valores válidos. |
| busca | texto, 2 a 80 caracteres | Não | Texto livre: número do pedido, SKU ou parte da descrição do produto. |
| logistica | Full · Flex · Padrao | Não | Full = estoque no marketplace; Flex = entrega própria; Padrao = o resto. |
| metrica | total · custo · comissao · imposto · lucro · margem_pct | Não | Campo numérico para filtrar (use junto com condicao e valor). Ex.: margem_pct lte 10. |
| condicao | gte · lte · eq | Não | gte = maior ou igual; lte = menor ou igual; eq = igual. |
| valor | número | Não | Valor numérico da condição (R$ ou %, conforme a métrica). |
| pagina | inteiro, a partir de 1 | Não | Página, começando em 1. |
| por_pagina | inteiro, 1 a 100 | Não | Itens por página (máximo 100, padrão 50). |
Exemplo
curl "https://api.joddaia.com.br/v1/pedidos?periodo=7d&metrica=margem_pct&condicao=lte&valor=10" \
-H "Authorization: Bearer $JODDA_API_KEY"import os
import requests
resposta = requests.get(
"https://api.joddaia.com.br/v1/pedidos",
params={"periodo": "7d", "metrica": "margem_pct", "condicao": "lte", "valor": "10"},
headers={"Authorization": f"Bearer {os.environ['JODDA_API_KEY']}"},
timeout=30,
)
resposta.raise_for_status()
dados = resposta.json()GET/v1/pedidos/{numero}
Detalhar pedido
Detalha um pedido pelo número (do marketplace ou interno do ERP): cabeçalho com data, marketplace, conta, status, logística, UF e totais somados, mais a lista de itens com SKU, quantidade, total, comissão, frete, desconto, custo, imposto, lucro, margem e repasse. Procura nos últimos 365 dias por padrão; passe periodo para pedidos mais antigos. NÃO faz busca por texto (use GET /v1/pedidos com busca).
- Página exigida
- Pedidos
- Resposta
- application/json
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| numerono caminho | texto, 3 a 64 caracteres | Sim | Número do pedido no marketplace (numero_loja) ou número interno do ERP (numero). |
| periodo | hoje · ontem · 7d · 30d · mes_atual · mes_anterior | Não | Opcional. Padrão: últimos 365 dias. Informe se o pedido for mais antigo. Preset calculado no horário de Brasília: "7d" e "30d" incluem hoje. No lugar de inicio + fim, nunca junto. |
| inicio | data (AAAA-MM-DD) | Não | Início do intervalo (inclusive), junto de fim. |
| fim | data (AAAA-MM-DD) | Não | Fim do intervalo (inclusive), junto de inicio. |
Exemplo
curl "https://api.joddaia.com.br/v1/pedidos/2000012345678901" \
-H "Authorization: Bearer $JODDA_API_KEY"import os
import requests
resposta = requests.get(
"https://api.joddaia.com.br/v1/pedidos/2000012345678901",
headers={"Authorization": f"Bearer {os.environ['JODDA_API_KEY']}"},
timeout=30,
)
resposta.raise_for_status()
dados = resposta.json()GET/v1/cancelamentos
Cancelamentos
Análise de cancelamentos de um período com os mesmos números da aba Pedidos > Cancelamentos: quantidade, faturamento e lucro perdidos, unidades, taxa de cancelamento, quebra por marketplace, produtos mais cancelados (com taxa por SKU), logística e UF, e comparação com o período anterior. Filtros opcionais por marketplace e conta (rótulo exato; veja GET /v1/filtros). NÃO lista pedidos cancelados individualmente (use GET /v1/pedidos com status="Cancelado"). Considere avisos ao interpretar.
- P ágina exigida
- Pedidos
- Resposta
- application/json
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| periodo | hoje · ontem · 7d · 30d · mes_atual · mes_anterior | Não | Padrão: mes_atual. Preset calculado no horário de Brasília: "7d" e "30d" incluem hoje. No lugar de inicio + fim, nunca junto. |
| inicio | data (AAAA-MM-DD) | Não | Início do intervalo (inclusive), junto de fim. |
| fim | data (AAAA-MM-DD) | Não | Fim do intervalo (inclusive), junto de inicio. |
| marketplace | texto, 1 a 80 caracteres | Não | Rótulo exato do marketplace como aparece no dashboard (ex.: "Mercado Livre", "Shopee", "Amazon", "Via ERP"). Use GET /v1/filtros para descobrir os valores válidos. |
| conta | texto, 1 a 120 caracteres | Não | Rótulo exato da conta/loja como aparece no dashboard: o nome da conta cadastrada; venda sem conta cadastrada aparece com o nome do marketplace (ex.: "Via ERP"). Use GET /v1/filtros para descobrir os valores válidos. |
| comparar | true ou false | Não | true (padrão) inclui anterior com os KPIs do período imediatamente anterior de mesma duração. |
| incluir_serie_diaria | true ou false | Não | Devolve serie_diaria (cancelamentos por dia). Padrão: true em períodos de até 14 dias, false nos longos. |
| top_produtos | inteiro, 0 a 20 | Não | Quantos produtos mais cancelados devolver em top_produtos (0 a 20, padrão 10). |
Exemplo
curl "https://api.joddaia.com.br/v1/cancelamentos?periodo=mes_anterior" \
-H "Authorization: Bearer $JODDA_API_KEY"import os
import requests
resposta = requests.get(
"https://api.joddaia.com.br/v1/cancelamentos",
params={"periodo": "mes_anterior"},
headers={"Authorization": f"Bearer {os.environ['JODDA_API_KEY']}"},
timeout=30,
)
resposta.raise_for_status()
dados = resposta.json()GET/v1/produtos
Análise de Produtos
Consulta Produtos: resumo de vendas, lista com cadastro e piso de margem, curva ABC, detalhe de SKU com custos e pedidos, anúncios do produto, composição de kit, produtos sem custo e catálogo Jodda. Comece por resumo/lista/abc e use o SKU retornado em detalhe/anuncios/kit. Detalhe resolve vínculos entre SKUs e vitrines. Não oferece estoque ao vivo. Lucro não desconta ADS; use GET /v1/ads/resumo separadamente. Catálogo atual não é histórico. Totais e margens vêm do serviço; considere avisos. Continue listas usando paginacao.proximo_deslocamento com a mesma visão, período, filtros e ordem. Filtros de marketplace/conta/CNPJ só valem para resumo/lista/abc. Para recortar por categoria, marca ou fornecedor, descubra os rótulos em visao=categorias/marcas/fornecedores (campo do_erp) e passe o nome exato em visao=lista.
- Página exigida
- Produtos
- Resposta
- application/json
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| visao | resumo · lista · abc · detalhe · anuncios · kit · sem_custo · fornecedores · categorias · marcas · tags | Não | Padrão resumo. lista e abc descobrem SKUs; detalhe, anuncios e kit exigem sku. Catálogo: fornecedores/categorias/marcas/tags. |
| periodo | hoje · ontem · 7d · 30d · mes_atual · mes_anterior | Não | Padrão mes_atual; até 366 dias. Não se aplica a kit nem catálogo, que são o cadastro atual. Preset calculado no horário de Brasília: "7d" e "30d" incluem hoje. No lugar de inicio + fim, nunca junto. |
| inicio | data (AAAA-MM-DD) | Não | Início do intervalo (inclusive), junto de fim. |
| fim | data (AAAA-MM-DD) | Não | Fim do intervalo (inclusive), junto de inicio. |
| sku | texto, 1 a 255 caracteres | Não | Obrigatório e exclusivo de detalhe, anuncios e kit. Use codigo_produto da lista ou sku da ABC. |
| marketplace | texto, 1 a 80 caracteres | Não | Somente resumo, lista e abc; rótulo exato do marketplace. |
| conta | texto, 1 a 120 caracteres | Não | Somente resumo, lista e abc; apelido da conta, diferente do ID usado em GET /v1/ads/resumo. |
| cnpj | texto, 11 a 18 caracteres | Não | Somente resumo, lista e abc. CNPJ exato do cadastro da integração; não aceita raiz. |
| deslocamento | inteiro, 0 a 1000000 | Não | Posição inicial, padrão 0. Use proximo_deslocamento da resposta com os mesmos filtros. Em detalhe pagina os pedidos. |
| limite | inteiro, 1 a 20 | Não | Linhas por resposta, padrão 10, máximo 20. Pode ser reduzido pelo teto de 30 KB. |
| ordenar_por | sku · descricao · total_produtos · quantidade · margem · lucro · cancelados · taxa_cancelamento · var_total_produtos_pct · var_quantidade_pct · var_margem_pp · acao | Não | Exclusivo de lista. total_produtos significa faturamento; padrão total_produtos. |
| direcao | asc · desc | Não | Exclusivo de lista; padrão desc. |
| acao | texto, 1 a 120 caracteres | Não | Exclusivo de lista. Filtra o campo acao original, não limiar.acao_ajustada. |
| categoria | texto, 1 a 255 caracteres | Não | Exclusivo de lista. Rótulo exato de visao=categorias, campo do_erp[].nome; é a folha da hierarquia, não o caminho. |
| marca | texto, 1 a 255 caracteres | Não | Exclusivo de lista. Rótulo exato de visao=marcas, campo do_erp[].nome. Marca só existe no ERP. |
| fornecedor | texto, 1 a 255 caracteres | Não | Exclusivo de lista. Nome de visao=fornecedores (do_erp ou data), ou o identificador quando a origem é Tiny, que não guarda nome. |
| metrica | faturamento · quantidade | Não | Exclusivo de abc; padrão faturamento. |
| comparar | true ou false | Não | Exclusivo de anuncios; padrão true. Outras visões com comparativo o retornam conforme o contrato do serviço. |
| incluir_serie_diaria | true ou false | Não | Somente resumo/detalhe; padrão false. Reduza o período se a série exceder 30 KB. |
| incluir_canais | true ou false | Não | Somente resumo/detalhe; padrão false. |
Exemplo
curl "https://api.joddaia.com.br/v1/produtos?visao=abc&periodo=30d" \
-H "Authorization: Bearer $JODDA_API_KEY"import os
import requests
resposta = requests.get(
"https://api.joddaia.com.br/v1/produtos",
params={"visao": "abc", "periodo": "30d"},
headers={"Authorization": f"Bearer {os.environ['JODDA_API_KEY']}"},
timeout=30,
)
resposta.raise_for_status()
dados = resposta.json()GET/v1/ads/resumo
Análise de ADS
Analisa ADS de Mercado Livre, Shopee e Amazon por CNPJ, conta, produto, anúncio ou campanha: gasto, receita atribuída, ACOS, ROAS, cliques, conversões e gasto sem venda. ACOS usa receita atribuída pelo marketplace; participacao_ads_pct usa faturamento total. null ou metricas_disponiveis=false não significa desempenho zero. A Amazon tem só gasto, sem receita atribuída, ACOS, ROAS nem campanha: receita_ads, acos_pct e roas vêm null e, nela, participacao_ads_pct é o TACoS. Em nivel=campanha o gasto da Amazon fica só em totais.gasto_amazon. totais.fontes.amazon=indisponivel não é gasto zero; não há dado da Amazon antes de 28/04/2026. Campanhas identificadas são do Mercado Livre; Shopee pode aparecer em (sem campanha). Para relacionar vendas Shopee use nivel=produto. Totais e cobertura são globais no período; filtros afetam apenas linhas. Preserve avisos e truncado ao interpretar.
- Página exigida
- Produtos
- Resposta
- application/json
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| periodo | hoje · ontem · 7d · 30d · mes_atual · mes_anterior | Não | Padrão: mes_atual. Preset calculado no horário de Brasília: "7d" e "30d" incluem hoje. No lugar de inicio + fim, nunca junto. |
| inicio | data (AAAA-MM-DD) | Não | Início do intervalo (inclusive), junto de fim. |
| fim | data (AAAA-MM-DD) | Não | Fim do intervalo (inclusive), junto de inicio. |
| nivel | cnpj · conta · produto · anuncio · campanha | Não | Padrão: produto. Use cnpj → conta → produto → anuncio para aprofundar, ou campanha para avaliar campanhas. |
| cnpj | texto, 8 a 18 caracteres | Não | Raiz de 8 dígitos ou CNPJ completo; agrupa todas as filiais da mesma raiz. Use a chave retornada em nivel=cnpj. |
| conta | texto, 1 a 120 caracteres | Não | ID da loja, retornado em linhas[].chave no nivel=conta. Não é o apelido usado por GET /v1/filtros. |
| sku | texto, 1 a 255 caracteres | Não | SKU do produto; use a chave retornada em nivel=produto. |
| limite | inteiro, 1 a 50 | Não | Máximo de linhas: 1 a 50, padrão 20. Totais não são limitados. Para explorar a cauda, filtre ou altere ordenar_por. |
| ordenar_por | gasto · acos · faturamento · receita_ads · participacao | Não | Ordem decrescente; padrão gasto. acos usa receita atribuída; participacao usa faturamento total. Em acos e receita_ads, linhas sem a métrica (como as da Amazon) vão para o fim. |
Exemplo
curl "https://api.joddaia.com.br/v1/ads/resumo?periodo=30d&nivel=campanha" \
-H "Authorization: Bearer $JODDA_API_KEY"import os
import requests
resposta = requests.get(
"https://api.joddaia.com.br/v1/ads/resumo",
params={"periodo": "30d", "nivel": "campanha"},
headers={"Authorization": f"Bearer {os.environ['JODDA_API_KEY']}"},
timeout=30,
)
resposta.raise_for_status()
dados = resposta.json()GET/v1/financas
Análise de Finanças
Consulta a DRE (Demonstrativo de Resultados) e as Movimentações financeiras da conta. visao="dre" traz receita líquida, margem de contribuição, lucro operacional, lucro líquido, ponto de equilíbrio, índice de cobertura e margem de segurança — os mesmos números da aba Finanças, não os do GET /v1/vendas/resumo/GET /v1/produtos. O lucro líquido da DRE desconta ADS, o custo de Full do Mercado Livre e as despesas cadastradas; não é o mesmo lucro de Produtos (sem ADS) nem o do Dashboard. imposto_origem diz se o imposto do mês é estimado pela alíquota cadastrada ou já foi ajustado pela DAS paga. visao="movimentacoes" lista os lançamentos individuais (descrição, categoria, status previsto/confirmado) por trás da DRE. A DRE cobre só a partir de setembro/2025. Sempre preserve os avisos e fontes ao explicar um número.
- Página exigida
- Finanças
- Resposta
- application/json
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| periodo | hoje · ontem · 7d · 30d · mes_atual · mes_anterior | Não | Padrão: mes_atual. Em visao="dre", só o mês de início e o mês de fim do período contam (o dia é ignorado); a DRE é sempre por mês inteiro, desde set/2025. Preset calculado no horário de Brasília: "7d" e "30d" incluem hoje. No lugar de inicio + fim, nunca junto. |
| inicio | data (AAAA-MM-DD) | Não | Início do intervalo (inclusive), junto de fim. |
| fim | data (AAAA-MM-DD) | Não | Fim do intervalo (inclusive), junto de inicio. |
| visao | dre · movimentacoes | Não | "dre" (padrão): a DRE como a tela mostra, com receita líquida, margem de contribuição, lucro líquido e indicadores de equilíbrio. "movimentacoes": lançamentos individuais de receita/despesa (descrição, categoria, status), sem os cálculos da DRE. |
| detalhar_categorias | true ou false | Não | Só em visao="dre". Detalha despesas e receitas confirmadas/previstas por categoria. Padrão: false. |
| limite_categorias | inteiro, 1 a 30 | Não | Só em visao="dre" com detalhar_categorias=true. Máximo de categorias por lista; padrão 15, teto 30. |
Exemplo
curl "https://api.joddaia.com.br/v1/financas?visao=dre&periodo=mes_anterior" \
-H "Authorization: Bearer $JODDA_API_KEY"import os
import requests
resposta = requests.get(
"https://api.joddaia.com.br/v1/financas",
params={"visao": "dre", "periodo": "mes_anterior"},
headers={"Authorization": f"Bearer {os.environ['JODDA_API_KEY']}"},
timeout=30,
)
resposta.raise_for_status()
dados = resposta.json()