---
title: "Add a batch of counts, and the device's relayed events, for the signing device"
method: POST
path: "/v1/telemetry"
tags: ["telemetry"]
---

# Add a batch of counts, and the device's relayed events, for the signing device

`POST /v1/telemetry`

## Request

- Base URL: `https://api.sixminute.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.sixminute.ai/v1/telemetry`
- Auth: HTTP bearer

Carries the device header with a person's session, or the daemon's own device credential (a device route); `device_id` in the body must be that device. Counts add to the day's row and are deltas since the last accepted post. `events` are what the daemon and the client say happened: each carries a name from a closed list and a time, optionally a `session_id` (a UUIDv7) and `properties`, a closed set of keys per name; the raw archive's two carry a closed `reason`. An event whose name this service does not know, a property its name does not have and a value outside its enum are dropped, never refused: the rest of the batch is accepted. A batch empty of both counts and events is a 400.

## Request body

- object
  - `device_id` string, required
  - `counts` object[]
    - `name` string, required
    - `day` string, required
    - `count` integer, required
  - `events` object[]
    - `name` unknown
    - `at` unknown
    - `reason` unknown
    - `session_id` unknown
    - `properties` unknown

## Response `202`

Accepted; the counters and the events were emitted.

## Other responses

- `400`: The body, query or path did not validate; `errors` lists the fields.
- `401`: No bearer token, or one that does not verify or has expired.
- `403`: The token verified but may not do this: no organisation, not provisioned, wrong role, or a device problem.

---

[API](https://skmtc.dev/sixminute/apis/sixminute-api.md) - [All operations](https://skmtc.dev/sixminute/apis/sixminute-api/llms.txt) - [OpenAPI document](https://skmtc.dev/sixminute/apis/sixminute-api/revisions/605577eadc10?raw)
