---
title: "Transaction messages"
method: POST
path: "/transactions/messages"
tags: ["Transactions"]
---

# Transaction messages

`POST /transactions/messages`

Returns the SIP/RTCP/etc. rows that belong to the given session
transaction.

**Lua call-id correlation (optional).** If `coordinator.correlation.enable`
is `true` in the server config, and a row exists in `correlation_scripts` with
`type='correlation'`, `status=true` and `(hepid, profile)` matching the
request's `proto_type` and `event_type` (e.g. `hepid=1, profile='call'`
for SIP), the server passes the base rows to the Lua function
`correlate(data, nodes)` defined in that script. Any additional
`session_id` values the script returns are merged into the request
and the expanded set is re-queried. Script failure is non-fatal: the
endpoint falls back to the base result and logs a warning.

## Request body

- TransactionSessionRequest — Use session_id for one Call-ID, or session_ids (non-empty, max 50) for an OR filter across sessions. When session_ids is set it takes precedence over session_id. Supported on messages, qos, logs, callinfo, events, sub, hepsub, and export endpoints; responses include session_id on rows for grouping. For SIP call (proto_type=1, event_type=call), POST /transactions/callinfo returns one summary object per Call-ID (ringing_seconds, call_duration_seconds, codecs, UAC/UAS, setup delays, status, from_party, ruri_party, methods_distribution for the legacy methods chart, etc.).
  - `session_id` string — Session identifier to lookup messages/logs/QoS.
  - `session_ids` string[] — Multiple Call-IDs (OR filter; B2B leg matching where applicable).
  - `proto_type` integer — HEP protocol type (default 1).
  - `event_type` string — Event type (call, registration, default).
  - `timestamp` object — Optional millisecond UTC window (from/to).
    - `from` integer
    - `to` integer
  - `whitelist` string[] — IPs to exclude from PCAP/text export only (legacy Homer 7 field name; not an allow-list). A row is omitted when src_ip or dst_ip equals any listed address.

## Response `200`

Messages

- MessageListResponse
  - `data` object
    - `items` Message[]
      - `id` integer
      - `sid` string
      - `protocol_header` ProtocolHeader
        - `dst_ip` string
        - `src_ip` string
        - `dst_port` integer
        - `src_port` integer
        - `protocol` integer
        - `capture_id` integer
        - `capture_pass` string
        - `payload_type` integer
        - `time_seconds` integer
        - `time_useconds` integer
        - `protocol_family` integer
      - `data_header` DataHeader
        - `call_id` string
        - `method` string
        - `to_tag` string
        - `to_user` string
        - `from_tag` string
        - `pid_user` string
        - `auth_user` string
        - `from_user` string
        - `ruri_user` string
        - `user_agent` string
        - `ruri_domain` string
      - `raw` string
  - `meta` Meta
    - `request_id` string
    - `trace_id` string
    - `pagination` Pagination
      - `limit` integer
      - `next_cursor` string
      - `prev_cursor` string
      - `total` integer
      - `has_more` boolean
    - `message` string

## Other responses

- `400` — Bad request
- `401` — Unauthorized
- `404` — Not found
- `500` — Server error

---

[API](https://skmtc.net/sipcapture/apis/homer-next-gen-api.md) · [All operations](https://skmtc.net/sipcapture/apis/homer-next-gen-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/sipcapture/homer-next-gen-api/versions/1966dd0df318/schema)
