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

# List venues with cursor-based pagination

`GET /venues`

Returns venues with cursor pagination. Supports filtering by team, location-based search, and text query

## Query parameters

- `teamId` string — Filter venues by owner team ID
- `approval` 'PENDING' | 'APPROVED' | 'REJECTED' — Filter venues by approval status. PENDING: awaiting review, APPROVED: can be used for events, REJECTED: cannot be used
- `query` string — Optional search query for filtering venues by name or slug
- `latitude` number — Latitude for location-based search. Must be used with longitude
- `longitude` number — Longitude for location-based search. Must be used with latitude
- `radius` number — Search radius in kilometers (1-20000). Requires latitude and longitude
- `sort` 'createdAt' — Optional list sort field. Use `createdAt` to return newest or oldest venues first.
- `direction` 'asc' | 'desc' — Sort direction for venue lists. Defaults to `desc` when `sort` is provided.
- `limit` integer — Maximum number of venues to return per request (1-100, default: 20)
- `cursor` string — Pagination cursor from previous response. Used to fetch next page of results

## Response `200`

OK

- object — Paginated response containing venues with cursor for next page
  - `venues` Venue[], required — Array of venues for the current result set
    - `id` string, required — Unique identifier for the venue
    - `createdAt` string, date-time, required — Timestamp in ISO 8601 format when the venue was created
    - `updatedAt` string, date-time, required — Timestamp in ISO 8601 format when the venue was last updated
    - `teamId` string, required — Team that manages this venue
    - `locationId` string, required — Location identifier for this venue
    - `googlePlaceId` string — Google Place ID when this venue is linked to a Google Places location
    - `approval` 'PENDING' | 'APPROVED' | 'REJECTED', required — Approval status of the venue
    - `name` string, required — Display name of the venue. Must be between 3 and 100 characters
    - `slug` string, required — URL-friendly slug for the venue. Must be unique within tenant
    - `description` string — Short description of the venue for listings and discovery
    - `image` object — Venue image
      - `src` string, uri, required
      - `alt` string, required
      - `width` number, required
      - `height` number, required
    - `contact` object — Public contact information and social media links
      - `email` string, email — Public contact email for venue inquiries
      - `phone` string — Public contact phone number
      - `website` string, uri — Venue website URL
      - `instagram` string — Instagram profile URL
      - `facebook` string — Facebook page URL
      - `twitter` string — Twitter/X profile URL
      - `tiktok` string — TikTok profile URL
      - `youtube` string — YouTube channel URL
    - `location` object, required — Physical location details 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
    - `geohash` string, required — Geohash encoding of the venue's location for efficient spatial queries
    - `capacity` integer — Maximum capacity of the venue (number of attendees)
    - `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.
    - `deletedAt` string, date-time — Timestamp in ISO 8601 format when the venue was soft-deleted. Null if not deleted
    - `tenantId` string, required — Tenant ID for multi-tenant isolation
  - `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)
