Live

Meetup logo

Meetup API and MCP server

meetup.com

Meetup has a GraphQL API, but only members with an active Meetup Pro subscription can get access, and it stops working when Pro lapses (checked 11 Oct 2026). Cotlet is a hosted MCP server and REST API for Meetup with 14 endpoints (5 read, 9 write): your AI agent signs in as you and does the work.

Endpoints
14 5 read, 9 write
Updated
How Cotlet connects your agent to Meetup
  1. Your agent

    Claude Code, Codex, Cursor or a script

  2. Cotlet

    MCP server and REST API · 14 endpoints

    cotlet.dev/mcp/v1

  3. Meetup logo

    Meetup

    Signed in as you on meetup.com

You sign in once. We never store your password.

Official API

Does Meetup have an official API?

Meetup has a GraphQL API, but only members with an active Meetup Pro subscription can get access, and it stops working when Pro lapses (checked 11 Oct 2026). Even with Pro it cannot message members, copy events or manage attendees.

What Meetup's own tools do compared with Cotlet
Task Meetup official Cotlet
Create and edit events Partly Pro only Yes
Copy a past event No Yes
Announce an event to members Partly Pro only Yes
List RSVPs and the waitlist Partly Pro only, read-only Yes
Add, remove or move attendees off the waitlist No Yes
Mark check-ins and no-shows No Yes
Message event attendees No Yes
Message group members No Yes

Sources: Meetup Help: How can I get access to the API? · Meetup Help: API access when Pro expires · Meetup API guide (GraphQL) · Meetup Pro pricing

Common use cases

What can an AI agent do in Meetup?

Cotlet is best for Meetup organizers who run recurring events and want their AI agent to copy events, handle the waitlist and message attendees without running or fixing a server.

  • Create a series of events from an agenda

    Here are the talks for the next six Tuesdays. Create one Meetup event per talk, same venue and limit as last Python Night, keep them as drafts and show me the list. Your agent calls list_events, get_event, create_event and announce_event.

  • Copy a recurring event Runs: Monthly

    Copy last month's Python Night to the second Thursday of November, 19:00, and announce it. Your agent calls list_events, copy_event and announce_event.

  • Move people off the waitlist Runs: Daily

    Who is on the waitlist for Saturday's hike? Move the first three to going. Your agent calls list_attendees and update_attendee.

  • Tell attendees about a last-minute change

    Tonight's Python Night moved to room 204 and starts at 19:30. Update the event and message everyone going. Your agent calls list_events, get_event, update_event and message_attendees.

  • Mark no-shows after an event

    The workshop ended an hour ago. Mark everyone who was not checked in as a no-show, except Ana and Tom, who told me they were sick. Your agent calls list_events, list_attendees and mark_attendance.

Endpoints

What is the Meetup API?

Cotlet's Meetup API exposes 14 endpoints for your own Meetup account: list groups, list events, get event, list attendees, list members, create event, copy event, update event, announce event, update attendee, mark attendance, message attendees, message members and cancel event. The list_groups endpoint returns groups you organize or co-organize, with member count and your role. Each endpoint takes simple JSON inputs like event_id, group_urlname or status and works both as an MCP tool for agents and as a REST call for scripts.

All endpoints · 14 total

missing one? request an endpoint

  • POST

    list_groups

    read

    Returns every group where you are organizer or co-organizer. Use group_urlname from each item as the group parameter of the other tools.

    POST /api/v1/meetup/list_groups

    Input

    No parameters.

    Example response

    {
      "groups": [
        {
          "group_urlname": "tech-founders-berlin",
          "name": "Tech Founders Berlin",
          "role": "organizer",
          "members": 2140
        }
      ]
    }
  • POST

    list_events

    read

    Lists events of one group, soonest first for upcoming and newest first for past. Each item has the going and waitlist counts. get_event returns the full text.

    POST /api/v1/meetup/list_events

    Input

    Input: list_events
    Parameter Type Description
    group_urlname required string Group URL name, e.g. tech-founders-berlin.
    status enum upcoming, past, draft or cancelled. Default: upcoming.
    limit integer 1 to 50. Default: 20.
    cursor string Next page cursor from the previous call.

    Example response

    {
      "events": [
        {
          "event_id": "311204587",
          "title": "Python Night #23",
          "start_time": "2026-10-08T19:00:00+02:00",
          "status": "past",
          "going": 38,
          "waitlist": 0,
          "attendee_limit": 40
        }
      ],
      "next_cursor": null
    }
  • POST

    get_event

    read

    Returns one event with its full description, venue or online link, hosts and settings such as the attendee limit. Use it before copy_event or update_event.

    POST /api/v1/meetup/get_event

    Input

    Input: get_event
    Parameter Type Description
    event_id required string Event ID from list_events.

    Example response

    {
      "event_id": "311204587",
      "title": "Python Night #23",
      "description": "Lightning talks and pizza.",
      "start_time": "2026-10-08T19:00:00+02:00",
      "duration_minutes": 120,
      "venue": {
        "name": "Co-Work Mitte",
        "address": "Torstr. 1",
        "city": "Berlin"
      },
      "attendee_limit": 40,
      "hosts": [
        "Dana K."
      ]
    }
  • POST

    list_attendees

    read

    Returns the RSVPs of one event with the guests each member brings, answers to your event questions and check-in status. Filter by status to see the waitlist or the no-shows.

    POST /api/v1/meetup/list_attendees

    Input

    Input: list_attendees
    Parameter Type Description
    event_id required string Event ID from list_events.
    status enum going, waitlist, not_going, checked_in, no_show or all. Default: going.
    cursor string Next page cursor from the previous call.

    Example response

    {
      "attendees": [
        {
          "member_id": "402118",
          "name": "Ana L.",
          "status": "going",
          "guests": 1,
          "checked_in": false
        }
      ],
      "next_cursor": null
    }
  • POST

    list_members

    read

    Lists members of one group, newest first. Filter by join date to find new members. Pages hold up to 200 members; pass next_cursor back as cursor.

    POST /api/v1/meetup/list_members

    Input

    Input: list_members
    Parameter Type Description
    group_urlname required string Group URL name, e.g. tech-founders-berlin.
    joined_since date Only members who joined on or after this date.
    limit integer 1 to 200. Default: 100.
    cursor string Next page cursor from the previous call.

    Example response

    {
      "members": [
        {
          "member_id": "402118",
          "name": "Ana L.",
          "role": "member",
          "joined_at": "2026-10-01T18:21:00Z"
        }
      ],
      "next_cursor": "eyJvZmZzZXQiOjEwMH0"
    }
  • POST

    create_event

    write

    Creates an event in your group. It is saved as a draft unless publish is true. A published event is visible to everyone, but members are told only when you call announce_event. By default you confirm each call; you can switch that off for this tool.

    POST /api/v1/meetup/create_event

    Input

    Input: create_event
    Parameter Type Description
    group_urlname required string Group URL name, e.g. tech-founders-berlin.
    title required string Under 80 characters.
    start_time required datetime ISO 8601 with time zone.
    duration_minutes integer Default: 120.
    description string Event description, Markdown.
    venue object name, address and city, or online_url for an online event.
    attendee_limit integer Turns on the waitlist when reached.
    publish boolean Publish now or keep as draft. Default: false.

    Example response

    {
      "event_id": "311990021",
      "status": "draft",
      "title": "Intro to SQL",
      "start_time": "2026-11-03T19:00:00+01:00"
    }
  • POST

    copy_event

    write

    Creates a new event from an existing one with the same description, venue and settings, at a new start time. It is a draft unless publish is true. By default you confirm each call; you can switch that off for this tool.

    POST /api/v1/meetup/copy_event

    Input

    Input: copy_event
    Parameter Type Description
    event_id required string Event ID from list_events.
    start_time required datetime New start, ISO 8601 with time zone.
    title string New title. Default: the old one.
    publish boolean Publish now or keep as draft. Default: false.

    Example response

    {
      "event_id": "311988140",
      "status": "draft",
      "announced": false,
      "start_time": "2026-11-12T19:00:00+01:00",
      "url": "https://www.meetup.com/yourgroup/events/311988140/"
    }
  • POST

    update_event

    write

    Changes fields of an upcoming event. Only the fields you pass change. Edits to a published event are visible to members and attendees. By default you confirm each call; you can switch that off for this tool.

    POST /api/v1/meetup/update_event

    Input

    Input: update_event
    Parameter Type Description
    event_id required string Event ID from list_events.
    fields required object Any of title, start_time, duration_minutes, description, venue, attendee_limit.

    Example response

    {
      "event_id": "311988140",
      "status": "updated",
      "changed": [
        "attendee_limit"
      ]
    }
  • POST

    announce_event

    write

    Sends the announcement of one published event to the members of your group. Drafts cannot be announced. By default you confirm each call; you can switch that off for this tool.

    POST /api/v1/meetup/announce_event

    Input

    Input: announce_event
    Parameter Type Description
    event_id required string Event ID from list_events.

    Example response

    {
      "event_id": "311988140",
      "announced": true
    }
  • POST

    update_attendee

    write

    Changes the RSVP of one member for one event. Moving off the waitlist needs a free spot under the attendee limit. The member sees the change. By default you confirm each call; you can switch that off for this tool.

    POST /api/v1/meetup/update_attendee

    Input

    Input: update_attendee
    Parameter Type Description
    event_id required string Event ID from list_events.
    member_id required string Member ID from list_attendees or list_members.
    action required enum mark_attending, remove or move_from_waitlist.

    Example response

    {
      "event_id": "311204587",
      "member_id": "402118",
      "status": "going"
    }
  • POST

    mark_attendance

    write

    Sets the status of many attendees in one call, from 1 hour before the event starts, also after it has ended. It sends nothing to members and one more call changes the status again, so it runs without asking first.

    POST /api/v1/meetup/mark_attendance

    Input

    Input: mark_attendance
    Parameter Type Description
    event_id required string Event ID from list_events.
    member_ids required string[] Member IDs from list_attendees.
    status required enum checked_in, no_show or not_coming.

    Example response

    {
      "event_id": "311204587",
      "updated": 2,
      "status": "no_show"
    }
  • POST

    message_attendees

    write

    Sends one message with a subject to the people who RSVPed going to an upcoming or past event, under your name. Returns how many people it reached. By default you confirm each call; you can switch that off for this tool.

    POST /api/v1/meetup/message_attendees

    Input

    Input: message_attendees
    Parameter Type Description
    event_id required string Event ID from list_events.
    subject required string Message subject.
    body required string Message text.

    Example response

    {
      "event_id": "311204587",
      "status": "sent",
      "recipients": 38
    }
  • POST

    message_members

    write

    Sends one message to the members of your group who opted in to organizer announcements, under your name. Returns how many people it reached. By default you confirm each call; you can switch that off for this tool.

    POST /api/v1/meetup/message_members

    Input

    Input: message_members
    Parameter Type Description
    group_urlname required string Group URL name, e.g. tech-founders-berlin.
    subject required string Message subject.
    body required string Message text.

    Example response

    {
      "group_urlname": "tech-founders-berlin",
      "status": "sent",
      "recipients": 1760
    }
  • POST

    cancel_event

    write

    Cancels one upcoming event. Attendees are notified and the cancellation cannot be undone. By default you confirm each call; you can switch that off for this tool.

    POST /api/v1/meetup/cancel_event

    Input

    Input: cancel_event
    Parameter Type Description
    event_id required string Event ID from list_events.

    Example response

    {
      "event_id": "311988140",
      "status": "cancelled"
    }

Setup

How do I connect Meetup to Claude Code, Codex or Cursor?

Connecting Meetup takes three steps: request access, sign in to Meetup once, then add one MCP server or call the REST API with the same key.

Connect Meetup over MCP

  1. 1

    Create an account

    Sign up and add Meetup in the console. Your API key is there too.

  2. 2

    Sign in to Meetup once

    Open the connect page from the console and sign in to Meetup the way you always do. We keep the session, never your password, and you can revoke it anytime.

  3. 3

    Add Cotlet to your agent

    Claude Code
    claude mcp add --transport http cotlet \
      https://cotlet.dev/mcp/v1 \
      --header "Authorization: Bearer $COTLET_API_KEY"
    Cursor
    {
      "mcpServers": {
        "cotlet": {
          "url": "https://cotlet.dev/mcp/v1",
          "headers": {
            "Authorization": "Bearer ${COTLET_API_KEY}"
          }
        }
      }
    }
    Codex
    # ~/.codex/config.toml
    [mcp_servers.cotlet]
    url = "https://cotlet.dev/mcp/v1"
    bearer_token_env_var = "COTLET_API_KEY"

    Paste the snippet for your client. The same server and key serve every app you connect, so you do this once.

  4. 4

    Ask your agent

    Prompt

    Here are the talks for the next six Tuesdays. Create one Meetup event per talk, same venue and limit as last Python Night, keep them as drafts and show me the list.

    Ask in plain words. Your agent finds the Meetup tools on the server and calls them for you; anything that reaches other people waits for your OK unless you switch that off for a tool.

Call Meetup over REST

  1. 1

    Export your API key

    Shell

    export COTLET_API_KEY="cotlet_..."

    Your scripts use the same API key as your agent. Keep it in an environment variable, never in your code.

  2. 2

    Call a tool

    curl

    curl https://cotlet.dev/api/v1/meetup/copy_event \
      -H "Authorization: Bearer $COTLET_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{"event_id":"311204587","start_time":"2026-11-12T19:00:00+01:00","title":"Python Night #24","publish":true}'

    Every tool is a POST endpoint at /api/v1/meetup/{tool}. Send its parameters as JSON, exactly as listed in the endpoints above.

  3. 3

    Read the result

    Example response · copy_event

    {
      "event_id": "311988140",
      "status": "published",
      "announced": false,
      "start_time": "2026-11-12T19:00:00+01:00",
      "url": "https://www.meetup.com/yourgroup/events/311988140/"
    }

    You get plain JSON back, ready for your script. A failed call costs nothing.

Why Cotlet

Why use Cotlet for Meetup? Hosted, safe and kept working.

  • Built for agents

    • One MCP server for every app you connect.
    • The same tools as a REST API for scripts and cron jobs.
    • Works with Claude Code, Codex and Cursor.
  • Your login stays yours

    • You sign in to Meetup yourself. We keep only the session, encrypted with AES-256.
    • The model never sees a login.
    • No stored passwords, no CAPTCHA solving, no MFA bypass.
  • You stay in control

    • Pick read only, or read and write.
    • Anything that reaches other people waits for your OK, unless you switch it off per tool.
    • Revoke access in one click.
  • Kept working for you

    • We test every integration daily.
    • When Meetup changes, the tool pauses until we fix it.
    • Failed calls cost nothing.

Alternatives

Is there a Meetup MCP server on GitHub?

The official route is Meetup Pro with its GraphQL API, which Make and other automation tools also use. Community MCP servers for Meetup mostly read public events. Cotlet works in your own organizer account, so it also covers messaging and attendees, hosted and maintained by our team.

Cotlet compared with a Meetup Pro API
Meetup Pro API Cotlet
Who can use it Pro subscribers only, after approval Any organizer of a group, on any plan
Setup Apply for an OAuth client, then write GraphQL Request access, sign in to Meetup once, add one MCP server or API key
Messaging members and attendees Not available Contact members and attendees, each send confirmed by you
Attendees and check-in Read RSVPs only Add, remove, move off the waitlist, mark check-ins
When Meetup changes You update your own code Our team tests it daily and fixes it for you; failed calls are free
When access breaks Stops the day Pro lapses If Meetup logs you out, your agent gets a link to sign in again
Price Pro subscription per group Free 7-day trial with 5,000 credits, then credits per call

Which one fits you

Pick Cotlet if

  • you are not a developer, or you do not want to maintain a server
  • you need it to keep working when Meetup changes, without checking it yourself
  • your agent or a script should run it on a schedule, also while your computer is off

Pick an open-source server if

  • you are comfortable installing, updating and fixing it yourself
  • you want the session to stay on your own computer
  • you only need it now and then, from one MCP client

For AI agents

Cotlet for Meetup in plain text The facts on this page in one block: status, endpoints, access, pricing, contact.

Endpoint health

verified 2h ago

  • list_groups passing
  • list_events passing
  • get_event passing
  • list_attendees passing
  • list_members passing

+ 9 more endpoints

14/14 passing latest check self-healing

meetup.txt

Meetup has a GraphQL API, but only members with an active Meetup Pro subscription can get access, and it stops working when Pro lapses (checked 11 Oct 2026). Even with Pro it cannot message members, copy events or manage attendees.
Cotlet provides a hosted MCP server and REST API for Meetup: 14 tools (5 read, 9 write).
Access       Request access at https://cotlet.dev/app/signup?app=meetup; we email the API key.

MCP server   https://cotlet.dev/mcp/v1
REST base    https://cotlet.dev/api/v1/meetup
Auth         Authorization: Bearer <COTLET_API_KEY>. Listing endpoints and schemas needs no key; calling an endpoint needs one.
Tools        list_groups, list_events, get_event, list_attendees, list_members, create_event, copy_event, update_event, announce_event, update_attendee, mark_attendance, message_attendees, message_members, cancel_event
Confirm      create_event, copy_event, update_event, announce_event, update_attendee, message_attendees, message_members, cancel_event (by default the user approves each call; the user can switch this off per tool, e.g. for scheduled automations)
Markdown     https://cotlet.dev/integrations/meetup-api-mcp-server.md

How access works:
1. The user requests access at https://cotlet.dev/app/signup?app=meetup (Meetup is pre-selected). Each request is reviewed and the API key is sent by email.
2. The user signs in to Meetup once in a browser. An agent cannot do this step.
3. The API key goes into the MCP client or the REST call as a bearer token.

Fits: people who want a hosted Meetup server that someone else maintains, including non-developers.

Policy: Cotlet never stores passwords, never solves CAPTCHAs, never bypasses MFA.
Company: legal details in the Terms of service at https://cotlet.dev/terms. Contact contact@cotlet.dev.
Session: the user signs in to Meetup in a browser; Cotlet keeps only the session, AES-256 encrypted, revocable in the dashboard at any time.
Terms: the user stays responsible for following Meetup's terms; Cotlet is not affiliated with Meetup.
Full page as Markdown

Automations

Can Meetup automations run on a schedule in n8n, Make or Zapier?

Yes. Cotlet does not replace your automation platform: it gives it a Meetup connection it does not have, with the same API key as your agent. Write actions ask for your OK by default; switch that off in your dashboard for the tools you choose, for example to copy a recurring event, and the schedule runs on its own. Cotlet runs in the cloud, so it keeps going while your computer is off.

Where to run Meetup automations through Cotlet, and how to schedule them
Where How to connect How to schedule
Your AI agent Add https://cotlet.dev/mcp/v1 with your API key. A scheduled agent run, for example a Claude Code routine.
n8n MCP Client node with https://cotlet.dev/mcp/v1, or an HTTP Request node to https://cotlet.dev/api/v1/meetup/{tool}. Schedule Trigger node.
Make HTTP module: POST https://cotlet.dev/api/v1/meetup/{tool} with an Authorization: Bearer header and a JSON body. Scenario schedule.
Zapier Webhooks by Zapier: POST https://cotlet.dev/api/v1/meetup/{tool} with the same header and body. Schedule by Zapier trigger.
Your own script POST https://cotlet.dev/api/v1/meetup/{tool} with your API key. cron or GitHub Actions.

Pricing & limits

How much does the Meetup API cost?

Free 7-day trial with 5,000 credits, no card needed. After that, the Meetup API comes with the Cotlet plan, from $29 a month for 3,000 credits, with no limit on apps. Each month's credits stay valid for 3 months, so unused credits add up.

Cotlet plan sizes: price, monthly credits and price per credit
Size Price Credits / month Per credit
Solo $29/mo 3,000 about $0.0097
Pro $99/mo 12,000 about $0.0083
Agency $299/mo 40,000 $0.0075

Each successful call uses credits for the work it takes; failed calls and timeouts cost nothing. A hard spend cap is on by default. Authenticate with the Authorization: Bearer header.

About Cotlet

How Cotlet holds your access

Cotlet hosts MCP servers and REST APIs for apps with no usable API. Your agent works in your own Meetup account.

Company details
The legal name, address and registration numbers of the company behind Cotlet are in the Terms of service. Terms
Your session
You sign in to Meetup yourself, in your browser. We keep only the session, never your password: encrypted with AES-256 in an EU vault, isolated to your account and used only when your agent calls a Meetup tool you allowed. When it expires, your agent gives you a link to sign in again. Security
Revoking access
Disconnect Meetup in your dashboard: the session is deleted and access ends at once. Actions that reach other people wait for your OK unless you switch that off per tool.
What we never do
Store passwords, solve CAPTCHAs or bypass MFA.
Meetup's terms
You use your own Meetup account and stay responsible for following Meetup's terms. Cotlet is independent and not affiliated with Meetup. Terms
Contact
Questions about the company, security or an app: contact@cotlet.dev
About Cotlet

Frequently asked questions

How do I get access?

Request access and pick Meetup. Cotlet reviews each request and emails you your API key.

Do I need to be technical?

No. You sign in to Meetup once in your browser and paste one command into your agent, or one URL into n8n. Your agent can walk you through it. There is no server to install, update or fix.

Is a hosted server safe? My Meetup session would leave my computer.

Cotlet keeps your Meetup session encrypted with AES-256 in an EU vault, isolated to your account and used only for the tools you allow: read only, or read and write. The AI model never sees it, and you revoke it in one click. A local server keeps the same session in a file on your computer, readable by any program you run, and needs a fresh sign-in whenever it expires.

Do I need Meetup Pro to use Cotlet?

No. Cotlet works in your own Meetup account and does not use the Meetup API, which Meetup limits to Pro subscribers. Organizer tools need an organizer or co-organizer role in the group.

Can my agent post or send messages in Meetup without asking me?

No. Every call to create_event, copy_event, update_event, announce_event, update_attendee, message_attendees, message_members or cancel_event waits for your OK by default. For scheduled automations you can switch confirmation off per tool in your dashboard, for example only for approvals. mark_attendance runs without asking, because it sends nothing to anyone and one call undoes it.

Can I use the Meetup API in n8n?

Yes. Add https://cotlet.dev/mcp/v1 with your API key in n8n's MCP Client node, or call https://cotlet.dev/api/v1/meetup/{tool} from the HTTP Request node.

Give your agent access to Meetup.

Request access and pick it. We review each request and email you your API key. Free 7-day trial with 5,000 credits, no card needed.