Data API
Entries

Entries

Entries represent individual HTTP transactions captured within a session. Each entry contains the complete request and response data, including headers, bodies, timing information and connection details. The entry endpoints provide access to this data for analysis and integration purposes.


List Session Entries

Retrieves all entries within a specific session. You can optionally filter to only return entries that are currently selected in the powhttp interface.

GET /sessions/{session_id}/entries

Path Parameters:

  • session_id: The ULID of the session, or active to reference the currently active session

Query Parameters:

  • selected (optional): When present (any value), only returns entries that are currently selected in the powhttp interface
  • bookmarked (optional): When present (any value), only returns entries that are currently bookmarked in the powhttp interface. Can be combined with selected to filter by both conditions
  • highlighted (optional): Filters entries by their highlight state. The value should be a comma-separated list that can include strikethrough and/or color names (red, green, blue, yellow, gray, orange, pink, purple).

Response:

type Option<T> = T | null;
            
type SocketAddress = {
    ip: string; 
    port: Option<number>;
};

type SessionEntry = {
  id: string;
  url: string;
  clientAddr: Option<SocketAddress>;
  remoteAddr: Option<SocketAddress>;
  httpVersion: string;
  transactionType: "request" | "push_promise";
  request: {
    method: Option<string>;
    path: Option<string>;
    httpVersion: Option<string>;
    headers: Array<[string, string]>;
    body: Option<string>;  // Base64-encoded
  };
  response: Option<{
    httpVersion: Option<string>;
    statusCode: Option<number>;
    statusText: Option<string>;
    headers: Array<[string, string]>;
    body: Option<string>;  // Base64-encoded
  }>;
  isWebSocket: boolean;
  tls: {
    connectionId: Option<string>;  // ULID
    tlsVersion: Option<number>;
    cipherSuite: Option<number>;
    ja3: Option<{
        string: string;
        hash: string;
    }>;
    ja4: Option<{
        raw: string;
        hashed: string;
    }>;
  };
  http2: Option<{
    connectionId: string;  // ULID
    streamId: number;
  }>;
  timings: {
    startedAt: number;  // Unix timestamp in milliseconds
    blocked: Option<number>;
    dns: Option<number>;
    connect: Option<number>;
    send: Option<number>;
    wait: Option<number>;
    receive: Option<number>;
    ssl: Option<number>;
  };
  process: Option<{
    pid: number;
    name: Option<string>;
  }>;
};

type Response = Array<SessionEntry>;

Example Request:

GET /sessions/active/entries?selected

Example Response:

[
  {
    "id": "01K88WZ6TMNGMRB5JVZSHPSETA",
    "url": "https://example.powhttp.com/post",
    "clientAddr": {
      "ip": "127.0.0.1",
      "port": 51851
    },
    "remoteAddr": {
      "ip": "2606:4700:7::60",
      "port": 443
    },
    "httpVersion": "HTTP/2",
    "transactionType": "request",
    "request": {
      "method": "POST",
      "path": "/post",
      "httpVersion": null,
      "headers": [
        [
          ":method",
          "POST"
        ],
        [
          ":path",
          "/post"
        ],
        [
          ":authority",
          "example.powhttp.com"
        ],
        [
          ":scheme",
          "https"
        ],
        [
          "user-agent",
          "powhttp"
        ],
        [
          "content-type",
          "application/x-www-form-urlencoded"
        ],
        [
          "accept-encoding",
          "gzip, deflate, br"
        ]
      ],
      "body": "aGVsbG89dGhlcmU="
    },
    "response": {
      "httpVersion": null,
      "statusCode": 200,
      "statusText": "OK",
      "headers": [
        [
          ":status",
          "200"
        ],
        [
          "content-type",
          "application/json"
        ],
        [
          "server",
          "powhttp"
        ]
      ],
      "body": "eyJoaSI6IvCfkYsifQ=="
    },
    "isWebSocket": false,
    "tls": {
      "connectionId": "01K88WZ6D6BK0256Z61GH9XX5V",
      "tlsVersion": 771,
      "cipherSuite": 49199,
      "ja3": {
        "string": "771,4866-4867-4865-49199-49195-...",
        "hash": "1a28e69016765d92e3b381168d68922c"
      },
      "ja4": {
        "raw": "t12d5911h2_002f,0032,0033,0035,...",
        "hashed": "t12d5911h2_a33745022dd6_1f22a2ca17c4"
      }
    },
    "http2": {
      "connectionId": "01K88WZ6TG8F1WVS5EEADR1KH7",
      "streamId": 1
    },
    "timings": {
      "startedAt": 1761235409748,
      "blocked": null,
      "dns": null,
      "connect": 97,
      "send": 0,
      "wait": null,
      "receive": 221,
      "ssl": 55
    },
    "process": {
      "pid": 7860,
      "name": "chrome.exe"
    }
  }
]

Get Specific Entry

Retrieves detailed information about a single entry within a session.

GET /sessions/{session_id}/entries/{entry_id}

Path Parameters:

  • session_id: The ULID of the session, or active to reference the currently active session
  • entry_id: The ULID of the entry, or active to reference the currently active entry in the specified session

Response:

Returns a single SessionEntry object with the same structure as described in the list entries endpoint above.

Example Request:

GET /sessions/active/entries/active

Data Encoding

Request and response bodies are returned as base64-encoded strings in the body field. This ensures binary data can be safely transmitted as JSON. If a request or response has no body, the body field will be null.

To decode the body data, use a base64 decoder appropriate for your programming language.