---
title: "List signed-in devices"
method: GET
path: "/api/sessions"
tags: ["Account"]
---

# List signed-in devices

`GET /api/sessions`

## Request

- Base URL: `https://domani.run`
- URL: `https://domani.run/api/sessions`
- Auth: HTTP bearer

Every browser, mobile app and terminal signed in to the account, the caller's own session first (`current`). Each sign-in opens its own session, so signing in on a new device never signs another one out. Location is where the device signed in from (country and city from its IP), absent when unknown. API keys are not sessions: list them with GET /api/tokens.

## Response `200`

Signed-in devices

- object
  - `sessions` object[]
    - `id` string
    - `current` boolean: The session this request is signed in with
    - `kind` 'web' | 'mobile' | 'cli'
    - `product` 'domani' | 'mail', nullable: The product a browser session is signed in to; null for the mobile app and the CLI
    - `device` object
      - `type` 'desktop' | 'mobile' | 'tablet' | 'terminal' | 'unknown'
      - `os` string, nullable
      - `browser` string, nullable
    - `location` object
      - `country` string, nullable: ISO 3166-1 alpha-2 country code (e.g. US, GB, FR)
      - `city` string, nullable
    - `signed_in_at` string, date-time
    - `last_active_at` string, date-time, nullable
  - `hint` string

## Other responses

- `401`: Missing or invalid API key
- `429`: Rate limit exceeded - wait and retry

---

[API](https://skmtc.dev/domani/apis/domani-run-api.md) · [All operations](https://skmtc.dev/domani/apis/domani-run-api/llms.txt) · [OpenAPI document](https://skmtc.dev/domani/apis/domani-run-api/revisions/7679f8159533?raw)
