Burrel public API (1.0.0)

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.

publicInfo

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.

Responses

Response samples

Content type
No sample

publicAuth

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.

Request Body schema: application/json
required
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.

Responses

Request samples

Content type
application/json
{
  • "accessKey": "string",
  • "imei": "string",
  • "burrelID": "string",
  • "applicationKey": "string"
}

Response samples

Content type
application/json
{
  • "token": "string"
}

publicGetStatus

Get the current status and settings of the camera, if applicable. The set of status data and settings supported by cameras varies by model.

Responses

Response samples

Content type
application/json
{
  • "lastSeen": "string",
  • "firmwareVersion": "string",
  • "lastTemperature": 0,
  • "lastBatteryLevel": 0,
  • "lastLocation": {
    },
  • "settings": {
    }
}

publicListMedia

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.

query Parameters
before
string

List latest media created before this timestamp, specified in the RFC 3339 format (e.g. "2025-07-02T08:56:12Z"). Both before and after cannot be specified in a single query.

after
string

List earliest media created after this timestamp, specified in the RFC 3339 format. Both before and after cannot be specified in a single query.

limit
integer

Limit the results to this number of entries. The maximum value is 200, and the default value is 20.

Responses

Response samples

Content type
application/json
{
  • "media": [
    ]
}

publicExport

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.

Responses

Response samples

Content type
application/json
{
  • "status": {
    },
  • "media": [
    ]
}

publicListWebhooks

List the webhooks currently registered for the camera.

Responses

Response samples

Content type
application/json
{
  • "webhooks": [
    ]
}

publicRegisterWebhook

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.

Request Body schema: application/json
required
url
required
string

Responses

Request samples

Content type
application/json
{
  • "url": "string"
}

Response samples

Content type
application/json
{
  • "message": "string"
}

publicDeregisterWebhook

Deregisters a webhook.

Request Body schema: application/json
required
url
required
string

Responses

Request samples

Content type
application/json
{
  • "url": "string"
}

Response samples

Content type
application/json
{
  • "message": "string"
}