Spoar
Dev widget

Report SDK outcomes

POST
/v2/projects/{project}/logs/client

The widget build of the SDK posts its drop and error outcomes here in batches of up to 20 ({ logs: [...] }, at most 16 KB), with the same key as POST /v2/events. They are stored as sdk log lines, with email and IP addresses replaced. Refused with WIDGET_REPORTS_DISABLED unless the project has widgetReports on, and rate limited per project.

Authorization

X-Project-Key<token>

A project's public key (pk_...) for browser ingest, from an allowed origin; ?key= works too.

In: header

Path Parameters

project*string

The project id, as listed by GET /v2/projects.

Length1 <= length

Request Body

text/plain

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/v2/projects/string/logs/client" \  -H "Content-Type: text/plain" \  -d '<logs>    <kind>transport</kind>    <level>warn</level>    <message>RA_DROP beacon refused, queued for retry</message>    <data>      <events>3</events>      <status>0</status>    </data>    <visitor>8c4e1f0a-2b3c-4d5e-8f60-718293a4b5c6</visitor>    <session>f1a2b3c4</session>    <ts>2026-10-03T14:02:04.117Z</ts>  </logs>'
{  "accepted": 0}