API reference
Organizations
Create and manage your customer organizations, their status and default plans, and your own white-label branding.
Organizations form a tree: HoundSat, then resellers, then their customers. As a reseller you create customer organizations under your own, and each customer gets its own users, devices and webhook endpoints.
Endpoints
- get
/api/json/organizationsList organizations - get
/api/json/organizations/{id}Get an organization - post
/api/json/organizationsCreate a customer - patch
/api/json/organizations/{id}Rename an organization - patch
/api/json/organizations/{id}/brandingUpdate your branding - patch
/api/json/organizations/{id}/statusSuspend or reactivate a customer - patch
/api/json/organizations/{id}/default_planSet a customer's default plan
The organization object
A reseller or customer organization. Branding fields are set on resellers only.
Attributes
iduuidRequiredUnique identifier.
brand_company_namestring· nullablebrand_logo_urlstring· nullablebrand_primary_colorstring· nullableHex color, #RRGGBB.
children_countinteger· nullableNumber of child organizations (customers of a reseller, resellers of the platform).
default_plan_iduuid· nullableinserted_attimestampRequiredlevelenumRequiredplatform | reseller | customer. Derived at creation, immutable.
One of
platformresellercustomernamestringRequiredparent_iduuid· nullablestatusenumRequiredOne of
activesuspendedsupport_emailstring· nullablesuspended_by_levelenum· nullableWho suspended the organization:
platform(a platform user or the system) orreseller; null while active. Set byset_status.One of
platformresellerupdated_attimestampRequiredusers_countinteger· nullableNumber of users in the organization (any status).
{
"type": "organization",
"id": "5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8",
"attributes": {
"brand_company_name": "Acme Connect",
"brand_logo_url": "https://acme.example/logo.png",
"brand_primary_color": "#3B47E0",
"children_count": 3,
"default_plan_id": "0b6d4e2a-1c9f-4a3b-8e5d-7f2c0a9b6d13",
"inserted_at": "2026-10-12T14:03:21Z",
"level": "platform",
"name": "Northwind Freight",
"parent_id": "a7d35c90-2e14-4f6b-8c03-5b9e1d4a2f67",
"status": "active",
"support_email": "help@acme.example",
"suspended_by_level": null,
"updated_at": "2026-10-12T14:03:21Z",
"users_count": 3
}
}Endpoints
List organizations
/api/json/organizationsYour own organization and every organization below it: for a reseller, itself and its customers. Paginated, 50 per page by default.
- 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
brand_company_namebrand_logo_urlbrand_primary_colorchildren_countdefault_plan_ididinserted_atlevelnameparent_idstatussupport_emailsuspended_by_levelupdated_atusers_countsortstringA 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/organizations \
-H "Authorization: Bearer $HOUNDSAT_TOKEN"{
"data": [
{
"type": "organization",
"id": "5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8",
"attributes": {
"brand_company_name": "Acme Connect",
"brand_logo_url": "https://acme.example/logo.png",
"brand_primary_color": "#3B47E0",
"children_count": 3,
"default_plan_id": "0b6d4e2a-1c9f-4a3b-8e5d-7f2c0a9b6d13",
"inserted_at": "2026-10-12T14:03:21Z",
"level": "platform",
"name": "Northwind Freight",
"parent_id": "a7d35c90-2e14-4f6b-8c03-5b9e1d4a2f67",
"status": "active",
"support_email": "help@acme.example",
"suspended_by_level": null,
"updated_at": "2026-10-12T14:03:21Z",
"users_count": 3
}
}
],
"links": {
"next": "/api/json/organizations?page[after]=g2wAAAABbQAAACQ1ZjBj…"
}
}Get an organization
/api/json/organizations/{id}One organization in your scope. Anything outside it answers 404.
- Who
- Resellers and Customers
- Roles
- Owner, Admin, Staff
Path parameters
iduuidRequiredThe record's id.
curl https://api.houndsat.com/api/json/organizations/5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8 \
-H "Authorization: Bearer $HOUNDSAT_TOKEN"{
"data": {
"type": "organization",
"id": "5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8",
"attributes": {
"brand_company_name": "Acme Connect",
"brand_logo_url": "https://acme.example/logo.png",
"brand_primary_color": "#3B47E0",
"children_count": 3,
"default_plan_id": "0b6d4e2a-1c9f-4a3b-8e5d-7f2c0a9b6d13",
"inserted_at": "2026-10-12T14:03:21Z",
"level": "platform",
"name": "Northwind Freight",
"parent_id": "a7d35c90-2e14-4f6b-8c03-5b9e1d4a2f67",
"status": "active",
"support_email": "help@acme.example",
"suspended_by_level": null,
"updated_at": "2026-10-12T14:03:21Z",
"users_count": 3
}
}
}Create a customer
/api/json/organizationsCreates a customer organization under your reseller. Invite its first user, who must be its Owner, with Invite a user.
- Who
- Resellers
- Roles
- Owner, Admin
parent_iddefaults to your own organization; leave it out.
Attributes
Sent as data.attributes.
namestringRequiredparent_iduuid· nullable
curl -X POST https://api.houndsat.com/api/json/organizations \
-H "Authorization: Bearer $HOUNDSAT_TOKEN" \
-H "Content-Type: application/vnd.api+json" \
-d '{"data":{"type":"organization","attributes":{"name":"Northwind Freight"}}}'{
"data": {
"type": "organization",
"id": "5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8",
"attributes": {
"brand_company_name": "Acme Connect",
"brand_logo_url": "https://acme.example/logo.png",
"brand_primary_color": "#3B47E0",
"children_count": 3,
"default_plan_id": "0b6d4e2a-1c9f-4a3b-8e5d-7f2c0a9b6d13",
"inserted_at": "2026-10-12T14:03:21Z",
"level": "platform",
"name": "Northwind Freight",
"parent_id": "a7d35c90-2e14-4f6b-8c03-5b9e1d4a2f67",
"status": "active",
"support_email": "help@acme.example",
"suspended_by_level": null,
"updated_at": "2026-10-12T14:03:21Z",
"users_count": 3
}
}
}Rename an organization
/api/json/organizations/{id}Renames your organization or one of your customers.
- Who
- Resellers and Customers
- Roles
- Owner, Admin
Path parameters
iduuidRequiredThe record's id.
Attributes
Sent as data.attributes.
namestring· nullable
curl -X PATCH https://api.houndsat.com/api/json/organizations/5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8 \
-H "Authorization: Bearer $HOUNDSAT_TOKEN" \
-H "Content-Type: application/vnd.api+json" \
-d '{"data":{"type":"organization","id":"5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8","attributes":{"name":"Northwind Freight"}}}'{
"data": {
"type": "organization",
"id": "5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8",
"attributes": {
"brand_company_name": "Acme Connect",
"brand_logo_url": "https://acme.example/logo.png",
"brand_primary_color": "#3B47E0",
"children_count": 3,
"default_plan_id": "0b6d4e2a-1c9f-4a3b-8e5d-7f2c0a9b6d13",
"inserted_at": "2026-10-12T14:03:21Z",
"level": "platform",
"name": "Northwind Freight",
"parent_id": "a7d35c90-2e14-4f6b-8c03-5b9e1d4a2f67",
"status": "active",
"support_email": "help@acme.example",
"suspended_by_level": null,
"updated_at": "2026-10-12T14:03:21Z",
"users_count": 3
}
}
}Update your branding
/api/json/organizations/{id}/brandingSets the company name, logo, primary color and support email your customers see in their portal and emails.
- Who
- Resellers
- Roles
- Owner, Admin
brand_logo_urlmust be anhttps://URL.brand_primary_coloris a six-digit hex color (#RRGGBB).
Path parameters
iduuidRequiredThe record's id.
Attributes
Sent as data.attributes.
brand_company_namestring· nullablebrand_logo_urlstring· nullablebrand_primary_colorstring· nullableHex color, #RRGGBB.
support_emailstring· nullable
curl -X PATCH https://api.houndsat.com/api/json/organizations/5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8/branding \
-H "Authorization: Bearer $HOUNDSAT_TOKEN" \
-H "Content-Type: application/vnd.api+json" \
-d '{"data":{"type":"organization","id":"5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8","attributes":{"brand_company_name":"Acme Connect","brand_logo_url":"https://acme.example/logo.png","brand_primary_color":"#3B47E0","support_email":"help@acme.example"}}}'{
"data": {
"type": "organization",
"id": "5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8",
"attributes": {
"brand_company_name": "Acme Connect",
"brand_logo_url": "https://acme.example/logo.png",
"brand_primary_color": "#3B47E0",
"children_count": 3,
"default_plan_id": "0b6d4e2a-1c9f-4a3b-8e5d-7f2c0a9b6d13",
"inserted_at": "2026-10-12T14:03:21Z",
"level": "platform",
"name": "Northwind Freight",
"parent_id": "a7d35c90-2e14-4f6b-8c03-5b9e1d4a2f67",
"status": "active",
"support_email": "help@acme.example",
"suspended_by_level": null,
"updated_at": "2026-10-12T14:03:21Z",
"users_count": 3
}
}
}Suspend or reactivate a customer
/api/json/organizations/{id}/statusSuspends a customer (its users can no longer sign in, and its devices can't be activated or assigned) or reactivates it.
- Who
- Resellers
- Roles
- Owner, Admin
- Suspending, deactivating and unassigning devices still work while a customer is suspended, so a fleet can be wound down.
Path parameters
iduuidRequiredThe record's id.
Attributes
Sent as data.attributes.
statusenum· nullableOne of
activesuspended
curl -X PATCH https://api.houndsat.com/api/json/organizations/5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8/status \
-H "Authorization: Bearer $HOUNDSAT_TOKEN" \
-H "Content-Type: application/vnd.api+json" \
-d '{"data":{"type":"organization","id":"5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8","attributes":{"status":"active"}}}'{
"data": {
"type": "organization",
"id": "5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8",
"attributes": {
"brand_company_name": "Acme Connect",
"brand_logo_url": "https://acme.example/logo.png",
"brand_primary_color": "#3B47E0",
"children_count": 3,
"default_plan_id": "0b6d4e2a-1c9f-4a3b-8e5d-7f2c0a9b6d13",
"inserted_at": "2026-10-12T14:03:21Z",
"level": "platform",
"name": "Northwind Freight",
"parent_id": "a7d35c90-2e14-4f6b-8c03-5b9e1d4a2f67",
"status": "active",
"support_email": "help@acme.example",
"suspended_by_level": null,
"updated_at": "2026-10-12T14:03:21Z",
"users_count": 3
}
}
}Set a customer's default plan
/api/json/organizations/{id}/default_planSets the retail plan billed for the customer's devices that have no plan of their own, or clears it with plan_id: null.
- Who
- Resellers
- Roles
- Owner, Admin
- The plan must be one of your active retail plans.
Path parameters
iduuidRequiredThe record's id.
Attributes
Sent as data.attributes.
plan_iduuid· nullableThe retail plan; null removes the default plan.
curl -X PATCH https://api.houndsat.com/api/json/organizations/5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8/default_plan \
-H "Authorization: Bearer $HOUNDSAT_TOKEN" \
-H "Content-Type: application/vnd.api+json" \
-d '{"data":{"type":"organization","id":"5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8","attributes":{"plan_id":"9b2e4f61-7c3a-4d05-a8e9-3f1c6b0d5a72"}}}'{
"data": {
"type": "organization",
"id": "5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8",
"attributes": {
"brand_company_name": "Acme Connect",
"brand_logo_url": "https://acme.example/logo.png",
"brand_primary_color": "#3B47E0",
"children_count": 3,
"default_plan_id": "0b6d4e2a-1c9f-4a3b-8e5d-7f2c0a9b6d13",
"inserted_at": "2026-10-12T14:03:21Z",
"level": "platform",
"name": "Northwind Freight",
"parent_id": "a7d35c90-2e14-4f6b-8c03-5b9e1d4a2f67",
"status": "active",
"support_email": "help@acme.example",
"suspended_by_level": null,
"updated_at": "2026-10-12T14:03:21Z",
"users_count": 3
}
}
}