---
title: "Add meetings to the review"
description: "Adds up to 25 sources at a time to a draft and returns the review: {name, text}, a file as {name, data_b64} (.txt, .vtt, .srt, .sbv, .docx, .md; 4 MB each),…"
canonical_url: https://docs.markdrop.in/api/meetings/add-meetings-to-the-review
last_updated: 2026-11-05
site: "Markdrop Docs"
index: https://docs.markdrop.in/llms.txt
---

# Add meetings to the review

`POST https://api.markdrop.in/api/v1/meetings/backfill/{job_id}/sources`

Adds up to 25 sources at a time to a draft and returns the review: `{name, text}`, a file as `{name, data_b64}` (.txt, .vtt, .srt, .sbv, .docx, .md; 4 MB each), or a Google Doc picked in the Drive picker as `{google_file_id}` (read with your Google Docs connection; it's dated by the day Google created it when its name has no date, in your time zone: `tz_offset_min`, minutes east of UTC). Up to 300 sources per import. The same text twice, an empty file or one without a transcript or meeting notes is listed under `problems` instead.

- **Authentication:** API token required: `Authorization: Bearer mdk_…`.
- **Rate limit:** 60 per minute per IP address.
- **Guide:** [Import past meetings](https://docs.markdrop.in/workspaces/meetings-import#import-past-meetings)

## Path parameters

- `job_id` (string, required)

## Request body

`application/json`, required.

- `sources` (array of object, required): 1–25 items.
  - `name` (string): Up to 200 characters.
  - `text` (string): Up to 1,500,000 characters.
  - `data_b64` (string): Up to 5,333,349 characters.
  - `google_file_id` (string): Up to 200 characters.
  - `origin` ("paste" | "upload")
  - `created` (string): Up to 40 characters.
- `tz_offset_min` (integer): From -840 to 840. Default `0`.

## 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/backfill/JOB_ID/sources \
  -H "Authorization: Bearer $MARKDROP_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
       "sources": [
         {
           "name": "Daily Standup – 2026_10_28 10_00 IST – Transcript.txt",
           "text": "Ada Lovelace: Morning all…",
           "origin": "upload"
         }
       ],
       "tz_offset_min": 330
     }'
```

**JavaScript**

```javascript
const res = await fetch("https://api.markdrop.in/api/v1/meetings/backfill/JOB_ID/sources", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.MARKDROP_TOKEN}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    "sources": [
      {
        "name": "Daily Standup – 2026_10_28 10_00 IST – Transcript.txt",
        "text": "Ada Lovelace: Morning all…",
        "origin": "upload"
      }
    ],
    "tz_offset_min": 330
  }),
});
const data = await res.json();
```

**Python**

```python
import os

import requests

r = requests.post(
    "https://api.markdrop.in/api/v1/meetings/backfill/JOB_ID/sources",
    headers={"Authorization": f"Bearer {os.environ['MARKDROP_TOKEN']}"},
    json={
        "sources": [
            {
                "name": "Daily Standup – 2026_10_28 10_00 IST – Transcript.txt",
                "text": "Ada Lovelace: Morning all…",
                "origin": "upload",
            },
        ],
        "tz_offset_min": 330,
    },
)
r.raise_for_status()
print(r.json())
```
