> ## Documentation Index
> Fetch the complete documentation index at: https://docs.meetjamie.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Getting Started

> Create an API key and make your first request

## 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

1. Navigate to **Settings → Developers → API Keys**
2. Click **Add API Key**
3. If you're an admin, choose the scope: **Personal** or **Workspace** (see [Access & Security](/pages/developers/api/access-and-security) for the difference)
4. Enter a name and optional description
5. Click **Create API Key**
6. **Copy your key immediately** — it won't be shown again

<Warning>
  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.
</Warning>

## 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):**

```bash theme={null}
# 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:**

```bash theme={null}
# 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:**

```bash theme={null}
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:**

```bash theme={null}
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):**

```bash theme={null}
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):**

```bash theme={null}
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):**

```bash theme={null}
curl -H "x-api-key: jk_your_personal_key" \
  "https://beta-api.meetjamie.ai/v1/me/tags.list"
```

<Tip>
  **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.
</Tip>

<Tip>
  **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
</Tip>

### Response Format

All responses wrap data in an envelope:

```json theme={null}
{
  "result": {
    "data": {
      "json": {
        "meetings": [...],
        "nextCursor": null
      }
    }
  }
}
```

Your data is inside `result.data.json`.

## Pagination

List endpoints return paginated results. When more data is available, the response includes a `nextCursor` field. Pass it in your next request:

```bash theme={null}
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.
