Prerequisites
- An eligible plan — API access is available on Pro, Team, and Enterprise plans.
- An API key — Create one in Settings → Developers → API Keys.
Creating an API Key
- Navigate to Settings → Developers → API Keys
- Click Add API Key
- If you’re an admin, choose the scope: Personal or Workspace (see Access & Security for the difference)
- Enter a name and optional description
- Click Create API Key
- Copy your key immediately — it won’t be shown again
Store your API key securely. If you lose it, you’ll need to regenerate it from the API key settings. Treat it like a password.
Authentication
Every request must include your API key in the x-api-key header.
API keys start with the jk_ prefix. If the key is missing or invalid, you’ll receive a 401 Unauthorized response.
Making Requests
Both key types use the same request format:
- Reading data uses GET with optional parameters via
?input={"json": { ... }}
- Deleting uses POST with a JSON body
- When no parameters are needed, just call the URL directly
The only difference is the route prefix: /v1/workspace/ for workspace keys, /v1/me/ for personal keys.
Examples
List meetings (no parameters):
# Workspace key
curl -H "x-api-key: jk_your_workspace_key" \
"https://beta-api.meetjamie.ai/v1/workspace/meetings.list"
# Personal key
curl -H "x-api-key: jk_your_personal_key" \
"https://beta-api.meetjamie.ai/v1/me/meetings.list"
List meetings with filters:
# Workspace key — filter by user and limit
curl -H "x-api-key: jk_your_workspace_key" \
'https://beta-api.meetjamie.ai/v1/workspace/meetings.list?input={"json":{"limit":5,"userEmail":"sarah@example.com"}}'
# Personal key — filter by tag
curl -H "x-api-key: jk_your_personal_key" \
'https://beta-api.meetjamie.ai/v1/me/meetings.list?input={"json":{"limit":5,"tag":"Product"}}'
Get a specific meeting:
curl -H "x-api-key: jk_your_key" \
'https://beta-api.meetjamie.ai/v1/workspace/meetings.get?input={"json":{"meetingId":"YOUR_MEETING_ID"}}'
List open tasks:
curl -H "x-api-key: jk_your_key" \
'https://beta-api.meetjamie.ai/v1/workspace/tasks.list?input={"json":{"completed":false,"limit":10}}'
Delete a meeting (POST):
curl -X POST -H "x-api-key: jk_your_key" \
-H "Content-Type: application/json" \
-d '{"json": {"meetingId": "YOUR_MEETING_ID"}}' \
"https://beta-api.meetjamie.ai/v1/workspace/meetings.delete"
Search meetings (personal key only):
curl -H "x-api-key: jk_your_personal_key" \
'https://beta-api.meetjamie.ai/v1/me/meetings.search?input={"json":{"query":"product roadmap"}}'
List your tags (personal key only):
curl -H "x-api-key: jk_your_personal_key" \
"https://beta-api.meetjamie.ai/v1/me/tags.list"
Don’t want to build requests by hand? Use the Request Builder in Settings → Developers → API Keys to visually select an endpoint, add parameters, and get a ready-to-use cURL command or URL you can copy.
Cheat sheet:
- URL pattern:
/v1/{workspace or me}/{procedure} (e.g., /v1/workspace/meetings.list)
- Reading:
GET with optional ?input={"json": {...}}
- Deleting:
POST with body {"json": {...}}
- No parameters? Just call the URL directly
All responses wrap data in an envelope:
{
"result": {
"data": {
"json": {
"meetings": [...],
"nextCursor": null
}
}
}
}
Your data is inside result.data.json.
List endpoints return paginated results. When more data is available, the response includes a nextCursor field. Pass it in your next request:
GET /v1/workspace/meetings.list?input={"json":{"limit":20,"cursor":"2024-11-27T14:00:00.000Z::7893456789012345678"}}
When nextCursor is null, you’ve reached the end of the results.