Skip to main content

List Clubs

List all clubs with filtering, search, and pagination

Authentication

Optional - authenticated users see additional details and membership information

Query Parameters

Search clubs by name, subtitle, code, or terms
ordering
string
Order results by field. Options: featured, alphabetical, random, favorite_count, name
tags
string
Filter by tag names (comma-separated)
badges
string
Filter by badge IDs or labels (comma-separated)
active
boolean
Filter by active status
accepting_members
boolean
Filter clubs accepting new members
application_required
integer
Filter by application type (1=Open, 2=Audition, 3=Tryout, 4=Application, 5=Application+Interview)
size
integer
Filter by club size (1=1-20, 2=21-50, 3=51-100, 4=101+)
recruiting_cycle
integer
Filter by recruiting cycle (1=Unknown, 2=Fall, 3=Spring, 4=Both, 5=Open)
available_virtually
boolean
Filter clubs available virtually
enables_subscription
boolean
Filter clubs that allow subscriptions

Response Fields

code
string
required
Unique club identifier code
name
string
required
Club name
subtitle
string
Short description shown in preview cards
description
string
Full HTML description of the club
active
boolean
Whether the club is currently active
approved
boolean
Club approval status
email
string
Club contact email (may be hidden)
image_url
string
URL to club logo/image
founded
date
Date club was founded
size
integer
Club size category
accepting_members
boolean
Whether club is currently accepting new members
application_required
integer
Application/audition requirement type
recruiting_cycle
integer
When club recruits new members
available_virtually
boolean
Club activities available online
appointment_needed
boolean
Whether appointments are needed
enables_subscription
boolean
Club allows email subscriptions
favorite_count
integer
Number of users who favorited this club
membership_count
integer
Number of members in the club
is_favorite
boolean
Whether authenticated user favorited this club
is_subscribe
boolean
Whether authenticated user subscribed to this club
is_member
integer
User’s membership role (0=Owner, 10=Officer, 20=Member, null=Not a member)
tags
array
Array of tag objects with id and name

Example Request

curl https://pennclubs.com/api/clubs/?search=tech&ordering=featured&active=true

Example Response

{
  "count": 150,
  "next": "https://pennclubs.com/api/clubs/?page=2",
  "previous": null,
  "results": [
    {
      "code": "pppjo",
      "name": "Penn Labs",
      "subtitle": "Building software for the Penn community",
      "active": true,
      "approved": true,
      "email": "[email protected]",
      "image_url": "https://pennclubs.com/media/clubs/pppjo.png",
      "size": 2,
      "accepting_members": true,
      "application_required": 4,
      "recruiting_cycle": 2,
      "available_virtually": false,
      "enables_subscription": true,
      "favorite_count": 245,
      "is_favorite": false,
      "is_subscribe": false,
      "is_member": null,
      "tags": [
        {"id": 1, "name": "Technology"},
        {"id": 5, "name": "Engineering"}
      ]
    }
  ]
}

Get Club Details

Retrieve detailed information about a specific club

Path Parameters

code
string
required
Club code identifier

Response Fields

Includes all fields from list endpoint plus:
members
array
Array of club members (visible to authenticated users)
events
array
Upcoming events hosted by the club
testimonials
array
Club testimonials
badges
array
Special badges assigned to the club
facebook
string
Facebook page URL
website
string
Club website URL
twitter
string
Twitter profile URL
instagram
string
Instagram profile URL
linkedin
string
LinkedIn page URL
github
string
GitHub organization URL
youtube
string
YouTube channel URL
how_to_get_involved
string
HTML content on how to join

Example Request

curl https://pennclubs.com/api/clubs/pppjo/

Create Club

Create a new club (requires authentication)

Authentication

Required - user will become club owner

Request Body

name
string
required
Club name (must be unique)
code
string
Club code (auto-generated from name if not provided)
description
string
required
Full club description (HTML allowed)
subtitle
string
Short description (max 255 characters)
email
string
Contact email address
size
integer
Club size (1-4)
accepting_members
boolean
Currently accepting new members
application_required
integer
Application requirement type (1-5)

Example Request

curl -X POST https://pennclubs.com/api/clubs/ \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "New Tech Club",
    "description": "<p>A club for technology enthusiasts</p>",
    "subtitle": "Exploring technology together",
    "email": "[email protected]",
    "size": 2,
    "accepting_members": true,
    "application_required": 1
  }'

Update Club

Update club information (requires officer+ permissions)

Authentication

Required - must be club officer or owner

Path Parameters

code
string
required
Club code identifier

Request Body

Same fields as create endpoint (all optional for PATCH)

Example Request

curl -X PATCH https://pennclubs.com/api/clubs/pppjo/ \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "accepting_members": false,
    "subtitle": "Updated description"
  }'

Club Members

List club members

Authentication

Required

Response Fields

name
string
Member’s full name
username
string
Member’s username
email
string
Member’s email (visible to club officers)
role
integer
Membership role (0=Owner, 10=Officer, 20=Member)
title
string
Custom title/position
public
boolean
Whether membership is publicly visible
active
boolean
Whether member is currently active

Example Request

curl https://pennclubs.com/api/clubs/pppjo/members/ \
  -H "Authorization: Bearer YOUR_TOKEN"

Build docs developers (and LLMs) love