Skip to main content

api integration guide

Network Infrastructure API Integration Guide

Date: 2026-01-07
Purpose: API-based automation for Tailscale, GL-iNet, NAS


Tailscale API

Endpoint: http://localhost:58427/localapi/v0/

Available Endpoints:

  • /status - Device status
  • /prefs - Preferences (can modify hostname)
  • /set - Set preferences

Example: Rename Device:

# Get current prefs curl http://localhost:58427/localapi/v0/prefs # Set hostname (requires auth) curl -X POST http://localhost:58427/localapi/v0/prefs \ -d '{"Hostname": "bluefly-m4"}'

Admin API (Cloud)

Endpoint: https://api.tailscale.com/api/v2/

Authentication: API token from Tailscale admin console

Endpoints:

  • /device - List devices
  • /device/{deviceId} - Get/update device
  • /tailnet/{tailnet}/devices/{deviceId} - Device management

Example: Rename Device via Admin API:

curl -X PATCH "https://api.tailscale.com/api/v2/device/{deviceId}" \ -H "Authorization: Bearer ${TAILSCALE_API_TOKEN}" \ -d '{"hostname": "bluefly-m4"}'

GL-iNet Router API

OpenWrt UCI API

Access: SSH to router, use UCI commands

Endpoints:

  • UCI commands via SSH
  • LuCI REST API (if enabled)
  • Custom API endpoints (router-specific)

Example: Get WiFi SSIDs:

ssh root@glinet-router.tailcf98b3.ts.net "uci show wireless"

Example: Get Tailscale Status:

ssh root@glinet-router.tailcf98b3.ts.net "tailscale status"

GL-iNet Specific API

Check: Router admin UI Advanced API

Endpoints (if available):

  • /cgi-bin/api/wireless - WiFi configuration
  • /cgi-bin/api/system - System information
  • /cgi-bin/api/tailscale - Tailscale status

Synology NAS API

DSM REST API

Base URL: https://nas.tailcf98b3.ts.net:5001/webapi/

Authentication: Session-based (login required)

Endpoints:

  • /auth.cgi - Authentication
  • /SYNO.Core.System - System information
  • /SYNO.Core.Network - Network configuration
  • /SYNO.Core.Wireless - WiFi (if applicable)
  • /SYNO.Core.Service - Service management

Example: Get System Info:

# Login first SESSION=$(curl -X POST "https://nas.tailcf98b3.ts.net:5001/webapi/auth.cgi?api=SYNO.API.Auth&version=3&method=login&account=admin&passwd=password&session=FileStation" | jq -r '.data.sid') # Get system info curl "https://nas.tailcf98b3.ts.net:5001/webapi/entry.cgi?api=SYNO.Core.System&version=1&method=info&_sid=${SESSION}"

SSH Access

Example: Get Tailscale Status:

ssh admin@nas.tailcf98b3.ts.net "tailscale status"

Implementation Scripts

Tailscale Device Rename (via Admin API)

Location: scripts/tailscale-rename-devices.sh

Requirements:

  • Tailscale API token in environment
  • Device IDs from admin console

GL-iNet Configuration (via SSH)

Location: scripts/glinet-configure.sh

Requirements:

  • SSH access to router
  • SSH key configured

NAS Discovery & Configuration

Location: scripts/nas-discovery.sh

Requirements:

  • Network access to NAS
  • DSM credentials (if needed)