OwlOps Public API — Getting Started (Alpha)
Integrate your external systems with the powerful data captured in OwlOps
Alpha Release Notice: The OwlOps Public API is currently in alpha. Endpoints, field names, and the base URL are subject to change, and the service may experience downtime for maintenance or updates without prior notice. We'll communicate changes as the API moves toward general availability.
The OwlOps Public API gives you read-only access to your OwlOps data, allowing you to integrate tasks, assets, invoices, and activity logs into your own systems, dashboards, and reporting tools.
Requesting an API Key
To get started, contact support@owlops.com to request an API key. Self-service key management within the OwlOps web platform will be available soon.
Your API key will look like: owlk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Important: Store your API key securely. It cannot be recovered — if lost, you'll need to request a new one.
API Documentation
Full interactive documentation is available via Swagger:
https://api-owlops-public-bugrb4gxeqcghqh5.eastus2-01.azurewebsites.net/swagger
The Swagger UI lets you browse all available endpoints, see request/response formats, filter parameters, and field descriptions. You can also test requests directly from the browser.
Authentication
Include your API key in the X-Api-Key header with every request:
GET /v1/tasks
Host: api-owlops-public-bugrb4gxeqcghqh5.eastus2-01.azurewebsites.net
X-Api-Key: owlk_your_key_here
Available Endpoints
| Endpoint | Description |
|---|---|
GET /v1/tasks |
List tasks with optional filters |
GET /v1/tasks/{id} |
Get a single task with full detail |
GET /v1/tasks/{id}/log |
Activity log for a specific task |
GET /v1/tasklog |
Activity log across all tasks by date range |
GET /v1/assets |
List assets with optional filters |
GET /v1/assets/{id} |
Get a single asset with full detail |
GET /v1/invoices |
List invoices with optional filters |
GET /v1/invoices/{id} |
Get an invoice with line items |
Pagination
All list endpoints return paginated results. Use the page and pageSize query parameters to navigate:
GET /v1/tasks?page=1&pageSize=25
Every response includes a pagination object:
{
"data": [ ... ],
"pagination": {
"page": 1,
"pageSize": 25,
"totalCount": 142,
"totalPages": 6,
"hasNextPage": true
}
}
The maximum page size is 250 (100 for task log endpoints).
Filtering
Filters use label values, not internal IDs. For example:
GET /v1/tasks?status=Open&priority=High
GET /v1/assets?assetType=Capital&status=Active
GET /v1/invoices?status=Paid&from=2026-01-01&to=2026-03-31
Tasks can be filtered by status, priority, assetId, from, and to (created date range).
Assets can be filtered by assetType and status.
Invoices can be filtered by status, from, and to (invoice date range).
Task Log (date range) requires both from and to (maximum 90-day range) and can be filtered by logType.
All dates use ISO 8601 format (YYYY-MM-DD).
Recommended Integration Pattern
For keeping your systems in sync, we recommend a daily pull of both tasks and task log entries. For example, each morning pull the previous day's data:
New and updated tasks:
GET /v1/tasks?from=2026-04-13&to=2026-04-14&pageSize=100
All activity from yesterday (updates, hours logged, parts, notes):
GET /v1/tasklog?from=2026-04-13&to=2026-04-14&pageSize=100
Between the two, you'll have a complete picture of new work orders and all activity across your tasks for the day.
Usage Patterns
How you use the API depends on your integration needs. Here are some common approaches:
Daily Sync
Pull the previous day's tasks and activity log each morning to keep an external system in sync. Best for reporting dashboards, data warehouses, and ERP integrations.
GET /v1/tasks?from=2026-04-13&to=2026-04-14&pageSize=100
GET /v1/tasklog?from=2026-04-13&to=2026-04-14&pageSize=100
Periodic Polling
Poll every 15–60 minutes for near-real-time updates. Use a short date range to capture recent activity.
GET /v1/tasks?from=2026-04-14T12:00:00&to=2026-04-14T13:00:00&pageSize=100
GET /v1/tasklog?from=2026-04-14T12:00:00&to=2026-04-14T13:00:00&pageSize=100
At 60 requests per minute, polling every 15 minutes stays well within rate limits.
Asset Inventory Snapshot
Pull your full asset list on a weekly or monthly basis for inventory reconciliation or insurance reporting.
GET /v1/assets?pageSize=250&page=1
GET /v1/assets?pageSize=250&page=2
Page through results until hasNextPage is false.
Invoice Reconciliation
Pull invoices by date range or status to match against your accounts payable. Use the detail endpoint to get line items for each invoice.
GET /v1/invoices?status=Sent&from=2026-04-01&to=2026-04-14
GET /v1/invoices/12345
Tips
- Start with the Swagger docs — test your queries interactively before writing code.
- Page through large result sets — always check
hasNextPageand incrementpageuntil it'sfalse. - Use date filters on task log — the
fromandtoparameters are required and keep queries fast. Maximum range is 90 days. - Cache where possible — asset and invoice data changes infrequently. Daily or weekly pulls are usually sufficient.
Rate Limiting
API requests are limited to 60 requests per minute per API key. If you exceed this limit, you'll receive a 429 response:
{
"error": "Rate limit exceeded. Slow down and retry.",
"statusCode": 429
}
Error Responses
All errors return a consistent JSON format:
| Status Code | Meaning |
|---|---|
| 400 | Bad request — check your query parameters |
| 401 | Missing or invalid API key |
| 404 | Resource not found or not accessible to your account |
| 429 | Rate limit exceeded |
| 500 | Server error — include the traceId when contacting support |
Example error response:
{
"error": "An unexpected error occurred. If the problem persists, contact support with the traceId.",
"statusCode": 500,
"traceId": "abc123-def456"
}
Data Scoping
All data returned by the API is automatically scoped to your organization:
- Tasks are limited to those assigned to your API user
- Assets are limited to your company
- Invoices are limited to those billed to departments within your company
Internal platform data (task lists, request items, system log entries) is automatically excluded.
Need Help?
- API Documentation: https://api-owlops-public-bugrb4gxeqcghqh5.eastus2-01.azurewebsites.net/swagger
- Support: support@owlops.com