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.
REST API
Section titled “REST API”Generate API keys to access your band’s data from external tools.
Getting an API Key
Section titled “Getting an API Key”- Go to Settings > Advanced > API
- Click Generate New Key
- Give your key a name (e.g., “Automation Script”)
- Copy the key — it is shown only once and cannot be retrieved later.
API keys use the format gig_xxxxxxxxxxxx.
Authentication
Section titled “Authentication”Include your API key in the Authorization header:
curl -H "Authorization: Bearer gig_your_api_key" \ https://gigmeister.app/api/songsTargeting 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.
curl -H "Authorization: Bearer gig_your_api_key" \ -H "X-Band-Id: your_band_id" \ https://gigmeister.app/api/songsRate Limits
Section titled “Rate Limits”- 100 requests per minute per API key
- Rate limit headers included in responses:
X-RateLimit-Limit,X-RateLimit-Remaining,X-RateLimit-Reset
Response Format
Section titled “Response Format”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.
Usage Tracking
Section titled “Usage Tracking”View request counts per key from Settings > Advanced > API — broken down by endpoint, day, and month.
Endpoints
Section titled “Endpoints”| 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 |
Setlists
Section titled “Setlists”| 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) |
Song Groups
Section titled “Song Groups”| 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 |
Calendar Events
Section titled “Calendar Events”| 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 |
Practice
Section titled “Practice”| 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 |
Shared Mailbox
Section titled “Shared Mailbox”| 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 |
Rider Pack
Section titled “Rider Pack”| 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) |
Gig Advance
Section titled “Gig Advance”| 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) |
Song Audio
Section titled “Song Audio”| 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 |
OpenAPI Spec
Section titled “OpenAPI Spec”A machine-readable OpenAPI 3.0 specification is available at /api/openapi. Use it with tools like Swagger UI, Postman, or code generators.
Example: List Songs
Section titled “Example: List Songs”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"]}Example: Create a Song
Section titled “Example: Create a Song”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/songsMCP (Model Context Protocol)
Section titled “MCP (Model Context Protocol)”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.
AI Features
Section titled “AI Features”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.
Agent Threads
Section titled “Agent Threads”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.
