Skip to content

API & Integrations

Gigmeister data can be accessed programmatically via REST API and Model Context Protocol (MCP). MCP is available to band members, and available MCP actions follow each member's band role permissions.

For detailed endpoint documentation with request/response schemas, see the API Reference.

Generate API keys to access your band's data from external tools.

  1. Go to Settings > Advanced > API
  2. Click Generate New Key
  3. Give your key a name (e.g., "Automation Script")
  4. Copy the key — it's only shown once!

API keys use the format gig_xxxxxxxxxxxx.

Include your API key in the Authorization header:

Terminal window
curl -H "Authorization: Bearer gig_your_api_key" \
https://gigmeister.app/api/songs
  • 100 requests per minute per API key
  • Rate limit headers included in responses: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset

All responses use a consistent envelope:

{
"ok": true,
"data": { ... }
}

Error responses:

{
"ok": false,
"error": "Description of what went wrong"
}

View request counts per key from Settings > Advanced > API — broken down by endpoint, day, and month.

| Method | Path | Description | |--------|------|-------------| | GET | /api/songs | List all songs | | POST | /api/songs | Create a song | | GET | /api/songs/:id | Get a song | | PATCH | /api/songs/:id | Update a song | | DELETE | /api/songs/:id | Delete a song | | POST | /api/songs/import | Bulk import (up to 100) | | GET | /api/songs/duplicates | Find potential duplicates | | POST | /api/songs/merge | Merge two duplicates |

| Method | Path | Description | |--------|------|-------------| | GET | /api/setlists | List all setlists | | POST | /api/setlists | Create a setlist | | GET | /api/setlists/:id | Get a setlist with songs | | PATCH | /api/setlists/:id | Update a setlist | | DELETE | /api/setlists/:id | Delete a setlist | | POST | /api/setlists/:id/songs | Add songs to a setlist | | DELETE | /api/setlists/:id/songs | Remove a song | | PUT | /api/setlists/:id/songs/reorder | Reorder songs |

| Method | Path | Description | |--------|------|-------------| | GET | /api/song-groups | List all groups | | POST | /api/song-groups | Create a group | | GET | /api/song-groups/:id | Get a group | | PATCH | /api/song-groups/:id | Update a group | | DELETE | /api/song-groups/:id | Delete a group |

| Method | Path | Description | |--------|------|-------------| | GET | /api/calendar/events | List events | | POST | /api/calendar/events | Create an event | | GET | /api/calendar/events/:id | Get an event with attendance | | PATCH | /api/calendar/events/:id | Update an event | | DELETE | /api/calendar/events/:id | Delete an event | | POST | /api/calendar/events/:id/attendance | Set attendance status | | GET | /api/calendar/recurring | List recurring rehearsal series | | POST | /api/calendar/recurring | Create a recurring series (RRULE) | | PATCH | /api/calendar/recurring/:id | Update a series (updateType: this/future/all) | | DELETE | /api/calendar/recurring/:id | Delete a series (?futureOnly=true to keep past) | | POST | /api/calendar/recurring/:id/skip | Skip one occurrence by date | | DELETE | /api/calendar/recurring/:id/skip | Restore a skipped occurrence (?date=) |

| Method | Path | Description | |--------|------|-------------| | GET | /api/band | Get band info | | GET | /api/band/members | List members |

| Method | Path | Description | |--------|------|-------------| | GET | /api/practice/practice-sessions | Get practice history | | POST | /api/practice/practice-sessions | Log a practice session | | GET | /api/active-practice-session | Get the running live practice session | | POST | /api/active-practice-session | Start a live practice session | | PATCH | /api/active-practice-session/:id | Advance / update the live session | | DELETE | /api/active-practice-session | End the live session |

| Method | Path | Description | |--------|------|-------------| | GET | /api/mail/threads | List mail threads | | GET | /api/mail/threads/:id | Get a thread with messages | | PATCH | /api/mail/threads/:id | Update thread status, tags, assignee | | POST | /api/mail/reply | Send a reply (threadId in body) | | POST | /api/mail/draft-reply | Generate an AI draft reply for a thread | | GET | /api/mail/search | Full-text search across messages |

| Method | Path | Description | |--------|------|-------------| | GET | /api/bin | List soft-deleted songs and setlists | | POST | /api/bin/songs/:id/restore | Restore a binned song | | POST | /api/bin/setlists/:id/restore | Restore a binned setlist | | DELETE | /api/bin/songs/:id | Permanently delete a binned song | | DELETE | /api/bin/setlists/:id | Permanently delete a binned setlist | | DELETE | /api/bin | Empty the bin |

| Method | Path | Description | |--------|------|-------------| | GET | /api/rider-pack | Get the band's rider pack | | PATCH | /api/rider-pack | Update rider pack sections | | DELETE | /api/rider-pack/share-token | Rotate (invalidate + regenerate) the public share token | | GET | /api/rider-pack/share/:token | Public share view (no auth) |

| Method | Path | Description | |--------|------|-------------| | GET | /api/midi-devices | List user MIDI devices | | POST | /api/midi-devices | Add a MIDI device | | GET | /api/midi-scenes | List MIDI scenes (presets across devices) | | POST | /api/midi-scenes | Save a MIDI scene |

A machine-readable OpenAPI 3.0 specification is available at /api/openapi. Use it with tools like Swagger UI, Postman, or code generators.

Terminal window
curl -s -H "Authorization: Bearer gig_your_api_key" \
https://gigmeister.app/api/songs | jq '.data[0]'
{
"id": "uuid",
"title": "Don't Stop Believin'",
"artist": "Journey",
"key": "E",
"tempo": 119,
"duration": 251,
"timeSignature": "4/4",
"tags": ["80s", "opener"]
}
Terminal window
curl -X POST -H "Authorization: Bearer gig_your_api_key" \
-H "Content-Type: application/json" \
-d '{"title": "Sweet Child O Mine", "artist": "Guns N Roses", "key": "D", "tempo": 128}' \
https://gigmeister.app/api/songs

Connect AI assistants like Claude Desktop to Gigmeister via MCP.

MCP allows AI tools to read and manage your song library, create setlists, and more through natural language. Available actions follow your band role permissions.

  1. Go to Settings > Advanced > MCP
  2. Copy the MCP configuration
  3. Add it to your AI assistant's MCP settings

With MCP connected, you can ask your AI assistant to:

  • "List all songs in my library"
  • "Create a setlist for Saturday's gig with these 12 songs"
  • "Reorder the second set so it builds energy through to the encore"
  • "Move 'Layla' to right before the ballads"
  • "Find songs in the key of G under 90 BPM"
  • "Add a new song with these chord changes"
  • "Show me what the band's been practicing this month"

Read-only tools available to all roles:

  • list_songs, search_songs, get_song, resolve_songs
  • list_setlists, get_setlist
  • list_song_groups, get_song_group
  • list_events, get_event, list_recurring_events
  • list_practice_sessions, get_practice_suggestions, get_active_practice_session
  • list_midi_devices, list_midi_mappings
  • analyze_catalog, get_band, get_band_members, list_bands
  • list_mail_threads, get_mail_thread, search_mail
  • get_rider_pack, list_bin

Every tool also accepts an optional band_id to target a specific band you belong to for that call (defaults to the connected band — use list_bands to find IDs).

Write tools (gated by your band role):

  • Songs: create_song, update_song, delete_song, enrich_song, enrich_songs
  • Setlists: create_setlist, create_setlist_with_songs, update_setlist, delete_setlist, add_song_to_setlist, bulk_add_songs_to_setlist, add_song_group_to_setlist, remove_song_from_setlist, move_song_in_setlist, reorder_setlist_songs
  • Groups: create_song_group, update_song_group, delete_song_group
  • Calendar: create_gig, create_rehearsal, update_event, delete_event, update_attendance, set_member_attendance, confirm_all_attendance
  • Recurring: create_recurring_rehearsal, update_recurring_event, delete_recurring_event, skip_recurring_occurrence, unskip_recurring_occurrence
  • Practice: log_practice, start_practice_session, update_practice_session, end_practice_session
  • MIDI: create_midi_device, update_midi_device, delete_midi_device
  • Inbox: update_mail_thread, add_mail_note, draft_mail_reply, send_mail_reply
  • Bin: restore_from_bin, permanently_delete_from_bin, empty_bin
  • Rider Pack: update_patchlist, set_rider_text, rotate_rider_pack_share_token, update_press_kit_file, reorder_press_kit_file, delete_press_kit_file, delete_rider_file

The in-app AI agent supports persistent multi-turn conversations synced across all your devices. Start a conversation on web, continue it on iOS — the full history is preserved per-band.

Built-in AI features include:

| Feature | Description | |---------|-------------| | Generate Setlist | Create a setlist from a text prompt | | Chord Sheet Generation | Convert text to formatted chord sheets | | Lyrics Lookup | Fetch lyrics for songs from LRCLIB with AI fallback | | Song Enrichment | Auto-fill key, tempo, time signature, duration from MusicBrainz + AI | | Medley Matching | Find songs that work well together | | Setlist Optimization | Reorder for better flow | | AI Agent Threads | Persistent multi-turn AI conversations synced across devices |

Access these features from the relevant screens in the app.