Skip to main content
The telemetry batches endpoint receives interaction opportunity metadata that the SDK enqueues locally and ships in the background. Your product responses never wait for this call — the SDK drains its queue asynchronously at a 500 ms interval, or sooner when 50 events accumulate. You do not need to call this endpoint yourself: the SDK handles everything automatically.
The SDK handles batching automatically. You only need this endpoint if you are implementing a custom SDK or porting to a new language.

Endpoint

Base URL: https://agent-feedback-api-production.up.railway.app

Authorization

Use your company product key. This key stays on your backend and is never passed to customer agents.

Queue behavior

The SDK maintains a bounded in-memory queue (default: 1,000 events). When the queue is full, the oldest event is dropped to make room for the new one — product responses are never delayed or failed as a result. Batches are sent with a 3-second HTTP timeout; if delivery fails, the SDK retries each event up to three times before discarding it. A single warning is logged the first time delivery fails.

Request body

Send a JSON object with a single events array. Each batch may contain between 1 and 100 events.
array
required
An array of interaction telemetry event objects. Minimum 1, maximum 100 per batch.

Example request

Response

The server returns HTTP 202 Accepted with a count of how many events were stored.
number
The number of events from this batch that were successfully ingested.
number
The number of events from this batch that were discarded (for example, because they failed internal validation). Currently always 0 for valid batches.

Error responses

Implementing a custom SDK

If you are porting Agent Feedback to a new language, your implementation must satisfy these requirements for the telemetry queue:
  1. Non-blocking — enqueue the event synchronously; flush asynchronously. Never await the HTTP call inside a request handler.
  2. Bounded — cap the queue at a fixed size (recommended: 1,000 events). Drop the oldest event when the queue is full rather than growing unbounded.
  3. Batched — accumulate events and flush up to 50 at a time. Flush when 50 events accumulate, or after at most 500 ms, whichever comes first.
  4. Retry-limited — retry failed batches up to 3 times. Discard after that to avoid memory growth.
  5. Schema-conformant — normalize operation paths (replace UUIDs and bare numeric segments with :id) and only send the fields defined in telemetry-batch.schema.json.
See the protocol conformance requirements for the full list.