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 is shown only once and cannot be retrieved later.

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

Targeting a band. An API key belongs to a user who may be in more than one band. Pass an X-Band-Id header to scope a request to a specific band; a caller-supplied X-Band-Id always wins over the key’s default band, and a request for a band you are not a member of fails with 403 FORBIDDEN_NOT_MEMBER rather than falling back. Omit the header to use the key owner’s active band.

Terminal window
curl -H "Authorization: Bearer gig_your_api_key" \
-H "X-Band-Id: your_band_id" \
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",
"code": "RATE_LIMIT_EXCEEDED"
}

The code field is an optional, stable machine-readable error code (an ErrorCode value such as FORBIDDEN_NOT_MEMBER, RATE_LIMIT_EXCEEDED, or RESOURCE_NOT_FOUND). Branch on code rather than parsing the human-readable error string.

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
POST /api/setlists/import Bulk import (up to 200)
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
POST /api/calendar/events/import Bulk import (up to 300)
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/advance/template Get the band’s advance template
PATCH /api/advance/template/:id Update template fields
GET /api/advance/events/:eventId Get a gig’s advance
PATCH /api/advance/events/:eventId Update advance values or status
POST /api/advance/events/:eventId/send Email the request link to the organiser
POST /api/advance/events/:eventId/publish Publish the day sheet to attendees
GET /api/advance/share/:token Public organiser form (no auth)
POST /api/advance/share/:token Submit organiser answers (no auth)
Method Path Description
GET /api/song-audio List audio assets (backing, stems, live, reference)
POST /api/song-audio Create an asset
GET /api/song-audio/:id Get an asset with tracks, markers, and presigned URLs
POST /api/song-audio/:id/promote Promote a marked segment to a song reference
POST /api/song-audio/:id/prefer Mark an asset as the song’s preferred take
PUT /api/song-audio/:id/mixer-state Save mixer state (personal or band default)
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 an AI assistant such as Claude or ChatGPT to your band data and work by asking rather than tapping.

See Claude & ChatGPT (MCP) for setup, example prompts, and the full tool list.

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.

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.