---
title: "List One Member'S Api Keys Before Removing Them"
method: GET
path: "/v0/api-keys/usage/member/{user_id}"
tags: ["API Keys"]
---

# List One Member'S Api Keys Before Removing Them

`GET /v0/api-keys/usage/member/{user_id}`

The active keys this member created for the current team, with the calls each made over the usage window. An empty list means removing them breaks no integration. Open to any member of the workspace, like the key list itself: it returns metadata the whole team can already see, and a member leaving on their own needs to read it too.

## Path parameters

- `user_id` integer, required

## Query parameters

- `window_days` integer

## Response `200`

Successful Response

- MemberApiKeys — Every key one member created for a team, for the removal decision. An empty `keys` list is the common case and the one that matters most: it is what lets the caller leave the removal flow exactly as it was for the vast majority of removals, which have no integration behind them at all.
  - `user_id` integer, required
  - `window_days` integer, required
  - `keys` ApiKeyWithUsage[], required
    - `id` string, uuid, required
    - `name` string, nullable, required
    - `created_by` integer, required
    - `created_by_email` string, required
    - `created_at` string, date-time, required
    - `last_used_at` string, date-time, nullable — Last request made with this key, ever. Read from the key row, not from the request events, so it stays true for a key last used before event collection began.
    - `calls_in_window` integer, required — Requests made with this key inside the usage window.
    - `daily_calls` DailyCallCount[], required — One point per day of the window, oldest first, quiet days included as zeros so the series can be charted as-is.
      - `day` string, date, required
      - `calls` integer, required
    - `created_by_is_active_member` boolean, required — False once the creator has been removed from the workspace. Such a key keeps working, and whoever left may still know its value, so the UI asks the team to replace it.

## Other responses

- `400` — Bad Request
- `402` — Payment Required
- `422` — Unprocessable Content
- `500` — Internal Server Error

## Changes

- **2026-08-28** `a8f99a0b9c09` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/theirstack/apis/theirstack-api-reference/changes/v0/api-keys/usage/member/:user_id/get.md)

---

[API](https://skmtc.dev/theirstack/apis/theirstack-api-reference.md) · [All operations](https://skmtc.dev/theirstack/apis/theirstack-api-reference/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/theirstack/theirstack-api-reference/revisions/47a26a9dd3ec/schema)
