---
title: "Record safe client-side Copilot telemetry"
method: POST
path: "/api/copilot/events"
tags: ["Copilot"]
---

# Record safe client-side Copilot telemetry

`POST /api/copilot/events`

## Request

- Base URL: `https://api.setluca.com`
- URL: `https://api.setluca.com/api/copilot/events`
- Auth: API key in cookie `luca.session_token`

Forwards Ask Luca interaction telemetry from the browser into structured logs. The schema is an allowlist, which is what keeps chat content from arriving here.

**Session-only.** This endpoint isn't on the API-key allowlist. An organization API key gets a 403 here, whatever scopes it holds.

## Headers

- `Luca-API-Version` '1'

## Request body

- CopilotClientEvent
  - `eventName` 'token_fetch_failed' | 'initial_messages_failed' | 'session_failed' | 'session_retry' | 'session_retry_succeeded' | 'message_send_failed' | 'generation_stop' | 'generation_regenerate', required
  - `chatId` string, uuid
  - `scopeType` 'global' | 'lead' | 'campaign' | 'analytics'
  - `scopeId` string
  - `message` string, required
  - `metadata` object

## Response `200`

ok

- OkResponse
  - `ok` true, required

## Other responses

- `400`: bad request
- `401`: unauthorized
- `429`: rate limited
- `500`: internal error

---

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