---
title: "Session Status"
method: GET
path: "/customer/session/status"
tags: ["Account Session"]
---

# Session Status

`GET /customer/session/status`

## Request

- Base URL: `https://api.twitterapis.com/twitter`
- URL: `https://api.twitterapis.com/twitter/customer/session/status`
- Auth: HTTP bearer

Read the X session stored against your API key without changing it. Returns the account the session actually resolved to, whether it is still live or has been marked dead, when it was registered and last used, and which egress tier a write would leave on. It never returns auth_token, ct0, or any proxy URL. The key is taken from the authenticated request and the handler reads no identity from the body, the query string, or any second header, so a call can only ever read the caller's own session. This call is free. Cost: Free per call.

## Response `200`

Read back the session you registered: which X account it resolved to, whether it is still alive, and whether the proxy you supplied is the one your writes leave from. Free.

- object
  - `registered` boolean: True when a session is stored for your API key. False when you never registered one, or revoked it. Per-call credentials sent as x-auth-token and x-ct0 are never stored, so a caller who only uses that path always sees false.
  - `username` string, nullable: The X handle the stored session resolved to when it was registered. Read back from storage, not from anything you send, so it is the field that settles whether you are acting as the account you expect. Null when resolution never succeeded.
  - `twitter_user_id` string, nullable: The numeric X user id for the same account. Null when resolution never succeeded.
  - `status` string: Either ok or dead. dead is stamped when X rejects the cookies as expired or deauthorized, so it is an observation rather than a guess. A dead session is still stored and still revocable; re-register to resume.
  - `created_at` string: ISO timestamp of when this session was first registered.
  - `updated_at` string: ISO timestamp of the last time the session was registered or replaced. Equal to created_at when it has never been re-registered.
  - `last_used_at` string, nullable: ISO timestamp of the last call that acted as this session. Null if it has never been used. A last_used_at that stopped moving is often the first sign of a stalled integration.
  - `egress` object
    - `source` string: Which egress tier a write on this session would use: session (the proxy you registered), sticky_residential or pool_residential (an exit we assign and keep stable for this account), or direct (our shared server IP).
    - `customer_proxy_in_use` boolean: True when the proxy_url you registered is the one your writes leave from. This is the direct answer to whether your own proxy is being honoured.
    - `note` string: One line explaining that tier and what to do about it. On the direct tier it explains why a shared IP raises the chance of a challenge.
  - `message` string: Human-readable summary. Differs for a live session, a dead one, and no session at all.

## Other responses

- `400`: Bad request
- `401`: Unauthorized
- `404`: Not found
- `429`: Rate limited
- `5XX`: Server error

---

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