---
title: "Get conversation analytics"
method: GET
path: "/v1/analytics/inbox/conversations/{conversationId}"
tags: ["Inbox Analytics"]
---

# Get conversation analytics

`GET /v1/analytics/inbox/conversations/{conversationId}`

Per-conversation inbox analytics. The inbox analog of
/v1/analytics/post-timeline — one conversation, daily totals,
source mix.

The {conversationId} path param accepts EITHER the Mongo `_id` of
the Conversation document OR its `platformConversationId` (the
same identity used by metadata.conversationId at ingest time).
Ownership is verified in MongoDB against the caller's team
before the Tinybird query fires.

Max date range is 365 days.

## Path parameters

- `conversationId` string, required

## Query parameters

- `fromDate` string, date, required
- `toDate` string, date

## Response `200`

Per-conversation analytics

- object
  - `success` boolean
  - `conversationId` string — The platformConversationId
  - `mongoId` string
  - `platform` string, nullable
  - `from` string, date
  - `to` string, date, nullable
  - `summary` object
    - `received` integer
    - `sent` integer
    - `read` integer
    - `failed` integer
    - `totalMessages` integer
    - `firstMessageAt` string, date-time, nullable
    - `lastMessageAt` string, date-time, nullable
  - `timeseries` object[]
    - `date` string, date
    - `sent` integer
    - `received` integer
    - `read` integer
    - `failed` integer
  - `bySource` object[]
    - `source` string — (unspecified) for legacy rows with no metadata.source
    - `count` integer

## Other responses

- `400` — Validation error
- `401` — Unauthorized
- `404` — Conversation not found or not owned by the caller's team
- `500` — Internal server error

---

[API](https://skmtc.net/zernio/apis/zernio-api.md) · [All operations](https://skmtc.net/zernio/apis/zernio-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/zernio/zernio-api/versions/51932b099b2f/schema)
