API reference
Webhook endpoints
The URLs a customer's messages are delivered to, and their signing secrets.
Webhook endpoints belong to a customer: each customer's Owners and Admins add up to 10 endpoints, and every message from that customer's devices is POSTed to each enabled one, signed with that endpoint's secret. Resellers can read their customers' endpoints. See Receiving webhooks for the request your endpoint receives.
Endpoints
- get
/api/json/webhook_endpointsList webhook endpoints - get
/api/json/webhook_endpoints/{id}Get a webhook endpoint - post
/api/json/webhook_endpointsAdd a webhook endpoint - patch
/api/json/webhook_endpoints/{id}Update a webhook endpoint - patch
/api/json/webhook_endpoints/{id}/rotate_secretRotate the signing secret - patch
/api/json/webhook_endpoints/{id}/generate_secretGenerate a signing secret - patch
/api/json/webhook_endpoints/{id}/set_secretSet your own signing secret - delete
/api/json/webhook_endpoints/{id}Delete a webhook endpoint
The webhook endpoint object
A URL that receives messages. The signing secret is only ever shown masked, except once when it is generated.
Attributes
iduuidRequiredUnique identifier.
customer_iduuidRequiredThe customer organization the endpoint belongs to.
descriptionstring· nullableenabledbooleanRequiredOnly enabled endpoints receive new messages.
inserted_attimestampRequiredreseller_iduuid· nullableThe customer's reseller.
signing_secret_maskedstring· nullableThe signing secret, masked, e.g. "whsec_••••••••Wq1c".
updated_attimestampRequiredurlstringRequiredWhere messages are POSTed (https).
{
"type": "webhook_endpoint",
"id": "5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8",
"attributes": {
"customer_id": "c41e9a03-6b2f-4d8e-a571-0f3b9c2d7e14",
"description": "Fleet telemetry",
"enabled": true,
"inserted_at": "2026-10-12T14:03:21Z",
"reseller_id": "a7d35c90-2e14-4f6b-8c03-5b9e1d4a2f67",
"signing_secret_masked": "whsec_••••••••Wq1c",
"updated_at": "2026-10-12T14:03:21Z",
"url": "https://fleet.example.com/hooks"
}
}Endpoints
List webhook endpoints
/api/json/webhook_endpointsEndpoints in your scope, oldest first.
- Who
- Resellers and Customers
- Roles
- Owner, Admin, Staff
Query parameters
filter[<field>]objectNarrows the list:
filter[status]=active, or with an operator:filter[inserted_at][greater_than_or_equal]=2026-10-01T00:00:00Z. Operators:in,is_nil,greater_than,greater_than_or_equal,less_than,less_than_or_equal.One of
customer_iddescriptionenabledidinserted_atreseller_idupdated_aturlsortstringA field to sort by; prefix it with
-for descending, e.g.sort=-inserted_at. Separate several with commas.page[limit]integerPage size: 50 by default, at most 200.
page[after]stringThe cursor from
links.nextof the previous page.page[offset]works too.page[count]booleantrueadds the total number of matches inmeta.page.total.
curl https://api.houndsat.com/api/json/webhook_endpoints \
-H "Authorization: Bearer $HOUNDSAT_TOKEN"{
"data": [
{
"type": "webhook_endpoint",
"id": "5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8",
"attributes": {
"customer_id": "c41e9a03-6b2f-4d8e-a571-0f3b9c2d7e14",
"description": "Fleet telemetry",
"enabled": true,
"inserted_at": "2026-10-12T14:03:21Z",
"reseller_id": "a7d35c90-2e14-4f6b-8c03-5b9e1d4a2f67",
"signing_secret_masked": "whsec_••••••••Wq1c",
"updated_at": "2026-10-12T14:03:21Z",
"url": "https://fleet.example.com/hooks"
}
}
],
"links": {
"next": "/api/json/webhook_endpoints?page[after]=g2wAAAABbQAAACQ1ZjBj…"
}
}Get a webhook endpoint
/api/json/webhook_endpoints/{id}One endpoint in your scope.
- Who
- Resellers and Customers
- Roles
- Owner, Admin, Staff
Path parameters
iduuidRequiredThe record's id.
curl https://api.houndsat.com/api/json/webhook_endpoints/5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8 \
-H "Authorization: Bearer $HOUNDSAT_TOKEN"{
"data": {
"type": "webhook_endpoint",
"id": "5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8",
"attributes": {
"customer_id": "c41e9a03-6b2f-4d8e-a571-0f3b9c2d7e14",
"description": "Fleet telemetry",
"enabled": true,
"inserted_at": "2026-10-12T14:03:21Z",
"reseller_id": "a7d35c90-2e14-4f6b-8c03-5b9e1d4a2f67",
"signing_secret_masked": "whsec_••••••••Wq1c",
"updated_at": "2026-10-12T14:03:21Z",
"url": "https://fleet.example.com/hooks"
}
}
}Add a webhook endpoint
/api/json/webhook_endpointsAdds an https:// endpoint for your customer organization and generates its signing secret. The secret is in meta.signing_secret of this response only: store it now.
- Who
- Customers
- Roles
- Owner, Admin
Attributes
Sent as data.attributes.
urlstringRequiredWhere messages are POSTed (https).
descriptionstring· nullableenabledboolean· nullableOnly enabled endpoints receive new messages.
curl -X POST https://api.houndsat.com/api/json/webhook_endpoints \
-H "Authorization: Bearer $HOUNDSAT_TOKEN" \
-H "Content-Type: application/vnd.api+json" \
-d '{"data":{"type":"webhook_endpoint","attributes":{"url":"https://fleet.example.com/hooks","description":"Fleet telemetry","enabled":true}}}'{
"data": {
"type": "webhook_endpoint",
"id": "5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8",
"attributes": {
"customer_id": "c41e9a03-6b2f-4d8e-a571-0f3b9c2d7e14",
"description": "Fleet telemetry",
"enabled": true,
"inserted_at": "2026-10-12T14:03:21Z",
"reseller_id": "a7d35c90-2e14-4f6b-8c03-5b9e1d4a2f67",
"signing_secret_masked": "whsec_••••••••Wq1c",
"updated_at": "2026-10-12T14:03:21Z",
"url": "https://fleet.example.com/hooks"
}
},
"meta": {
"signing_secret": "whsec_N2Q0YjQ5ZTE4Y2ZmNDc0YmE1ZDhkMWM3Wq1c"
}
}Update a webhook endpoint
/api/json/webhook_endpoints/{id}Changes the URL, description or enabled flag. Disabling an endpoint cancels its pending deliveries.
- Who
- Customers
- Roles
- Owner, Admin
Path parameters
iduuidRequiredThe record's id.
Attributes
Sent as data.attributes.
descriptionstring· nullableenabledboolean· nullableOnly enabled endpoints receive new messages.
urlstring· nullableWhere messages are POSTed (https).
curl -X PATCH https://api.houndsat.com/api/json/webhook_endpoints/5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8 \
-H "Authorization: Bearer $HOUNDSAT_TOKEN" \
-H "Content-Type: application/vnd.api+json" \
-d '{"data":{"type":"webhook_endpoint","id":"5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8","attributes":{"description":"Fleet telemetry","enabled":true,"url":"https://fleet.example.com/hooks"}}}'{
"data": {
"type": "webhook_endpoint",
"id": "5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8",
"attributes": {
"customer_id": "c41e9a03-6b2f-4d8e-a571-0f3b9c2d7e14",
"description": "Fleet telemetry",
"enabled": true,
"inserted_at": "2026-10-12T14:03:21Z",
"reseller_id": "a7d35c90-2e14-4f6b-8c03-5b9e1d4a2f67",
"signing_secret_masked": "whsec_••••••••Wq1c",
"updated_at": "2026-10-12T14:03:21Z",
"url": "https://fleet.example.com/hooks"
}
}
}Rotate the signing secret
/api/json/webhook_endpoints/{id}/rotate_secretReplaces the signing secret with a newly generated one, returned once in meta.signing_secret. The old secret stops working immediately, including for pending retries.
- Who
- Customers
- Roles
- Owner, Admin
Path parameters
iduuidRequiredThe record's id.
curl -X PATCH https://api.houndsat.com/api/json/webhook_endpoints/5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8/rotate_secret \
-H "Authorization: Bearer $HOUNDSAT_TOKEN" \
-H "Content-Type: application/vnd.api+json" \
-d '{"data":{"type":"webhook_endpoint","id":"5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8","attributes":{}}}'{
"data": {
"type": "webhook_endpoint",
"id": "5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8",
"attributes": {
"customer_id": "c41e9a03-6b2f-4d8e-a571-0f3b9c2d7e14",
"description": "Fleet telemetry",
"enabled": true,
"inserted_at": "2026-10-12T14:03:21Z",
"reseller_id": "a7d35c90-2e14-4f6b-8c03-5b9e1d4a2f67",
"signing_secret_masked": "whsec_••••••••Wq1c",
"updated_at": "2026-10-12T14:03:21Z",
"url": "https://fleet.example.com/hooks"
}
},
"meta": {
"signing_secret": "whsec_N2Q0YjQ5ZTE4Y2ZmNDc0YmE1ZDhkMWM3Wq1c"
}
}Generate a signing secret
/api/json/webhook_endpoints/{id}/generate_secretReplaces a secret you set yourself with a generated one, returned once in meta.signing_secret.
- Who
- Customers
- Roles
- Owner, Admin
Path parameters
iduuidRequiredThe record's id.
curl -X PATCH https://api.houndsat.com/api/json/webhook_endpoints/5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8/generate_secret \
-H "Authorization: Bearer $HOUNDSAT_TOKEN" \
-H "Content-Type: application/vnd.api+json" \
-d '{"data":{"type":"webhook_endpoint","id":"5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8","attributes":{}}}'{
"data": {
"type": "webhook_endpoint",
"id": "5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8",
"attributes": {
"customer_id": "c41e9a03-6b2f-4d8e-a571-0f3b9c2d7e14",
"description": "Fleet telemetry",
"enabled": true,
"inserted_at": "2026-10-12T14:03:21Z",
"reseller_id": "a7d35c90-2e14-4f6b-8c03-5b9e1d4a2f67",
"signing_secret_masked": "whsec_••••••••Wq1c",
"updated_at": "2026-10-12T14:03:21Z",
"url": "https://fleet.example.com/hooks"
}
},
"meta": {
"signing_secret": "whsec_N2Q0YjQ5ZTE4Y2ZmNDc0YmE1ZDhkMWM3Wq1c"
}
}Set your own signing secret
/api/json/webhook_endpoints/{id}/set_secretUses a secret you choose: 24 to 256 printable ASCII characters, no spaces. It replaces the old one immediately and is never echoed back.
- Who
- Customers
- Roles
- Owner, Admin
Path parameters
iduuidRequiredThe record's id.
Attributes
Sent as data.attributes.
signing_secretstringRequiredThe new secret: 24-256 printable ASCII characters, no whitespace.
curl -X PATCH https://api.houndsat.com/api/json/webhook_endpoints/5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8/set_secret \
-H "Authorization: Bearer $HOUNDSAT_TOKEN" \
-H "Content-Type: application/vnd.api+json" \
-d '{"data":{"type":"webhook_endpoint","id":"5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8","attributes":{"signing_secret":"whsec_N2Q0YjQ5ZTE4Y2ZmNDc0YmE1ZDhkMWM3Wq1c"}}}'{
"data": {
"type": "webhook_endpoint",
"id": "5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8",
"attributes": {
"customer_id": "c41e9a03-6b2f-4d8e-a571-0f3b9c2d7e14",
"description": "Fleet telemetry",
"enabled": true,
"inserted_at": "2026-10-12T14:03:21Z",
"reseller_id": "a7d35c90-2e14-4f6b-8c03-5b9e1d4a2f67",
"signing_secret_masked": "whsec_••••••••Wq1c",
"updated_at": "2026-10-12T14:03:21Z",
"url": "https://fleet.example.com/hooks"
}
}
}Delete a webhook endpoint
/api/json/webhook_endpoints/{id}Deletes the endpoint and cancels its pending deliveries.
- Who
- Customers
- Roles
- Owner, Admin
Path parameters
iduuidRequiredThe record's id.
curl -X DELETE https://api.houndsat.com/api/json/webhook_endpoints/5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8 \
-H "Authorization: Bearer $HOUNDSAT_TOKEN"(empty body)