Skip to content

List join keys

GET
/v1/join-keys

Get a paginated list of join keys. Tokens are not included.

Token scope required: join-keys:list

includeCounts
boolean

If true, return count of total records and current page start and count in metadata

cursor
string

Cursor value at which to start the results, provided in nextCursor or prevCursor of a prior request

Example
bmV4dA.eyJsb2dzLmNyZQ5iIiwiX3ZhbHVlIjo9In19
pageSize
integer
default: 25 <= 500

Number of records to return in each page

sortDirection
string
default: asc
Allowed values: asc desc

Order in which to return results. Each endpoint sorts on its own key (for example, hosts by name and audit logs by creation time). Matching is case-insensitive, and any value other than desc sorts ascending.

Successful operation

object
data
required
Array<object>
object
id
required
string
Example
dnjoin-P3RCTXN5LVFGBMJNYF2QHKWDOA
organizationID
required
string
Example
org-F63A24JGCLJV3ZEUTLCBISGETA
name
required

Identifies the key. Hosts that enroll without reporting a usable hostname are named after it, followed by a random suffix.

string
Example
ci-runner
networkID
required

Network that hosts enrolled with this key join.

string
Example
network-KAOWMXZHZWCVMGGFKM22XEGYLE
roleID
required

Role assigned to hosts enrolled with this key.

string | null
Example
role-PZEDBXHCEXKAKJPZ6XOQTIAJA4
tags
required

Tags assigned to hosts enrolled with this key.

Array<string>
Example
[
"env:ci"
]
autoAssignCIDRs
required

Prefixes from which hosts enrolled with this key are assigned addresses. Includes the network’s IPv6 prefix whenever the network has one.

array | null
Example
[
"100.100.0.0/22",
"fdef:c0:c0:1::/80"
]
expiresAt
required

When the key stops enrolling hosts. null means the key does not expire.

string | null format: date-time
Example
2027-01-01T00:00:00Z
createdAt
required
string format: date-time
Example
2026-10-29T15:00:00Z
modifiedAt
required
string format: date-time
Example
2026-10-29T15:00:00Z
metadata
required
object
totalCount

The total number of resources existing in the account. Only present when includeCounts is true.

integer
hasNextPage
required

Is there a page of data that can be fetched using the nextCursor?

boolean
hasPrevPage
required

Is there a page of data that can be fetched using the prevCursor?

boolean
nextCursor

An opaque string that can be used to fetch the next page of results. Not provided if result set is empty.

string
prevCursor

An opaque string that can be used to fetch the previous page of results. Not provided if result set is empty.

string
page

Only present when includeCounts is true.

object
count
required

The number of results returned in the response.

integer
start
required

The zero-based index of the first result within the overall list. For example, the first page will have a start of 0. If 25 results are fetched, and the nextCursor used to fetch a new page of results, the second request’s start will be 25.

integer
Example
{
"data": [
{
"id": "dnjoin-P3RCTXN5LVFGBMJNYF2QHKWDOA",
"organizationID": "org-F63A24JGCLJV3ZEUTLCBISGETA",
"name": "ci-runner",
"networkID": "network-KAOWMXZHZWCVMGGFKM22XEGYLE",
"roleID": "role-PZEDBXHCEXKAKJPZ6XOQTIAJA4",
"tags": [
"env:ci"
],
"autoAssignCIDRs": [
"100.100.0.0/22",
"fdef:c0:c0:1::/80"
],
"expiresAt": "2027-01-01T00:00:00Z",
"createdAt": "2026-10-29T15:00:00Z",
"modifiedAt": "2026-10-29T15:00:00Z"
}
],
"metadata": {
"hasNextPage": false,
"hasPrevPage": false
}
}

The API key is missing, invalid or expired.

object
errors
required
Array<object>
object
code
required

A static name for the error type

string
message
required

A short human readable description of the error

string
path

Describes the variable missing or malformed

string
param

The query parameter the error relates to, such as filter.targetType

string
extra

Machine-readable details about the error. ERR_LIMIT_EXCEEDED errors carry limit and limitName.

object
limit

The maximum number of resources allowed

integer
limitName

The kind of resource the limit applies to

string
key
additional properties
any
Example
{
"errors": [
{
"code": "ERR_UNAUTHORIZED",
"message": "unauthorized"
}
]
}

The API key lacks a required scope.

object
errors
required
Array<object>
object
code
required

A static name for the error type

string
message
required

A short human readable description of the error

string
path

Describes the variable missing or malformed

string
param

The query parameter the error relates to, such as filter.targetType

string
extra

Machine-readable details about the error. ERR_LIMIT_EXCEEDED errors carry limit and limitName.

object
limit

The maximum number of resources allowed

integer
limitName

The kind of resource the limit applies to

string
key
additional properties
any
Examples

The API key lacks a required scope.

{
"errors": [
{
"code": "ERR_FORBIDDEN",
"message": "api key must support the following scopes: hosts:read"
}
]
}

The organization has exceeded its API request rate limit. Retry the request after a short delay.

object
errors
required
Array<object>
object
code
required

A static name for the error type

string
message
required

A short human readable description of the error

string
path

Describes the variable missing or malformed

string
param

The query parameter the error relates to, such as filter.targetType

string
extra

Machine-readable details about the error. ERR_LIMIT_EXCEEDED errors carry limit and limitName.

object
limit

The maximum number of resources allowed

integer
limitName

The kind of resource the limit applies to

string
key
additional properties
any
Example
{
"errors": [
{
"code": "ERR_TOO_MANY_REQUESTS",
"message": "too many requests"
}
]
}