Texto para SQL
Converter texto em SQL é literalmente isso: você descreve em português o que precisa — “vendas por cliente no último trimestre, só do estado de São Paulo” — e a API devolve a query pronta. Informe o esquema das suas tabelas na chamada e receba o SELECT correto, com JOINs e filtros, sem apanhar da sintaxe.
Rode online
Rode nos nossos servidores com a sua conta. As ferramentas grátis rodam no seu navegador; esta aqui é descontada do seu saldo do KIT pelo preço acima.
Descreva a consulta, receba a query
Você manda duas coisas na chamada: a pergunta em linguagem natural e o esquema do banco — nomes de tabelas, colunas e tipos. O serviço devolve a query SQL como texto, pronta para você revisar e executar onde quiser. Nada roda no seu banco de dados: a API nunca se conecta a ele, só escreve a consulta. Quem decide quando e onde executar é você, com o usuário e as permissões que preferir.
O esquema é o segredo da precisão
Quanto melhor o esquema enviado, melhor a query. Mande os nomes reais das tabelas e colunas, os tipos de cada campo e, se puder, uma linha de exemplo fictícia. Com um esquema claro, pedidos como “total faturado por cliente em junho, do maior para o menor” viram um SELECT com JOIN, GROUP BY e ORDER BY corretos. Sem esquema, o serviço até tenta deduzir — mas adivinhar nome de coluna é receita para query quebrada.
Beta, com todas as letras
Esta capacidade está em beta: funciona e é cobrada pelo preço publicado, mas consultas muito complexas — subqueries encadeadas, window functions exóticas — podem vir com detalhes a corrigir. A recomendação é a mesma que vale para qualquer SQL escrito por outra pessoa: leia a query antes de rodar, execute primeiro em ambiente de homologação e use um usuário só de leitura. Tratando o resultado como rascunho de um colega rápido, o beta não te morde.
Preço por consulta gerada
Cada chamada custa US$ 0,003, mais US$ 0,0135 por consulta gerada — na prática, menos de US$ 0,02 por query. Para comparar: quanto custa a meia hora que um analista gasta montando um JOIN de três tabelas? Não tem mensalidade nem pacote mínimo; o pagamento é por uso, direto, sem criar conta. O valor fica publicado nesta página, em dólares americanos.
Casos de uso
Relatório sem depender do time de dados
O time comercial da Distribuidora Horizonte Verde precisa saber quais clientes de Minas Gerais não compram há 90 dias. Em vez de abrir chamado para o time de dados, o analista descreve a pergunta, recebe a query e roda no painel de leitura do banco.
Dev júnior destravando
Juliana Nascimento, dev júnior em Belo Horizonte, sabe o que precisa buscar mas trava em GROUP BY com múltiplos JOINs. Ela descreve a consulta em português, recebe o SQL e — de quebra — aprende lendo a query pronta.
Campo “pergunte aos dados” no sistema interno
Um sistema interno pode oferecer um campo de pergunta livre: o texto do usuário vai para a API junto com o esquema fixo, a query volta e o backend executa com usuário somente leitura. O time de atendimento consulta a base sem saber SQL.
Da planilha para o banco de verdade
Quem migrou o controle da empresa de planilha para um banco de dados ainda pensa em “filtrar e somar”. Descrever a operação em português e receber o SQL correspondente encurta a adaptação nas primeiras semanas.
Perguntas frequentes
Funciona com MySQL, PostgreSQL, SQL Server?
Você indica o dialeto desejado na chamada e a query sai com a sintaxe correspondente. Para funções muito específicas de um banco, confira a documentação do seu servidor antes de executar — e teste primeiro fora da produção.
A query gerada pode alterar ou apagar dados?
A API devolve texto: nada é executado no seu banco, que nunca é acessado pelo serviço. Se você pedir um UPDATE ou DELETE, ele vem como texto também — a decisão de rodar é sempre sua. A prática segura é executar consultas geradas com um usuário somente leitura.
Preciso enviar os dados do meu banco?
Não. Só o esquema: nomes de tabelas, colunas e tipos. Os registros em si — clientes, vendas, CPFs — nunca precisam sair da sua empresa, o que simplifica bastante a conversa de LGPD com quem cuida de dados aí dentro.
Por que está marcado como beta?
Porque em consultas muito complexas o resultado ainda pode precisar de ajuste manual. Preferimos avisar na página a fingir perfeição. O preço já é o definitivo e está publicado.
Como funciona o pagamento?
Por uso, em dólares americanos (US$), via PayPal — a compra é direta, sem cadastro. Pix por enquanto não; quando mudar, a informação aparece aqui primeiro.
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
curl -X POST https://api.kit.forhosting.com/dev/text-to-sql \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"input":"…"}'const res = await fetch("https://api.kit.forhosting.com/dev/text-to-sql", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"input": "…"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/text-to-sql",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"input": "…"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/text-to-sql", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"input":"…"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"input":"…"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/text-to-sql", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemplo de requisição
{
"input": "…"
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.text_to_sql",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |
422 | task_failed | A tarefa falhou do nosso lado. Você não paga nada por ela. |