> For clean Markdown of any page, append .md to the page URL. > For a complete documentation index, see https://docs.athenaintel.com/api-reference/computer/list-ssh-access-tokens/llms.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.athenaintel.com/_mcp/server. # List your temporary SSH tokens for a computer asset GET https://api.athenaintel.com/api/v0/computer/{asset_id}/ssh-access/tokens List the unrevoked temporary SSH tokens YOU minted for this computer with `create_ssh_access` — each with its id, the token's last 4 characters, and its creation and expiry times. Tokens that expired in the last 15 minutes are included with `expired: true`, because a session opened before expiry can outlive it briefly. The token itself is never returned again after it is minted, and tokens other users minted are not listed. Requires edit access to the computer. Tokens minted before this listing existed are not listed; they expire on their own. Reference: https://docs.athenaintel.com/api-reference/computer/list-ssh-access-tokens ## Authentication - `X-API-KEY` header (required) — API Key authentication via header ## Request ### Path parameters - `asset_id` (string, required) ## Response ### 200 Successful Response - `tokens` (list of SshAccessTokenOut, required) — Newest first. ## Errors ### 401 Unauthorized Error Unauthorized - `message` (string, required) ### 403 Forbidden Error Forbidden - `map from string to any` ### 404 Not Found Error Not Found - `message` (string, required) ### 422 Unprocessable Entity Error Validation Error - `detail` (list of ValidationError, optional) ## Types ### SshAccessTokenOut One live temporary SSH token the caller minted. Never the token itself. - `created_at` (datetime, required) — When the token was minted. - `expired` (boolean, required) — Whether the token has expired. An expired token admits no new connection, but a session opened before expiry can still be running for a few minutes; revoking it ends that session. - `expires_at` (datetime, required) — When the token stops admitting new connections. - `id` (string, required) — Token id — a 16-hex prefix of the token's SHA-256 digest; use it with `revoke_ssh_access_token`. - `token_hint` (string, required) — The token's last 4 characters, to tell tokens apart. ### ValidationError - `loc` (list of ValidationErrorLocItems, required) - `msg` (string, required) - `type` (string, required) - `ctx` (ValidationErrorCtx, optional) - `input` (any, optional) ### ValidationErrorLocItems ### ValidationErrorCtx ## Examples **Response** ```json { "tokens": [] } ``` **SDK Code** ```python import requests url = "https://api.athenaintel.com/api/v0/computer/asset_id/ssh-access/tokens" headers = {"X-API-KEY": ""} response = requests.get(url, headers=headers) print(response.json()) ``` ```javascript const url = 'https://api.athenaintel.com/api/v0/computer/asset_id/ssh-access/tokens'; const options = {method: 'GET', headers: {'X-API-KEY': ''}}; try { const response = await fetch(url, options); const data = await response.json(); console.log(data); } catch (error) { console.error(error); } ``` ```go package main import ( "fmt" "net/http" "io" ) func main() { url := "https://api.athenaintel.com/api/v0/computer/asset_id/ssh-access/tokens" req, _ := http.NewRequest("GET", url, nil) req.Header.Add("X-API-KEY", "") res, _ := http.DefaultClient.Do(req) defer res.Body.Close() body, _ := io.ReadAll(res.Body) fmt.Println(res) fmt.Println(string(body)) } ``` ```ruby require 'uri' require 'net/http' url = URI("https://api.athenaintel.com/api/v0/computer/asset_id/ssh-access/tokens") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true request = Net::HTTP::Get.new(url) request["X-API-KEY"] = '' response = http.request(request) puts response.read_body ``` ```java import com.mashape.unirest.http.HttpResponse; import com.mashape.unirest.http.Unirest; HttpResponse response = Unirest.get("https://api.athenaintel.com/api/v0/computer/asset_id/ssh-access/tokens") .header("X-API-KEY", "") .asString(); ``` ```php request('GET', 'https://api.athenaintel.com/api/v0/computer/asset_id/ssh-access/tokens', [ 'headers' => [ 'X-API-KEY' => '', ], ]); echo $response->getBody(); ``` ```csharp using RestSharp; var client = new RestClient("https://api.athenaintel.com/api/v0/computer/asset_id/ssh-access/tokens"); var request = new RestRequest(Method.GET); request.AddHeader("X-API-KEY", ""); IRestResponse response = client.Execute(request); ``` ```swift import Foundation let headers = ["X-API-KEY": ""] let request = NSMutableURLRequest(url: NSURL(string: "https://api.athenaintel.com/api/v0/computer/asset_id/ssh-access/tokens")! as URL, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0) request.httpMethod = "GET" request.allHTTPHeaderFields = headers let session = URLSession.shared let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in if (error != nil) { print(error as Any) } else { let httpResponse = response as? HTTPURLResponse print(httpResponse) } }) dataTask.resume() ```