> ## 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 site

> One site with its settings, its last check and, in included.loader, the two script tags to paste into its pages: hand the loader to the user after create_website_site, then verify_website_site.

Contract:
- MCP tool `get_website_site`, registry package `mcp.signals/website_sites`, mount `signals.website`.
- Operation `get`, response envelope `get`.
- Flags: read only.



## OpenAPI

````yaml /api-reference/signals/openapi.yaml get /api/website-sites/{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-sites/{sid}:
    get:
      tags:
        - website_sites
      summary: Get website site
      description: >-
        One site with its settings, its last check and, in included.loader, the
        two script tags to paste into its pages: hand the loader to the user
        after create_website_site, then verify_website_site.


        Contract:

        - MCP tool `get_website_site`, registry package
        `mcp.signals/website_sites`, mount `signals.website`.

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

        - Flags: read only.
      operationId: get_website_site
      parameters:
        - name: sid
          in: path
          required: true
          description: Website site sid (sg_si_...).
          schema:
            type: string
            minLength: 18
            maxLength: 18
            pattern: ^sg_si_
            description: Website site sid (sg_si_...).
      responses:
        '200':
          description: '`get` success envelope.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetWebsiteSiteResponse'
        4XX:
          $ref: '#/components/responses/McpClientError'
        5XX:
          $ref: '#/components/responses/McpServerError'
components:
  schemas:
    GetWebsiteSiteResponse:
      type: object
      properties:
        success:
          type: boolean
          enum:
            - true
        operation:
          type: string
          enum:
            - get
        item:
          type: object
          properties:
            sid:
              type: string
              description: Website site sid (sg_si_...).
            team_sid:
              type: string
              description: 'Owning team (ts_tm_..., external: gs.service.id).'
            domain:
              type: string
              description: >-
                The host as the team typed it, reduced to a bare hostname:
                lowercased, no scheme, port or path, a leading www. dropped.
                Immutable: a different host is a different site.
            include_subdomains:
              type: boolean
              description: Hosts under domain belong to the site (default true).
            site_key:
              type: string
              description: >-
                The public 20-character key the loader carries (gs.k). It names
                the site to the collector; not a secret. Changes only through
                rotate_website_site_key.
            status:
              type: string
              enum:
                - pending
                - verified
                - broken
                - disabled
              description: >-
                pending = waiting for the script (links to it are not coded
                yet); verified = receiving; broken = the health rule flagged it
                (see broken_reason); disabled = switched off by update enabled
                false.
            verified_at:
              type: string
              nullable: true
              description: ISO 8601 UTC, the last transition into verified; null never.
            last_check_at:
              type: string
              nullable: true
              description: >-
                ISO 8601 UTC, the last active check (verify_website_site or the
                daily job); null never.
            last_check_result:
              type: object
              nullable: true
              properties:
                outcome:
                  type: string
                  enum:
                    - found
                    - site_key_mismatch
                    - loader_missing
                    - fetch_failed
                  description: >-
                    The best outcome over pages: found wins over
                    site_key_mismatch, over loader_missing, over fetch_failed.
                pages:
                  type: array
                  items:
                    type: object
                    properties:
                      url:
                        type: string
                        description: The URL requested last for this page.
                      key_page_sid:
                        type: string
                        nullable: true
                        description: >-
                          sg_kp_... the key page this row checked; null for the
                          home page.
                      outcome:
                        type: string
                        enum:
                          - found
                          - site_key_mismatch
                          - loader_missing
                          - fetch_failed
                        description: >-
                          found: the page carries this site's key.
                          site_key_mismatch: a loader with another key.
                          loader_missing: no loader in the page source (a tag
                          manager installs it outside the source, so such a site
                          is verified by its first hit instead). fetch_failed:
                          no page to read, see failure.
                      http_status:
                        type: integer
                        nullable: true
                        description: The final HTTP status; null when no answer arrived.
                      failure:
                        type: string
                        nullable: true
                        enum:
                          - invalid_url
                          - scheme_not_allowed
                          - credentials_in_url
                          - port_not_allowed
                          - ip_literal
                          - host_unresolvable
                          - private_address
                          - redirect_without_location
                          - too_many_redirects
                          - redirected_off_site
                          - connection_failed
                          - http_status
                        description: >-
                          Why the fetch failed, when outcome is fetch_failed:
                          the guard refused the URL (scheme, port, credentials,
                          an IP literal, a private address), the host did not
                          resolve, the redirects ran out or left the site, the
                          connection failed, or the status was outside 2xx. Null
                          otherwise.
                    required:
                      - url
                      - key_page_sid
                      - outcome
                      - http_status
                      - failure
                  description: >-
                    The home page first, then the checkable key pages (a pattern
                    that names one URL).
              required:
                - outcome
                - pages
              description: >-
                What the last active check found, page by page; null while no
                check ran, and cleared by a key rotation.
            broken_reason:
              type: string
              nullable: true
              enum:
                - loader_missing
                - fetch_failed
                - site_key_mismatch
                - no_hits
              description: >-
                Set while broken: loader_missing (the source lost the loader and
                the hits stopped), fetch_failed (two checks in a row could not
                read the site while it was silent), site_key_mismatch (another
                key in the loader), no_hits (a tag-manager install whose hits
                stopped). Null otherwise.
            last_hit_at:
              type: string
              nullable: true
              description: >-
                ISO 8601 UTC, the newest hit the collector reported; null while
                nothing was received.
            hits_count_24h:
              type: integer
              minimum: 0
              description: >-
                Hits in the current UTC hour and the 23 before it, refreshed on
                every hit batch and every check (a rolling window, not "today").
            identification:
              type: string
              enum:
                - companies
                - people
              description: >-
                What a visit to the site may name. companies (default): links
                carry the recipient's company code and a visit shows the
                company, never a person. people: visits from the people the team
                writes to are shown by name.
            identification_confirmation:
              type: object
              nullable: true
              properties:
                identification:
                  type: string
                  enum:
                    - companies
                    - people
                  description: >-
                    The level confirmed: people covers both levels, companies
                    only itself.
                confirmed_at:
                  type: string
                  description: ISO 8601 UTC.
                confirmed_by:
                  type: object
                  properties:
                    actor_type:
                      type: string
                      enum:
                        - user
                        - support
                        - api_key
                        - system
                        - agent
                    actor_sid:
                      type: string
                      nullable: true
                    team_sid:
                      type: string
                    actor_name:
                      type: string
                      nullable: true
                      description: >-
                        The OAuth client that acted ("Claude", "n8n"); null for
                        a user, an API key or a system job.
                    oauth_client_sid:
                      type: string
                      nullable: true
                      description: >-
                        The acting OAuth client (id_oc_*); null off the OAuth
                        path.
                    reason:
                      type: string
                      nullable: true
                      description: >-
                        Why a system actor wrote the row (snapshot_capture_job,
                        ...); null otherwise.
                    permissions:
                      type: object
                      additionalProperties: {}
                      description: >-
                        Internal audit context: the grant set the actor held at
                        write time. Not a contract.
                    cluster_id:
                      type: integer
                      nullable: true
                      description: >-
                        Internal audit context: the cluster that served the
                        write.
                    trace_id:
                      type: string
                      nullable: true
                      description: >-
                        Internal audit context: the trace id of the request that
                        wrote the row.
                  required:
                    - actor_type
                    - actor_sid
                    - team_sid
                    - permissions
                  description: Who confirmed.
              required:
                - identification
                - confirmed_at
                - confirmed_by
              description: >-
                The customer's latest confirmation of its duties for a level, by
                whom and when. Links are coded only while it covers the site's
                level; null = none yet.
            link_codes_enabled:
              type: boolean
              description: >-
                Links to this site get a code (the company's or the person's, by
                identification) when the site is verified,
                identification_confirmation covers its level and the team switch
                (signal_settings.website_link_codes) is on. Default true.
            carrier_linkedin:
              type: string
              enum:
                - fragment
                - query
              description: >-
                Where the code rides in a link sent on LinkedIn: fragment
                (#g_<code>, default) or query (?gs=<code>).
            carrier_email:
              type: string
              enum:
                - fragment
                - query
              description: >-
                Where the code rides in a link sent by email: query (default) or
                fragment.
            consent_mode:
              type: string
              enum:
                - not_required
                - required
              description: >-
                not_required (default): the first-party visitor id is stored on
                the first hit. required: nothing is stored until the site's
                banner calls gs('consent', true); until then a visit is
                attributed by the code in the link alone.
            fingerprint_mode:
              type: string
              enum:
                - 'on'
                - consent
                - 'off'
              description: >-
                on (default): the device fingerprint is collected (answered as
                consent when consent_mode is required); consent: only after
                consent; off: never.
            anonymize_ip:
              type: boolean
              description: >-
                Once a session's network is resolved, keep the address's network
                part only (the last octet, or the last 80 bits of IPv6, zeroed).
                Default false.
            ignored_ips:
              type: array
              items:
                type: string
              description: >-
                IPv4 or IPv6 addresses or CIDR ranges whose visits are internal
                (the office, the VPN egress): shown under their own filter,
                never a fact, never a signal. At most 50.
            live_alerts:
              type: string
              enum:
                - 'off'
                - key_pages
                - all_known
              description: >-
                When a known person on the site alerts the team now: off,
                key_pages (default: a key page reached), all_known (any visit).
            live_alert_tasks:
              type: boolean
              description: >-
                A live alert also opens a task, due now, on each of the person's
                open threads. false: only the notice goes. Default true.
            live_alert_task_minutes:
              type: integer
              nullable: true
              description: >-
                How long that task lives: still open after this many minutes,
                the sweep cancels it and it reads as expired. 5 to 43200 (30
                days); null = it never expires. Default 30.
            inbound_playtable_sid:
              type: string
              nullable: true
              description: >-
                pt_tb_... the table an identified visitor nobody has would be
                handed to; stored only today, nothing reads it yet.
            created_by:
              type: object
              properties:
                actor_type:
                  type: string
                  enum:
                    - user
                    - support
                    - api_key
                    - system
                    - agent
                actor_sid:
                  type: string
                  nullable: true
                team_sid:
                  type: string
                actor_name:
                  type: string
                  nullable: true
                  description: >-
                    The OAuth client that acted ("Claude", "n8n"); null for a
                    user, an API key or a system job.
                oauth_client_sid:
                  type: string
                  nullable: true
                  description: The acting OAuth client (id_oc_*); null off the OAuth path.
                reason:
                  type: string
                  nullable: true
                  description: >-
                    Why a system actor wrote the row (snapshot_capture_job,
                    ...); null otherwise.
                permissions:
                  type: object
                  additionalProperties: {}
                  description: >-
                    Internal audit context: the grant set the actor held at
                    write time. Not a contract.
                cluster_id:
                  type: integer
                  nullable: true
                  description: 'Internal audit context: the cluster that served the write.'
                trace_id:
                  type: string
                  nullable: true
                  description: >-
                    Internal audit context: the trace id of the request that
                    wrote the row.
              required:
                - actor_type
                - actor_sid
                - team_sid
                - permissions
              description: Actor that registered the site.
            created_at:
              type: string
              description: ISO 8601 UTC.
            updated_at:
              type: string
              description: ISO 8601 UTC.
            deleted_at:
              type: string
              nullable: true
              description: >-
                ISO 8601 UTC; null = live. A deleted site keeps its sessions and
                visitors.
          required:
            - sid
            - team_sid
            - domain
            - include_subdomains
            - site_key
            - status
            - verified_at
            - last_check_at
            - last_check_result
            - broken_reason
            - last_hit_at
            - hits_count_24h
            - identification
            - identification_confirmation
            - link_codes_enabled
            - carrier_linkedin
            - carrier_email
            - consent_mode
            - fingerprint_mode
            - anonymize_ip
            - ignored_ips
            - live_alerts
            - live_alert_tasks
            - live_alert_task_minutes
            - inbound_playtable_sid
            - created_by
            - created_at
            - updated_at
            - deleted_at
        included:
          type: object
          properties:
            loader:
              type: object
              properties:
                html:
                  type: string
                  description: >-
                    The two script tags to paste into every page of the site,
                    before </body>: the inline part with this site's key (it
                    captures the fragment and the query before a router rewrites
                    the address), then the async collector script.
                script_url:
                  type: string
                  description: The collector script's URL, as the second tag loads it.
              required:
                - html
                - script_url
              description: >-
                The loader of this site, always present on get: what the user
                pastes into the pages.
        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.