---
title: "Import meetings from Google Drive links"
description: "Up to 20 Google Docs or Drive links (urls: docs.google.com/document/d/…, drive.google.com/file/d/…, drive.google.com/open?id=…) into workspace (members and…"
canonical_url: https://docs.markdrop.in/api/meetings/import-meetings-from-google-drive-links
last_updated: 2026-11-05
site: "Markdrop Docs"
index: https://docs.markdrop.in/llms.txt
---

# Import meetings from Google Drive links

`POST https://api.markdrop.in/api/v1/meetings/import-link`

Up to 20 Google Docs or Drive links (`urls`: docs.google.com/document/d/…, drive.google.com/file/d/…, drive.google.com/open?id=…) into `workspace` (members and up), one result each in `results`: `{url, file_id, status, meeting?, meeting_id?, message?}`. `status`: `imported`, `attached` or `duplicate` (with the `meeting`), `queued` (the Doc isn't shared with "anyone with the link" and your Google Meet script is connected to this workspace: it fetches the Doc with your own Google access on its next run), `needs_access` (with what to do), or `error` (not a Google link). Markdrop fetches only Google's export of that file, following redirects only to Google's own hosts, with a timeout and a 4 MB cap. 1:1s and two-person calls are restricted to their attendees. 20 a minute.

- **Authentication:** API token required: `Authorization: Bearer mdk_…`.
- **Rate limit:** 20 per minute per IP address.
- **MCP tool:** `import_meeting` ([tools](https://docs.markdrop.in/ai/tools))
- **Guide:** [Paste a Google Drive link](https://docs.markdrop.in/workspaces/meetings-import#paste-a-google-drive-link)

## Request body

`application/json`, required.

- `workspace` (string, required): File it in this workspace: the workspace's id. Up to 40 characters.
- `urls` (array of string, required): 1–20 items.
- `restricted` (boolean)
- `wait` (boolean): Default `false`.

## Responses

- `200`: OK.
- `401`: No token, or the token is revoked or mistyped.
- `422`: The request didn't validate. `detail` lists each problem, with where it is (`loc`) and why (`msg`).
- `429`: Too many requests from your IP address. Wait the seconds in `Retry-After`.

## Examples

**curl**

```bash
curl -X POST https://api.markdrop.in/api/v1/meetings/import-link \
  -H "Authorization: Bearer $MARKDROP_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
       "workspace": "665f1c2ab3e4d5f6a7b8c9d0",
       "urls": [
         "https://docs.google.com/document/d/1AbCdEfGhIjKlMnOpQrStUvWxYz/edit"
       ]
     }'
```

**JavaScript**

```javascript
const res = await fetch("https://api.markdrop.in/api/v1/meetings/import-link", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.MARKDROP_TOKEN}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    "workspace": "665f1c2ab3e4d5f6a7b8c9d0",
    "urls": [
      "https://docs.google.com/document/d/1AbCdEfGhIjKlMnOpQrStUvWxYz/edit"
    ]
  }),
});
const data = await res.json();
```

**Python**

```python
import os

import requests

r = requests.post(
    "https://api.markdrop.in/api/v1/meetings/import-link",
    headers={"Authorization": f"Bearer {os.environ['MARKDROP_TOKEN']}"},
    json={
        "workspace": "665f1c2ab3e4d5f6a7b8c9d0",
        "urls": [
            "https://docs.google.com/document/d/1AbCdEfGhIjKlMnOpQrStUvWxYz/edit",
        ],
    },
)
r.raise_for_status()
print(r.json())
```
