Skip to main content

Getting started with the Mobaro API

Get API access, create an API key, authenticate with the X-Api-Key header, send your first request, and handle paging, limits and errors.

Written by Logan Bowlby

Overview

The Mobaro API gives your own systems programmatic access to your organization's data. Typical uses are exporting Checklist Results to a data warehouse or BI tool such as Power BI, syncing Users, Locations and Assets with other systems, and creating or updating Assignments automatically.

The API follows REST conventions over HTTPS with JSON. Every endpoint lives under https://app.mobaro.com/api/customers. For low-code automation you may not need to write requests at all: see Getting started with Mobaro's Power Automate connector.

At a glance

Who can do this

Users with Organization › Administrate create API keys. Your integration then calls the API with the key.

Where

Configuration › API › API Keys

Works on

Public API

Availability

Enabled per organization by Mobaro — ask your CSM


Check you have API access

API access is switched on per organization by Mobaro. When it's on, Users who can open Configuration (Organization › Administrate) see an API tab with an API Keys panel. If there is no API tab, or it only shows webhooks, ask your CSM to enable API access.

Mobaro can enable full access or read-only access. With read-only access, every key you create is read-only.


Create an API key

1. Open the API tab

In the Backend, go to Configuration › API. The API Keys panel lists your organization's keys.

2. Create and name the key

Click the + button (tooltip Create). In Configure API key, enter a name that says what the key is for. Read-only is ticked by default; read-only keys can't create, update or delete data. Untick it only if your integration needs to write. Click Save.

3. Copy the key

The API key created dialog shows the key once. It can't be recovered later, so copy it into a secure store before you click Understood. If you lose a key, delete it and create a new one. See Creating and Managing API Keys.

⚠️ Heads-up: An API key acts with Super User access to your organization: it can read all of your organization's data, whoever created it, and a full-access key can also change data. Never put a key in client-side code or share it in email or chat, and delete it straight away if it is exposed. See Understanding API access scopes and limitations.


Authenticate your requests

Send the key in the X-Api-Key header of every request. When a request has a JSON body (POST or PUT), also send Content-Type: application/json.

Request type

Headers

GET, DELETE

X-Api-Key

POST, PUT with JSON

X-Api-Key and Content-Type: application/json


Send your first request

This example lists timesheet entries:

curl "https://app.mobaro.com/api/customers/timesheets" \
--header "X-Api-Key: YOUR_API_KEY"

The response is a JSON page of results with items, amount, offset and total.

This example creates a timesheet entry. It needs a key without Read-only:

curl "https://app.mobaro.com/api/customers/timesheets" \
--request POST \
--header "Content-Type: application/json" \
--header "X-Api-Key: YOUR_API_KEY" \
--data '{
"description": "Training session",
"user": "users/123456-A",
"type": "TIMESHEET_TYPE_ID",
"started": "2026-01-27T10:00:00Z",
"stopped": "2026-01-27T12:00:00Z"
}'

References such as user and type take Mobaro IDs, including the prefix. Look them up with the matching GET endpoint, for example /api/customers/users or /api/customers/timesheets/types. See Understanding IDs in Mobaro.


Filter and page results

List endpoints return one page at a time. Use Limit (1–128, default 128; Results 1–20, default 20) and Offset to page through them. Date filters take ISO 8601 date-times and differ by endpoint: Results, for example, use AnsweredAfter, ReceivedAfter or UpdatedAfter, while many other endpoints use CreatedAfter. Sort with OrderBy, using a field name, or the name with a - prefix for descending order.

For every endpoint's filters, see Mobaro API parameter reference or the interactive Mobaro API documentation, also linked from the book icon (tooltip Open Documentation) on the API Keys panel.


Limits and common errors

Each key can make up to 10 requests per second, and some write endpoints, such as those that change Users or Location Groups, have lower limits. Requests above a limit get 429 Too Many Requests, so wait and retry. Common responses:

Response

Meaning

401 Unauthorized

The X-Api-Key header is missing, or the key is wrong or has been deleted.

403 Forbidden

A read-only key tried to create, update or delete data.

429 Too Many Requests

You exceeded the rate limit. Slow down and retry.

503 Service Unavailable

The API is temporarily unavailable. Retry later.


Best practices

  • Use a Read-only key unless your integration must write data, and give each integration its own key so you can delete one without affecting the others.

  • Store keys in a secrets manager, and call the API from a server, never from a browser or mobile app.

  • Test requests with Postman or curl before automating them.

  • Export large data sets in batches using date filters and paging, and retry with a delay after a 429.


Frequently asked questions

Where do I find my API key?

In Configuration › API › API Keys. You need Organization › Administrate to create one. A key is shown only once when it's created; if nobody saved it, delete it and create a new key.

I can't see the API tab in Configuration. How do I get access?

API access is enabled per organization by Mobaro. Ask your CSM to enable it. You also need Organization › Administrate to open Configuration.

Can I limit an API key to certain endpoints or data?

No. The only restriction is Read-only, which blocks creating, updating and deleting. Every key can read all of your organization's data.

Is there an API call to close an assignment or add a comment?

To change an Assignment's state, send PUT /api/customers/assignments/{id} with a stateChange, which can include a justification description. There is no endpoint for Assignment comments. Only endpoints under /api/customers are supported.

I get a CORS error when I call the API from my web page. Why?

The API doesn't accept calls from other websites' browser code. Call it from a server, script or integration tool instead, which also keeps your API key out of the browser.

Did this answer your question?