```
The token grants access only to the specified paths and HTTP methods.
### Managing API Tokens
- **List tokens:** `GET /api/tokens` (shows metadata, not token values)
- **Revoke token:** `DELETE /api/token/{hash}`
### Managing Remembered Sessions
- **Stay signed in:** Include an optional `"remember_me": true` flag in the JSON body when calling `POST /api/auth/login`. ArtLight Server will issue a hardened `__Host-` cookie with an extended lifetime.
- **Refresh silently:** `POST /api/auth/refresh` rotates the short-lived session token using the HttpOnly refresh cookie. The response sets fresh cookies and also returns the new access token in the JSON payload.
- **List active sessions:** `GET /api/auth/sessions` returns all devices that currently hold a valid ArtLight Server session cookie. Each entry includes creation time, last activity, expiry, remote address, and whether it was a “remember me” session.
- **Revoke a specific session:** `DELETE /api/auth/sessions/{hash}` immediately removes the matching session from disk. If the current device is revoked, its cookie is cleared and the browser must sign in again.
All session metadata is stored hashed and persisted in the same state file as API tokens so ArtLight Server can validate cookies across service restarts.
## GET /api/vigembus/status
@copydoc confighttp::getViGEmBusStatus()
## POST /api/vigembus/install
@copydoc confighttp::installViGEmBus()
| Previous | Next |
|:--------------------------------------------|--------------------------------------:|
| [Performance Tuning](performance_tuning.md) | [Troubleshooting](troubleshooting.md) |
[TOC]
### Host readiness metadata
`GET /api/metadata` includes optional status fields for the v2 interface. Existing fields
and configuration write formats remain compatible.
- `encoder_status`: `state` (`ready`, `failed`, or `unknown`) and `h264`, `hevc`, `av1`
support from the current encoder-probe cache. Reading metadata never initiates a probe.
- Provider actions are shown only when the corresponding `providers` capability is explicitly
true. Missing Steam, Lutris, MangoHUD, and Playnite-toggle capabilities mean unavailable.
- Linux `linux.session_role`: `desktop`, `greeter`, or `unknown`.
- Linux `virtual_display.reason`: empty when ready; otherwise
`driver_or_outputs_unavailable` or `session_or_output_unavailable`.
- Linux `capture_status`: `configured_backend`, `virtual_display_configured`,
`observed_backend`, and `managed_event_driven`. An observed `kms` backend with
`managed_event_driven: true` means a managed presentation-event capture loop is currently
running. Outside that capture lifetime the observed backend is `unknown`. This does not
claim that another backend is unavailable or that a configured capture path was verified.
Clients must tolerate absent status fields from older hosts and distinguish unknown status
from verified readiness. Virtual-display readiness is not required for physical capture.