---
title: "Workspace Activity"
method: GET
path: "/api/workspace/activity"
tags: ["activity"]
---

# Workspace Activity

`GET /api/workspace/activity`

## Request

- Base URL: `https://api.heymetra.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.heymetra.com/api/workspace/activity`
- Auth: none declared

This workspace's tool calls, newest first, within a bounded window.

The workspace is the one the request is acting for — read from the context
like every other endpoint here, never from the path or the query string, so
naming somebody else's workspace is not a thing this route can be asked to
do.

## Query parameters

- `since` string, date-time, nullable
- `until` string, date-time, nullable
- `user_id` string, nullable
- `mcp_session_id` string, nullable
- `outcome` 'ok' | 'no_data' | 'connection_required' | 'connection_error' | 'account_ambiguous' | 'quota_exceeded' | 'approval_required' | 'denied' | 'error': The vocabulary a tool may return. Everything other than ``OK`` is a structured intermediate state the frontend turns into a UI affordance rather than an error toast (plan §7).
- `limit` integer
- `cursor` string, nullable

## Headers

- `authorization` string, nullable
- `x-workspace-id` string, nullable

## Response `200`

Successful Response

- ActivityPageOut
  - `rows` ActivityRowOut[], required
    - `id` string, uuid, required
    - `at` string, date-time, required
    - `user_id` string, nullable, required
    - `user_email` string, nullable, required
    - `client` string, nullable, required
    - `mcp_session_id` string, nullable, required
    - `tool` string, required
    - `is_write` boolean, required
    - `provider` string, nullable, required
    - `connection_id` string, uuid, nullable, required
    - `connection_label` string, nullable, required
    - `duration_ms` integer, nullable, required
    - `outcome` 'ok' | 'no_data' | 'connection_required' | 'connection_error' | 'account_ambiguous' | 'quota_exceeded' | 'approval_required' | 'denied' | 'error', required: The vocabulary a tool may return. Everything other than ``OK`` is a structured intermediate state the frontend turns into a UI affordance rather than an error toast (plan §7).
    - `failure_kind` string, nullable, required
    - `error_status` integer, nullable, required
    - `error_type` string, nullable, required
  - `next_cursor` string, nullable, required
  - `window_start` string, date-time, required
  - `window_end` string, date-time, required

## Other responses

- `422`: Validation Error

---

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