---
title: "List journeys (v5)"
method: GET
path: "/api/v1/experience/journeys-v5"
tags: ["experience"]
---

# List journeys (v5)

`GET /api/v1/experience/journeys-v5`

## Request

- Base URL: `https://point11.ai`
- URL: `https://point11.ai/api/v1/experience/journeys-v5`
- Auth: one of:
  - HTTP bearer
  - OAuth 2 (authorization code, authorization URL `https://auth.point11.ai/oauth2/authorize`, token URL `https://auth.point11.ai/oauth2/token`)

List Experience journeys (one customer's visit to a website or app), newest first, for one campaign or the whole organization, filtered by website, outcome, friction, device, search, and segment. Each journey's recording stages carry the evaluator's tone for each captured screen: progress, friction, uncertain, failed, or none when not assessed, and its recording.thumbnailArtifactId names its small stored preview, sized for a list row, which experience_run_artifacts_download_v3 downloads. Page with nextCursor.

## Query parameters

- `limit` integer: Visit groups per page (1–100; default 20). A group holds one journey per device, so a page reads at most 33 groups; pageSize reports the size read
- `cursor` string: Opaque cursor returned as nextCursor or previousCursor by another page
- `campaignId` string, uuid, nullable
- `destinationFingerprint` string, nullable: One campaign website: an id from experience_campaigns_get_v3's destinations; absent or null is every website
- `search` string
- `outcome` 'all' | 'achieved' | 'not-achieved' | 'unavailable' | 'unscored' | 'limited': achieved and not-achieved are a pass and a fail; unavailable is every settled visit with neither verdict (unscored, could not tell, or limited evidence), of which unscored and limited are the narrower parts
- `friction` boolean
- `device` 'desktop' | 'mobile' | 'ios_safari', nullable

## Headers

- `Point11-Organization` string, uuid

## Response `200`

Success.

- ExperienceJourneysListV5Response
  - `data` object[], required
    - `runId` string, required
    - `inProgress` boolean, required
    - `executionStatus` 'scheduled' | 'waiting' | 'running' | 'completed' | 'failed' | 'cancelled', nullable, required
    - `visitIdentity` object, nullable, required
      - `key` string, required
      - `scenarioId` string, nullable, required
      - `cycleId` string, nullable, required
      - `cycleCreatedAt` string, date-time, nullable, required
      - `repetition` integer, nullable, required
    - `evidenceDisposition` 'sufficient' | 'insufficient' | 'policy_limited' | 'infrastructure_limited' | 'scenario_mismatch', nullable, required
    - `customerId` string, required
    - `customerName` string, required
    - `customerJobTitle` string, nullable, required: The customer's job title as the visit's scenario froze it; null when it named none
    - `destinationName` string, required
    - `destinationFingerprint` string, nullable, required: The website's id (experience_campaigns_get_v3's destinations[].id, which destinationFingerprint filters by); null for a visit no campaign website holds
    - `browserDevice` 'desktop' | 'mobile' | 'ios_safari', required
    - `agent` 'point11' | 'dots' | 'spark' | 'muse' | 'grok_bot', required: The agent that shopped the visit; point11 (Point11's own shopper) for a visit no campaign planned. Another agent's visit of the same customer, website and device is another row (visitIdentity.key ends in :<agent>)
    - `nativeApp` object, nullable, required
      - `platform` 'ios' | 'android', required
      - `buildId` string, uuid, required
      - `sha256` string, required
      - `appId` string, required
      - `versionLabel` string, required
      - `deviceName` string, required
      - `osVersion` string, required
    - `unavailableReason` string, nullable, required
    - `achieved` boolean, nullable, required
    - `qualityStars` number, nullable, required
    - `completedAt` string, date-time, nullable, required
    - `actionCount` integer, required
    - `durationMs` number, nullable, required
    - `frictionSteps` integer[], nullable, required
    - `recording` object, required
      - `thumbnailArtifactId` string, nullable, required: The journey's stored small thumbnail: its first captured screen as a WebP sized for a list row (kind small_thumbnail), downloaded with experience_run_artifacts_download_v3; a journey recorded before small thumbnails existed names its thumbnail (kind thumbnail) until its small one is stored; null until either is stored
      - `durationMs` number, nullable, required
      - `stages` object[], required
        - `stepNumber` integer, required
        - `tone` 'progress' | 'friction' | 'uncertain' | 'failed', nullable, required
        - `label` string, required
  - `nextCursor` string, nullable, required
  - `previousCursor` string, nullable, required
  - `totalCount` integer, required
  - `pageSize` integer, required

## Other responses

- `400`: The input, query, or Idempotency-Key is invalid.
- `401`: The bearer is missing, expired, or not accepted.
- `403`: The credential lacks the operation's scope or role, or the operation needs a different door.
- `404`: The resource or organization does not exist for this caller.
- `405`: This path takes another HTTP method, named in `Allow`.
- `409`: The request conflicts with current state or with prior use of its Idempotency-Key.
- `413`: The request, or the answer it asks for, is too large; narrow it.
- `429`: The credential's rate budget is spent; retry after `Retry-After` seconds.
- `500`: An unexpected server failure; retry later. Only `request_id` identifies it.
- `503`: A dependency is temporarily unavailable; retry after `Retry-After` seconds.
- `default`: Another status a product answers for its own refusal (for example `415` for an unsupported attachment); branch on `code`.

---

[API](https://skmtc.dev/point11/apis/point11-api.md) · [All operations](https://skmtc.dev/point11/apis/point11-api/llms.txt) · [OpenAPI document](https://skmtc.dev/point11/apis/point11-api/revisions/36a84c7aca11?raw)
