> ## Documentation Index
> Fetch the complete documentation index at: https://docs.nautilus.co/llms.txt
> Use this file to discover all available pages before exploring further.

# Export members

> Export per-membership rows for signup-date and churn analysis. Requires a tenant-scoped API key and is available only for eligible organizations.

Exports membership rows for signup-date and churn analysis.

<Note>This endpoint requires a tenant-scoped API key and is available only for eligible organizations.</Note>

<RequestExample>
  ```bash Active members signed up in January theme={null}
  curl "https://app.nautilus.co/api/v1/members?status=active&signupStart=2026-01-01&signupEnd=2026-01-31&limit=100" \
    -H "Authorization: Bearer YOUR_API_KEY"
  ```

  ```bash Page through all members theme={null}
  curl "https://app.nautilus.co/api/v1/members?limit=1000&offset=1000" \
    -H "Authorization: Bearer YOUR_API_KEY"
  ```

  ```bash Churned members with site fields theme={null}
  curl "https://app.nautilus.co/api/v1/members?status=churned&signupStart=2025-10-01" \
    -H "Authorization: Bearer YOUR_API_KEY"
  ```
</RequestExample>

## Response

The response includes the applied filters, offset pagination, and one row per membership.

```json theme={null}
{
  "organizationId": "org_example_123",
  "filters": {
    "status": "active",
    "signupStart": "2026-01-01T00:00:00.000Z",
    "signupEnd": "2026-01-31T23:59:59.999Z"
  },
  "pagination": {
    "limit": 100,
    "offset": 0,
    "total": 842,
    "hasMore": true,
    "nextOffset": 100
  },
  "members": [
    {
      "membershipId": "membership_example_001",
      "customerId": "customer_example_001",
      "signupDate": "2026-01-03T15:22:10.000Z",
      "status": "Active",
      "churnType": "active",
      "cancelDate": null,
      "tenureDays": 181.4,
      "planName": "Unlimited Plus",
      "billingAmount": 39.99,
      "billingSiteCode": "101",
      "billingSiteName": "North Site",
      "creationSiteCode": "101",
      "creationSiteName": "North Site",
      "isOnTrial": false,
      "trialAmount": 0,
      "tags": []
    }
  ]
}
```

## Fields

`members[].signupDate` is the authoritative recurring-account signup timestamp when available.

`members[].churnType` is `active`, `voluntary`, or `involuntary`. A `Cancelled` status is voluntary. Other terminal statuses are involuntary.

`members[].billingSiteCode` and `members[].billingSiteName` describe the current billing site when Nautilus can resolve it.

`members[].tags` contains raw POS tag JSON, usually vehicle or RFID tag records. It is not normalized campaign attribution.

## Dates and pagination

`signupStart` and `signupEnd` accept date-only values or explicit timestamps. Date-only lower bounds start at `00:00:00.000Z`; date-only upper bounds include the full UTC day.

Rows are ordered by `signupDate` ascending, with null signup dates last, then `membershipId` ascending. Use `limit` and `offset` to page through large exports. `limit` defaults to `500` and is capped at `1000`.

## Errors

* **400** - Member export is not available for this organization.
* **401** - Missing, invalid, or non-tenant-scoped API key.
* **500** - Internal server error.


## OpenAPI

````yaml GET /api/v1/members
openapi: 3.1.0
info:
  title: Nautilus Public API
  version: 1.0.0
  description: >-
    Tenant-scoped public API. Except for /api/v1/openapi.json, requests use a
    Clerk tenant API key as a Bearer token. The key's organizationId is the sole
    tenant scope; organization IDs supplied by callers are never accepted.
    Detail endpoints deliberately return 404 for both missing and cross-tenant
    records. Canonical collections use the standard envelope and endpoint-bound
    cursor pagination. Timestamps are UTC ISO 8601 values and monetary amounts
    ending in Cents are integer cents. Responses use narrow serializers and
    exclude credentials, API keys, provider configuration, access tokens,
    webhook secrets, raw provider payloads, and internal workflow or activity
    data.
servers:
  - url: https://app.nautilus.co
security:
  - tenantApiKey: []
tags:
  - name: Contract
  - name: Cancellations
  - name: Sites
  - name: Products
  - name: Checkout links
  - name: Purchases
  - name: Contact lists
  - name: Contacts
  - name: Marketing
  - name: Forms
  - name: Vouchers
  - name: Links
  - name: Automations
  - name: Surveys
  - name: Cases
  - name: Sonny's POS
  - name: Analytics
  - name: Messaging
  - name: Legacy
    description: Deprecated noncanonical endpoints retained for compatibility.
paths:
  /api/v1/members:
    get:
      tags:
        - Analytics
        - Legacy
      summary: Export members
      description: >-
        Export per-membership rows for signup-date and churn analysis. Requires
        a tenant-scoped API key and is available only for eligible
        organizations.
      operationId: listMembers
      parameters:
        - name: status
          in: query
          required: false
          schema:
            type: string
            enum:
              - all
              - active
              - churned
            default: all
          description: Filter by current churn status. Invalid values are treated as `all`.
        - name: signupStart
          in: query
          required: false
          schema:
            type: string
          description: >-
            Inclusive lower bound on membership signup date. Date-only values
            start at `00:00:00.000Z`.
        - name: signupEnd
          in: query
          required: false
          schema:
            type: string
          description: >-
            Inclusive upper bound on membership signup date. Date-only values
            include the full UTC day.
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            minimum: 1
            maximum: 1000
            default: 500
          description: Page size. Defaults to `500` and is capped at `1000`.
        - name: offset
          in: query
          required: false
          schema:
            type: integer
            minimum: 0
            default: 0
          description: Offset for pagination. Invalid negative values use `0`.
      responses:
        '200':
          description: Member export response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MembersResponse'
        '400':
          description: Member export is not available for this organization
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error: Member export is not available for this organization
        '401':
          description: Missing, invalid, or non-tenant-scoped API key
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      deprecated: true
components:
  schemas:
    MembersResponse:
      type: object
      required:
        - organizationId
        - filters
        - pagination
        - members
      properties:
        organizationId:
          type: string
        filters:
          type: object
          required:
            - status
            - signupStart
            - signupEnd
          properties:
            status:
              type: string
              enum:
                - all
                - active
                - churned
            signupStart:
              type:
                - string
                - 'null'
              format: date-time
            signupEnd:
              type:
                - string
                - 'null'
              format: date-time
        pagination:
          type: object
          required:
            - limit
            - offset
            - total
            - hasMore
            - nextOffset
          properties:
            limit:
              type: integer
            offset:
              type: integer
            total:
              type: integer
            hasMore:
              type: boolean
            nextOffset:
              type:
                - integer
                - 'null'
        members:
          type: array
          items:
            $ref: '#/components/schemas/Member'
    Error:
      type: object
      additionalProperties: false
      properties:
        error:
          type: string
      required:
        - error
    Member:
      type: object
      required:
        - membershipId
        - customerId
        - signupDate
        - status
        - churnType
        - cancelDate
        - tenureDays
        - planName
        - billingAmount
        - billingSiteCode
        - billingSiteName
        - creationSiteCode
        - creationSiteName
        - isOnTrial
        - trialAmount
        - tags
      properties:
        membershipId:
          type: string
        customerId:
          type:
            - string
            - 'null'
        signupDate:
          type:
            - string
            - 'null'
          format: date-time
        status:
          type:
            - string
            - 'null'
        churnType:
          type: string
          enum:
            - active
            - voluntary
            - involuntary
        cancelDate:
          type:
            - string
            - 'null'
          format: date-time
        tenureDays:
          type:
            - number
            - 'null'
        planName:
          type:
            - string
            - 'null'
        billingAmount:
          type:
            - number
            - 'null'
        billingSiteCode:
          type:
            - string
            - 'null'
        billingSiteName:
          type:
            - string
            - 'null'
        creationSiteCode:
          type:
            - string
            - 'null'
        creationSiteName:
          type:
            - string
            - 'null'
        isOnTrial:
          type:
            - boolean
            - 'null'
        trialAmount:
          type:
            - number
            - 'null'
        tags:
          description: Raw POS tag JSON, usually vehicle or RFID tag records.
  securitySchemes:
    tenantApiKey:
      type: http
      scheme: bearer
      bearerFormat: Clerk tenant API key
      description: >-
        Clerk tenant API key. The organizationId encoded by the key is the exact
        and only tenant scope.

````