Plans

List a project's plans

Pages the project's plans, every kind together, newest first. Read kind on each row to know which of billing, pass or pass_series it carries; resources is loaded on every row. pass.upcoming_windows is not served here: the pass windows endpoints list a plan's dates.

get/v1/projects/{project}/plans

Request

  • Base URL: https://api.subscriby.net
  • URL: https://api.subscriby.net/v1/projects/{project}/plans
  • Auth: HTTP bearer

Path parameters

projectstring uuid required

The project, resolved by the route binder.

Query parameters

pageinteger

The 1-based page to return. A page past the last answers an empty data array with meta.total still filled, so a loop can stop without guessing.

per_pageinteger

Rows per page, 1 to 100. A higher value clamps to the cap silently. Defaults to 25.

sort_bystring

The column to order by. Defaults to created_at; a column the endpoint does not offer falls back to the default rather than failing.

sort_direction'asc' | 'desc'

asc or desc. Defaults to desc.

Response

The page, newest first.

Example response

{
  "data": [
    {
      "id": "c4e82f16-93a7-4d5b-b81c-6e0f27a94d3b",
      "project_id": "7f3d1c92-8b45-4e6a-9d21-5c8e0a4b6f13",
      "kind": "subscription",
      "name": "Premium Monthly",
      "description": "Unlimited access to the research channel.",
      "price": "29.00",
      "currency": {
        "id": "8f27a0d4-63be-4915-8c07-1a5d9e34b628",
        "iso": "USD",
        "symbol": "$"
      },
      "active": true,
      "sales_cap": 10,
      "sales_cap_sold": 3,
      "cadence": "Per Month",
      "resources": [
        {
          "id": "b73c5f21-9d80-4a6e-8215-4f70ce13a9d6",
          "name": "Research channel",
          "kind": "telegram:supergroup",
          "connector": "telegram"
        }
      ],
      "billing": {
        "billing_cycle": "month",
        "billing_cycle_count": 1,
        "recurring": true,
        "trial_days": 7,
        "trial_type": "plan"
      },
      "pass": {
        "timezone": "America/New_York",
        "schedule_mode": "repeating",
        "recurrence": "weekly",
        "sales_cutoff_minutes": 60,
        "sales_cutoff_anchor": "before_start",
        "slots": [
          {
            "start_time": "09:00",
            "duration_minutes": 840
          }
        ],
        "upcoming_windows": [
          {
            "id": "3d5a8c72-b016-4e94-8fa7-61c209d4e738",
            "starts_at": "2026-09-20T13:00:00Z",
            "ends_at": "2026-09-21T03:00:00Z",
            "status": "scheduled"
          }
        ]
      },
      "pass_series": {
        "timezone": "America/New_York",
        "prevent_overlaps": true,
        "sales_cutoff_anchor": "before_start",
        "seat_cap": 50,
        "seats_taken": 37,
        "seats_remaining": 13,
        "starts_at": "2026-09-20T13:00:00Z",
        "ends_at": "2026-11-29T22:00:00Z",
        "window_count": 10,
        "presale_hours": 48,
        "windows": [
          {
            "id": "3d5a8c72-b016-4e94-8fa7-61c209d4e738",
            "plan_id": "0b8e6a2f-4c1d-4e3a-9f52-7d6c1b2a3e45",
            "plan_name": "Match Day Pass",
            "starts_at": "2026-09-20T13:00:00Z",
            "ends_at": "2026-09-20T16:00:00Z",
            "status": "scheduled"
          }
        ],
        "rules": [
          {
            "source_plan_id": "0b8e6a2f-4c1d-4e3a-9f52-7d6c1b2a3e45",
            "kind": "date_range",
            "from_at": "2026-09-01T00:00:00Z",
            "to_at": "2026-12-01T00:00:00Z"
          }
        ]
      },
      "created_at": "2026-05-18T10:05:00Z",
      "updated_at": "2026-05-18T10:05:00Z"
    }
  ]
}

Changes

No recorded changes to this operation across all 1 revision of this API.