List the Network Identities a Device holds
curl --request GET \
--url https://manage.nervescloud.com/api/orgs/{org_name}/products/{product_name}/devices/{identifier}/network_identities \
--header 'Authorization: Bearer <token>'import requests
url = "https://manage.nervescloud.com/api/orgs/{org_name}/products/{product_name}/devices/{identifier}/network_identities"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://manage.nervescloud.com/api/orgs/{org_name}/products/{product_name}/devices/{identifier}/network_identities', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://manage.nervescloud.com/api/orgs/{org_name}/products/{product_name}/devices/{identifier}/network_identities",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://manage.nervescloud.com/api/orgs/{org_name}/products/{product_name}/devices/{identifier}/network_identities"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://manage.nervescloud.com/api/orgs/{org_name}/products/{product_name}/devices/{identifier}/network_identities")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://manage.nervescloud.com/api/orgs/{org_name}/products/{product_name}/devices/{identifier}/network_identities")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": [
{
"details": {
"relay": "https://relay.example.com"
},
"identifier": "c8924b6c9b7a8528b1365ebec4b2e43b6edebef684f8521f12b8caaf6e1b2302",
"inserted_at": "2026-08-14T11:02:31Z",
"instance": "default",
"last_reported_at": "2026-08-16T09:14:00Z",
"service": "iroh",
"source": "device_reported",
"updated_at": "2026-08-16T09:14:00Z"
},
{
"details": {},
"identifier": "5f691e39f55415be337b2e4cc0dd7291586ab7c4356bf32bab60f46fc78f95d5",
"inserted_at": "2026-08-14T11:02:31Z",
"instance": "console",
"last_reported_at": "2026-08-16T09:14:00Z",
"service": "iroh",
"source": "device_reported",
"updated_at": "2026-08-16T09:14:00Z"
}
]
}{
"errors": {
"detail": "Resource Not Found or Authorization Insufficient"
}
}{
"errors": {
"detail": "Resource Not Found or Authorization Insufficient"
}
}{
"errors": {
"identifier": [
"can't be blank"
]
}
}Network Identities
List the Network Identities a Device holds
The keys this device has reported holding on other networks — an iroh endpoint id, a NetBird, Tailscale or WireGuard public key.
service is the protocol. instance names which endpoint of it, for a
device running more than one — an iroh console and an iroh application, say.
Anything running a single endpoint of a service uses default.
GET
/
api
/
orgs
/
{org_name}
/
products
/
{product_name}
/
devices
/
{identifier}
/
network_identities
List the Network Identities a Device holds
curl --request GET \
--url https://manage.nervescloud.com/api/orgs/{org_name}/products/{product_name}/devices/{identifier}/network_identities \
--header 'Authorization: Bearer <token>'import requests
url = "https://manage.nervescloud.com/api/orgs/{org_name}/products/{product_name}/devices/{identifier}/network_identities"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://manage.nervescloud.com/api/orgs/{org_name}/products/{product_name}/devices/{identifier}/network_identities', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://manage.nervescloud.com/api/orgs/{org_name}/products/{product_name}/devices/{identifier}/network_identities",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://manage.nervescloud.com/api/orgs/{org_name}/products/{product_name}/devices/{identifier}/network_identities"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://manage.nervescloud.com/api/orgs/{org_name}/products/{product_name}/devices/{identifier}/network_identities")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://manage.nervescloud.com/api/orgs/{org_name}/products/{product_name}/devices/{identifier}/network_identities")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": [
{
"details": {
"relay": "https://relay.example.com"
},
"identifier": "c8924b6c9b7a8528b1365ebec4b2e43b6edebef684f8521f12b8caaf6e1b2302",
"inserted_at": "2026-08-14T11:02:31Z",
"instance": "default",
"last_reported_at": "2026-08-16T09:14:00Z",
"service": "iroh",
"source": "device_reported",
"updated_at": "2026-08-16T09:14:00Z"
},
{
"details": {},
"identifier": "5f691e39f55415be337b2e4cc0dd7291586ab7c4356bf32bab60f46fc78f95d5",
"inserted_at": "2026-08-14T11:02:31Z",
"instance": "console",
"last_reported_at": "2026-08-16T09:14:00Z",
"service": "iroh",
"source": "device_reported",
"updated_at": "2026-08-16T09:14:00Z"
}
]
}{
"errors": {
"detail": "Resource Not Found or Authorization Insufficient"
}
}{
"errors": {
"detail": "Resource Not Found or Authorization Insufficient"
}
}{
"errors": {
"identifier": [
"can't be blank"
]
}
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
Organization Name
Product Name
Device Identifier
Query Parameters
Only identities for this protocol
Only this endpoint of the protocol
Response
Network Identity list response
Network Identity list response
The identities this device holds
Show child attributes
Show child attributes

