---
title: "CRM v2 sample-request rows"
method: GET
path: "/funnel/v2/requests"
tags: ["Analytics"]
---

# CRM v2 sample-request rows

`GET /funnel/v2/requests`

The paginated sample-request pipeline for one shop — the rows behind the Sample Requests board. Each row carries the creator (handle, followers, level, rising-star / fast-growing signals, CRM tags), the product, the request's status and timestamps, and the creator's performance metrics (post rate, PPS score, average views, engagement rate, GMV per sample, videos per sample).

Filter by pipeline tab (`status`), product, creator profile, sourcing automation, tag, date range, free-text `search`, and any of the metric ranges (`min_*` / `max_*`). `show_archived` returns the archived board instead; `show_expiring` narrows to requests about to expire. Response also reports `archivedCount`, `expiringCount` and a `dataFreshness` stamp.

Single-shop only, and only for shops on the CRM v2 pipeline — others get a 404 and should use `/samples`.

## Query parameters

- `page` integer — Page number, 1-based.
- `page_size` integer — Rows per page (max 100).
- `status` string, nullable — Pipeline tab to filter to. One of: toReview, readyToShip, shipped, pendingContent, completed, cancelled.
- `product_ids` string, nullable — Comma-separated product IDs.
- `profile_ids` string, nullable — Comma-separated creator profile IDs.
- `automation_ids` string, nullable — Comma-separated automation IDs that sourced the request.
- `tags` string, nullable — Comma-separated CRM tags.
- `created_from` string, nullable — Earliest request date, YYYY-MM-DD (inclusive).
- `created_to` string, nullable — Latest request date, YYYY-MM-DD (inclusive).
- `search` string, nullable — Free-text search over creator handle / name.
- `sort_by` string — Sort field.
- `sort_direction` string — 'asc' or 'desc'.
- `exclude_rejected` boolean — Drop rejected requests.
- `show_archived` boolean — Return archived requests instead.
- `show_expiring` boolean — Only requests expiring soon.
- `min_post_rate` number, nullable
- `max_post_rate` number, nullable
- `min_pps_score` number, nullable
- `max_pps_score` number, nullable
- `min_avg_views` number, nullable
- `max_avg_views` number, nullable
- `min_engagement_rate` number, nullable
- `max_engagement_rate` number, nullable
- `min_live_gmv` number, nullable
- `max_live_gmv` number, nullable
- `min_shop_gmv` number, nullable
- `max_shop_gmv` number, nullable
- `min_creator_gmv` number, nullable
- `max_creator_gmv` number, nullable
- `min_avg_gmv_video` number, nullable
- `max_avg_gmv_video` number, nullable
- `min_gmv_sample` number, nullable
- `max_gmv_sample` number, nullable
- `min_videos_per_sample` number, nullable
- `max_videos_per_sample` number, nullable

## Response `200`

Successful Response

- ListSampleRequestsResponse
  - `data` SampleRequestRow[], required
    - `creator` CreatorInfo, required
      - `id` string, required
      - `handle` string, required
      - `name` string, nullable
      - `creatorImage` string, nullable
      - `followers` integer, nullable
      - `creatorLevel` string, nullable
      - `fastGrowing` boolean, nullable
      - `isRisingStar` boolean, nullable
      - `returning` boolean, nullable
      - `tags` string[]
    - `products` ProductItemOutput[], required
      - `applyId` string, required
      - `productId` string, required
      - `name` string, nullable
      - `sku` string, nullable
      - `variantName` string, nullable
      - `productImage` string, nullable
      - `status` string, required
      - `qty` integer
      - `isRepeatedRequest` boolean, nullable
      - `isArchived` boolean
      - `expiresInDays` integer, nullable
      - `commissionRate` number, nullable
      - `stock` integer, nullable
      - `sampleAllowanceLeft` integer, nullable
      - `requestedAt` string, nullable
      - `expiresAt` string, nullable
      - `isExpired` boolean
    - `aggregated` AggregatedMetrics, required
      - `unfulfilled` integer, nullable
      - `postRate` number, nullable
      - `avgViews` integer, nullable
      - `ppsScore` number, nullable
      - `liveGmv` number, nullable
      - `engagementRate` number, nullable
      - `shopGmv` number, nullable
      - `creatorGmv` number, nullable
      - `avgGmvPerVideo` number, nullable
      - `gmvPerSample` number, nullable
      - `videosPerSample` integer, nullable
    - `productCount` integer, required
    - `requestDate` string, nullable
    - `expiresInDays` integer, nullable
    - `source` string, nullable
  - `pagination` Pagination, required
    - `page` integer, required
    - `perPage` integer, required
    - `totalItems` integer, required
    - `totalPages` integer, required
  - `archivedCount` ArchivedCount
    - `creators` integer
    - `products` integer
    - `total` integer, required
  - `expiringCount` integer
  - `lastUpdatedAt` string, nullable
  - `dataFreshness` DataFreshness
    - `lastSyncedAt` string, nullable
    - `isStale` boolean
    - `isRefreshing` boolean

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.dev/reacherapp/apis/reacher-data-api.md) · [All operations](https://skmtc.dev/reacherapp/apis/reacher-data-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/reacherapp/reacher-data-api/revisions/d4fe3e380424/schema)
