Como consumir as rotas disponibilizadas na API PÚBLICA

API Pública: integração simples e segura com nossos serviços


Entenda por que disponibilizamos uma API pública:

Com o objetivo de facilitar integrações e ampliar as possibilidades de uso da plataforma, disponibilizamos uma API pública que permite que desenvolvedores e sistemas externos acessem nossos serviços de forma padronizada e segura.


O que é uma API Pública:

Uma API pública é uma interface que permite que aplicações externas se comuniquem com um sistema de maneira estruturada. Na prática, ela possibilita que outras plataformas, softwares ou automações utilizem funcionalidades do nosso sistema sem precisar acessar diretamente a aplicação principal.
A disponibilização de uma API pública tem como principal objetivo permitir integrações mais flexíveis. Empresas e desenvolvedores podem automatizar processos, conectar diferentes sistemas e criar novas soluções utilizando os dados e recursos disponibilizados pela plataforma.
Além disso, a API pública também facilita a escalabilidade das integrações. Em vez de processos manuais ou importações de dados, sistemas podem se comunicar automaticamente, garantindo mais eficiência, consistência e rapidez nas operações.


Como começar a utilizar a API pública:

Para acessar as rotas da API pública, é necessário possuir uma API Key, que funciona como uma chave de autenticação para identificar e autorizar as requisições feitas ao sistema.
O processo para gerar uma API Key é simples:

  1. Acesse o menu Configurações da plataforma.

  1. Entre na seção API Keys.

  1. Clique na opção Chave de API habilitada

  1. Após a criação, copie a Chave de API gerada.



Documentação da API

Para facilitar o uso da API pública, disponibilizamos a documentação por meio do Swagger. O Swagger permite visualizar todas as rotas disponíveis, entender quais parâmetros são necessários e até mesmo testar requisições diretamente pela interface.
Com ele, desenvolvedores conseguem explorar a API de forma mais prática, verificando exemplos de requisição, formatos de resposta e detalhes de cada endpoint.
A documentação completa da API pode ser acessada no link abaixo:
https://public-api.gdash.io/swagger
Após gerar sua API Key, basta acessar a documentação no Swagger, inserir a chave nas requisições e começar a utilizar as rotas da API pública para integrar sua aplicação.





Convenções gerais


Conceito

Detalhe

Base URL

https://public-api.gdash.io/api/v1

Autenticação

Query param apikey em toda requisição: ?apikey=SUA_API_KEY

Formato de resposta

{ "ok": true, "data": [...] }

Datas

ISO 8601 (ex.: 2026-01-01T00:00:00Z)

Paginação

Por cursor (somente em payments/charges e energy-billing)


Como funciona a paginação por cursor


O cursor é a data de criação (created_at) do último item que você recebeu. Para buscar a próxima página, envie esse valor no parâmetro cursor. Use também limit para definir o tamanho da página.


Na rota de energy-billing, a resposta já devolve o próximo cursor em nextCursor (quando null, acabaram os resultados).



CRM


GET /crm/task — Tarefas do CRM


Retorna as tarefas (to-dos) registradas no CRM da organização.


Campo

Tipo

Descrição

id

string

Identificador da tarefa

organization_id

string

Organização dona da tarefa

done

boolean

Se a tarefa já foi concluída

title

string

Título da tarefa

description

string ou null

Descrição/detalhe

due_date

date

Data de vencimento

closed_at

date ou null

Quando foi concluída (null se aberta)

priority

string

Prioridade

created_at / updated_at

date

Criação / última atualização



GET /crm/people — Pessoas do CRM


Retorna todas as pessoas (contatos) cadastradas no CRM.


Campo

Tipo

Descrição

id

string

Identificador da pessoa

organization_id

string

Organização

full_name

string

Nome completo

first_name / last_name

string / string ou null

Primeiro nome / sobrenome

email

string

E-mail

phone

string

Telefone

cpf

string

CPF

company

{ name, uid } ou null

Empresa vinculada

external_id

string

ID em sistema externo (integrações)

created_at / updated_at

date

Criação / atualização


POST /crm/people/create — Criar pessoa


Cria um novo contato. Body:


Campo

Tipo

Obrigatório

Descrição

email

string

sim

E-mail da pessoa



GET /crm/deal — Negociações (deals)


Retorna as oportunidades/negociações do CRM.


Campo

Tipo

Descrição

id

string

Identificador do deal

name

string

Nome da negociação

organization_id

string

Organização

amount

number

Valor da negociação

start_date

date

Início

end_date

date ou null

Fim (null se em aberto)

estimated_closing_date

date

Previsão de fechamento

status

string

OPEN, WON ou LOST

pipeline

{ id, name } ou null

Funil onde o deal está

phase

{ id, name } ou null

Etapa/fase dentro do funil

loss_reason / loss_description

string ou null

Motivo / descrição da perda

external_id

string ou null

ID em sistema externo

created_at / updated_at

date

Criação / atualização


POST /crm/deal/create — Criar negociação


Body:


Campo

Tipo

Obrigatório

Descrição

name

string

sim

Nome do deal

amount

number

sim

Valor

assignees

[{ id, type }]

sim

Responsáveis (type: user ou team)

start_date

date

sim

Data de início

end_date

date ou null

não

Data de fim

estimated_closing_date

date

sim

Previsão de fechamento

pipeline_id

string

sim

Funil

phase_id

string

sim

Etapa/fase

products

string[]

sim

IDs de produtos vinculados

companies

string[]

sim

IDs de empresas vinculadas

people

string[]

sim

IDs de pessoas vinculadas

status

string

sim

OPEN, WON ou LOST

tags

string[]

sim

IDs de tags

shared_with

[{ id, type }]

sim

Com quem o deal é compartilhado

custom_fields

object[]

não

Campos personalizados



GET /crm/company — Empresas do CRM


Retorna as empresas cadastradas.


Campo

Tipo

Descrição

id

string

Identificador

organization_id

string

Organização

external_id

string ou null

ID externo

name

string

Nome fantasia

corporate_reason

string ou null

Razão social

cnpj

string ou null

CNPJ

email

string

E-mail

phone / mobile_phone

string

Telefone fixo / celular

website

string

Site

zip_code, street, number, district, city, state

string ou null

Endereço

industry

string ou null

Setor/segmento

created_at / updated_at

date

Criação / atualização


POST /crm/company/create — Criar empresa


Body:


Campo

Tipo

Obrigatório

Descrição

email

string

sim

E-mail da empresa



Solar


GET /solar/plants — Usinas


Retorna as usinas de geração da organização. Cada usina pode trazer suas instalações (unidades consumidoras) em installations.


Campo

Tipo

Descrição

id

string

Identificador da usina

organization_id

string

Organização

name

string

Nome da usina

power

number

Potência instalada (kWp)

alert

boolean

Se há alerta ativo

azimuth

number ou null

Azimute dos módulos

tilt_angle

number ou null

Inclinação dos módulos

capex

number ou null

Investimento (CAPEX)

credential

string

Credencial/integração do inversor

manufacturer

string

Fabricante do inversor

free

boolean

Se é plano gratuito

currency

string

Moeda

status

string

Status operacional

timezone

number ou null

Fuso horário

created_at / updated_at

date

Criação / atualização

installations

UnidadeConsumidora[]

Unidades consumidoras vinculadas (ver tabela abaixo)


Objeto installations[] (unidade consumidora):


Campo

Tipo

Descrição

uid

string

Identificador da instalação

organization_id

string

Organização

numeroInstalacao

string

Número da instalação

novoNumeroInstalacao

string ou null

Novo número (em troca de titularidade)

nome

string

Nome da instalação

unidadeGeradora

boolean

Se é unidade geradora

energyCreditSources

object[]

Fontes de crédito de energia

percentualExcedente

number

(depreciado — use energyCreditSources)

tipo

number

Tipo da unidade

modalidadeTarifaria

number

Modalidade tarifária

discount_percentage

number ou null

Percentual de desconto



GET /solar/customers — Clientes


Retorna todos os clientes da organização. Também traz plants (IDs das usinas) e installations.


Campo

Tipo

Descrição

id

string

Identificador do cliente

organization_id

string

Organização

name

string

Nome

cpf / cnpj

string ou null

Documento

email / phone

string ou null

Contato

customer_number

string ou null

Número do cliente

provider

string

Concessionária de energia

plants

string[]

IDs das usinas vinculadas

installations

UnidadeConsumidora[]

Mesma estrutura de installations das usinas

created_at / updated_at

date

Criação / atualização


GET /solar/customers/search — Buscar clientes com filtros


Mesmo retorno de /solar/customers, mas permite filtrar. Query params (todos opcionais, combináveis):


Param

Descrição

cpf

Busca parcial por CPF (case-insensitive)

cnpj

Busca parcial por CNPJ

name

Busca parcial por nome

email

Busca parcial por e-mail

provider

Match exato da concessionária (ex.: CEMIG, ENEL)

customer_number

Match exato do número do cliente


POST /solar/customers/create — Criar cliente


Body:


Campo

Tipo

Obrigatório

Descrição

plant_id

string

sim

Usina associada ao cliente

email_sending_enabled

boolean

sim

Habilita envio de e-mails

whatsapp_message_sending_enabled

boolean

sim

Habilita envio de WhatsApp

name

string

não

Nome

email

string

não

E-mail principal

phone

string

não

Telefone

cpf / cnpj

string

não

Documento

number

string

não

Número do cliente fornecido pela concessionária

provider

string

não

Concessionária (ex.: enelsp)

secondary_emails

string[]

não

E-mails secundários

invoice_unlock_password

string

não

Senha para desbloquear a fatura no portal da concessionária

products

string[]

não

IDs de produtos

custom_fields

object[]

não

Campos personalizados

assignees

[{ id, type }]

não

Responsáveis (user/team)

shared_with

[{ id, type }]

não

Compartilhamento



GET /solar/payments/charges — Cobranças


Retorna as cobranças/pagamentos da organização. Suporta filtros e paginação por cursor.


Query params:


Param

Tipo

Descrição

status

enum

processing, paid, waiting_payment, pending_payment, pending, received, overdue, received_in_cash, received_in_bank_slip, refunded, unpaid, canceled, ended

due_date / due_date_from / due_date_to

ISO 8601

Vencimento (exato ou intervalo)

paid_date / paid_date_from / paid_date_to

ISO 8601

Pagamento (exato ou intervalo)

created_at / created_at_from / created_at_to

ISO 8601

Criação (exato ou intervalo)

month_reference

ISO 8601

Mês de referência (ou YYYY-MM-01)

value / value_from / value_to

number

Valor (exato ou intervalo)

consumer_unit_number

string

Número da unidade consumidora

utility

string

Concessionária

city

string

Cidade

cursor

ISO 8601

Cursor de paginação (created_at do último item)

limit

number

Tamanho da página (default 10)


Campos da resposta:


Campo

Tipo

Descrição

id

string

Identificador da cobrança

organization_id

string

Organização

number_billing

number

Número sequencial da cobrança

customer

object

Dados do cliente (ver abaixo)

consumer_units

string[]

Unidades consumidoras cobradas

amount

number

Valor da cobrança

currency

string

Moeda

month_reference

string

Mês de referência

due_date

string

Vencimento

paid_date

string ou null

Data de pagamento

status

string

Status da cobrança (ver enum acima)

payment_method_type

string

Método de pagamento (boleto, pix, cartão…)

billing_document_ref

string

Referência do documento

billing_document_url

string

URL do documento/fatura

barCode

string ou null

Linha digitável do boleto

description

string ou null

Descrição

transaction_id

string

ID da transação

providerData

object

Dados do provedor de pagamento (provider, provider_account_id, provider_object_type, provider_object_id)

plant_id

string

Usina relacionada

assignees

[{ id, type, name }]

Responsáveis

discount_percentage

number ou null

Percentual de desconto

shouldUnify

boolean

Se a cobrança deve ser unificada

created_at / updated_at

date

Criação / atualização


Objeto customer: id, name, document, email, phone, number, street, district, city, state.


GET /solar/payments/charges/{charge_id} — Detalhe de uma cobrança


Retorna os dados de uma cobrança específica (mesma estrutura acima), pelo charge_id.



GET /solar/energy-billing — Faturas de energia


Retorna as faturas/registros de faturamento de energia. Paginação por cursor — a resposta inclui nextCursor.


Query params: cursor (ISO 8601), limit (default 10, máx. 100).


Campos principais da resposta (data[]):


Campo

Tipo

Descrição

id

string

Identificador da fatura

organizationId

string

Organização

installationNumber

string

Número da instalação

clientNumber

string

Número do cliente

installationName

string

Nome da instalação

cpfOrCnpj

string

Documento do titular

referenceMonth

string

Mês de referência

status

string

Status da fatura

utilityCompany

string

Concessionária

generatorUnit

boolean

Se é unidade geradora

errorMessage

string

Mensagem de erro na leitura (se houver)

billingDate

ISO 8601

Data de emissão

dueDate

ISO 8601

Vencimento

accountValue

number

Valor total da conta

publicLighting

number

Contribuição de iluminação pública (CIP/COSIP)

otherValues

number

Outros valores

currentReadingDate / previousReadingDate / nextReadingDate

ISO 8601

Leitura atual / anterior / próxima

clientIds

string[]

IDs de clientes vinculados

availabilityCost

number

Custo de disponibilidade

installationType

number

Tipo de instalação

receivesSeparateCredits

boolean

Se recebe créditos separados

savings

number

Economia gerada

taxes

object

Impostos (ICMS, PIS, COFINS…)

hfp / hp / hr

EnergyObject

Postos tarifários: fora ponta / ponta / reservado (ver abaixo)

monthlyCreditsDescription

string

Descrição dos créditos do mês

barCode

string

Linha digitável

importedAt

ISO 8601

Quando foi importada

createdBy

string

Quem criou

createdAt / updatedAt

ISO 8601

Criação / atualização


Objeto hfp / hp / hr (EnergyObject) — detalhamento por posto tarifário:


Campo

Descrição

consumption / regulatedConsumption / contractedConsumption

Consumo medido / regulado / contratado (kWh)

compensatedConsumption / gd1CompensatedConsumption / gd2CompensatedConsumption

Consumo compensado (total / GD1 / GD2)

rate / rateWithoutFlags

Tarifa (com e sem bandeiras)

compensatedRate / compensatedRateWithoutFlags

Tarifa de compensação (com e sem bandeiras)

tusdRate / teRate

Tarifas TUSD e TE

gd1Rate / gd2Rate

Tarifas de compensação GD1 / GD2

injection / regulatedInjection / billedInjection

Energia injetada (medida / regulada / faturada)

injectionTusdRate / injectionTeRate

Tarifas de injeção TUSD / TE

totalConsumedValue / totalCompensatedValue / totalTaxesValue

Valores totais consumido / compensado / impostos

creditBalance / creditSurplus

Saldo / excedente de créditos


Postos tarifários: HFP = horário fora de ponta, HP = horário de ponta, HR = horário reservado. Em instalações convencionais, normalmente só o hfp é preenchido.



Ticket


GET /ticket — Chamados


Retorna os tickets/chamados (ordens de serviço) da organização.


Campo

Tipo

Descrição

id

string

Identificador do ticket

organization_id

string

Organização

status

boolean

Se está concluído

title

string ou null

Título

description

string

Descrição do chamado

description_conclusion

string ou null

Descrição da conclusão

priority

string ou null

Prioridade

request_date

date

Data de abertura

execution_date

date

Data de execução

end_date

date ou null

Data de encerramento

created_at / updated_at

date

Criação / atualização



Exemplo em TypeScript


Requisição de cobranças com paginação por cursor:


const API_KEY = 'SUA_API_KEY';
const BASE_URL = 'https://public-api.gdash.io/api/v1/solar/payments/charges';

async function getCharges() {
const cursor = '2026-01-01T00:00:00Z';
const limit = 10;

const response = await fetch(
`${BASE_URL}?apikey=${API_KEY}&cursor=${encodeURIComponent(cursor)}&limit=${limit}`,
{
method: 'GET',
headers: { 'Content-Type': 'application/json' },
},
);

const { ok, data } = await response.json();
console.log(ok, data);

// Próxima página: use o created_at do último item como novo cursor
if (data.length === limit) {
const nextCursor = data[data.length - 1].created_at;
// chamar novamente com cursor = nextCursor
}
}

getCharges();

Atualizado em: 02/07/2026

Este artigo foi útil?

Compartilhe seu feedback

Cancelar

Obrigado!