Skip to content

Integrations

Tailscale

Manage devices and network settings in your Tailscale tailnet

Use Tailscale to manage devices, users, device posture, DNS, policy files, keys, and tailnet settings.

Authentication

Enter a Tailscale API access token in API Access Token. The block sends it using Bearer authentication. Create a personal token in the Keys page of the admin console; personal tokens expire after 1–90 days and inherit the user's permissions.

An access token generated by a Tailscale OAuth client or federated identity also works. Generate that token using Tailscale's documented trust credential flow, then supply the access token to the block. The block does not exchange client secrets or refresh expired tokens. For scheduled workflows, supply a fresh access token from your credential management workflow before it expires.

Device enrollment keys (tskey-auth-) and OAuth client secrets (tskey-client-) cannot authenticate these API requests. When using scoped OAuth access tokens, grant the scopes required by the selected endpoint in the API reference. Creating a tailnet-owned auth key with OAuth also requires device tags owned by that credential.

Tailnet identifier

Tailnet-scoped operations require a Tailnet: use - for the access token's default tailnet, the tailnet ID from General Settings, or a supported legacy tailnet name. Device- and user-scoped operations use their resource IDs directly.

Device fields, filters, and keys

In advanced mode, select All device fields to include route, connectivity, SSH, and posture details. Device Filters accepts URL query syntax such as isEphemeral=true&tags=tag:server. Repeating a tag filter requires all specified tags. User lists can be filtered by relationship type and role.

List Keys returns active enrollment keys, API access tokens, and trust credentials. Use keyType and userId to identify the intended credentials before revoking them. Include All Tailnet Keys defaults to enabled; disable it to use the API's token-owner visibility rules.

Policy and network changes

Use Validate ACL to validate JSON or HuJSON policy files, or run a JSON array of ACL tests, without changing the policy. Inspect valid, message, and results, since validation errors can be returned with HTTP 200. Pass the ETag from Get ACL to Set ACL to protect against concurrent edits.

List inputs accept comma-separated values or a JSON array of strings. Use [] to clear tags, enabled routes, nameservers, or search paths. Set Split DNS replaces every split DNS entry; Update Split DNS changes only specified entries and accepts null to remove a domain. Set DNS Configuration replaces the complete DNS configuration, including resolver options and preferences. Update Tailnet Settings updates only supplied settings; do not specify both routeSelection and regionalRoutingOn.

List endpoints return a single API response and do not support pagination. Sim applies its shared response byte limit before transforming the result.

Use the block

Manage Tailscale devices, user access, posture attributes, DNS configuration, policy files, keys, subnet routes, and tailnet settings.

Actions

Tailscale List Devices

List devices in the tailnet

Inputs and outputs

Input

ParameterTypeRequiredDescription
apiKeystringYesTailscale API access token or OAuth access token (not an auth key or OAuth client secret)
tailnetstringYesTailnet ID, legacy name, or "-" for the token’s default tailnet
fieldsstringNoDevice fields to return: default or all
filtersstringNoURL query filters for top-level device fields, e.g. isEphemeral=true&tags=tag:server

Output

ParameterTypeDescription
devicesarrayDevices in the tailnet
↳ addressesarrayTailscale IP addresses
↳ idstringResource ID
↳ nodeIdstringPreferred device ID
↳ userstringUser who registered the device
↳ namestringDevice MagicDNS name
↳ hostnamestringDevice machine name
↳ clientVersionstringTailscale client version
↳ updateAvailablebooleanWhether a client update is available
↳ osstringOperating system
↳ createdstringCreation timestamp
↳ connectedToControlbooleanWhether the device is connected to the control server
↳ lastSeenstringLast seen timestamp; a connected device may omit it
↳ keyExpiryDisabledbooleanWhether device key expiry is disabled
↳ expiresstringKey expiration timestamp
↳ authorizedbooleanWhether the device is authorized
↳ isExternalbooleanWhether the device is shared from another tailnet
↳ multipleConnectionsbooleanWhether multiple devices are using the same node key
↳ machineKeystringMachine public key
↳ nodeKeystringNode public key
↳ blocksIncomingConnectionsbooleanWhether incoming connections are blocked
↳ enabledRoutesarrayApproved subnet routes
↳ advertisedRoutesarrayAdvertised subnet routes
↳ clientConnectivityjsonConnectivity report
↳ endpointsarrayClient's magicsock UDP IP:port endpoints (IPv4 or IPv6)
↳ mappingVariesByDestIPboolean'true' if the host's NAT mappings vary based on the destination IP
↳ latencyjsonMap of DERP server locations and their current latency
↳ clientSupportsjsonIdentifies features supported by the client
↳ hairPinningbooleanThis information is no longer tracked and will always be null
↳ ipv6boolean'true' if the device OS supports IPv6, regardless of whether IPv6 internet connectivity is available
↳ pcpboolean'true' if PCP port-mapping service exists on your router
↳ pmpboolean'true' if NAT-PMP port-mapping service exists on your router
↳ udpboolean'true' if UDP traffic is enabled on the current network; if 'false', Tailscale may be unable to make direct connections, and will rely on our DERP servers
↳ upnpboolean'true' if UPnP port-mapping service exists on your router
↳ tagsarrayAssigned tags
↳ tailnetLockErrorstringTailnet lock signature error
↳ tailnetLockKeystringTailnet lock public key
↳ sshEnabledbooleanWhether Tailscale SSH is enabled
↳ postureIdentityjsonDevice posture identity
↳ serialNumbersarraySerial numbers
↳ disabledbooleanDisabled
↳ postureStatusjsonDevice posture status
↳ passingbooleanReports whether the device is passing this posture
↳ impactingbooleanWhether the status of this posture affects the connectivity of the device
↳ failingAssertionsarrayList of posture assertions the device is failing
↳ isEphemeralbooleanWhether the device is ephemeral
↳ distrojsonOperating system distribution
↳ namestringOperating system distribution name
↳ versionstringThe operating system distribution version that the device is running
↳ codeNamestringThe operating system distribution code name that the device is running
countnumberNumber of returned items

Tailscale Get Device

Get details of a specific device

Inputs and outputs

Input

ParameterTypeRequiredDescription
apiKeystringYesTailscale API access token or OAuth access token (not an auth key or OAuth client secret)
deviceIdstringYesDevice nodeId (preferred) or legacy device ID
fieldsstringNoDevice fields to return: default or all

Output

ParameterTypeDescription
addressesarrayTailscale IP addresses
idstringResource ID
nodeIdstringPreferred device ID
userstringUser who registered the device
namestringDevice MagicDNS name
hostnamestringDevice machine name
clientVersionstringTailscale client version
updateAvailablebooleanWhether a client update is available
osstringOperating system
createdstringCreation timestamp
connectedToControlbooleanWhether the device is connected to the control server
lastSeenstringLast seen timestamp; a connected device may omit it
keyExpiryDisabledbooleanWhether device key expiry is disabled
expiresstringKey expiration timestamp
authorizedbooleanWhether the device is authorized
isExternalbooleanWhether the device is shared from another tailnet
multipleConnectionsbooleanWhether multiple devices are using the same node key
machineKeystringMachine public key
nodeKeystringNode public key
blocksIncomingConnectionsbooleanWhether incoming connections are blocked
enabledRoutesarrayApproved subnet routes
advertisedRoutesarrayAdvertised subnet routes
clientConnectivityjsonConnectivity report
↳ endpointsarrayClient's magicsock UDP IP:port endpoints (IPv4 or IPv6)
↳ mappingVariesByDestIPboolean'true' if the host's NAT mappings vary based on the destination IP
↳ latencyjsonMap of DERP server locations and their current latency
↳ clientSupportsjsonIdentifies features supported by the client
↳ hairPinningbooleanThis information is no longer tracked and will always be null
↳ ipv6boolean'true' if the device OS supports IPv6, regardless of whether IPv6 internet connectivity is available
↳ pcpboolean'true' if PCP port-mapping service exists on your router
↳ pmpboolean'true' if NAT-PMP port-mapping service exists on your router
↳ udpboolean'true' if UDP traffic is enabled on the current network; if 'false', Tailscale may be unable to make direct connections, and will rely on our DERP servers
↳ upnpboolean'true' if UPnP port-mapping service exists on your router
tagsarrayAssigned tags
tailnetLockErrorstringTailnet lock signature error
tailnetLockKeystringTailnet lock public key
sshEnabledbooleanWhether Tailscale SSH is enabled
postureIdentityjsonDevice posture identity
↳ serialNumbersarraySerial numbers
↳ disabledbooleanDisabled
postureStatusjsonDevice posture status
↳ passingbooleanReports whether the device is passing this posture
↳ impactingbooleanWhether the status of this posture affects the connectivity of the device
↳ failingAssertionsarrayList of posture assertions the device is failing
isEphemeralbooleanWhether the device is ephemeral
distrojsonOperating system distribution
↳ namestringOperating system distribution name
↳ versionstringThe operating system distribution version that the device is running
↳ codeNamestringThe operating system distribution code name that the device is running

Tailscale Set Device Name

Rename a device or reset its name to the OS hostname

Inputs and outputs

Input

ParameterTypeRequiredDescription
apiKeystringYesTailscale API access token or OAuth access token (not an auth key or OAuth client secret)
deviceIdstringYesDevice nodeId (preferred) or legacy device ID
namestringNoNew device name or FQDN; empty resets it to the OS hostname

Output

ParameterTypeDescription
successbooleanWhether the operation succeeded
deviceIdstringID of the affected device
namestringSubmitted device name; empty resets the name

Tailscale Delete Device

Remove a device from the tailnet

Inputs and outputs

Input

ParameterTypeRequiredDescription
apiKeystringYesTailscale API access token or OAuth access token (not an auth key or OAuth client secret)
deviceIdstringYesDevice nodeId (preferred) or legacy device ID

Output

ParameterTypeDescription
successbooleanWhether the operation succeeded
deviceIdstringID of the affected device

Tailscale Authorize Device

Authorize or deauthorize a device on the tailnet

Inputs and outputs

Input

ParameterTypeRequiredDescription
apiKeystringYesTailscale API access token or OAuth access token (not an auth key or OAuth client secret)
deviceIdstringYesDevice nodeId (preferred) or legacy device ID
authorizedbooleanYesWhether to authorize or deauthorize the device

Output

ParameterTypeDescription
successbooleanWhether the operation succeeded
deviceIdstringID of the affected device
authorizedbooleanRequested device authorization state

Tailscale Set Device Tags

Replace the tags assigned to a device

Inputs and outputs

Input

ParameterTypeRequiredDescription
apiKeystringYesTailscale API access token or OAuth access token (not an auth key or OAuth client secret)
deviceIdstringYesDevice nodeId (preferred) or legacy device ID
tagsstringYesComma-separated device tags; use [] to clear tags

Output

ParameterTypeDescription
successbooleanWhether the operation succeeded
deviceIdstringID of the affected device
tagsarrayTags submitted for the device

Tailscale Get Device Routes

Get the advertised and approved subnet routes for a device

Inputs and outputs

Input

ParameterTypeRequiredDescription
apiKeystringYesTailscale API access token or OAuth access token (not an auth key or OAuth client secret)
deviceIdstringYesDevice nodeId (preferred) or legacy device ID

Output

ParameterTypeDescription
advertisedRoutesarraySubnet CIDR routes advertised by the device
enabledRoutesarrayApproved subnet CIDR routes

Tailscale Set Device Routes

Replace the enabled subnet routes for a device

Inputs and outputs

Input

ParameterTypeRequiredDescription
apiKeystringYesTailscale API access token or OAuth access token (not an auth key or OAuth client secret)
deviceIdstringYesDevice nodeId (preferred) or legacy device ID
routesstringYesComma-separated enabled CIDR routes; use [] to disable all routes

Output

ParameterTypeDescription
advertisedRoutesarraySubnet CIDR routes advertised by the device
enabledRoutesarrayApproved subnet CIDR routes

Tailscale Update Device Key

Enable or disable device key expiry

Inputs and outputs

Input

ParameterTypeRequiredDescription
apiKeystringYesTailscale API access token or OAuth access token (not an auth key or OAuth client secret)
deviceIdstringYesDevice nodeId (preferred) or legacy device ID
keyExpiryDisabledbooleanYesWhether to disable device key expiry

Output

ParameterTypeDescription
successbooleanWhether the operation succeeded
deviceIdstringID of the affected device
keyExpiryDisabledbooleanRequested device key expiry setting

Tailscale Expire Device Key

Immediately expire a device node key so the device must reauthenticate

Inputs and outputs

Input

ParameterTypeRequiredDescription
apiKeystringYesTailscale API access token or OAuth access token (not an auth key or OAuth client secret)
deviceIdstringYesDevice nodeId (preferred) or legacy device ID

Output

ParameterTypeDescription
successbooleanWhether the operation succeeded
deviceIdstringID of the affected device

Tailscale Get Device Attributes

Get device posture attributes and their expiry times

Inputs and outputs

Input

ParameterTypeRequiredDescription
apiKeystringYesTailscale API access token or OAuth access token (not an auth key or OAuth client secret)
deviceIdstringYesDevice nodeId (preferred) or legacy device ID

Output

ParameterTypeDescription
attributesjsonMap of posture attribute names to string, number, or boolean values
expiriesjsonMap of posture attribute names to RFC 3339 expiry timestamps

Tailscale Set Device Attribute

Create or update a custom device posture attribute with an optional expiry

Inputs and outputs

Input

ParameterTypeRequiredDescription
apiKeystringYesTailscale API access token or OAuth access token (not an auth key or OAuth client secret)
deviceIdstringYesDevice nodeId (preferred) or legacy device ID
attributeKeystringYesCustom posture attribute name, prefixed with custom:
attributeValuestringYesJSON scalar attribute value: a quoted string, integer, or boolean
expirystringNoAttribute expiry as an RFC 3339 timestamp
commentstringNoReason for setting the posture attribute, up to 200 characters

Output

ParameterTypeDescription
attributesjsonMap of posture attribute names to string, number, or boolean values
expiriesjsonMap of posture attribute names to RFC 3339 expiry timestamps

Tailscale Delete Device Attribute

Remove a custom posture attribute from a device

Inputs and outputs

Input

ParameterTypeRequiredDescription
apiKeystringYesTailscale API access token or OAuth access token (not an auth key or OAuth client secret)
deviceIdstringYesDevice nodeId (preferred) or legacy device ID
attributeKeystringYesCustom posture attribute name, prefixed with custom:

Output

ParameterTypeDescription
successbooleanWhether the operation succeeded
deviceIdstringID of the affected device
attributeKeystringDeleted custom posture attribute key

Tailscale List DNS Nameservers

Get the global DNS nameservers configured for the tailnet

Inputs and outputs

Input

ParameterTypeRequiredDescription
apiKeystringYesTailscale API access token or OAuth access token (not an auth key or OAuth client secret)
tailnetstringYesTailnet ID, legacy name, or "-" for the token’s default tailnet

Output

ParameterTypeDescription
dnsarrayDNS nameserver IP addresses

Tailscale Set DNS Nameservers

Replace the global DNS nameservers for the tailnet

Inputs and outputs

Input

ParameterTypeRequiredDescription
apiKeystringYesTailscale API access token or OAuth access token (not an auth key or OAuth client secret)
tailnetstringYesTailnet ID, legacy name, or "-" for the token’s default tailnet
dnsstringYesComma-separated DNS nameserver IP addresses; [] clears the nameservers

Output

ParameterTypeDescription
dnsarrayDNS nameserver IP addresses
magicDNSbooleanWhether MagicDNS is enabled

Tailscale Get DNS Preferences

Get the MagicDNS preference for the tailnet

Inputs and outputs

Input

ParameterTypeRequiredDescription
apiKeystringYesTailscale API access token or OAuth access token (not an auth key or OAuth client secret)
tailnetstringYesTailnet ID, legacy name, or "-" for the token’s default tailnet

Output

ParameterTypeDescription
magicDNSbooleanWhether MagicDNS is enabled

Tailscale Set DNS Preferences

Enable or disable MagicDNS for the tailnet

Inputs and outputs

Input

ParameterTypeRequiredDescription
apiKeystringYesTailscale API access token or OAuth access token (not an auth key or OAuth client secret)
tailnetstringYesTailnet ID, legacy name, or "-" for the token’s default tailnet
magicDNSbooleanYesWhether MagicDNS is enabled

Output

ParameterTypeDescription
magicDNSbooleanWhether MagicDNS is enabled

Tailscale Get DNS Search Paths

Get the DNS search domains configured for the tailnet

Inputs and outputs

Input

ParameterTypeRequiredDescription
apiKeystringYesTailscale API access token or OAuth access token (not an auth key or OAuth client secret)
tailnetstringYesTailnet ID, legacy name, or "-" for the token’s default tailnet

Output

ParameterTypeDescription
searchPathsarrayDNS search domain names

Tailscale Set DNS Search Paths

Replace the DNS search domains for the tailnet

Inputs and outputs

Input

ParameterTypeRequiredDescription
apiKeystringYesTailscale API access token or OAuth access token (not an auth key or OAuth client secret)
tailnetstringYesTailnet ID, legacy name, or "-" for the token’s default tailnet
searchPathsstringYesComma-separated DNS search domains; [] clears the search paths

Output

ParameterTypeDescription
searchPathsarrayDNS search domain names

Tailscale Get Split DNS

Get split DNS resolvers

Inputs and outputs

Input

ParameterTypeRequiredDescription
apiKeystringYesTailscale API access token or OAuth access token (not an auth key or OAuth client secret)
tailnetstringYesTailnet ID, legacy name, or "-" for the token’s default tailnet

Output

ParameterTypeDescription
splitDnsjsonMap of domain names to DNS resolver arrays or null

Tailscale Update Split DNS

Update selected split DNS resolvers

Inputs and outputs

Input

ParameterTypeRequiredDescription
apiKeystringYesTailscale API access token or OAuth access token (not an auth key or OAuth client secret)
tailnetstringYesTailnet ID, legacy name, or "-" for the token’s default tailnet
splitDnsstringYesJSON map of domains to nameserver arrays; null deletes a domain when updating

Output

ParameterTypeDescription
splitDnsjsonMap of domain names to DNS resolver arrays or null

Tailscale Set Split DNS

Replace all split DNS resolvers

Inputs and outputs

Input

ParameterTypeRequiredDescription
apiKeystringYesTailscale API access token or OAuth access token (not an auth key or OAuth client secret)
tailnetstringYesTailnet ID, legacy name, or "-" for the token’s default tailnet
splitDnsstringYesJSON map of domains to nameserver arrays; null deletes a domain when updating

Output

ParameterTypeDescription
splitDnsjsonMap of domain names to DNS resolver arrays or null

Tailscale Get DNS Configuration

Get tailnet DNS configuration

Inputs and outputs

Input

ParameterTypeRequiredDescription
apiKeystringYesTailscale API access token or OAuth access token (not an auth key or OAuth client secret)
tailnetstringYesTailnet ID, legacy name, or "-" for the token’s default tailnet

Output

ParameterTypeDescription
dnsConfigurationjsonDns configuration
↳ nameserversarrayGlobal DNS resolvers to use
↳ addressstringIPv4 or IPv6 address of the DNS resolver
↳ useWithExitNodebooleanIf true, this resolver should still be used when a device is configured to use a Tailscale exit node
↳ splitDNSjsonMap of DNS name suffixes (domains) to lists of resolvers for Split DNS and advanced routing overlays
↳ searchPathsarraySearch domain paths to apply
↳ preferencesjsonPreferences
↳ overrideLocalDNSbooleanIf true, resolvers in nameservers override the local OS DNS configuration; if false, local resolvers are used
↳ magicDNSbooleanWhether MagicDNS is enabled for this tailnet

Tailscale Set DNS Configuration

Replace the full tailnet DNS configuration

Inputs and outputs

Input

ParameterTypeRequiredDescription
apiKeystringYesTailscale API access token or OAuth access token (not an auth key or OAuth client secret)
tailnetstringYesTailnet ID, legacy name, or "-" for the token’s default tailnet
dnsConfigurationstringYesComplete DNS configuration JSON: nameservers, splitDNS, searchPaths, preferences

Output

ParameterTypeDescription
dnsConfigurationjsonDns configuration
↳ nameserversarrayGlobal DNS resolvers to use
↳ addressstringIPv4 or IPv6 address of the DNS resolver
↳ useWithExitNodebooleanIf true, this resolver should still be used when a device is configured to use a Tailscale exit node
↳ splitDNSjsonMap of DNS name suffixes (domains) to lists of resolvers for Split DNS and advanced routing overlays
↳ searchPathsarraySearch domain paths to apply
↳ preferencesjsonPreferences
↳ overrideLocalDNSbooleanIf true, resolvers in nameservers override the local OS DNS configuration; if false, local resolvers are used
↳ magicDNSbooleanWhether MagicDNS is enabled for this tailnet

Tailscale List Users

List users in the tailnet

Inputs and outputs

Input

ParameterTypeRequiredDescription
apiKeystringYesTailscale API access token or OAuth access token (not an auth key or OAuth client secret)
tailnetstringYesTailnet ID, legacy name, or "-" for the token’s default tailnet
userTypestringNoUser relationship: member (default), shared, or all
rolestringNoUser role: owner, member, admin, it-admin, network-admin, billing-admin, or auditor

Output

ParameterTypeDescription
usersarrayUsers in the tailnet
↳ idstringResource ID
↳ displayNamestringUser display name
↳ loginNamestringUser login name
↳ tailnetIdstringOwning tailnet ID
↳ createdstringCreation timestamp
↳ typestringUser relationship: member or shared
↳ rolestringUser role
↳ statusstringUser status
↳ deviceCountnumberNumber of devices owned by the user
↳ lastSeenstringLast time a user device connected or the user authenticated
↳ currentlyConnectedbooleanWhether the user has a device connected to the control server
↳ profilePicURLstringUser profile picture URL
countnumberNumber of returned items

Tailscale Get User

Get details of a specific user

Inputs and outputs

Input

ParameterTypeRequiredDescription
apiKeystringYesTailscale API access token or OAuth access token (not an auth key or OAuth client secret)
userIdstringYesTailscale user ID

Output

ParameterTypeDescription
idstringResource ID
displayNamestringUser display name
loginNamestringUser login name
tailnetIdstringOwning tailnet ID
createdstringCreation timestamp
typestringUser relationship: member or shared
rolestringUser role
statusstringUser status
deviceCountnumberNumber of devices owned by the user
lastSeenstringLast time a user device connected or the user authenticated
currentlyConnectedbooleanWhether the user has a device connected to the control server
profilePicURLstringUser profile picture URL

Tailscale Set User Role

Change a tailnet user’s role

Inputs and outputs

Input

ParameterTypeRequiredDescription
apiKeystringYesTailscale API access token or OAuth access token (not an auth key or OAuth client secret)
userIdstringYesTailscale user ID
rolestringYesUser role: owner, member, admin, it-admin, network-admin, billing-admin, or auditor

Output

ParameterTypeDescription
successbooleanWhether the operation succeeded
userIdstringID of the affected user
rolestringRequested user role

Tailscale Approve User

Approve a pending user to join the tailnet

Inputs and outputs

Input

ParameterTypeRequiredDescription
apiKeystringYesTailscale API access token or OAuth access token (not an auth key or OAuth client secret)
userIdstringYesTailscale user ID

Output

ParameterTypeDescription
successbooleanWhether the operation succeeded
userIdstringID of the affected user

Tailscale Suspend User

Suspend a user’s access to the tailnet

Inputs and outputs

Input

ParameterTypeRequiredDescription
apiKeystringYesTailscale API access token or OAuth access token (not an auth key or OAuth client secret)
userIdstringYesTailscale user ID

Output

ParameterTypeDescription
successbooleanWhether the operation succeeded
userIdstringID of the affected user

Tailscale Restore User

Restore a suspended user’s access to the tailnet

Inputs and outputs

Input

ParameterTypeRequiredDescription
apiKeystringYesTailscale API access token or OAuth access token (not an auth key or OAuth client secret)
userIdstringYesTailscale user ID

Output

ParameterTypeDescription
successbooleanWhether the operation succeeded
userIdstringID of the affected user

Tailscale Delete User

Delete a user from the tailnet

Inputs and outputs

Input

ParameterTypeRequiredDescription
apiKeystringYesTailscale API access token or OAuth access token (not an auth key or OAuth client secret)
userIdstringYesTailscale user ID

Output

ParameterTypeDescription
successbooleanWhether the operation succeeded
userIdstringID of the affected user

Tailscale Create Auth Key

Create a device enrollment auth key

Inputs and outputs

Input

ParameterTypeRequiredDescription
apiKeystringYesTailscale API access token or OAuth access token (not an auth key or OAuth client secret)
tailnetstringYesTailnet ID, legacy name, or "-" for the token’s default tailnet
reusablebooleanNoWhether the auth key can register multiple devices (default false)
ephemeralbooleanNoWhether devices registered with the key are ephemeral (default false)
preauthorizedbooleanNoWhether devices skip manual approval (default true)
tagsstringNoComma-separated tags; required when creating a tailnet-owned key using OAuth
descriptionstringNoAuth key description, up to 50 alphanumeric characters, spaces, or hyphens
expirySecondsnumberNoAuth key lifetime in seconds (default 7776000, 90 days)

Output

ParameterTypeDescription
idstringResource ID
keyTypestringCredential type: auth, api, client, or federated
expirySecondsnumberAuth key lifetime in seconds
createdstringCreation timestamp
updatedstringLast update timestamp
expiresstringKey expiration timestamp
revokedstringRevocation timestamp
capabilitiesjsonDevice enrollment capabilities
↳ reusablebooleanreusable for auth keys only; reusable auth keys can be used multiple times to register different devices
↳ ephemeralbooleanephemeral for auth keys only; ephemeral keys are used to connect and then clean up short-lived devices
↳ preauthorizedbooleanpreauthorized for auth keys only; these are also referred to as "pre-approved" keys
↳ tagsarrayAssigned tags
scopesarrayGranted API scopes
tagsarrayAssigned tags
descriptionstringKey description
invalidbooleanWhether the key is expired or revoked
userIdstringCreating user ID; empty for a tailnet-owned key
audiencestringFederated identity audience
issuerstringFederated identity issuer
subjectstringFederated identity subject pattern
customClaimRulesjsonMap of custom OIDC claims to matching patterns
keystringAuth key secret, returned only at creation

Tailscale List Keys

List active auth keys, API access tokens, and trust credentials in the tailnet

Inputs and outputs

Input

ParameterTypeRequiredDescription
apiKeystringYesTailscale API access token or OAuth access token (not an auth key or OAuth client secret)
tailnetstringYesTailnet ID, legacy name, or "-" for the token’s default tailnet
allbooleanNoInclude all tailnet keys (default true); false restricts keys according to the access token owner

Output

ParameterTypeDescription
keysarrayKeys in the tailnet
↳ idstringResource ID
↳ keyTypestringCredential type: auth, api, client, or federated
↳ expirySecondsnumberAuth key lifetime in seconds
↳ createdstringCreation timestamp
↳ updatedstringLast update timestamp
↳ expiresstringKey expiration timestamp
↳ revokedstringRevocation timestamp
↳ capabilitiesjsonDevice enrollment capabilities
↳ reusablebooleanreusable for auth keys only; reusable auth keys can be used multiple times to register different devices
↳ ephemeralbooleanephemeral for auth keys only; ephemeral keys are used to connect and then clean up short-lived devices
↳ preauthorizedbooleanpreauthorized for auth keys only; these are also referred to as "pre-approved" keys
↳ tagsarrayAssigned tags
↳ scopesarrayGranted API scopes
↳ tagsarrayAssigned tags
↳ descriptionstringKey description
↳ invalidbooleanWhether the key is expired or revoked
↳ userIdstringCreating user ID; empty for a tailnet-owned key
↳ audiencestringFederated identity audience
↳ issuerstringFederated identity issuer
↳ subjectstringFederated identity subject pattern
↳ customClaimRulesjsonMap of custom OIDC claims to matching patterns
countnumberNumber of returned items

Tailscale Get Auth Key

Get a key’s type, owner, scopes, expiry, and device enrollment capabilities

Inputs and outputs

Input

ParameterTypeRequiredDescription
apiKeystringYesTailscale API access token or OAuth access token (not an auth key or OAuth client secret)
tailnetstringYesTailnet ID, legacy name, or "-" for the token’s default tailnet
keyIdstringYesTailscale key ID

Output

ParameterTypeDescription
idstringResource ID
keyTypestringCredential type: auth, api, client, or federated
expirySecondsnumberAuth key lifetime in seconds
createdstringCreation timestamp
updatedstringLast update timestamp
expiresstringKey expiration timestamp
revokedstringRevocation timestamp
capabilitiesjsonDevice enrollment capabilities
↳ reusablebooleanreusable for auth keys only; reusable auth keys can be used multiple times to register different devices
↳ ephemeralbooleanephemeral for auth keys only; ephemeral keys are used to connect and then clean up short-lived devices
↳ preauthorizedbooleanpreauthorized for auth keys only; these are also referred to as "pre-approved" keys
↳ tagsarrayAssigned tags
scopesarrayGranted API scopes
tagsarrayAssigned tags
descriptionstringKey description
invalidbooleanWhether the key is expired or revoked
userIdstringCreating user ID; empty for a tailnet-owned key
audiencestringFederated identity audience
issuerstringFederated identity issuer
subjectstringFederated identity subject pattern
customClaimRulesjsonMap of custom OIDC claims to matching patterns

Tailscale Delete Auth Key

Revoke an auth key, API access token, or trust credential

Inputs and outputs

Input

ParameterTypeRequiredDescription
apiKeystringYesTailscale API access token or OAuth access token (not an auth key or OAuth client secret)
tailnetstringYesTailnet ID, legacy name, or "-" for the token’s default tailnet
keyIdstringYesTailscale key ID

Output

ParameterTypeDescription
successbooleanWhether the operation succeeded
keyIdstringID of the revoked key

Tailscale Get ACL

Get the tailnet policy file

Inputs and outputs

Input

ParameterTypeRequiredDescription
detailsbooleanNoInclude the original HuJSON policy and its warnings and parsing errors
apiKeystringYesTailscale API access token or OAuth access token (not an auth key or OAuth client secret)
tailnetstringYesTailnet ID, legacy name, or "-" for the token’s default tailnet

Output

ParameterTypeDescription
warningsarrayPolicy warnings
errorsarrayPolicy parsing errors
aclstringTailnet policy as JSON, or the original HuJSON when diagnostics are enabled
etagstringPolicy ETag for conditional updates

Tailscale Validate ACL

Validate a policy file or run ACL tests without changing the tailnet policy

Inputs and outputs

Input

ParameterTypeRequiredDescription
apiKeystringYesTailscale API access token or OAuth access token (not an auth key or OAuth client secret)
tailnetstringYesTailnet ID, legacy name, or "-" for the token’s default tailnet
aclstringYesPolicy file in JSON or HuJSON, or a JSON array of ACL tests for validation

Output

ParameterTypeDescription
validbooleanWhether validation and tests passed without warnings
messagestringValidation summary
resultsarrayValidation and test diagnostics
↳ userstringTest identity
↳ errorsarrayTest failures
↳ warningsarrayPolicy warnings

Tailscale Set ACL

Replace the tailnet policy file

Inputs and outputs

Input

ParameterTypeRequiredDescription
apiKeystringYesTailscale API access token or OAuth access token (not an auth key or OAuth client secret)
tailnetstringYesTailnet ID, legacy name, or "-" for the token’s default tailnet
aclstringYesComplete tailnet policy file in JSON or HuJSON
ifMatchstringNoETag from Get ACL, or ts-default to replace only an untouched default policy

Output

ParameterTypeDescription
aclstringTailnet policy file as a JSON string
etagstringPolicy ETag for conditional updates

Tailscale Get Tailnet Settings

Get tailnet settings

Inputs and outputs

Input

ParameterTypeRequiredDescription
apiKeystringYesTailscale API access token or OAuth access token (not an auth key or OAuth client secret)
tailnetstringYesTailnet ID, legacy name, or "-" for the token’s default tailnet

Output

ParameterTypeDescription
settingsjsonSettings for a tailnet
↳ aclsExternallyManagedOnbooleanPrevents users from editing policies in the admin console to avoid conflicts with external management workflows like GitOps or Terraform
↳ aclsExternalLinkstringLink to the external tailnet policy definition or management solution for this tailnet
↳ adminConsoleSessionTimeoutMinutesnumberThe [admin console session timeout](/docs/account/admin-console-session-timeout) for members of this tailnet
↳ devicesApprovalOnbooleanWhether [device approval](/docs/features/access-control/device-management/device-approval) is enabled for the tailnet
↳ devicesAutoUpdatesOnbooleanWhether [auto updates](/docs/features/client/update#auto-updates) are enabled for devices that belong to this tailnet
↳ devicesKeyDurationDaysnumberThe [key expiry](/docs/features/access-control/key-expiry) duration for devices on this tailnet
↳ usersApprovalOnbooleanWhether [user approval](/docs/features/access-control/user-approval) is enabled for this tailnet
↳ usersRoleAllowedToJoinExternalTailnetsstringWhich user roles are allowed to [join external tailnets](/docs/features/sharing/how-to/invite-any-user)
↳ networkFlowLoggingOnbooleanWhether [network flow logs](/docs/features/logging/network-flow-logs) are enabled for the tailnet
↳ regionalRoutingOnbooleanWhether [regional routing](/docs/features/route-selection#regional-routing) is enabled for the tailnet
↳ routeSelectionstringThe [route selection](/docs/features/route-selection) algorithm used by the tailnet: * active-passive-failover - Active-passive failover (formerly known as "Failover") * regional-routing - Regional routing * regional-routing-failover - Regional routing with in-region failover * magicroute - MagicRoute A PATCH request must not specify both the regionalRoutingOn and routeSelection fields
↳ postureIdentityCollectionOnbooleanWhether [identity collection](/docs/features/access-control/device-management/how-to/manage-identity) is enabled for [device posture](/docs/features/device-posture) integrations for the tailnet
↳ httpsEnabledbooleanWhether provisioning of [HTTPS certificates](/docs/how-to/set-up-https-certificates) is enabled for this tailnet

Tailscale Update Tailnet Settings

Update selected tailnet settings

Inputs and outputs

Input

ParameterTypeRequiredDescription
apiKeystringYesTailscale API access token or OAuth access token (not an auth key or OAuth client secret)
tailnetstringYesTailnet ID, legacy name, or "-" for the token’s default tailnet
settingsstringYesJSON object of settings to update; omitted settings remain unchanged

Output

ParameterTypeDescription
settingsjsonSettings for a tailnet
↳ aclsExternallyManagedOnbooleanPrevents users from editing policies in the admin console to avoid conflicts with external management workflows like GitOps or Terraform
↳ aclsExternalLinkstringLink to the external tailnet policy definition or management solution for this tailnet
↳ adminConsoleSessionTimeoutMinutesnumberThe [admin console session timeout](/docs/account/admin-console-session-timeout) for members of this tailnet
↳ devicesApprovalOnbooleanWhether [device approval](/docs/features/access-control/device-management/device-approval) is enabled for the tailnet
↳ devicesAutoUpdatesOnbooleanWhether [auto updates](/docs/features/client/update#auto-updates) are enabled for devices that belong to this tailnet
↳ devicesKeyDurationDaysnumberThe [key expiry](/docs/features/access-control/key-expiry) duration for devices on this tailnet
↳ usersApprovalOnbooleanWhether [user approval](/docs/features/access-control/user-approval) is enabled for this tailnet
↳ usersRoleAllowedToJoinExternalTailnetsstringWhich user roles are allowed to [join external tailnets](/docs/features/sharing/how-to/invite-any-user)
↳ networkFlowLoggingOnbooleanWhether [network flow logs](/docs/features/logging/network-flow-logs) are enabled for the tailnet
↳ regionalRoutingOnbooleanWhether [regional routing](/docs/features/route-selection#regional-routing) is enabled for the tailnet
↳ routeSelectionstringThe [route selection](/docs/features/route-selection) algorithm used by the tailnet: * active-passive-failover - Active-passive failover (formerly known as "Failover") * regional-routing - Regional routing * regional-routing-failover - Regional routing with in-region failover * magicroute - MagicRoute A PATCH request must not specify both the regionalRoutingOn and routeSelection fields
↳ postureIdentityCollectionOnbooleanWhether [identity collection](/docs/features/access-control/device-management/how-to/manage-identity) is enabled for [device posture](/docs/features/device-posture) integrations for the tailnet
↳ httpsEnabledbooleanWhether provisioning of [HTTPS certificates](/docs/how-to/set-up-https-certificates) is enabled for this tailnet
Was this helpful?
Suggest an edit