> ## Documentation Index
> Fetch the complete documentation index at: https://docs.operata.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Get detailed contact stats

> Get the per-second network performance trace for a single contact — jitter, RTT, MOS, and packet counts — to chart call quality across the full contact duration.

Returns the per-second network performance trace for one contact: jitter, round-trip time (RTT), MOS, packets sent and received, and agent status at each sample. Use it to chart call quality across the full duration of a contact — find the `contactId` first in [List contact summaries](/docs/api-contact-summary).

## Endpoint

```http theme={null}
GET https://api.operata.io/v1/data/calls/{contactId}/details
```

## Parameters

### Path

| Name        | Type   | Required | Description                                 |
| ----------- | ------ | -------- | ------------------------------------------- |
| `contactId` | string | yes      | The Amazon Connect Contact ID for the call. |

## Response

`200 OK` with an array of samples sorted by `timestamp`. Each sample covers one second of network metrics for the contact.

```json theme={null}
[
  {
    "agentStatus": "Talk",
    "jitter": 24,
    "mos": 4.72,
    "packetsReceived": 50,
    "packetsSent": 50,
    "rtt": 58,
    "timestamp": "2026-05-18T10:14:22.272Z"
  },
  {
    "agentStatus": "Talk",
    "jitter": 22,
    "mos": 4.75,
    "packetsReceived": 50,
    "packetsSent": 50,
    "rtt": 56,
    "timestamp": "2026-05-18T10:14:23.272Z"
  }
]
```

| Field             | Type              | Description                                                    |
| ----------------- | ----------------- | -------------------------------------------------------------- |
| `agentStatus`     | string            | `Talk` when the agent is unmuted, `Mute` when muted.           |
| `jitter`          | integer           | Jitter for this sample, in milliseconds.                       |
| `mos`             | number            | Mean Opinion Score for this sample, 1.0–5.0. Higher is better. |
| `packetsReceived` | integer           | Inbound packets in this one-second window.                     |
| `packetsSent`     | integer           | Outbound packets in this one-second window.                    |
| `rtt`             | integer           | Round-trip time for this sample, in milliseconds.              |
| `timestamp`       | string (ISO 8601) | UTC timestamp for the sample.                                  |

Sample count matches contact duration — one entry per second of active call. For aggregated min/avg/max values across the whole contact, use [Get complete contact record](/docs/api-contact-record).

## Example

<CodeGroup>
  ```bash curl theme={null}
  curl -u "$OPERATA_GROUP_ID:$OPERATA_API_TOKEN" \
    "https://api.operata.io/v1/data/calls/db248964-dad8-4da8-8ca4-8094d2d254c5/details"
  ```

  ```javascript Node.js theme={null}
  const groupId = process.env.OPERATA_GROUP_ID;
  const apiToken = process.env.OPERATA_API_TOKEN;
  const auth = Buffer.from(`${groupId}:${apiToken}`).toString("base64");

  const contactId = "db248964-dad8-4da8-8ca4-8094d2d254c5";
  const response = await fetch(
    `https://api.operata.io/v1/data/calls/${contactId}/details`,
    { headers: { Authorization: `Basic ${auth}` } },
  );
  const samples = await response.json();
  ```

  ```python Python theme={null}
  import os, requests

  contact_id = "db248964-dad8-4da8-8ca4-8094d2d254c5"
  response = requests.get(
      f"https://api.operata.io/v1/data/calls/{contact_id}/details",
      auth=(os.environ["OPERATA_GROUP_ID"], os.environ["OPERATA_API_TOKEN"]),
  )
  response.raise_for_status()
  samples = response.json()
  ```
</CodeGroup>

## Errors

| Status | Code        | When                                                                                                    | Recover                                                                                                                                             |
| ------ | ----------- | ------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| 404    | `not_found` | No contact with `contactId` exists for this Operata account, or no per-second samples have arrived yet. | Confirm the ID against [List contact summaries](/docs/api-contact-summary). If the contact ended within the last minute, retry after a short delay. |

See [Errors](/docs/api-errors) for shared codes such as `401 unauthorized`, `429 rate_limited`, and the `5xx` family. For request caps see [Rate limits](/docs/api-rate-limits).

## Related

* [Get complete contact record](/docs/api-contact-record) — every captured field for the same contact, including aggregated network metrics.
* [List contact summaries](/docs/api-contact-summary) — list contacts to find a `contactId` to drill into.
* [Errors](/docs/api-errors) — shared status codes and recovery patterns.


## OpenAPI

````yaml GET /v1/data/calls/{contactId}/details
openapi: 3.0.3
info:
  title: operata-api
  version: '1'
servers:
  - url: https://api.operata.io/
security:
  - sec0: []
paths:
  /v1/data/calls/{contactId}/details:
    get:
      summary: Detailed Contact Stats
      description: Returns detailed second-by-second metrics for a given contact
      operationId: detailed-operata-stats
      parameters:
        - name: contactId
          in: path
          description: Amazon Connect `Contact ID`
          schema:
            type: string
            default: none
          required: true
      responses:
        '200':
          description: '200'
          content:
            application/json:
              examples:
                Result:
                  value: |-
                    [
                        {
                            "agentStatus": "Talk",
                            "jitter": 24,
                            "mos": 4.718968,
                            "packetsReceived": 50,
                            "packetsSent": 50,
                            "rtt": 58,
                            "timestamp": "2020-09-07T22:39:39.272Z"
                        },
                        {
                            "agentStatus": "Talk",
                            "jitter": 24,
                            "mos": 4.718968,
                            "packetsReceived": 50,
                            "packetsSent": 50,
                            "rtt": 58,
                            "timestamp": "2020-09-07T22:39:39.272Z"
                        },
                        {
                            "agentStatus": "Talk",
                            "jitter": 24,
                            "mos": 4.718968,
                            "packetsReceived": 50,
                            "packetsSent": 50,
                            "rtt": 58,
                            "timestamp": "2020-09-07T22:39:39.272Z"
                        },
                        {
                            "agentStatus": "Talk",
                            "jitter": 24,
                            "mos": 4.718968,
                            "packetsReceived": 50,
                            "packetsSent": 50,
                            "rtt": 58,
                            "timestamp": "2020-09-07T22:39:39.272Z"
                        },
                        {
                            "agentStatus": "Talk",
                            "jitter": 24,
                            "mos": 4.718968,
                            "packetsReceived": 50,
                            "packetsSent": 50,
                            "rtt": 58,
                            "timestamp": "2020-09-07T22:39:39.272Z"
                        }
                    ]
              schema:
                type: array
                items:
                  type: object
                  properties:
                    agentStatus:
                      type: string
                      example: Talk
                    jitter:
                      type: integer
                      example: 24
                      default: 0
                    mos:
                      type: number
                      example: 4.718968
                      default: 0
                    packetsReceived:
                      type: integer
                      example: 50
                      default: 0
                    packetsSent:
                      type: integer
                      example: 50
                      default: 0
                    rtt:
                      type: integer
                      example: 58
                      default: 0
                    timestamp:
                      type: string
                      example: '2020-09-07T22:39:39.272Z'
        '401':
          description: '401'
          content:
            text/plain:
              examples:
                Result:
                  value: "<html>\n\n<head>\n\t<title>401 Authorization Required</title>\n</head>\n\n<body>\n\t<center>\n\t\t<h1>401 Authorization Required</h1>\n\t</center>\n\t<hr>\n\t<center>nginx/1.19.2</center>\n</body>\n\n</html>"
        '404':
          description: '404'
          content:
            text/plain:
              examples:
                Result:
                  value: Call Summary record could not be found
      deprecated: false
components:
  securitySchemes:
    sec0:
      type: http
      scheme: basic

````