Report evaluation counts
Records a batch of evaluation counts for the credential's environment. Returns 204 with no body.
The server counts each batch once. If it already received a batch with the same sdkInstanceId and windowId, it ignores the new one, so you can safely retry. It drops counts that are older than its retention period or too far in the future.
Accepts an evaluation key, a management key, or a public token.
bearerAuthorizationBearer <token>Send a credential in the Authorization header: Authorization: Bearer <token>.
Each credential belongs to one environment of one workspace, so the API never takes a workspace or environment in the URL.
- Management key (
ffk_…, secret): manages flags, segments, environments, and API keys, and reads the audit log and analytics. It can also do everything an evaluation key can. - Evaluation key (
ffk_…, secret): for server SDKs. It evaluates flags, reads flag definitions for local evaluation, and sends telemetry. - Public token (
ffp_…, not secret): for browser and mobile apps. It evaluates flags through OFREP and sends telemetry. It cannot read flag definitions.
Keep secret keys on your server. A 401 response means the credential is missing or not valid. A 403 response means the credential is valid but its role cannot perform the operation.
application/json- body
Evaluation counts that an SDK collected during one reporting window.
sdkInstanceId*stringAn ID for the SDK instance that sends the batch, such as a random UUID created at startup.
1 <= length <= 256windowId*stringA unique ID for this batch, such as a random UUID. If you retry a batch, send the same sdkInstanceId and windowId so the server counts it only once.
1 <= length <= 256rollups*array<>Between 1 and 1,000 evaluation counts.
1 <= items <= 1000No content
curl -X POST 'https://api.toggld.io/v1/telemetry' \ -H 'Content-Type: application/json' \ -d '{ "sdkInstanceId": "4b0f2e7a-9c1d-4e3b-8a6f-2d5c9e1b7a40", "windowId": "c8e1a5d3-2f7b-4a9c-b6e0-3d1f8a4c7e25", "rollups": [ { "flagKey": "new-checkout", "variant": "on", "reason": "SPLIT", "bucketStart": "2026-05-02T09:30:00.000Z", "count": 182 }, { "flagKey": "new-checkout", "variant": "off", "reason": "SPLIT", "bucketStart": "2026-05-02T09:30:00.000Z", "count": 731 } ]}'