| Date | Client | Project | Hours | Description | Amount |
|---|---|---|---|---|---|
| No time entries yet. | |||||
| Client | Hours | Billable $ |
|---|---|---|
| No entries yet. | ||
| Date | Client | Project | Hours | Description | Billable | Amount | |
|---|---|---|---|---|---|---|---|
| No time entries yet. | |||||||
{ client, project, hours, rate, date, description }{ url, events[] }// GET current dashboard state const res = await fetch('https://barbrickdesign.github.io/api/incomeOS/state', { headers: { 'Authorization': `Bearer ${apiKey}` } }); const state = await res.json(); console.log(state.totals.monthlyEarnings); // POST a new time entry await fetch('https://barbrickdesign.github.io/api/incomeOS/transaction', { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${apiKey}` }, body: JSON.stringify({ client: 'Acme Corp', project: 'API Rebuild', hours: 3.5, rate: 150, date: '2026-03-18', description: 'Implemented OAuth2 flow' }) });
const axios = require('axios'); const client = axios.create({ baseURL: 'https://barbrickdesign.github.io/api/incomeOS', headers: { 'Authorization': `Bearer ${process.env.INCOMEOS_KEY}` } }); // Fetch summary const { data } = await client.get('/summary'); console.log(`MRR: $${data.mrr}`); // Register webhook await client.post('/webhook', { url: 'https://yourapp.com/webhook', events: ['new_transaction', 'invoice_paid'] });
import requests, os BASE = "https://barbrickdesign.github.io/api/incomeOS" HEADERS = {"Authorization": f"Bearer {os.environ['INCOMEOS_KEY']}"} # Get state state = requests.get(f"{BASE}/state", headers=HEADERS).json() print(f"Billable this month: ${state['totals']['monthlyBillable']}") # Log a time entry payload = { "client": "Startup XYZ", "project": "Dashboard MVP", "hours": 4.0, "rate": 125, "date": "2026-03-18", "description": "Built chart components" } requests.post(f"{BASE}/transaction", json=payload, headers=HEADERS)
{
"event": "new_transaction",
"timestamp": "2026-03-18T14:38:00Z",
"version": "1.0",
"data": {
"client": "Acme Corp",
"project": "API Rebuild",
"hours": 3.5,
"rate": 150,
"amount": 525.00,
"billable": true,
"description": "Implemented OAuth2 flow",
"date": "2026-03-18"
},
"meta": {
"monthlyTotal": 8400.00,
"openInvoices": 2,
"activeClients": 3
}
}
The iFrame embed is the simplest way to add the dashboard to any page. No build step required.
The JS snippet supports white-label integration — your domain, your branding.
Pass ?theme=light to the URL to switch themes without re-generating.
Use the Webhook tab to receive real-time events in your own backend whenever income changes.
| # | Client | Description | Amount | Invoice Date | Due Date | Status | Actions |
|---|---|---|---|---|---|---|---|
| No invoices yet. | |||||||