Como consumir as rotas disponibilizadas na API PÚBLICA

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


Base URL: https://public-api.gdash.io/api/v1
Documentação interativa (Swagger): https://public-api.gdash.io/swagger
Autenticação: parâmetro apikey na query string de todas as requisições



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.


Na prática, isso significa que os dados que você já acompanha no GDASH — usinas, clientes, unidades consumidoras, faturas de energia, cobranças, negociações e chamados — podem ser lidos e, em alguns casos, criados diretamente pelo seu próprio sistema, sem depender de exportações manuais ou de alguém abrindo a plataforma para copiar informação.


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. 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.


O que dá para construir com ela


Alguns cenários que a API atende bem hoje:


Cenário

Como a API resolve

Espelhar dados no seu ERP/BI

Leia periodicamente usinas, clientes, unidades consumidoras e faturas, e sincronize com sua base

Conciliação financeira

Consulte cobranças por status, vencimento e período para bater com o extrato bancári

Acompanhamento operacional

Monitore chamados e tarefas abertas para alimentar painéis de operação ou disparar alertas internos



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. É ela que diz à API qual organização está fazendo a chamada — por isso, todos os dados retornados são sempre e exclusivamente os da sua organização.


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.


⚠️ Trate a API Key como uma senha. Ela dá acesso de leitura e escrita aos dados da sua organização. Guarde-a em variáveis de ambiente ou em um cofre de segredos — nunca no código-fonte versionado, em repositórios públicos ou no front-end de uma aplicação web (onde qualquer visitante conseguiria lê-la). Se suspeitar que a chave vazou, desabilite e gere uma nova pela mesma tela.



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.



💡 Dica: o Swagger é a fonte da verdade sempre atualizada. Este guia explica os conceitos e o comportamento da API; o Swagger reflete os campos exatos de cada versão em produção. Quando houver divergência, confie no Swagger.



Convenções gerais


Estas regras valem para todas as rotas da API.


Conceito

Detalhe

Base URL

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

Autenticação

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

Métodos

GET para leitura, POST para criação

Formato de resposta

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

Content-Type

application/json nas requisições POST

Datas

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

Paginação

Por cursor, nas rotas de maior volume (payments/charges, energy-billing, consumer-units)

Escopo dos dados

Sempre limitado à organização dona da API Key


Formato de resposta


Em caso de sucesso, a resposta segue o envelope abaixo. O conteúdo útil está sempre em data:


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


Nas rotas paginadas, o envelope também traz o cursor da próxima página:


{
  "ok": true,
  "data": [ ... ],
  "nextCursor": "2026-01-15T10:32:00.000Z"
}


Tratamento de erros


Quando algo dá errado, a API responde com o status HTTP apropriado e um corpo descritivo:


{
  "success": false,
  "status": 400,
  "error": "BadRequestException",
  "message": "Invalid key or organization not found",
  "path": "/api/v1/solar/customers?apikey=***",
  "data": []
}


Status

Significado provável

O que fazer

400

API Key inválida, ausente, ou parâmetro em formato incorreto

Confira se a chave está ativa e se as datas estão em ISO 8601

404

Recurso não encontrado (ex.: charge_id inexistente)

Verifique o identificador enviado

500 / 502 / 504

Falha temporária de comunicação interna

Tente novamente com backoff exponencial (ex.: 1s, 2s, 4s)


💡 Boa prática: implemente retry apenas para erros 5xx. Erros 4xx indicam problema na requisição e vão falhar de novo do mesmo jeito.



Paginação por cursor


As rotas com maior volume de dados usam paginação por cursor em vez de paginação por número de página. O cursor é a **data de criação (created_at / createdAt) do último item recebido**: para buscar a próxima página, envie esse valor no parâmetro cursor.


Esse modelo é mais confiável que paginar por número de página porque não "pula" nem "repete" registros quando novos dados são inseridos durante a sua leitura — algo comum em bases que recebem faturas e cobranças o tempo todo.


Parâmetros:


Param

Tipo

Descrição

cursor

ISO 8601

Data de criação do último item da página anterior. Omita na primeira chamada

limit

number

Tamanho da página. Padrão 10


Como saber que acabou:


  • Em energy-billing, a resposta devolve nextCursor. Quando ele vier null, não há mais resultados.
  • Nas demais rotas, continue paginando enquanto data.length === limit. Quando vier menos itens que o limit pedido, você chegou ao fim.



Associations: trazendo dados relacionados


Várias rotas aceitam o parâmetro opcional associations, que inclui na resposta os identificadores de entidades relacionadas. Os valores são separados por vírgula.


GET /solar/customers?apikey=SUA_API_KEY&associations=plant,consumer_unit,deal


Isso evita o clássico problema de fazer uma chamada para listar clientes e depois N chamadas para descobrir a quais usinas cada um pertence.


Rota

Valores aceitos em associations

GET /solar/customers e /solar/customers/search

deal, plant, ticket, consumer_unit, task

GET /solar/consumer-units

customer, plant

GET /solar/plants

customer

GET /crm/deal

customer

GET /crm/task

customer

GET /ticket

customer


⚠️ Importante: associations retorna apenas os IDs das entidades relacionadas, não os objetos completos. Para obter os dados completos de um cliente a partir de um ID, use GET /solar/customers/search.



CRM


GET /crm/task — Tarefas do CRM


Retorna as tarefas (to-dos) registradas no CRM da organização. Útil para acompanhar pendências da equipe comercial ou operacional em painéis externos.


Query params: apikey (obrigatório), associations (opcional — aceita customer).


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 ainda aberta)

priority

string

Prioridade

created_at / updated_at

date

Criação / última atualização



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


Retorna as oportunidades/negociações do CRM, com o funil e a etapa em que cada uma se encontra. É a rota indicada para espelhar o pipeline comercial em um BI ou calcular métricas de conversão.


Query params: apikey (obrigatório), associations (opcional — aceita customer).


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 (útil para conciliar com o seu CRM)

created_at / updated_at

date

Criação / atualização


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


Cria uma nova oportunidade no funil. Os campos pipeline_id e phase_id devem existir previamente na plataforma — consulte-os no GDASH antes de integrar.


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



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.


Query params: apikey (obrigatório), associations (opcional — aceita customer).


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



GET /solar/consumer-units — Unidades consumidoras


Retorna as unidades consumidoras (UCs) da organização, com filtros e paginação por cursor. É a rota mais direta para trabalhar com UCs sem precisar percorrer usinas ou clientes.


Query params:


Param

Tipo

Descrição

apikey

string

Obrigatório

customer_id

string

Filtrar UCs de um cliente específico

plant_id

string

Filtrar UCs vinculadas a uma usina específica

uid

string

Filtrar por uid exato da UC

numero_instalacao

string

Casa contra numeroInstalacao ou novoNumeroInstalacao

city

string

Cidade (match exato, case-insensitive)

state

string

Estado (match exato, case-insensitive)

provider

string

Distribuidora

category

enum

water ou energy

unidade_geradora

boolean

Filtrar apenas geradoras ou apenas consumidoras

associations

string

customer, plant (separados por vírgula)

cursor / limit

ISO 8601 / number

Paginação por cursor


Campos da resposta:


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

customFields

object[] ou null

Campos personalizados da UC

address, district, city, state

string ou null

Endereço da unidade


⚠️ O campo percentualExcedente está depreciado. Ele existe apenas por compatibilidade e não representa mais o rateio real quando há múltiplas fontes de crédito. Use energyCreditSources em integrações novas.



GET /solar/customers — Clientes


Retorna todos os clientes da organização, incluindo as usinas (plants) e as unidades consumidoras (installations) vinculadas a cada um.


Query params: apikey (obrigatório), associations (opcional — aceita deal, plant, ticket, consumer_unit, task).


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 das UCs

created_at / updated_at

date

Criação / atualização


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


Mesmo retorno de /solar/customers, mas com filtros. Todos os parâmetros são opcionais e combináveis — quando você envia mais de um, eles se somam (comportamento "E", não "OU").


Esta é também a rota que você usa para resolver um ID vindo de associations em dados completos do cliente.


Param

Descrição

cpf

Busca parcial por CPF (case-insensitive)

cnpj

Busca parcial por CNPJ (case-insensitive)

name

Busca parcial por nome (case-insensitive)

email

Busca parcial por e-mail (case-insensitive)

provider

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

customer_number

Match exato do número do cliente

associations

deal, plant, ticket, consumer_unit, task


POST /solar/customers/create — Criar cliente


Cria um cliente já vinculado a uma usina. Os campos de envio (email_sending_enabled, whatsapp_message_sending_enabled) controlam se o cliente passará a receber as comunicações automáticas da plataforma — defina-os conscientemente ao integrar, para não disparar mensagens inesperadas durante uma carga inicial de dados.


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. É a rota central para conciliação financeira e para acompanhar inadimplência.


Query params:


Param

Tipo

Descrição

apikey

string

Obrigatório

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

customer_id

string

Filtrar cobranças de um cliente específico

consumer_unit_id

string

Filtrar cobranças de uma UC específica

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 (padrão 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 de energia lidas pela plataforma, já estruturadas em campos — consumo, compensação, tarifas, impostos e saldo de créditos. É a rota mais rica da API e a base para relatórios de economia e de geração distribuída.


Paginação por cursor — a resposta inclui nextCursor.


Query params:


Param

Tipo

Descrição

apikey

string

Obrigatório

customer_id

string

Filtrar faturas de um cliente específico

consumer_unit_id

string

Filtrar faturas de uma UC específica

cursor

ISO 8601

Cursor de paginação

limit

number

Padrão 10, máximo 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 (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


⚠️ Atenção ao campo errorMessage. Faturas são lidas automaticamente a partir dos portais das concessionárias, e nem toda leitura é bem-sucedida. Quando errorMessage estiver preenchido, os valores numéricos daquela fatura podem estar incompletos ou ausentes. Sempre verifique esse campo antes de usar a fatura em cálculos financeiros.


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 (baixa tensão, grupo B), normalmente **só o hfp é preenchido** — os demais vêm zerados. Instalações de média tensão (grupo A) tipicamente trazem hfp e hp preenchidos.



Ticket


GET /ticket — Chamados


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


Query params: apikey (obrigatório), associations (opcional — aceita customer).


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



Exemplos em TypeScript


1. Buscar todas as cobranças, página por página


const API_KEY = process.env.GDASH_API_KEY!;
const BASE_URL = 'https://public-api.gdash.io/api/v1';

async function getAllCharges() {
const limit = 50;
let cursor: string | undefined;
const allCharges: any[] = [];

while (true) {
const params = new URLSearchParams({ apikey: API_KEY, limit: String(limit) });
if (cursor) params.set('cursor', cursor);

const response = await fetch(`${BASE_URL}/solar/payments/charges?${params}`);
if (!response.ok) throw new Error(`Falha na API: ${response.status}`);

const { data } = await response.json();
allCharges.push(...data);

// Menos itens que o limite significa que chegamos ao fim
if (data.length < limit) break;

// O próximo cursor é o created_at do último item recebido
cursor = data[data.length - 1].created_at;
}

return allCharges;
}


2. Faturas de energia usando nextCursor


async function getEnergyBillings() {
const all: any[] = [];
let cursor: string | null = null;

do {
const params = new URLSearchParams({ apikey: API_KEY, limit: '100' });
if (cursor) params.set('cursor', cursor);

const response = await fetch(`${BASE_URL}/solar/energy-billing?${params}`);
const { data, nextCursor } = await response.json();

// Ignora faturas cuja leitura falhou antes de usar em cálculos
all.push(...data.filter((bill: any) => !bill.errorMessage));

cursor = nextCursor; // null indica fim dos resultados
} while (cursor);

return all;
}


3. Buscar um cliente e suas unidades consumidoras


async function getCustomerWithUnits(cnpj: string) {
const params = new URLSearchParams({
apikey: API_KEY,
cnpj,
associations: 'consumer_unit,plant',
});

const response = await fetch(`${BASE_URL}/solar/customers/search?${params}`);
const { data } = await response.json();

return data[0];
}


4. Criar um cliente


async function createCustomer() {
const response = await fetch(
`${BASE_URL}/solar/customers/create?apikey=${API_KEY}`,
{
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
plant_id: 'plant_123',
name: 'Empresa Exemplo LTDA',
cnpj: '12345678000190',
email: 'contato@exemplo.com.br',
provider: 'enelsp',
// Desligue os envios durante uma carga inicial de dados
email_sending_enabled: false,
whatsapp_message_sending_enabled: false,
}),
},
);

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



Boas práticas de integração


Prática

Por quê

Guarde a API Key em variável de ambiente

Evita vazamento por commit acidental ou exposição no front-end

Use limit alto em cargas iniciais

Menos requisições para o mesmo volume de dados (respeite o máximo de 100 em energy-billing)

Filtre no servidor, não no cliente

Use customer_id, consumer_unit_id, status e intervalos de data em vez de baixar tudo e filtrar localmente

Prefira associations a chamadas em cascata

Uma requisição com associations substitui dezenas de chamadas individuais

Implemente retry só para erros 5xx

Erros 4xx são problemas da requisição e não se resolvem com nova tentativa

Sincronize incrementalmente

Guarde o último cursor processado e retome dali na próxima execução, em vez de reprocessar a base inteira

Verifique errorMessage nas faturas

Faturas com erro de leitura podem ter valores incompletos



Dúvidas frequentes


A API tem limite de requisições?
Não há um limite rígido publicado, mas integrações devem ser conscientes: prefira cargas incrementais e limit maior a laços de requisições pequenas e frequentes.


Consigo acessar dados de outra organização?
Não. A API Key define o escopo, e toda resposta é restrita à organização dona da chave.


O que acontece se eu gerar uma nova API Key?
A chave anterior deixa de funcionar. Atualize suas integrações antes de desabilitar a antiga.


A ordem dos resultados é garantida?
Nas rotas paginadas por cursor, os resultados vêm ordenados por data de criação — é isso que torna o cursor confiável.


Onde vejo a lista sempre atualizada de rotas e campos?
No Swagger: https://public-api.gdash.io/swagger

Atualizado em: 07/08/2026

Este artigo foi útil?

Compartilhe seu feedback

Cancelar

Obrigado!