Pular para o conteúdo

Início rápido

Como começar: os primeiros passos na API. Este guia leva um pedido do começo ao fim: cotar, enviar, acompanhar e baixar o resultado de uma campanha simulada em Belo Horizonte.

  1. Crie a conta em app.brasilsintetico.com, só com nome, e-mail e senha. Ela já vem com um primeiro projeto; crie outros quando quiser. Projetos separam jobs, chaves e agentes; os créditos são da organização.

  2. Tenha créditos. Um crédito é um real. Compre no app, em Créditos e uso, por Pix ou boleto, a partir de R$ 20,00. Na primeira compra, o app pede o CNPJ da empresa e o endereço da nota fiscal.

  3. Crie uma chave de API na página do projeto, com os escopos results:read e simulate. A chave tem a forma bs_<prefixo>_<segredo> e aparece uma única vez; guardamos só o hash dela.

    Janela do terminal
    export BS_API_KEY="bs_..."

    Os exemplos em curl leem as respostas com o jq.

Janela do terminal
curl https://api.brasilsintetico.com/v1/whoami \
-H "Authorization: Bearer $BS_API_KEY"

A resposta diz o projeto, a organização e os escopos da chave:

{
"project_id": "6f1c…",
"organization_id": "0b9e…",
"key_prefix": "a1b2c3d4e5f6",
"scopes": ["results:read", "simulate"]
}

O pedido é um cenário de campanha, um documento JSON fechado. Este simula uma mensagem para adultos de 20 a 59 anos de Belo Horizonte, nas faixas de renda 1 a 3, por 30 dias a partir de 1º de novembro de 2026: digital nas duas primeiras semanas e rádio do dia 7 ao 21. Ele pede o alcance e quem repassa a mensagem:

pedido.json
{
"versao_contrato": 3,
"release": "v2.0.0",
"familia": "recepcao",
"geografia": { "ufs": ["MG"], "municipios": ["3106200"] },
"publico": { "idades": [[20, 59]], "faixas_renda": [1, 2, 3] },
"canais": [
{ "canal": "digital", "dia_inicio": 1, "dia_fim": 14, "intensidade": 0.5 },
{ "canal": "radio", "dia_inicio": 7, "dia_fim": 21, "intensidade": 0.3 }
],
"mensagem": {
"stim_id": "af9cca9c97fcb5b610476bde8756e849",
"template_ver": "tpl-ref",
"politica": "pol-ref"
},
"horizonte": { "data_inicio": "2026-11-01", "dias": 30 },
"replicas": 2,
"grupo_comparacao": "campanha-bh",
"kpis": ["alcance", "repassa"],
"nome": "Campanha em Belo Horizonte"
}

A simulação roda sobre Minas Gerais inteira, porque o boca a boca não para na divisa do município; o público só diz a quem a mídia chega. Com dois canais, o motor roda também as variantes que medem o efeito de cada um.

Cada campo está em O cenário de campanha. O JSON Schema completo é público, em GET /v1/schemas/cenario-campanha.

POST /v1/jobs/estimate valida o pedido e devolve o preço, sem reservar nada:

Janela do terminal
curl https://api.brasilsintetico.com/v1/jobs/estimate \
-H "Authorization: Bearer $BS_API_KEY" \
-H "Content-Type: application/json" \
-d "{\"pedido\": $(cat pedido.json)}"
{
"release": "v2.0.0",
"ufs": ["MG"],
"dias": 30,
"variantes": 5,
"replicas": 2,
"pessoa_dias": 6133511100,
"preco_micros": 14499640
}

Os valores vêm em milionésimos de real: 14499640 é R$ 14,499640. A conta está em Créditos e preço.

POST /v1/jobs reserva o preço e cria o job. O cabeçalho Idempotency-Key é obrigatório: repetir a chamada com a mesma chave e o mesmo pedido devolve o mesmo job (status 200) em vez de cobrar duas vezes.

Janela do terminal
JOB_ID=$(curl -s https://api.brasilsintetico.com/v1/jobs \
-H "Authorization: Bearer $BS_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: campanha-bh-1" \
-d "{\"pedido\": $(cat pedido.json)}" | jq -r .id)
echo "$JOB_ID"

O job nasce reservado e espera a vez numa máquina dedicada. Os estados estão em Jobs.

Consulte GET /v1/jobs/{id} até o estado ser concluido, falhou ou cancelado. Um job leva de minutos a horas, conforme o tamanho; consultar a cada 30 a 60 segundos basta e respeita o limite de chamadas. Ou ative um webhook no projeto e receba um aviso assinado quando o job terminar.

Janela do terminal
curl https://api.brasilsintetico.com/v1/jobs/$JOB_ID \
-H "Authorization: Bearer $BS_API_KEY"

Se o job falhar, a reserva inteira volta para a organização.

GET /v1/jobs/{id}/findings devolve uma tabela dos achados em linhas: saturacao por padrão, ou alcance_efetivo, alcance_potencial, contribuicao, elasticidade e veredito. Por padrão vêm só os municípios do público do cenário, e limite vai até 1.000 linhas. Não há arquivo para baixar: o resultado de um job são os achados e o veredito, guardados por 365 dias.

Janela do terminal
curl -s "https://api.brasilsintetico.com/v1/jobs/$JOB_ID/findings?tabela=saturacao" \
-H "Authorization: Bearer $BS_API_KEY" | jq '.linhas[0:3]'

O que cada tabela traz está em O resultado.