Alerts API
REST endpoints to list, create, and update alerts in your workspace
Use the Texture REST API to query alerts and manage their lifecycle. Authenticate with a workspace API key (Server or API type) in the Texture-Api-Key header.
For field-level request and response schemas, use the interactive API reference or the OpenAPI specification.
For Dashboard visibility controls (severity filters, OEM overrides), see Alert configuration. Workspace alert configuration is not available via REST today — configure it under Settings → Alerts in the Dashboard.
Authentication#
All endpoints require a workspace-scoped API key:
curl -s "https://api.texturehq.com/v1/alerts" \
-H "Texture-Api-Key: your_api_key"The key determines which workspace the request applies to. You do not pass workspaceId in the URL; it is inferred from the key.
Alert object#
Responses use a consistent alert shape:
{
"id": "clm1a2b3c4d5e6f7g8h9i0j1",
"externalId": "alert-123456",
"workspaceId": "cllgn0u4r000008l7eazybfbo",
"siteId": "cllgn0u4r000008l7eazybfbo",
"deviceId": "cllgn0u4r000008l7eazybfbo",
"title": "Device is offline",
"description": "The thermostat has been offline for 15 minutes.",
"sourceSystem": "field-ops",
"type": "HARDWARE_FAULT",
"subtype": "INVERTER_FAULT",
"alertType": "HARDWARE_FAULT",
"severity": "WARNING",
"status": "OPEN",
"providerName": "Internal",
"providerCode": "internal",
"createdAt": "2026-05-22T12:00:00.000Z",
"updatedAt": "2026-05-22T12:00:00.000Z",
"acknowledgedAt": null,
"acknowledgedBy": null,
"ignoredAt": null,
"ignoredBy": null,
"resolvedAt": null,
"resolvedBy": null,
"snoozedUntil": null
}| Field | Description |
|---|---|
severity | CRITICAL, WARNING, or INFO |
status | OPEN, ACKNOWLEDGED, IGNORED, or RESOLVED |
type, subtype | Normalized classification (prefer over legacy alertType) |
sourceSystem | Origin identifier (OEM adapter, partner app, your automation, etc.) |
Device enrichment fields (manufacturer, deviceName, deviceModel, and related fields) are included when available.
Visibility and filtered results#
After you save workspace alert configuration in the Dashboard, GET /v1/alerts returns only alerts that pass your visibility rules—the same filtered set shown in the Dashboard. totalItems and totalPages reflect the filtered count, not every alert stored in the database.
Until the first save, all alerts in the workspace are returned. See capture principle for how storage differs from visibility.
List alerts#
GET /v1/alerts
Query parameters:
| Parameter | Type | Description |
|---|---|---|
id | string | Filter by Texture alert ID |
externalId | string | Filter by upstream system ID |
severity | enum | CRITICAL, WARNING, or INFO |
status | enum | OPEN, ACKNOWLEDGED, IGNORED, or RESOLVED |
siteId | string | Filter by site ID |
deviceId | string | Filter by device ID |
sourceSystem | string | Filter by source system |
manufacturerDeviceId | string | Filter by manufacturer device ID |
page | integer | Page number (default 1, max 1000) |
perPage | integer | Items per page (default 10, max 100) |
Response: 200 OK — Paginated list:
{
"data": [ /* alert objects */ ],
"page": 1,
"perPage": 25,
"totalItems": 42,
"totalPages": 2
}Example — open critical alerts:
curl -s "https://api.texturehq.com/v1/alerts?status=OPEN&severity=CRITICAL&page=1&perPage=25" \
-H "Texture-Api-Key: your_api_key"Create alert#
POST /v1/alerts
Publish an alert from your application or automation. Created alerts follow the same lifecycle and visibility rules as ingested OEM alerts.
Request body:
| Field | Required | Description |
|---|---|---|
siteId | Yes | Site the alert belongs to |
title | Yes | Short summary |
sourceSystem | Yes | Your system identifier (e.g. field-ops) |
severity | Yes | CRITICAL, WARNING, or INFO |
deviceId | No | Related device, if any |
description | No | Additional detail |
type | No | Normalized type (defaults to UNKNOWN when omitted) |
subtype | No | Normalized subtype |
alertType | No | Legacy free-text type (prefer type / subtype) |
providerName | No | Provider display name |
providerCode | No | Provider-specific code |
Response: 201 Created — Returns the created alert object.
Example:
curl -s -X POST "https://api.texturehq.com/v1/alerts" \
-H "Texture-Api-Key: your_api_key" \
-H "Content-Type: application/json" \
-d '{
"siteId": "cllgn0u4r000008l7eazybfbo",
"title": "Manual inspection required",
"description": "Technician flagged inverter noise during site visit.",
"sourceSystem": "field-ops",
"type": "HARDWARE_FAULT",
"subtype": "INVERTER_FAULT",
"severity": "WARNING",
"providerName": "Internal",
"providerCode": "internal"
}'Acknowledge alert#
PATCH /v1/alerts/:id/acknowledge
Marks the alert as acknowledged. Optionally snooze follow-up until a specific time.
Request body (optional):
| Field | Type | Description |
|---|---|---|
snoozeUntil | ISO 8601 datetime | Pause follow-up until this time |
Response: 200 OK — Returns the updated alert object.
Example:
curl -s -X PATCH "https://api.texturehq.com/v1/alerts/clm1a2b3c4d5e6f7g8h9i0j1/acknowledge" \
-H "Texture-Api-Key: your_api_key" \
-H "Content-Type: application/json" \
-d '{"snoozeUntil": "2026-06-01T12:00:00Z"}'Ignore alert#
PATCH /v1/alerts/:id/ignore
Marks the alert as ignored (suppressed without resolution).
Response: 200 OK — Returns the updated alert object.
curl -s -X PATCH "https://api.texturehq.com/v1/alerts/clm1a2b3c4d5e6f7g8h9i0j1/ignore" \
-H "Texture-Api-Key: your_api_key"Resolve alert#
PATCH /v1/alerts/:id/resolve
Marks the alert as resolved.
Response: 200 OK — Returns the updated alert object.
curl -s -X PATCH "https://api.texturehq.com/v1/alerts/clm1a2b3c4d5e6f7g8h9i0j1/resolve" \
-H "Texture-Api-Key: your_api_key"Endpoint summary#
| Method | Path | Purpose |
|---|---|---|
GET | /v1/alerts | List and filter alerts (visibility-aware after config is saved) |
POST | /v1/alerts | Create an alert |
PATCH | /v1/alerts/:id/acknowledge | Acknowledge (optional snooze) |
PATCH | /v1/alerts/:id/ignore | Ignore |
PATCH | /v1/alerts/:id/resolve | Resolve |
Related guides#
- Alerts — Overview and data model
- Alert configuration — Dashboard visibility controls (not available via REST)
- OEM alert reference — Provider slugs and ingestion
- Destinations —
ALERT_CREATEDevent delivery - API keys — Create and manage workspace API keys