API reference
Devices
Import SIMs, activate, suspend and deactivate them one at a time or 500 per request, and assign them to customers.
A device is one SIM, identified by its ICCID and IMSI. It starts in inventory, becomes active once the provider confirms an activation, can be suspended and reactivated, and ends terminated after a deactivation. Provider changes are asynchronous: the device is pending until the provider confirms.
Endpoints
- get
/api/json/devicesList devices - get
/api/json/devices/{id}Get a device - post
/api/json/devicesAdd a device - post
/api/json/devices/importImport devices from CSV - patch
/api/json/devices/{id}/activateActivate a device - patch
/api/json/devices/{id}/suspendSuspend a device - patch
/api/json/devices/{id}/deactivateDeactivate a device - patch
/api/json/devices/{id}/assignAssign a device to a customer - patch
/api/json/devices/{id}/planSet a device's plan - delete
/api/json/devices/{id}Delete a device - post
/api/json/devices/bulk/activateActivate devices in bulk - post
/api/json/devices/bulk/suspendSuspend devices in bulk - post
/api/json/devices/bulk/deactivateDeactivate devices in bulk - post
/api/json/devices/bulk/reassignReassign devices in bulk - post
/api/json/devices/bulk/change_planChange device plans in bulk
The device object
A SIM in your fleet, its lifecycle status and its last provider error, if any.
Attributes
iduuidRequiredUnique identifier.
activated_attimestamp· nullablecustomer_iduuid· nullableeffective_plan_iduuid· nullableThe plan billed:
plan_id, else the customer's default plan; null: unbilled.external_idstring· nullableOptional customer reference.
iccidstringRequiredSIM ICCID, 19-20 digits.
imeistring· nullableOptional IMEI, 15 digits.
imsistringRequiredIMSI, 15 digits.
inserted_attimestampRequiredlast_error_attimestamp· nullablelast_error_codestring· nullableWhy the last operation failed: provider_rejected, provider_not_configured, provider_timeout, provider_rate_limited, provider_account_disabled, provider_error. Only failed operations set it (drift sync uses
provider_status_mismatch).last_error_messagestring· nullableWhat happened and what to do, ready to show.
last_failed_operationenum· nullableThe operation the last error is about (activate | deactivate | suspend); null when there is no error. Cleared when the next operation starts.
One of
activatedeactivatesuspendlast_seen_attimestamp· nullableLast message received from the device.
pending_operationenum· nullableOne of
activatedeactivatesuspendpending_sincetimestamp· nullableplan_iduuid· nullableprovider_statusstring· nullableThe status as the provider last reported it, in its own words.
provider_status_mismatchbooleanRequiredtrue while the provider reports a different state than
status(seeprovider_status); cleared once both agree. Independent oflast_error_*, which only failed operations set.provider_synced_attimestamp· nullablereseller_iduuid· nullablestatusenumRequiredinventory | pending | active | suspended | terminated.
One of
inventorypendingactivesuspendedterminatedstatus_before_pendingenum· nullableThe status to return to if the pending operation fails.
One of
inventorypendingactivesuspendedterminatedsuspended_attimestamp· nullableterminated_attimestamp· nullableupdated_attimestampRequiredusage_this_month_bytesinteger· nullableBytes used so far this UTC month (provider API pulls).
{
"type": "device",
"id": "5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8",
"attributes": {
"activated_at": "2026-10-12T14:03:21Z",
"customer_id": "c41e9a03-6b2f-4d8e-a571-0f3b9c2d7e14",
"effective_plan_id": "9b2e4f61-7c3a-4d05-a8e9-3f1c6b0d5a72",
"external_id": "trailer-207",
"iccid": "8999001234000020718",
"imei": "356938035643809",
"imsi": "901880000010001",
"inserted_at": "2026-10-12T14:03:21Z",
"last_error_at": null,
"last_error_code": null,
"last_error_message": null,
"last_failed_operation": null,
"last_seen_at": "2026-10-12T14:03:21Z",
"pending_operation": null,
"pending_since": null,
"plan_id": "9b2e4f61-7c3a-4d05-a8e9-3f1c6b0d5a72",
"provider_status": "ACTIVATED",
"provider_status_mismatch": false,
"provider_synced_at": "2026-10-12T14:03:21Z",
"reseller_id": "a7d35c90-2e14-4f6b-8c03-5b9e1d4a2f67",
"status": "active",
"status_before_pending": null,
"suspended_at": null,
"terminated_at": null,
"updated_at": "2026-10-12T14:03:21Z",
"usage_this_month_bytes": 48213
}
}Endpoints
List devices
/api/json/devicesDevices in your scope, newest first. Filter by status, customer_id, last_seen_at and more, or search ICCIDs, IMSIs and external IDs with search.
- Who
- Resellers and Customers
- Roles
- Owner, Admin, Staff
filter[customer_id][is_nil]=truelists your inventory: devices not assigned to a customer.search=8999matches ICCIDs, IMSIs and external IDs starting with the text.
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
reseller_idpending_operationinserted_atprovider_synced_atlast_failed_operationplan_idlast_error_codecustomer_idprovider_statusimsiprovider_status_mismatcheffective_plan_idactivated_atpending_sincestatusupdated_atlast_seen_atusage_this_month_bytesidiccidexternal_idstatus_before_pendinglast_error_messagesuspended_atimeiterminated_atlast_error_atsortstringA 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.searchstringPrefix of an ICCID, IMSI or external ID (case-insensitive for external IDs).
curl https://api.houndsat.com/api/json/devices \
-H "Authorization: Bearer $HOUNDSAT_TOKEN"{
"data": [
{
"type": "device",
"id": "5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8",
"attributes": {
"activated_at": "2026-10-12T14:03:21Z",
"customer_id": "c41e9a03-6b2f-4d8e-a571-0f3b9c2d7e14",
"effective_plan_id": "9b2e4f61-7c3a-4d05-a8e9-3f1c6b0d5a72",
"external_id": "trailer-207",
"iccid": "8999001234000020718",
"imei": "356938035643809",
"imsi": "901880000010001",
"inserted_at": "2026-10-12T14:03:21Z",
"last_error_at": null,
"last_error_code": null,
"last_error_message": null,
"last_failed_operation": null,
"last_seen_at": "2026-10-12T14:03:21Z",
"pending_operation": null,
"pending_since": null,
"plan_id": "9b2e4f61-7c3a-4d05-a8e9-3f1c6b0d5a72",
"provider_status": "ACTIVATED",
"provider_status_mismatch": false,
"provider_synced_at": "2026-10-12T14:03:21Z",
"reseller_id": "a7d35c90-2e14-4f6b-8c03-5b9e1d4a2f67",
"status": "active",
"status_before_pending": null,
"suspended_at": null,
"terminated_at": null,
"updated_at": "2026-10-12T14:03:21Z",
"usage_this_month_bytes": 48213
}
}
],
"links": {
"next": "/api/json/devices?page[after]=g2wAAAABbQAAACQ1ZjBj…"
}
}Get a device
/api/json/devices/{id}One device in your scope. Poll it after an activation to see the provider's answer.
- Who
- Resellers and Customers
- Roles
- Owner, Admin, Staff
Path parameters
iduuidRequiredThe record's id.
curl https://api.houndsat.com/api/json/devices/5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8 \
-H "Authorization: Bearer $HOUNDSAT_TOKEN"{
"data": {
"type": "device",
"id": "5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8",
"attributes": {
"activated_at": "2026-10-12T14:03:21Z",
"customer_id": "c41e9a03-6b2f-4d8e-a571-0f3b9c2d7e14",
"effective_plan_id": "9b2e4f61-7c3a-4d05-a8e9-3f1c6b0d5a72",
"external_id": "trailer-207",
"iccid": "8999001234000020718",
"imei": "356938035643809",
"imsi": "901880000010001",
"inserted_at": "2026-10-12T14:03:21Z",
"last_error_at": null,
"last_error_code": null,
"last_error_message": null,
"last_failed_operation": null,
"last_seen_at": "2026-10-12T14:03:21Z",
"pending_operation": null,
"pending_since": null,
"plan_id": "9b2e4f61-7c3a-4d05-a8e9-3f1c6b0d5a72",
"provider_status": "ACTIVATED",
"provider_status_mismatch": false,
"provider_synced_at": "2026-10-12T14:03:21Z",
"reseller_id": "a7d35c90-2e14-4f6b-8c03-5b9e1d4a2f67",
"status": "active",
"status_before_pending": null,
"suspended_at": null,
"terminated_at": null,
"updated_at": "2026-10-12T14:03:21Z",
"usage_this_month_bytes": 48213
}
}
}Add a device
/api/json/devicesAdds one SIM to your inventory, or straight to one of your customers with customer_id. A customer adds devices to its own fleet.
- Who
- Resellers and Customers
- Roles
- Owner, Admin
Attributes
Sent as data.attributes.
iccidstringRequiredSIM ICCID, 19-20 digits.
imsistringRequiredIMSI, 15 digits.
customer_iduuid· nullableCustomer the device is assigned to (resellers and platform users).
external_idstring· nullableOptional customer reference.
imeistring· nullableOptional IMEI, 15 digits.
curl -X POST https://api.houndsat.com/api/json/devices \
-H "Authorization: Bearer $HOUNDSAT_TOKEN" \
-H "Content-Type: application/vnd.api+json" \
-d '{"data":{"type":"device","attributes":{"iccid":"8999001234000020718","imsi":"901880000010001","external_id":"trailer-207","customer_id":"c41e9a03-6b2f-4d8e-a571-0f3b9c2d7e14"}}}'{
"data": {
"type": "device",
"id": "5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8",
"attributes": {
"activated_at": "2026-10-12T14:03:21Z",
"customer_id": "c41e9a03-6b2f-4d8e-a571-0f3b9c2d7e14",
"effective_plan_id": "9b2e4f61-7c3a-4d05-a8e9-3f1c6b0d5a72",
"external_id": "trailer-207",
"iccid": "8999001234000020718",
"imei": "356938035643809",
"imsi": "901880000010001",
"inserted_at": "2026-10-12T14:03:21Z",
"last_error_at": null,
"last_error_code": null,
"last_error_message": null,
"last_failed_operation": null,
"last_seen_at": "2026-10-12T14:03:21Z",
"pending_operation": null,
"pending_since": null,
"plan_id": "9b2e4f61-7c3a-4d05-a8e9-3f1c6b0d5a72",
"provider_status": "ACTIVATED",
"provider_status_mismatch": false,
"provider_synced_at": "2026-10-12T14:03:21Z",
"reseller_id": "a7d35c90-2e14-4f6b-8c03-5b9e1d4a2f67",
"status": "active",
"status_before_pending": null,
"suspended_at": null,
"terminated_at": null,
"updated_at": "2026-10-12T14:03:21Z",
"usage_this_month_bytes": 48213
}
}
}Import devices from CSV
/api/json/devices/importAdds up to 5,000 SIMs from CSV text with the header iccid,imsi,imei,external_id (imei and external_id optional). Valid rows are imported, rows whose ICCID or IMSI already exists are skipped, and invalid rows are reported with their row number. The header is row 1.
- Who
- Resellers and Customers
- Roles
- Owner, Admin
- At most 5,000 rows and 1 MB. A bigger file, or a missing or wrong header, answers 422 and imports nothing.
Body
Sent directly under data.
csvstringRequiredThe CSV text.
customer_iduuid· nullableCustomer the devices are assigned to (resellers and platform users).
curl -X POST https://api.houndsat.com/api/json/devices/import \
-H "Authorization: Bearer $HOUNDSAT_TOKEN" \
-H "Content-Type: application/vnd.api+json" \
-d '{"data":{"csv":"iccid,imsi,imei,external_id\n8999001234000020718,901880000010001,,trailer-207\n","customer_id":"c41e9a03-6b2f-4d8e-a571-0f3b9c2d7e14"}}'{
"created": [
{
"row": 2,
"id": "5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8",
"iccid": "8999001234000020718"
}
],
"skipped": [
{
"row": 3,
"iccid": "8999001234000011428",
"reason": "already imported"
}
],
"errors": [
{
"row": 4,
"iccid": "12345",
"message": "ICCID must be 19 or 20 digits."
}
]
}Activate a device
/api/json/devices/{id}/activateAsks the provider to activate an inventory or suspended device. Answers at once with status: "pending"; the device becomes active when the provider confirms, or returns to its previous status with last_error_code and last_error_message set.
- Who
- Resellers and Customers
- Roles
- Owner, Admin
Path parameters
iduuidRequiredThe record's id.
curl -X PATCH https://api.houndsat.com/api/json/devices/5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8/activate \
-H "Authorization: Bearer $HOUNDSAT_TOKEN" \
-H "Content-Type: application/vnd.api+json" \
-d '{"data":{"type":"device","id":"5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8","attributes":{}}}'{
"data": {
"type": "device",
"id": "5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8",
"attributes": {
"activated_at": "2026-10-12T14:03:21Z",
"customer_id": "c41e9a03-6b2f-4d8e-a571-0f3b9c2d7e14",
"effective_plan_id": "9b2e4f61-7c3a-4d05-a8e9-3f1c6b0d5a72",
"external_id": "trailer-207",
"iccid": "8999001234000020718",
"imei": "356938035643809",
"imsi": "901880000010001",
"inserted_at": "2026-10-12T14:03:21Z",
"last_error_at": null,
"last_error_code": null,
"last_error_message": null,
"last_failed_operation": null,
"last_seen_at": "2026-10-12T14:03:21Z",
"pending_operation": null,
"pending_since": null,
"plan_id": "9b2e4f61-7c3a-4d05-a8e9-3f1c6b0d5a72",
"provider_status": "ACTIVATED",
"provider_status_mismatch": false,
"provider_synced_at": "2026-10-12T14:03:21Z",
"reseller_id": "a7d35c90-2e14-4f6b-8c03-5b9e1d4a2f67",
"status": "active",
"status_before_pending": null,
"suspended_at": null,
"terminated_at": null,
"updated_at": "2026-10-12T14:03:21Z",
"usage_this_month_bytes": 48213
}
}
}Suspend a device
/api/json/devices/{id}/suspendSuspends an active device at the provider. Reversible: activate it again later.
- Who
- Resellers and Customers
- Roles
- Owner, Admin
Path parameters
iduuidRequiredThe record's id.
curl -X PATCH https://api.houndsat.com/api/json/devices/5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8/suspend \
-H "Authorization: Bearer $HOUNDSAT_TOKEN" \
-H "Content-Type: application/vnd.api+json" \
-d '{"data":{"type":"device","id":"5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8","attributes":{}}}'{
"data": {
"type": "device",
"id": "5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8",
"attributes": {
"activated_at": "2026-10-12T14:03:21Z",
"customer_id": "c41e9a03-6b2f-4d8e-a571-0f3b9c2d7e14",
"effective_plan_id": "9b2e4f61-7c3a-4d05-a8e9-3f1c6b0d5a72",
"external_id": "trailer-207",
"iccid": "8999001234000020718",
"imei": "356938035643809",
"imsi": "901880000010001",
"inserted_at": "2026-10-12T14:03:21Z",
"last_error_at": null,
"last_error_code": null,
"last_error_message": null,
"last_failed_operation": null,
"last_seen_at": "2026-10-12T14:03:21Z",
"pending_operation": null,
"pending_since": null,
"plan_id": "9b2e4f61-7c3a-4d05-a8e9-3f1c6b0d5a72",
"provider_status": "ACTIVATED",
"provider_status_mismatch": false,
"provider_synced_at": "2026-10-12T14:03:21Z",
"reseller_id": "a7d35c90-2e14-4f6b-8c03-5b9e1d4a2f67",
"status": "active",
"status_before_pending": null,
"suspended_at": null,
"terminated_at": null,
"updated_at": "2026-10-12T14:03:21Z",
"usage_this_month_bytes": 48213
}
}
}Deactivate a device
/api/json/devices/{id}/deactivateDeactivates an active or suspended device at the provider. The device ends terminated, which is final.
- Who
- Resellers and Customers
- Roles
- Owner, Admin
Path parameters
iduuidRequiredThe record's id.
curl -X PATCH https://api.houndsat.com/api/json/devices/5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8/deactivate \
-H "Authorization: Bearer $HOUNDSAT_TOKEN" \
-H "Content-Type: application/vnd.api+json" \
-d '{"data":{"type":"device","id":"5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8","attributes":{}}}'{
"data": {
"type": "device",
"id": "5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8",
"attributes": {
"activated_at": "2026-10-12T14:03:21Z",
"customer_id": "c41e9a03-6b2f-4d8e-a571-0f3b9c2d7e14",
"effective_plan_id": "9b2e4f61-7c3a-4d05-a8e9-3f1c6b0d5a72",
"external_id": "trailer-207",
"iccid": "8999001234000020718",
"imei": "356938035643809",
"imsi": "901880000010001",
"inserted_at": "2026-10-12T14:03:21Z",
"last_error_at": null,
"last_error_code": null,
"last_error_message": null,
"last_failed_operation": null,
"last_seen_at": "2026-10-12T14:03:21Z",
"pending_operation": null,
"pending_since": null,
"plan_id": "9b2e4f61-7c3a-4d05-a8e9-3f1c6b0d5a72",
"provider_status": "ACTIVATED",
"provider_status_mismatch": false,
"provider_synced_at": "2026-10-12T14:03:21Z",
"reseller_id": "a7d35c90-2e14-4f6b-8c03-5b9e1d4a2f67",
"status": "active",
"status_before_pending": null,
"suspended_at": null,
"terminated_at": null,
"updated_at": "2026-10-12T14:03:21Z",
"usage_this_month_bytes": 48213
}
}
}Assign a device to a customer
/api/json/devices/{id}/assignAssigns a device to one of your customers, moves it to another, or returns it to your inventory with customer_id: null. Earlier usage stays with the customer it was recorded under.
- Who
- Resellers
- Roles
- Owner, Admin
- Refused while the device is pending, once it is terminated, and for a suspended customer.
Path parameters
iduuidRequiredThe record's id.
Attributes
Sent as data.attributes.
customer_iduuid· nullableThe customer to assign the device to; null returns it to inventory.
curl -X PATCH https://api.houndsat.com/api/json/devices/5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8/assign \
-H "Authorization: Bearer $HOUNDSAT_TOKEN" \
-H "Content-Type: application/vnd.api+json" \
-d '{"data":{"type":"device","id":"5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8","attributes":{"customer_id":"c41e9a03-6b2f-4d8e-a571-0f3b9c2d7e14"}}}'{
"data": {
"type": "device",
"id": "5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8",
"attributes": {
"activated_at": "2026-10-12T14:03:21Z",
"customer_id": "c41e9a03-6b2f-4d8e-a571-0f3b9c2d7e14",
"effective_plan_id": "9b2e4f61-7c3a-4d05-a8e9-3f1c6b0d5a72",
"external_id": "trailer-207",
"iccid": "8999001234000020718",
"imei": "356938035643809",
"imsi": "901880000010001",
"inserted_at": "2026-10-12T14:03:21Z",
"last_error_at": null,
"last_error_code": null,
"last_error_message": null,
"last_failed_operation": null,
"last_seen_at": "2026-10-12T14:03:21Z",
"pending_operation": null,
"pending_since": null,
"plan_id": "9b2e4f61-7c3a-4d05-a8e9-3f1c6b0d5a72",
"provider_status": "ACTIVATED",
"provider_status_mismatch": false,
"provider_synced_at": "2026-10-12T14:03:21Z",
"reseller_id": "a7d35c90-2e14-4f6b-8c03-5b9e1d4a2f67",
"status": "active",
"status_before_pending": null,
"suspended_at": null,
"terminated_at": null,
"updated_at": "2026-10-12T14:03:21Z",
"usage_this_month_bytes": 48213
}
}
}Set a device's plan
/api/json/devices/{id}/planBills a device on one of your retail plans instead of its customer's default plan, or clears the override with plan_id: null.
- Who
- Resellers
- Roles
- Owner, Admin
Path parameters
iduuidRequiredThe record's id.
Attributes
Sent as data.attributes.
plan_iduuid· nullableThe retail plan; null removes the override.
curl -X PATCH https://api.houndsat.com/api/json/devices/5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8/plan \
-H "Authorization: Bearer $HOUNDSAT_TOKEN" \
-H "Content-Type: application/vnd.api+json" \
-d '{"data":{"type":"device","id":"5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8","attributes":{"plan_id":"9b2e4f61-7c3a-4d05-a8e9-3f1c6b0d5a72"}}}'{
"data": {
"type": "device",
"id": "5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8",
"attributes": {
"activated_at": "2026-10-12T14:03:21Z",
"customer_id": "c41e9a03-6b2f-4d8e-a571-0f3b9c2d7e14",
"effective_plan_id": "9b2e4f61-7c3a-4d05-a8e9-3f1c6b0d5a72",
"external_id": "trailer-207",
"iccid": "8999001234000020718",
"imei": "356938035643809",
"imsi": "901880000010001",
"inserted_at": "2026-10-12T14:03:21Z",
"last_error_at": null,
"last_error_code": null,
"last_error_message": null,
"last_failed_operation": null,
"last_seen_at": "2026-10-12T14:03:21Z",
"pending_operation": null,
"pending_since": null,
"plan_id": "9b2e4f61-7c3a-4d05-a8e9-3f1c6b0d5a72",
"provider_status": "ACTIVATED",
"provider_status_mismatch": false,
"provider_synced_at": "2026-10-12T14:03:21Z",
"reseller_id": "a7d35c90-2e14-4f6b-8c03-5b9e1d4a2f67",
"status": "active",
"status_before_pending": null,
"suspended_at": null,
"terminated_at": null,
"updated_at": "2026-10-12T14:03:21Z",
"usage_this_month_bytes": 48213
}
}
}Delete a device
/api/json/devices/{id}Deletes a device that is still in inventory (never activated).
- Who
- Resellers and Customers
- Roles
- Owner, Admin
Path parameters
iduuidRequiredThe record's id.
curl -X DELETE https://api.houndsat.com/api/json/devices/5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8 \
-H "Authorization: Bearer $HOUNDSAT_TOKEN"(empty body)Activate devices in bulk
/api/json/devices/bulk/activateActivates up to 500 devices, each exactly like Activate a device. Always answers 200 with one result per id, so one failure never stops the others.
- Who
- Resellers and Customers
- Roles
- Owner, Admin
Body
Sent directly under data.
idsarray of uuidRequired
curl -X POST https://api.houndsat.com/api/json/devices/bulk/activate \
-H "Authorization: Bearer $HOUNDSAT_TOKEN" \
-H "Content-Type: application/vnd.api+json" \
-d '{"data":{"ids":["5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8"]}}'{
"results": [
{
"id": "5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8",
"status": "ok",
"code": null,
"message": null
},
{
"id": "0b6d4e2a-1c9f-4a3b-8e5d-7f2c0a9b6d13",
"status": "error",
"code": "invalid",
"message": "Device 8999001234000011428 is already active."
}
]
}Suspend devices in bulk
/api/json/devices/bulk/suspendSuspends up to 500 devices, with one result per id.
- Who
- Resellers and Customers
- Roles
- Owner, Admin
Body
Sent directly under data.
idsarray of uuidRequired
curl -X POST https://api.houndsat.com/api/json/devices/bulk/suspend \
-H "Authorization: Bearer $HOUNDSAT_TOKEN" \
-H "Content-Type: application/vnd.api+json" \
-d '{"data":{"ids":["5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8"]}}'{
"results": [
{
"code": null,
"id": "5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8",
"message": null,
"status": "ok"
}
]
}Deactivate devices in bulk
/api/json/devices/bulk/deactivateDeactivates up to 500 devices, with one result per id. Deactivation is final.
- Who
- Resellers and Customers
- Roles
- Owner, Admin
Body
Sent directly under data.
idsarray of uuidRequired
curl -X POST https://api.houndsat.com/api/json/devices/bulk/deactivate \
-H "Authorization: Bearer $HOUNDSAT_TOKEN" \
-H "Content-Type: application/vnd.api+json" \
-d '{"data":{"ids":["5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8"]}}'{
"results": [
{
"code": null,
"id": "5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8",
"message": null,
"status": "ok"
}
]
}Reassign devices in bulk
/api/json/devices/bulk/reassignAssigns up to 500 devices to customer_id, or returns them to your inventory with customer_id: null.
- Who
- Resellers
- Roles
- Owner, Admin
Body
Sent directly under data.
idsarray of uuidRequiredcustomer_iduuid· nullableThe customer to assign the devices to; null returns them to inventory.
curl -X POST https://api.houndsat.com/api/json/devices/bulk/reassign \
-H "Authorization: Bearer $HOUNDSAT_TOKEN" \
-H "Content-Type: application/vnd.api+json" \
-d '{"data":{"ids":["5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8"],"customer_id":"c41e9a03-6b2f-4d8e-a571-0f3b9c2d7e14"}}'{
"results": [
{
"code": null,
"id": "5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8",
"message": null,
"status": "ok"
}
]
}Change device plans in bulk
/api/json/devices/bulk/change_planSets the plan override of up to 500 devices to plan_id, or clears it with plan_id: null.
- Who
- Resellers
- Roles
- Owner, Admin
Body
Sent directly under data.
idsarray of uuidRequiredplan_iduuid· nullableThe retail plan; null removes the override.
curl -X POST https://api.houndsat.com/api/json/devices/bulk/change_plan \
-H "Authorization: Bearer $HOUNDSAT_TOKEN" \
-H "Content-Type: application/vnd.api+json" \
-d '{"data":{"ids":["5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8"],"plan_id":"9b2e4f61-7c3a-4d05-a8e9-3f1c6b0d5a72"}}'{
"results": [
{
"code": null,
"id": "5f0c2b7e-8d41-4a96-b3e2-91c7d0a4e6f8",
"message": null,
"status": "ok"
}
]
}