Skip to content
English
  • There are no suggestions because the search field is empty.

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 hasNextPage and increment page until it's false.
  • Use date filters on task log — the from and to parameters 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?