Download OpenAPI specification:
Burrel Public API
This public API has been created to comply with the European Data Act (Regulation 2023/2854). It provides means for the owner of a Burrel camera to access the raw data sent by their camera to the Burrel server backend.
All data provided by the API is raw data reported by the camera, except for the thumbnail image: This is created by the Burrel backend and provided through the API to reduce the need to download full versions of media files.
The API is freely usable by owners of Burrel cameras. Using the API does not require using the Burrel app. The API can also be used by third parties to whom the camera owner has delegated access, but such third parties need a separate written agreement with Natlink. The agreement is available for any legal entity in the EU, but data accesses incur a cost (pricing information TBD).
Contact us using the support form at https://support.burrelcameras.com/support/tickets/new if you have questions about the API, or if you are a third party interested in obtaining access to the API.
Returns the current specification of the API, along with its version number, terms of use, third-party agreement process information and data storage limitations.
To receive this Swagger specification as-is, specify the header Accepts: application/json
in the request.
Get an access token for the API. The token is valid for one hour, after
which it must be renewed. For all requests except api/v1/public/auth
,
a valid token must be specified in the request headers as
Authorization: Bearer <token>
.
The authentication is done either with an access key, or the IMEI/Burrel ID pair.
If the camera is being used in the Burrel App, the owner of the device can create an access key in the app. On the other hand, if the camera is not used in the Burrel App at all, authentication can be done with the device's IMEI number and Burrel ID found in the sales package; this ensures, that this API is usable also without having to sign in to the Burrel app and hence accepting the Burrel app terms of service.
The owner of the camera can give out the login credentials (access key or the IMEI/Burrel ID pair) to grant access to a third party. However, a third party is not allowed to access the API without a written agreement with Natlink; and when a third party system or application uses the API, the `applicationKey' parameter must be supplied.
A third-party's use of credentials in the API implies that the user has delegated access.
accessKey | string Access key for the device. The owner of a device can generate this key in the Burrel app. |
imei | string IMEI of the camera. |
burrelID | string Burrel ID of the camera. |
applicationKey | string Application Key of a third party system accessing the API. This parameter can be omitted when the owner of the camera issues requests to the camera themself; but it is mandatory when the requests are sent by a third party system or application. Third parties need a written agreement with Natlink in order to be allowed to use the API. |
{- "accessKey": "string",
- "imei": "string",
- "burrelID": "string",
- "applicationKey": "string"
}
{- "token": "string"
}
Get the current status and settings of the camera, if applicable. The set of status data and settings supported by cameras varies by model.
{- "lastSeen": "string",
- "firmwareVersion": "string",
- "lastTemperature": 0,
- "lastBatteryLevel": 0,
- "lastLocation": {
- "latitude": 0,
- "longitude": 0
}, - "settings": {
- "mode": "string",
- "photoBurst": "string",
- "photoSize": "string",
- "videoSize": "string",
- "videoLength": "string",
- "videoSound": "string",
- "language": "string",
- "clock": "string",
- "smsControlPhone": "string",
- "sendTo": "string",
- "sendVia": "string",
- "timelapseInterval": "string",
- "sensitivity": "string",
- "sendLimit": 0,
- "sendMode": "string",
- "autoupdateCycle": "string"
}
}
List the camera's media that is currently stored in the Burrel backend system. The query can be refined with parameters. By default, it returns up to 20 latest media files.
If the camera is standalone, i.e. not used in the Burrel app, the backend only stores the last media received from the camera, and for only up to 12 hours. A camera registered in the Burrel app has seven days of full media history, and if the owner of the camera has a Burrel pro subscription, the time is extended to a full year.
Deletion of a media is soft; a deleted media entry is simply marked as deleted, to enable undoing accidental media deletions. Deleted media is hard-deleted 30 days after the soft deletion. Hard deletion removes all metadata, the full media file and the thumbnail from the Burrel backend storage.
before | string List latest media created before this timestamp, specified in the RFC 3339 format (e.g. "2025-07-02T08:56:12Z"). Both |
after | string List earliest media created after this timestamp, specified in the RFC 3339 format. Both |
limit | integer Limit the results to this number of entries. The maximum value is 200, and the default value is 20. |
{- "media": [
- {
- "created": "string",
- "type": "string",
- "location": {
- "latitude": 0,
- "longitude": 0
}, - "temperature": 0,
- "thumbnail": "string",
- "url": "string"
}
]
}
Returns a full export of all data present in the Burrel backend for the camera. Note that this API call can potentially be very heavy, as some cameras have tens of thousands of photos on the system. Please use the more lightweight queries described above for interactive purposes.
{- "status": {
- "lastSeen": "string",
- "firmwareVersion": "string",
- "lastTemperature": 0,
- "lastBatteryLevel": 0,
- "lastLocation": {
- "latitude": 0,
- "longitude": 0
}, - "settings": {
- "mode": "string",
- "photoBurst": "string",
- "photoSize": "string",
- "videoSize": "string",
- "videoLength": "string",
- "videoSound": "string",
- "language": "string",
- "clock": "string",
- "smsControlPhone": "string",
- "sendTo": "string",
- "sendVia": "string",
- "timelapseInterval": "string",
- "sensitivity": "string",
- "sendLimit": 0,
- "sendMode": "string",
- "autoupdateCycle": "string"
}
}, - "media": [
- {
- "created": "string",
- "type": "string",
- "location": {
- "latitude": 0,
- "longitude": 0
}, - "temperature": 0,
- "thumbnail": "string",
- "url": "string"
}
]
}
Registers a new webhook for the camera. Duplicate URLs are not stored.
When the camera connects to sends new media or to just report its
status, a POST request is sent to all webhooks registered for the
camera. The request body is a JSON document similar to what is returned
by publicExport
, except that the media
list only contains the
new media. The list is empty if the camera's request was not a media
upload.
Failed webhook requests are not retried. There is a five-second timeout for each webhook. A webhook that exceeds the timeout or returns a non-20x result code five times in a row is automatically deregistered.
url required | string |
{- "url": "string"
}
{- "message": "string"
}