---
title: "Get one visitor’s profile and activity timeline"
method: GET
path: "/visitors/{visitorId}"
tags: ["Visitors"]
---

# Get one visitor’s profile and activity timeline

`GET /visitors/{visitorId}`

## Request

- Base URL: `https://analytics.flowsery.com/analytics/api/v1`
- URL: `https://analytics.flowsery.com/analytics/api/v1/visitors/{visitorId}`
- Auth: HTTP bearer

Geo and device identity, acquisition source, page views, goal completions, revenue and a merged chronological timeline for a single visitor.

## Path parameters

- `visitorId` string, required

## Query parameters

- `websiteId` string
- `domain` string

## Headers

- `X-Workspace-Id` string

## Response `200`

Visitor profile

- VisitorProfileResponse
  - `status` 'success', required
  - `data` VisitorProfile, required
    - `visitorId` string
    - `identity` object
      - `country` string, nullable
      - `countryCode` string, nullable
      - `region` string, nullable
      - `city` string, nullable
      - `browser` object
        - `name` string, nullable
        - `version` string, nullable
      - `os` object
        - `name` string, nullable
        - `version` string, nullable
      - `device` object
        - `type` string, nullable
      - `viewport` object
        - `width` integer, nullable
        - `height` integer, nullable
    - `source` string, nullable: Acquisition source of the first session.
    - `sourceIconUrl` string, nullable
    - `activity` object
      - `visitCount` integer
      - `pageViewCount` integer
      - `firstVisitAt` string, date-time, nullable
      - `lastVisitAt` string, date-time, nullable
      - `currentUrl` string, nullable
      - `visitedPages` object[]
        - `url` string
        - `timestamp` string, date-time
      - `completedCustomGoals` object[]
        - `name` string
        - `timestamp` string, date-time
    - `revenue` object
      - `totalRevenue` number: Net of refunds.
      - `isCustomer` boolean
      - `timeToFirstConversion` number, nullable: Seconds between first visit and first payment.
    - `profile` object, nullable: Present once the visitor has been identified.
      - `userId` string, nullable
      - `name` string, nullable
      - `email` string, nullable
    - `activityTimeline` TimelineEntry[]: Newest first.
      - `type` 'pageview' | 'goal' | 'payment'
      - `timestamp` string, date-time
      - `url` string, nullable
      - `eventName` string, nullable: Goal name, or `refund` on a reversal entry.
      - `amount` number, nullable: Payment amount; negative on a refund.

## Other responses

- `401`: Missing, invalid, expired or revoked API key or access token. `code: token_issuer_lost_access` means the member who created the API key was deactivated or lost access to the workspace: ask a workspace admin for a new key
- `403`: The credentials are valid but cannot be used here. `code: permission_denied`: the workspace role behind the API key or OAuth sign-in lacks `flowsery.write`; `role`, `keyRole` and `issuerRole` say which role fell short. `code: subscription_required`: the organization plan does not include API access. `code: workspace_access_denied`: `X-Workspace-Id` names a workspace the caller cannot reach, or an API key was sent to a workspace other than its own
- `404`: Visitor not found on this website
- `429`: Rate limit exceeded

---

[API](https://skmtc.dev/flowsery/apis/flowsery-analytics-public-api.md) · [All operations](https://skmtc.dev/flowsery/apis/flowsery-analytics-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/flowsery/apis/flowsery-analytics-public-api/revisions/8f23583fdf0e?raw)
