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

# Get website session

> One session with its page list (path, title, engaged time), its forms and events, and with include the visitor, the person or the company it was bound to. Private context: never repeated to the lead.

Contract:
- MCP tool `get_website_session`, registry package `mcp.signals/website_sessions`, mount `signals.visits`.
- Operation `get`, response envelope `get`.
- Flags: read only.



## OpenAPI

````yaml /api-reference/signals/openapi.yaml get /api/website-sessions/{sid}
openapi: 3.0.3
info:
  title: 'GetSales public contract: gs.service.signals'
  description: >-
    The signals service, its website lane: the team's registered sites with
    their key pages and tracked events, the team switch for the codes in links,
    and what the tracking plane saw: every visit as a session with its pages,
    forms and network, the browsers behind them and the people they were bound
    to; and, since P0 of its LinkedIn leg, who looked at a sender profile's
    LinkedIn profile (the sightings of the premium list, read once a day).


    GENERATED. This document is projected from the Zod MCP tool registry in
    `product/mcp/gs.mcp` (one tool per public endpoint, 1:1). Do not edit it by
    hand; edit the tool definition and regenerate with `pnpm openapi:public`.


    Surface: the public `/api` contract of `gs.service.signals`, 30 operations.
    This is the only OpenAPI document the platform publishes. Internal
    (`/internal`) and health endpoints are deliberately absent: they are not
    part of any contract, they can change without notice, and the service source
    is their only description.


    Conventions:

    - Auth is a bearer JWT, optionally narrowed by the `Team-SID` header.

    - Every success body is an MCP envelope: `success: true` plus one typed
    `operation` shape (`search`, `get`, `create`, `update`, `delete`, `metrics`,
    `group_by`, `action`), and a `meta` block with `trace_id` for support.

    - Every failure is the same `McpError` envelope with a code from a fixed
    16-code taxonomy, so a client maps errors once.

    - Lists page with `page_size` (0 to 500, default 50) plus an opaque forward
    `cursor`; `page_size: 0` returns counts only.

    - On `GET` and `DELETE`, object-valued query parameters (`filter`, `sort`)
    travel as JSON text and array-valued ones repeat as `name[]=value`.

    - The MCP-only `_meta` field (usage analytics) never reaches the backend and
    is not part of this contract.
  version: '1.0'
  contact:
    name: GetSales
    url: https://getsales.io
    email: support@getsales.io
  license:
    name: Proprietary
    url: https://getsales.io/terms
servers:
  - url: https://beta.getsales.io/signals/v1
    description: >-
      Production (the gateway path on the beta ring; the origin is provisioned
      per DEPLOY_MAP.md)
security:
  - BearerJwt: []
    TeamSid: []
tags:
  - name: profile_view_sightings
    description: >-
      Registry package `mcp.signals/profile_view_sightings`, served on MCP mount
      `signals.visits`.
  - name: signal_preferences
    description: >-
      Registry package `mcp.signals/signal_preferences`, served on MCP mount
      `signals.website`.
  - name: signal_settings
    description: >-
      Registry package `mcp.signals/signal_settings`, served on MCP mount
      `signals.website`.
  - name: website_key_pages
    description: >-
      Registry package `mcp.signals/website_key_pages`, served on MCP mount
      `signals.website`.
  - name: website_session_owners
    description: >-
      Registry package `mcp.signals/website_session_owners`, served on MCP mount
      `signals.visits`.
  - name: website_sessions
    description: >-
      Registry package `mcp.signals/website_sessions`, served on MCP mount
      `signals.visits`.
  - name: website_sites
    description: >-
      Registry package `mcp.signals/website_sites`, served on MCP mount
      `signals.website`.
  - name: website_tracked_events
    description: >-
      Registry package `mcp.signals/website_tracked_events`, served on MCP mount
      `signals.website`.
  - name: website_visitors
    description: >-
      Registry package `mcp.signals/website_visitors`, served on MCP mount
      `signals.visits`.
paths:
  /api/website-sessions/{sid}:
    get:
      tags:
        - website_sessions
      summary: Get website session
      description: >-
        One session with its page list (path, title, engaged time), its forms
        and events, and with include the visitor, the person or the company it
        was bound to. Private context: never repeated to the lead.


        Contract:

        - MCP tool `get_website_session`, registry package
        `mcp.signals/website_sessions`, mount `signals.visits`.

        - Operation `get`, response envelope `get`.

        - Flags: read only.
      operationId: get_website_session
      parameters:
        - name: sid
          in: path
          required: true
          description: The sg_ws_* sid of the row to read.
          schema:
            type: string
            minLength: 18
            maxLength: 18
            pattern: ^sg_ws_
            description: The sg_ws_* sid of the row to read.
        - name: include[]
          in: query
          required: false
          description: Relations to attach to the row; omit for the bare row.
          style: form
          explode: true
          schema:
            type: array
            items:
              type: string
              enum:
                - visitor
                - person
                - company
              description: >-
                visitor: the browser's row; person and company: the owner's sid
                (the cards are owed).
            description: Relations to attach to the row; omit for the bare row.
      responses:
        '200':
          description: '`get` success envelope.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetWebsiteSessionResponse'
        4XX:
          $ref: '#/components/responses/McpClientError'
        5XX:
          $ref: '#/components/responses/McpServerError'
components:
  schemas:
    GetWebsiteSessionResponse:
      type: object
      properties:
        success:
          type: boolean
          enum:
            - true
        operation:
          type: string
          enum:
            - get
        item:
          type: object
          properties:
            sid:
              type: string
              description: Website session sid (sg_ws_...).
            team_sid:
              type: string
              description: 'Owning team (ts_tm_..., external: gs.service.id).'
            site_sid:
              type: string
              description: The registered site (sg_si_...).
            visitor_sid:
              type: string
              description: >-
                The browser behind the visit (sg_wv_...); a person may own
                several.
            person_sid:
              type: string
              nullable: true
              description: >-
                The person a rung named (cr_pp_..., playtables); null while
                nobody did. A person always takes a session over from a company.
            company_sid:
              type: string
              nullable: true
              description: >-
                The company a company code in our link or the network named when
                no person did (cr_co_..., playtables); cleared when a person
                takes the session over.
            attribution:
              type: string
              enum:
                - code
                - identified
                - fingerprint
                - manual
                - company_code
                - company_network
                - none
              description: >-
                Which rung named the owner: code (the person code in our link),
                identified (an identify or a form), fingerprint (the device),
                manual (a bind by hand), company_code (the company code in our
                link: the company, never a person; every code on a site set to
                companies), company_network (the network, a company); none while
                nothing did.
            fingerprint_sid:
              type: string
              nullable: true
              description: >-
                The device the fingerprint base saw the session from
                (sg_fp_...); null when none was stored.
            started_at:
              type: string
              description: >-
                ISO 8601 UTC, the receipt time of the first hit. The feed's
                order, newest first.
            last_seen_at:
              type: string
              description: >-
                ISO 8601 UTC, the receipt time of the newest hit; the row grows
                until the close.
            closed_at:
              type: string
              nullable: true
              description: >-
                ISO 8601 UTC, set by the sweep 30 minutes after last_seen_at;
                null = the visitor may still be on the site.
            pageviews_count:
              type: integer
              minimum: 0
              description: Every page view, beyond the cap of pages too.
            engaged_seconds:
              type: integer
              minimum: 0
              description: >-
                The sum over page views of the largest engaged time each
                reported.
            entry_path:
              type: string
              description: The path of the first page view, with its query.
            exit_path:
              type: string
              description: The path of the last page view.
            pages:
              type: array
              items:
                type: object
                properties:
                  page_id:
                    type: string
                    description: The page view's id from the wire (12 characters).
                  path:
                    type: string
                    description: >-
                      The page's path with its query, the code in our link
                      removed by the script.
                  title:
                    type: string
                    nullable: true
                    description: The document title; null when none.
                  engaged_seconds:
                    type: integer
                    minimum: 0
                    description: >-
                      The largest engaged time a ping of this page view
                      reported, in whole seconds.
                  first_seen_at:
                    type: string
                    description: ISO 8601 UTC, the receipt time of the pageview hit.
                  scroll_pct:
                    type: integer
                    nullable: true
                    minimum: 0
                    maximum: 100
                    description: >-
                      The deepest scroll a ping of this page view reported, 0 to
                      100; null until one did (and on visits folded before
                      2026-10-07).
                required:
                  - page_id
                  - path
                  - title
                  - engaged_seconds
                  - first_seen_at
                  - scroll_pct
              description: The first 50 page views, in order, each with its engaged time.
            events:
              type: array
              items:
                type: object
                properties:
                  kind:
                    type: string
                    enum:
                      - event
                      - form
                    description: >-
                      event: a custom event the site sent; form: a form it
                      reported (a marked form's submit, or a form a server-side
                      identify named).
                  name:
                    type: string
                    description: >-
                      The event's name or the form's name as the site sent it. A
                      form's email never rides here.
                  at:
                    type: string
                    description: ISO 8601 UTC, the receipt time of the hit.
                  page_id:
                    type: string
                    description: The page view the hit belonged to.
                required:
                  - kind
                  - name
                  - at
                  - page_id
              description: >-
                The first 50 custom events and forms, in order; every event the
                site sent, registered or not.
            key_pages:
              type: array
              items:
                type: string
              description: >-
                The keys (slugs) of the site's key pages reached, in the order
                first reached: what the key_page filter matches and the signal
                visited_key_page reads.
            referrer_type:
              type: string
              enum:
                - direct
                - internal
                - search
                - social
                - email
                - ads
                - referral
                - ai_assistant
                - unknown
              description: >-
                Where the visit came from, decided on the first page view:
                direct, internal (another page of the site), search, social,
                email, ads (a click id or a paid utm_medium), referral,
                ai_assistant (ChatGPT, Perplexity, Claude and the like),
                unknown.
            referrer_host:
              type: string
              nullable: true
              description: >-
                The referrer's host, lowercased, no www.; null when absent or
                unreadable.
            utm_source:
              type: string
              nullable: true
            utm_medium:
              type: string
              nullable: true
            utm_campaign:
              type: string
              nullable: true
            utm_content:
              type: string
              nullable: true
            utm_term:
              type: string
              nullable: true
            landing_code:
              type: string
              nullable: true
              description: >-
                The first code a hit of the session carried (the person code or
                the company code in the link we sent); null when none.
            browser:
              type: string
              nullable: true
              description: >-
                The parser's name (Chrome, Safari, Firefox...); null when
                unknown.
            browser_version:
              type: string
              nullable: true
            os:
              type: string
              nullable: true
              description: Windows, macOS, iOS, Android, Linux...; null when unknown.
            os_version:
              type: string
              nullable: true
            device:
              type: string
              enum:
                - desktop
                - mobile
                - tablet
                - unknown
              description: desktop | mobile | tablet | unknown.
            screen:
              type: string
              nullable: true
              description: >-
                {width}x{height} of the screen; null when the first page view
                did not report it.
            language:
              type: string
              nullable: true
              description: The browser's first language; null when not reported.
            timezone:
              type: string
              nullable: true
              description: The browser's IANA zone; null when not reported.
            geo_country:
              type: string
              nullable: true
              description: >-
                ISO 3166-1 alpha-2 from the edge's location header; null when
                the edge gave none.
            geo_region:
              type: string
              nullable: true
            geo_city:
              type: string
              nullable: true
            ip:
              type: string
              description: >-
                The client address of the first hit (IPv4 or IPv6); its network
                part only once the network answer is stored on a site with
                anonymize_ip.
            network_status:
              type: string
              enum:
                - pending
                - resolved
                - failed
                - private
              description: >-
                pending until the data service answered for the address;
                resolved with the network columns filled; failed (no answer
                after the asks); private (an address nobody is asked about).
            network_type:
              type: string
              nullable: true
              description: >-
                The data service's classification of the block: business, isp,
                mobile, hosting, education, government or unknown; null until
                resolved.
            network_name:
              type: string
              nullable: true
              description: >-
                The organization the block is registered to, else the registry's
                name of the block ("Deutsche Telekom", "Hetzner"); null until
                resolved.
            network_domain:
              type: string
              nullable: true
              description: >-
                The company domain the data service derived for a business
                network; null when none.
            asn:
              type: integer
              nullable: true
              description: The origin AS; null until resolved.
            as_name:
              type: string
              nullable: true
              description: The AS holder; null until resolved.
            is_internal:
              type: boolean
              description: >-
                A hit came from one of the site's ignored_ips, or an identified
                email of the team's own domains: the team's own traffic, never a
                fact, never a signal.
            created_at:
              type: string
              description: ISO 8601 UTC.
            updated_at:
              type: string
              description: ISO 8601 UTC.
          required:
            - sid
            - team_sid
            - site_sid
            - visitor_sid
            - person_sid
            - company_sid
            - attribution
            - fingerprint_sid
            - started_at
            - last_seen_at
            - closed_at
            - pageviews_count
            - engaged_seconds
            - entry_path
            - exit_path
            - pages
            - events
            - key_pages
            - referrer_type
            - referrer_host
            - utm_source
            - utm_medium
            - utm_campaign
            - utm_content
            - utm_term
            - landing_code
            - browser
            - browser_version
            - os
            - os_version
            - device
            - screen
            - language
            - timezone
            - geo_country
            - geo_region
            - geo_city
            - ip
            - network_status
            - network_type
            - network_name
            - network_domain
            - asn
            - as_name
            - is_internal
            - created_at
            - updated_at
        included:
          type: object
          properties:
            visitor:
              type: object
              properties:
                sid:
                  type: string
              required:
                - sid
              description: >-
                The browser behind the visit, the WebsiteVisitorDomain verbatim
                (bound person, identified email, sessions_count, the latest
                attributes; // see ./website_visitors.md).
            person:
              type: object
              properties:
                sid:
                  type: string
              required:
                - sid
              description: >-
                The person a rung named: { sid } today (cr_pp_...), the compact
                card is owed. Absent while person_sid is null.
            company:
              type: object
              properties:
                sid:
                  type: string
              required:
                - sid
              description: >-
                The company a company code or the network named when nobody else
                did: { sid } today (cr_co_...). Absent while company_sid is
                null.
        includes:
          type: array
          items:
            type: string
        meta:
          type: object
          properties:
            trace_id:
              type: string
              description: UUID v7; same 128-bit value as the X-Trace-Id header.
            span_id:
              type: string
              pattern: ^[0-9a-f]{16}$
              description: 16 hex chars, root span of this request.
            timestamp:
              type: string
              description: ISO 8601 UTC (Y-m-dTH:i:sZ), response time.
            duration_ms:
              type: integer
              minimum: 0
              description: Server-side wall clock.
            team_sid:
              type: string
              nullable: true
              description: >-
                The team this call ran in (the token team, or the team_sid
                override). Null when unauthenticated; absent from pre-2026-08-20
                backends.
            actor_type:
              type: string
              nullable: true
              description: >-
                user | agent | api_key | system. Null when unauthenticated;
                absent from pre-2026-08-20 backends.
          required:
            - trace_id
            - span_id
            - timestamp
            - duration_ms
      required:
        - success
        - operation
        - item
        - included
        - includes
        - meta
    McpError:
      type: object
      properties:
        success:
          type: boolean
          enum:
            - false
        error:
          type: object
          properties:
            code:
              type: string
              enum:
                - validation_failed
                - nothing_to_update
                - not_found
                - relation_not_found
                - invalid_transition
                - limit_exceeded
                - payment_required
                - duplicate_rejected
                - conflict
                - delete_blocked
                - unauthorized
                - forbidden
                - rate_limited
                - internal_error
                - service_unavailable
                - not_implemented
            message:
              type: string
            recoverable:
              type: boolean
            suggestion:
              type: string
            field_errors:
              type: object
              additionalProperties:
                type: array
                items:
                  type: object
                  properties:
                    rule:
                      type: string
                    message:
                      type: string
                  required:
                    - rule
                    - message
            blockers:
              type: array
              items:
                type: object
                properties:
                  type:
                    type: string
                    description: >-
                      Machine-readable blocker type (active_flow, pending_tasks,
                      …).
                  severity:
                    type: string
                    enum:
                      - hard
                      - soft
                    description: >-
                      hard = external action required; soft = acknowledge is
                      enough.
                  description:
                    type: string
                  entity_sid:
                    type: string
                    nullable: true
                  count:
                    type: integer
                  resolution:
                    type: string
                    description: 'Hard: tool name to call. Soft: code for acknowledge[].'
                  resolution_hint:
                    type: string
                required:
                  - type
                  - severity
                  - description
                  - entity_sid
                  - resolution
                  - resolution_hint
            context:
              type: object
              additionalProperties: {}
          required:
            - code
            - message
            - recoverable
        meta:
          type: object
          properties:
            trace_id:
              type: string
              description: UUID v7; same 128-bit value as the X-Trace-Id header.
            span_id:
              type: string
              pattern: ^[0-9a-f]{16}$
              description: 16 hex chars, root span of this request.
            timestamp:
              type: string
              description: ISO 8601 UTC (Y-m-dTH:i:sZ), response time.
            duration_ms:
              type: integer
              minimum: 0
              description: Server-side wall clock.
            team_sid:
              type: string
              nullable: true
              description: >-
                The team this call ran in (the token team, or the team_sid
                override). Null when unauthenticated; absent from pre-2026-08-20
                backends.
            actor_type:
              type: string
              nullable: true
              description: >-
                user | agent | api_key | system. Null when unauthenticated;
                absent from pre-2026-08-20 backends.
          required:
            - trace_id
            - span_id
            - timestamp
            - duration_ms
      required:
        - success
        - error
  responses:
    McpClientError:
      description: >-
        MCP error envelope. `error.code` is one of validation_failed,
        nothing_to_update, not_found, relation_not_found, invalid_transition,
        limit_exceeded, payment_required, duplicate_rejected, conflict,
        delete_blocked, unauthorized, forbidden, rate_limited, not_implemented.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/McpError'
    McpServerError:
      description: >-
        MCP error envelope with `error.code` internal_error or
        service_unavailable.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/McpError'
  securitySchemes:
    BearerJwt:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: >-
        Access token issued by gs.service.id. Its `access_identity` claim
        carries `team_sid`, `actor_sid` and `actor_type`, and that team scope is
        authoritative.
    TeamSid:
      type: apiKey
      in: header
      name: Team-SID
      description: >-
        Team scope for tokens that do not carry one. Ignored when the token
        already names a team.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.