Skip to content

List alerts on granted devices

GET
/integration/v1/organizations/{organization}/alerts
curl --request GET \
--url 'https://api.elwids.xyz/api/integration/v1/organizations/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/alerts?condition=active&page=1&per_page=25' \
--header 'Authorization: Bearer <token>'

Requires: alerts:read

Rate limits: 240 a minute per address, 60 a minute per application

Alert episodes whose workflow is bound to a granted device, ordered by creation. Current state, not a snapshot; build a projection with the event feed.

organization
required
string format: uuid

The organization UUID. A value that does not match returns 404.

condition
string
Allowed values: active cleared
page
integer
default: 1 >= 1 <= 100000

Page number.

per_page
integer
default: 25 >= 1 <= 100

Items per page.

A page of alerts.

Media typeapplication/json
object
meta
required
object
current_page
required
integer
>= 1
last_page
required
integer
>= 1
total
required
integer
data
required
Array<object>
<= 100 items

A snapshot of one alert episode. The same object is the data of the alert.*.v1 events.

object
uuid
required
string format: uuid
episode
required
integer
>= 1
condition
required
string
Allowed values: active cleared
activated_at
required
string | null format: date-time
cleared_at
required
string | null format: date-time
acknowledged_at
required
string | null format: date-time
workflow_uuid
required
string format: uuid
workflow_name
required
string
device_uuid
required
string format: uuid
execution_stopped_reason
required

Why the alert’s workflow stopped evaluating, for example binding_changed.

string | null

Example

{
"data": [
{
"uuid": "7c9e2a41-1d3b-4f5e-8a6c-2b4d6f8a0c1e",
"episode": 3,
"condition": "active",
"activated_at": "2026-10-12T07:58:10.000000Z",
"cleared_at": null,
"acknowledged_at": null,
"workflow_uuid": "5a1b2c3d-4e5f-4a6b-8c7d-9e0f1a2b3c4d",
"workflow_name": "North paddock — Herd tracker 17",
"device_uuid": "3f8a1c2e-5b6d-4e7f-8a9b-0c1d2e3f4a5b",
"execution_stopped_reason": null
}
],
"meta": {
"current_page": 1,
"last_page": 1,
"total": 1
}
}
Cache-Control
required
string
/(^|[ ,])no-store([ ,]|$)/

Responses to authenticated integration requests are never cached. The header also carries private.

Example
no-store, private

No valid credentials: no session (first-party API), or a missing, invalid, expired or revoked application token (integration API).

Media typeapplication/json

The body of most error responses.

object
message
required
string

Example generated

{
"message": "example"
}

The caller is not allowed: not a member of the organization, missing a tenant or platform permission, or (integration API) an ability not granted on both the application and the token.

Media typeapplication/json

The body of most error responses.

object
message
required
string

Example generated

{
"message": "example"
}

Not found: an unknown organization or resource, a resource in another organization or not granted to the application, or a malformed identifier (the route does not match).

Media typeapplication/json

The body of most error responses.

object
message
required
string

Example generated

{
"message": "example"
}

The input failed validation.

Media typeapplication/json

422 for input that failed validation.

object
message
required

The first error, followed by a count of the others.

string
errors
required

Messages per field, keyed by the field’s dotted path. A rejection by the device runtime appears under runtime.

object
runtime
Array<string>
key
additional properties
Array<string>

Example generated

{
"message": "example",
"errors": {
"runtime": [
"example"
]
}
}

A rate limit was reached; see x-rate-limits on the operation.

Media typeapplication/json

The body of most error responses.

object
message
required
string

Example generated

{
"message": "example"
}
Retry-After
required
integer

Seconds to wait before retrying.

Report a problem with this page