Pular para o conteúdo

Usando a API REST

A API REST do MoneyLights permite que os teus próprios sistemas leiam e mantenham os dados da tua organização: transações, fornecedores, clientes, projetos, categorias e fluxo de caixa. Tu autenticas-te com uma chave de API.

Envia a tua chave no cabeçalho X-API-Key:

GET /api/transactions HTTP/1.1
Host: api.moneylights.app
X-API-Key: ml_sk_<key-id>_<secret>

Authorization: ApiKey <key> também funciona. Authorization: Bearer <key> não funciona — Bearer pertence à sessão do navegador. Nunca coloques a chave na URL: tais pedidos são recusados antes de chegarem a qualquer coisa.

A lista completa e sempre atualizada do que a tua chave pode aceder é o documento público OpenAPI:

GET https://api.moneylights.app/api/public/openapi.json

Ele é gerado a partir da aplicação em execução e lista exatamente os endpoints publicados, cada um anotado com o scope que requer (x-required-scope). Se este guia e esse documento alguma vez discordarem, o documento está correto. Podes alimentá-lo a um gerador de cliente ou importá-lo para uma ferramenta de API.

Apenas os endpoints que foram explicitamente publicados fazem parte da API pública. A regra orientadora é enriquecer e manter, nunca destruir:

  • Tu podes listar e filtrar transações, atribuir-lhes uma categoria, fornecedor, cliente, projeto ou alocações de pessoa, e criar ou atualizar fornecedores, clientes, projetos e categorias.
  • Tu não podes eliminar um fornecedor, cliente, projeto ou categoria através da API. Remover um registro que outros registros apontam é uma decisão que um script não deve tomar sem supervisão — essas ações vivem na aplicação.

Conexões bancárias, faturamento, gestão de equipe e gestão de chaves de API nunca são acessíveis com uma chave, independentemente dos scopes que tem.

Três limites se aplicam, e um pedido deve satisfazer todos eles:

PlanoLeituras/min por chaveEscritas/min por chavePedidos/min por organizaçãoPor dia, por organização
Equipa1203012010 000
Empresarial600150600100 000

O limite por minuto a nível organizacional é o que deves considerar. É o mesmo número que o limite por chave, então uma chave a funcionar a todo o vapor pode consumir o minuto de toda a organização — adicionar chaves não aumenta a capacidade. Se executares várias integrações, distribui-as.

Cada resposta traz X-RateLimit-Limit e X-RateLimit-Remaining. Um 429 traz Retry-After em segundos — respeita-o; tentar novamente imediatamente é como um limite de taxa se torna uma interrupção.

As recusas trazem um code estável que podes ativar. Os que realmente encontrarás:

CódigoSignificado
api_key_invalidMalformada, desconhecida ou chave secreta errada
api_key_expiredPassou a sua data de expiração — cria uma nova chave
api_key_revokedA chave foi cortada, ou um segredo rotacionado expirou
api_key_scope_missingA chave não tem o scope que este endpoint precisa
api_key_endpoint_not_publishedO endpoint não faz parte da API pública
api_key_rate_limitedAcima de um limite — respeita Retry-After

Um pedido sem chave nenhuma recebe um simples 401 sem código — trata um 401 sem corpo como “Esqueci-me do cabeçalho”.

  • A tua chave alcança exatamente uma organização — aquela para a qual foi emitida. Não pode ser direcionada a mais lado nenhum.
  • Os números de uso são indicativos. “Último usado” e a contagem de pedidos respondem à pergunta “isto ainda está em uso?”, não a questões de faturamento.
  • Prefere a API para fluxos de dados, e o MCP Server quando o chamador é um assistente de IA — mesma credencial, mesmos scopes.