API Reference
SteadStack exposes a RESTful API for all operations. Build custom integrations, automate workflows, or connect your own tools.
Authentication
All API requests require a Firebase Authentication ID token passed as a Bearer token in the Authorization header.
// Get a Firebase ID token
const token = await firebase.auth().currentUser.getIdToken();
// Include it in every request
fetch('https://steadstack.com/api/sites', {
headers: {
'Authorization': `Bearer ${token}`,
'Content-Type': 'application/json',
},
});Multi-tenant Scoping
All data is automatically scoped to your tenant based on the authenticated user. You cannot access data belonging to other tenants. Site-specific data requires passing a siteId query parameter or header.
Base URL
All endpoint paths below are relative to this base URL.
Endpoints
| Method | Endpoint | Description |
|---|---|---|
| GET | /auth/me | Get current user profile |
| POST | /auth/login | Authenticate user |
| POST | /auth/signup | Create new account and tenant |
| GET | /sites | List all sites for tenant |
| POST | /sites | Create a new site |
| GET | /animals | List animals (filterable by group, status) |
| POST | /animals | Create an animal record |
| GET | /animals/groups | List animal groups |
| GET | /tasks/templates | List task templates |
| POST | /tasks/templates | Create a task template |
| GET | /tasks/runlists | List runlists |
| POST | /tasks/runlists/:id/generate | Generate task occurrences |
| GET | /tasks/occurrences | List task occurrences (by date) |
| PATCH | /tasks/occurrences/:id/complete | Complete a task occurrence |
| GET | /inventory/items | List inventory items |
| POST | /inventory/items | Create an inventory item |
| GET | /inventory/balances | Get site inventory balances |
| GET | /purchasing/orders | List purchase orders |
| POST | /purchasing/orders | Create a purchase order |
| POST | /purchasing/receipts/:id/post | Post a receipt (updates inventory + ledger) |
| GET | /accounting/accounts | List chart of accounts |
| GET | /accounting/transactions | List ledger transactions |
| POST | /accounting/journal-entries | Create a journal entry |
| POST | /accounting/journal-entries/:id/post | Post journal entry to ledger |
| GET | /accounting/reports/trial-balance | Generate trial balance report |
| GET | /accounting/reports/income-statement | Generate income statement |
| GET | /accounting/reports/balance-sheet | Generate balance sheet |
| GET | /contacts | List contacts (filterable by type) |
| POST | /contacts | Create a contact |
| GET | /events | List operational events |
| POST | /events | Create an event |
This is a partial endpoint reference.
Full documentation with request/response schemas, authentication examples, and a try-it console is on the roadmap. In the meantime, reach out via the contact form for API access or integration help.
Response Format
All responses return JSON. Successful responses include a success flag and a data object.
Success Response
{
"success": true,
"data": {
"sites": [
{
"id": "abc123",
"name": "North Ranch",
"acreage": 640
}
]
}
}Error Response
{
"success": false,
"error": "Validation failed",
"details": [
{
"field": "name",
"message": "Name is required"
}
]
}Building something with our API?
We'd love to hear what you're building. Get in touch for early access to webhook events and expanded API documentation.