Primeiros passos
Este roteiro leva da conta recém-criada até a primeira consulta executada no seu banco.
1. Entre no painel
Acesse app.datafala.com.br/login com o e-mail e a senha que o time do Datafala enviou.
2. Configure a LLM
Em Configurações, na seção Provedor de LLM, escolha o provedor e o modelo, cole a chave da sua conta no provedor e clique em Testar antes de salvar. A chave é guardada cifrada e só é decifrada no momento da chamada.
Provedores aceitos: OpenAI, Anthropic, Gemini, Mistral, Groq, DeepSeek, xAI, OpenRouter e Cohere.
3. Cadastre o schema
Na tela Schema, escolha o dialeto (PostgreSQL, MySQL ou Firebird) e cole o DDL das tabelas que a API pode usar. Basta o CREATE TABLE com colunas e chaves estrangeiras; dados nunca são enviados.
Como gerar o DDL sem dados:
# PostgreSQL
pg_dump --schema-only --no-owner --no-privileges \
-t public.pedidos -t public.clientes -t public.produtos \
"postgresql://usuario@host/banco" > schema.sql
# MySQL
mysqldump --no-data --skip-comments banco pedidos clientes produtos > schema.sql
No Firebird (2.5 ou mais novo), use o isql que vem com o servidor. O -x extrai só os metadados de todas as tabelas, sem dados:
# Linux / macOS
isql -x -user SYSDBA -ch UTF8 \
localhost:/dados/banco.fdb -o schema.sql
# Windows
isql.exe -x -user SYSDBA -ch UTF8 ^
localhost:C:\Dados\BANCO.FDB -o schema.sql
O isql pedirá a senha no terminal. Não a inclua no comando nem no arquivo de metadados.
Prefere uma ferramenta gráfica? No FlameRobin, clique com o botão direito no banco e use Extract metadata. No IBExpert, use Tools → Extract Metadata e marque só os metadados, sem dados.
O banco precisa usar SQL dialect 3, inclusive no Firebird 2.5 (confira com SHOW SQL DIALECT; no isql). DDL com SQL dialect 1 é recusado. O isql não filtra tabelas: cole o arquivo inteiro e oculte no painel o que a API não deve usar. Tabelas de sistema e procedures, triggers, índices, generators e permissões que vierem no arquivo são ignorados.
Depois de importar, descreva tabelas e colunas com nomes pouco óbvios e oculte o que a API não deve usar (por exemplo colunas de CPF ou senha). Tabelas e colunas ocultas não entram no prompt e são recusadas pelo SQL Guard.
4. Escreva o contexto e alguns exemplos
- Contexto: regras de negócio e glossário em texto livre ("venda cancelada tem
status = 'C'", "faturamento = soma devalor_totaldas vendas não canceladas"). - Exemplos: pares pergunta → SQL que mostram o jeito certo de consultar o seu banco. Cada exemplo passa pelo SQL Guard ao ser salvo.
Use o Playground do painel para testar perguntas antes de integrar.
5. Crie uma API key
Em Credenciais, crie uma chave para a integração. Ela tem o formato tsk_<prefixo>_<segredo> e aparece uma única vez. Guarde-a no cofre de segredos do seu servidor. Veja Autenticação.
6. Faça a primeira pergunta
export DATAFALA_API_KEY="tsk_1a2b3c4d_..."
curl -sS -X POST "https://app.datafala.com.br/v1/ask" \
-H "Authorization: Bearer $DATAFALA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"question": "Quantos pedidos foram feitos ontem?",
"end_user": "5f0c3a9e7b1d4e2f8a6c0b9d3e7f1a2c4b5d6e7f8091a2b3c4d5e6f708192a3b"
}'
Resposta:
{
"sql": "SELECT count(*) AS total FROM public.pedidos WHERE criado_em >= %(start)s AND criado_em < %(end)s",
"params": { "start": "2026-10-22", "end": "2026-10-23" },
"dialect": "postgres",
"tables": ["public.pedidos"],
"explanation": "Conta os pedidos criados ontem.",
"locale": "pt-BR",
"request_id": "req_0f3c9a7d2b6e4f1a8c5d0e9b7a6f3c21"
}
O campo end_user identifica, de forma opaca, a pessoa que fez a pergunta. Veja Identificador do usuário final para gerá-lo corretamente.
7. Execute no seu banco
rows = readonly_conn.execute(answer["sql"], answer["params"]).fetchall()
Leia Executar o SQL antes de ir para produção: ele explica o usuário somente leitura, o tempo máximo por consulta e como converter os placeholders para drivers de outras linguagens.