---
title: "Accepts a single client log event. Always returns 204: sendBeacon ignores the response anyway, and we never want to surface validation issues back to the user."
method: POST
path: "/api/client-logs"
tags: ["ApiClientLogs"]
---

# Accepts a single client log event. Always returns 204: sendBeacon ignores the response anyway, and we never want to surface validation issues back to the user.

`POST /api/client-logs`

## Request body

- ClientLogEvent — Event sent from the React client to /api/client-logs via navigator.sendBeacon. The endpoint is anonymous; user id is read from the JWT when present.
  - `level` 0 | 1 | 2 | 3 | 4 — Severity of a log event coming from the React client. Mapped to Microsoft.Extensions.Logging.LogLevel by the receiving controller.
  - `message` string, nullable — Short human-readable message.
  - `timestamp` string, date-time, nullable — Browser-side ISO-8601 timestamp.
  - `url` string, nullable — Page URL where the event occurred.
  - `source` string, nullable — Where it was fired from: api-error, token-refresh-failed, window-error, unhandled-rejection, manual.
  - `release` string, nullable — Frontend release version (taken from package.json on the client).
  - `context` object, nullable — Free-form metadata: request url, http status, stack, etc. Must not contain PII (passwords, tokens, request bodies).

## Response `200`

Success

---

[API](https://skmtc.dev/binibit/apis/webapp.md) · [All operations](https://skmtc.dev/binibit/apis/webapp/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/binibit/webapp/revisions/975d0a2e9e7d/schema)
