If you need to create multiple groups at scale, you can use Meetup's GraphQL API to programmatically create groups through a two-step process: creating a draft and then publishing it.
Prerequisites
Active Meetup Pro subscription
API access with OAuth authentication configured
Valid OAuth access token
Learn more about setting up API access.
How Group Creation Works
Group creation happens in two steps:
Create a draft using the
createGroupDraftmutationPublish the draft using the
publishGroupDraftmutation
This mirrors the group creation flow in the Meetup interface, where groups are drafted and reviewed before being published.
Step 1: Create a Group Draft
Use the createGroupDraft mutation to create a draft of your new group:
mutation createGroupDraft {
createGroupDraft(
input: {
name: "My Group's name"
customMembersLabel: "Meetuppers"
description: "<p>A group for technology enthusiasts in New York City to discuss the latest trends, share knowledge, and network.</p>"
urlname: "my-group-name"
topics: ["12345", "67890"]
location: { pointLocation: { latitude: 40.7128, longitude: -74.0060 } }
}
) {
token
errors {
code
message
}
}
}
Required Fields
- name: Display name for the group (max 60 characters)
- description: HTML-formatted description explaining the group's purpose
- urlname: URL-friendly identifier (6-60 characters, will appear in the group's URL)
- location: Geographic coordinates (latitude and longitude)
Optional Fields
- customMembersLabel: Custom label for group members (e.g., "Techies", "Runners")
- topics: Array of topic IDs to categorize your group
Response
If successful, you'll receive a token identifying the draft:
{
"data": {
"createGroupDraft": {
"token": "DRAFT-TOKEN-HERE",
"errors": []
}
}
}👉 Important: Save this token - you'll need it to publish the group in the next step.
Step 2: Publish the Group Draft
Once you have the draft token, use the publishGroupDraft mutation to create the group:
mutation PublishGroupDraft {
publishGroupDraft(input: {
token: "DRAFT-TOKEN-HERE"
}) {
group {
id
name
urlname
link
}
errors {
code
message
field
}
}
}
Response
If successful, you'll receive the created group's details:
{
"data": {
"publishGroupDraft": {
"group": {
"id": "12345678",
"name": "My Group's name",
"urlname": "my-group-name",
"link": "https://www.meetup.com/my-group-name"
},
"errors": []
}
}
}
Creating Multiple Groups
To create multiple groups from a CSV file, you can write a script that:
Reads group data (name, location, description) from your CSV
For each row:
Calls
createGroupDraftwith the group detailsCaptures the returned token
Calls
publishGroupDraftwith that token
Handles any errors and logs results
Rate Limiting
Be mindful of API rate limits (500 points per 60 seconds). Add appropriate delays between requests when creating groups in bulk.
Getting Topic IDs
To find topic IDs for your groups, you can query available topics through the API or explore topics on Meetup.com.
Error Handling
Both mutations return an errors array. Common errors include:
Invalid or duplicate urlname
Missing required fields
Invalid coordinates
Rate limit exceeded
Always check the errors array in the response and handle failures appropriately in your script.
Pro Network Integration
Groups created through the API can be added to your Pro network through the Pro Dashboard (Groups tab → Add existing group) or by contacting your account administrator.