API & MCP
Propostas
GET/api/v1/proposals
Lista as propostas da sua conta, das mais recentes para as mais antigas. Serve para o seu CRM puxar o que foi gerado pela API, pela página de captação e pelo painel, tudo na mesma lista. Chave viva apenas.
curl "https://app.ionluz.com.br/api/v1/proposals?limit=20&origem=api" \
-H "Authorization: Bearer ilz_sua_chave"| Parâmetro | Tipo | Descrição |
|---|---|---|
limit | integer | Itens por página, de 1 a 100. Padrão 20. Fora da faixa devolve 400 parametro-invalido. |
cursor | string | O nextCursor da página anterior. Sem ele, você recebe a primeira página. |
origem | string | manual (feita no painel), api (gravada pela API ou pelo MCP) ou lead (página pública de captação). |
A lista depois da gravação do exemplo de Cotação:
{
"ok": true,
"items": [
{
"id": "clx8h2k9a0001abcd",
"numero": 1,
"origem": "api",
"criadaEm": "2026-09-25T14:05:00.000Z",
"abertaEm": null,
"potenciaKwp": 5.72,
"valorFinal": 14296.8,
"paybackAnos": 2.1406530441031313,
"cliente": {
"nome": "Cliente Exemplo",
"email": "cliente@exemplo.com.br",
"telefone": "(15) 99999-0000",
"cidade": "Sorocaba",
"uf": "SP"
},
"links": {
"proposta": "https://app.ionluz.com.br/p/clx8h2k9a0001abcd?t=...",
"pdf": "https://app.ionluz.com.br/api/pub/clx8h2k9a0001abcd/pdf?t=..."
}
}
],
"nextCursor": null,
"limit": 20,
"requestId": "req_9f2c1a7b3d4e5f6a90"
}Pagine enquanto nextCursor vier preenchido; null significa fim da lista. Os links já vêm assinados e podem ir direto ao cliente final. A lista traz preço de venda e dados do lead, nunca custo, margem ou a composição interna do kit. No painel, a mesma proposta aparece em Propostas com a origem "API".
GET/api/v1/proposals/{id}
Mesma estrutura de item, agora sob a chave proposta. Um id que não seja da sua conta responde 404 proposta-nao-encontrada, o mesmo de um id que não existe: a API não confirma a existência de proposta alheia.
curl https://app.ionluz.com.br/api/v1/proposals/clx8h2k9a0001abcd -H "Authorization: Bearer ilz_sua_chave"Contas com o motor novo
O item ganha aprovacao (na proposta que passou por "eu aprovo antes": pendente, aprovada ou recusada) e publicacao (como o preço foi publicado ao cliente: exato, faixa ou contato). Enquanto o cliente não vê o preço (pendente, recusada ou publicação por contato), valorFinal e paybackAnos vêm null. Em faixa, valorFinal é o centro da faixa que o cliente viu: não repasse como valor exato.
{
"items": [
{
"id": "clx8h2k9a0001abcd",
"origem": "api",
"potenciaKwp": 5.72,
"valorFinal": null,
"paybackAnos": null,
"aprovacao": "pendente",
"publicacao": "faixa",
"...": "..."
}
],
"...": "..."
}requestId ao escrever para suporte@ionluz.com.br.