Orbita API — Referência
API REST para integração com dados financeiros do Orbita. Autenticada por API key, todos os endpoints retornam JSON.
A API pública do Orbita permite que você acesse seus dados financeiros programaticamente. É ideal para:
- Alimentar dashboards e ferramentas de BI externas
- Integrar o Orbita com outros ERPs ou sistemas
- Automatizar relatórios e alertas
- Exportar dados para análise em Python/Excel/Power BI
# Exemplo rápido com curl
curl -H "X-Api-Key: ok_seutoken" \
https://seu-orbita.com/api/v1/info
Todas as requisições à API pública precisam de uma API key válida. Gere a chave em Configurações → API Keys.
Formas de enviar a chave
# Opção 1: header X-Api-Key (recomendado) X-Api-Key: ok_abc123... # Opção 2: Authorization Bearer Authorization: Bearer ok_abc123...
ok_. Guarde em local seguro — não é possível recuperá-la após a criação.
Escopos
Cada chave tem escopos que definem quais endpoints ela pode acessar:
| Escopo | Endpoints |
|---|---|
| read:dre | /dre, /nfs |
| read:cashflow | /cashflow |
| read:inventory | /inventory |
| read:comercial | /comercial |
| read:margin | /margin |
Todos os erros retornam JSON com "ok": false e um campo "error" descritivo.
| HTTP | Significado |
|---|---|
| 200 | Sucesso |
| 400 | Parâmetro inválido |
| 401 | API key não fornecida ou inválida |
| 403 | Escopo insuficiente para o endpoint |
| 500 | Erro interno do servidor |
// Exemplo de resposta de erro { "ok": false, "error": "Escopo 'read:dre' não autorizado para esta chave." }
A API pública do Orbita limita 300 requisições por minuto por IP. Ao exceder, retorna HTTP 429 com a mensagem abaixo.
{
"ok": false,
"error": "Limite de requisições por minuto atingido."
}
Adicionalmente, as sincronizações com o Tiny ERP são limitadas a ~30 req/min pela API do Tiny.
Retorna o workspace associado à API key e os escopos disponíveis. Útil para validar a chave.
Resposta
{
"ok": true,
"workspace": {
"id": 3,
"name": "Matriz iBob"
},
"scopes": ["read:dre", "read:inventory"],
"version": "1.0.0"
}
Query params
| Param | Tipo | Descrição |
|---|---|---|
| month | string | Mês no formato YYYY-MM. Padrão: mês atual. |
GET /api/dre com JWT.Resposta
{
"ok": true,
"month": "2026-03",
"saidas": {
"count": 412,
"totalNota": 2506876.14,
"totalProd": 2480000.00
},
"entradas": {
"count": 38,
"totalNota": 310200.00,
"totalProd": 298000.00
},
"contas_pagar": {
"count": 24,
"total": 187450.00
}
}
Query params
| Param | Tipo | Descrição |
|---|---|---|
| month | string | Mês YYYY-MM. Padrão: mês atual. |
Resposta
{
"ok": true,
"month": "2026-03",
"entradas": 382450.00,
"saidas": 310200.00,
"saldo": 72250.00,
"items": [
{
"date": "2026-03-05",
"descricao": "NF 12345 — Cliente XYZ",
"tipo": "entrada",
"valor": 8500.00
}
]
}
Query params
| Param | Tipo | Descrição |
|---|---|---|
| windowDays | number | Janela de dias para calcular média de vendas. Padrão: 30. |
Resposta
{
"ok": true,
"windowDays": 30,
"alerts": {
"out": 3,
"critical": 7,
"low": 12,
"ok": 248,
"total": 270
},
"items": [
{
"codigo": "LN151261330",
"descricao": "Produto Exemplo",
"saldoAtual": 45,
"avgDayQty": 8.8,
"daysRemaining": 5,
"alertLevel": "critical",
"needsReorder": true,
"reorderQty": 264
}
]
}
Query params
| Param | Tipo | Descrição |
|---|---|---|
| windowDays | number | Janela de análise em dias. Padrão: 30. |
Resposta
{
"ok": true,
"windowDays": 30,
"skus": [
{
"codigo": "LN151261330",
"totalQty": 265,
"totalVendas": 52000.00,
"avgDayQty": 8.8,
"activeDays": 28,
"ticketMedio": 196.20
}
]
}
Query params
| Param | Tipo | Descrição |
|---|---|---|
| month | string | Mês YYYY-MM. Padrão: mês atual. |
Resposta
{
"ok": true,
"month": "2026-03",
"nfCount": 142,
"marketplaceCosts": { /* custos salvos por NF */ }
}
Query params
| Param | Tipo | Descrição |
|---|---|---|
| month | string | Filtra por mês YYYY-MM. Opcional. |
| limit | number | Máximo de registros. Padrão: 100. Máx: 500. |
| offset | number | Pular N registros (paginação). Padrão: 0. |
Resposta
{
"ok": true,
"total": 1842,
"offset": 0,
"limit": 100,
"nfs": [ /* array de NFs */ ]
}
Requer: usuário com papel
orbita_admin — não está disponível para administradores de empresa.
Headers
Authorization: Bearer <jwt_token> X-Workspace-Id: 3
Resposta
{
"ok": true,
"keys": [
{
"id": 1,
"label": "Power BI integration",
"scopes": ["read:dre", "read:inventory"],
"created_at": "2026-03-06T10:00:00Z",
"last_used_at": "2026-03-06T14:22:00Z"
}
]
}
Body (JSON)
| Campo | Tipo | Descrição |
|---|---|---|
| label | string | Nome descritivo da chave. |
| scopes | string[] | Escopos autorizados. Omitir = todos os escopos. |
Resposta
{
"ok": true,
"id": 1,
"key": "ok_a1b2c3d4e5f6...",
"message": "Guarde esta chave — ela não será exibida novamente."
}
key é retornado apenas nesta resposta. Não é possível recuperá-lo depois.Path params
| Param | Tipo | Descrição |
|---|---|---|
| id | number | ID da chave a revogar. |
Resposta
{
"ok": true,
"message": "Chave revogada."
}