---
title: "List promoters with cursor-based pagination"
method: GET
path: "/promoters"
tags: ["Promoters"]
---

# List promoters with cursor-based pagination

`GET /promoters`

Returns promoters with cursor pagination. Filter by teamId to see promoters for a specific team.

## Query parameters

- `teamId` string — Filter promoters to only those belonging to a specific team
- `approval` 'PENDING' | 'APPROVED' | 'REJECTED' — Filter promoters by approval status. PENDING: awaiting review, APPROVED: can create events, REJECTED: cannot operate
- `query` string — Optional search query. When provided, results are fetched from search with unified cursor pagination.
- `latitude` number — Latitude used with longitude and radius to filter promoters by proximity when searching.
- `longitude` number — Longitude used with latitude and radius to filter promoters by proximity when searching.
- `radius` number — Search radius in kilometers applied when latitude and longitude are provided.
- `mine` boolean — When true, limits results to promoters from teams the current user belongs to. When combined with teamId, returns only that team's promoters (bypassing tenant-wide admin scope).
- `sort` 'createdAt' — Optional list sort field. Use `createdAt` to return newest or oldest promoters first.
- `direction` 'asc' | 'desc' — Sort direction for promoter lists. Defaults to `desc` when omitted.
- `limit` number — Maximum number of promoters to return (1-100, defaults to 20)
- `cursor` string — Opaque cursor for pagination. Use the cursor from the previous response to continue fetching results.

## Response `200`

OK

- object
  - `promoters` Promoter[], required — Array of promoters for the current result set
    - `id` string, required — Unique identifier for the promoter organization
    - `createdAt` string, date-time, required — Timestamp in ISO 8601 format when the promoter was created
    - `updatedAt` string, date-time, required — Timestamp in ISO 8601 format when the promoter was last updated
    - `name` string, required — Display name of the promoter organization. Must be between 3 and 30 characters
    - `slug` string, required — URL-friendly slug for the promoter organization. Must be unique and between 3 and 30 characters
    - `teamId` string, required — ID of the team that owns this promoter. Establishes team-based organization and permissions.
    - `description` string, required — Detailed description of the promoter organization and their events
    - `approval` 'PENDING' | 'APPROVED' | 'REJECTED', required — Approval status of the promoter. PENDING: awaiting review, APPROVED: can create events, REJECTED: cannot operate
    - `image` object — Optional promotional image for the promoter organization with dimensions and alt text
      - `src` string, uri, required
      - `alt` string, required
      - `width` number, required
      - `height` number, required
    - `location` object, required — Primary location details for the promoter including address, coordinates, and timezone
      - `id` string, required — Location identifier
      - `googlePlaceId` string — Google Place ID for this location
      - `createdAt` string, date-time, required — Timestamp in ISO 8601 format when the location was created
      - `updatedAt` string, date-time, required — Timestamp in ISO 8601 format when the location was last updated
      - `name` string, required — Location name
      - `address` string, required — Formatted address
      - `city` string — City name
      - `state` string — State or region
      - `postcode` string — Postal code
      - `country` string, required — Country name
      - `latitude` number, required — Latitude coordinate
      - `longitude` number, required — Longitude coordinate
      - `timeZone` string, required — IANA timezone identifier (e.g., 'America/New_York', 'Europe/London', 'Australia/Sydney', 'UTC'). Must be validated against the IANA timezone database where used.
      - `types` string[] — Google Place types indicating the category and nature of this location
      - `description` string — AI-generated description of the place, when available
      - `image` object — Primary location photo
        - `src` string, uri, required
        - `alt` string, required
        - `width` number, required
        - `height` number, required
      - `venue` object — Denormalized venue details if this location is a managed venue. Only included when venue is approved.
        - `id` string, required — Venue identifier
        - `name` string, required — Venue name
        - `slug` string, required — URL-friendly venue slug
        - `teamId` string, required — Team that owns this venue
        - `approval` 'PENDING' | 'APPROVED' | 'REJECTED', required — Venue approval status
        - `image` object — Venue image
          - `src` string, uri, required
          - `alt` string, required
          - `width` number, required
          - `height` number, required
        - `description` string — Venue description
    - `geohash` string, required — Geohash encoding of the promoter's location for efficient spatial queries
    - `tracking` object — Optional tracking configuration for analytics and advertising platforms
      - `fbId` string — Facebook pixel ID for tracking conversions and analytics
      - `gaId` string — Google Analytics 4 Measurement ID for web analytics
      - `tikTokId` string — TikTok pixel ID for advertising and conversion tracking
    - `metadata` object — Flexible key-value metadata storage for custom configuration. Similar to Stripe's metadata API. Maximum 50 keys, key names up to 40 characters, values up to 500 characters.
  - `before` string, nullable — Cursor for navigating backward in the result set. Omitted when there are no prior results.
  - `after` string, nullable — Cursor for navigating forward in the result set. Omitted when there are no subsequent results.
  - `limit` number, required — Maximum number of items to return in each result set

## Other responses

- `400` — 400
- `401` — 401
- `403` — 403
- `404` — 404
- `409` — 409
- `412` — 412
- `422` — 422
- `429` — 429
- `500` — 500
- `501` — 501
- `503` — 503

---

[API](https://skmtc.net/session/apis/session-services-api.md) · [All operations](https://skmtc.net/session/apis/session-services-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/session/session-services-api/versions/a1bb6f6c8a2e/schema)
