HTTP API
This is a brief introduction to the PiKVM API. Since the software consists of multiple microservices, Nginx provides a unified API entry point at /api/.
Authentication¶
All APIs require authentication. Each request must be authenticated, or you can get a token and pass it as a cookie. When 2FA is enabled, append the one-time code to the password with no spaces. You can generate the code using any TOTP library (e.g., Python):
When the 2FA code is close to expiring, request delays may cause a 403. One workaround is to retry in seconds. A better method is to combine retries with checking the remaining validity. If less than a second remains, delay the request. You can calculate remaining time like this:
Per-request authentication¶
- Using X-headers: send
X-KVMD-UserandX-KVMD-Passwd
- Using HTTP Basic Auth: unlike standard practice, this implementation does not use headers; it is provided only for compatibility.
Session cookie authentication¶
- Get a cookie:
POST /api/auth/login
Returns 200 on success, 403 on failure.
-
GET /api/auth/checkchecks cookie status. Returns 200 on success, 403 on failure. -
POST /api/auth/logoutdestroys the cookie.
System features¶
Get software info
GET /api/info returns all PiKVM device information.
Parameter: fields=... (optional) - only return specified categories, e.g., fields=system,hw. By default, all categories are returned.
Click to expand
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 | |
Get logs
GET /api/log returns kvmd service logs in plain text.
Parameters: follow=1 (optional) - long polling to follow logs; seek=N (optional) - return logs from the past N seconds.