Skip to main content
BanSafe telemetry contains bounded counts, booleans, enums, timing histograms, and error-code counts from an eligible Linked Device session. It does not contain message content, media, recipient identifiers, contact identifiers, or chat history. Open a number on Safety to see its collection status and browse recent snapshots. Use these records to check what the estimator could measure at a specific time. A measured zero is different from Not measured.

Check collection status

GET /platform/bansafe/collection?projectId={projectId} lists collection status for the numbers in a project. GET /platform/bansafe/telemetry/{session} returns the same status with the latest supported snapshot for one number. Read latestFlushedAt as the time the number produced the record and latestReceivedAt as the time Polymorfa stored it. freshUntil is the server’s freshness boundary. A partial record is a normal sub-hour snapshot; each signal still states whether it was measured. droppedRecords reports a gap declared by the collector. A value above zero means the window is incomplete. It does not turn missing activity into a measured zero.

Browse signals

GET /platform/bansafe/signals returns the public signal catalogue. Each definition has a stable key, a label and description, a group, a value kind, and a unit. GET /platform/bansafe/telemetry/{session}/history returns snapshots newest first. It accepts since, until, cursor, and limit. The default limit is 10 and the maximum is 50. Follow page.nextCursor while page.hasMore is true. Each snapshot contains its bucket, flush, and receipt times, whether the bucket was partial, the supported record version, and its signals.

Calls and new contacts

Two groups describe outreach on a Linked Device Number. Both carry counts only, never a callee or a call identifier. A person counts once per UTC day, in the hour that first reached them, so adding the hours of a day gives distinct people rather than repeated sends. Unanswered and declined shares are these counts divided by outbound. The cold-callee share is cold divided by cold + warm + unknown, which is its own denominator: it counts calls that passed the restriction check and then reached WhatsApp. A call that failed before reaching WhatsApp is in neither the callee split nor reach, and a call placed while the check could not run is not in the split. A Number reached by a runtime that does not collect these groups reports them as unmeasured. Do not infer a clean result from measured: false. Display it as unavailable for that snapshot. Histograms contain aggregate bin counts, not event records.

Authorization

All telemetry, collection, and Health-action inspection reads require sessions:read. An team credential supplies projectId for project lists. A project token can read only its own project, and a conflicting project or number returns 404.