Единственный рабочий способ программно читать данные своего Plaud-аккаунта — через Bearer-токен, который хранится в localStorage браузера. Официального публичного API для личных аккаунтов пока не существует (Developer Platform — в закрытой бете).
Этот документ — практическое руководство: как получить токен, что через него доступно, и как автоматизировать работу с записями.
Как получить токен
Plaud-приложение в браузере хранит авторизационный токен в localStorage. Токен полноценный, живёт ~10 месяцев — после истечения просто повторите шаги.
Способ 1: через браузер (ручной)
Шаг 1. Откройте web.plaud.ai в Chrome и войдите в аккаунт.
Шаг 2. Откройте DevTools:
- Mac:
Cmd + Option + I - Windows / Linux:
F12
Шаг 3. Перейдите во вкладку Application → Local Storage → https://web.plaud.ai.
Шаг 4. Скопируйте два ключа:
| Ключ | Что это | Пример |
tokenstr | Bearer-токен для авторизации | bearer eyJhbGciOiJIUzI1NiIs... |
plaud_user_api_domain | Региональный API-домен вашего аккаунта | https://api-euc1.plaud.ai |
tokenstr уже содержит префикс bearer — копируйте строку целиком, включая это слово. Заголовок запроса: Authorization: bearer eyJ...Шаг 5. Сохраните в файл .env:
PLAUD_TOKEN=bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
PLAUD_API_DOMAIN=https://api-euc1.plaud.aiСпособ 2: через plaud-toolkit (автоматический)
Open-source проект plaud-toolkit позволяет получить токен программно — через email и пароль, без ручного копирования из браузера.
# Установка
npm install -g plaud-toolkit
# Авторизация (токен сохраняется автоматически)
plaud loginПреимущества:
- Токены обновляются автоматически за 30 дней до истечения
- Не нужно открывать браузер и DevTools
- Есть CLI, библиотека и MCP-сервер
Доступные CLI-команды:
plaud_list_recordings— список всех записейplaud_get_transcript— транскрипт по ID записиplaud_get_recording_detail— полные метаданные записиplaud_user_info— информация об аккаунтеplaud_get_mp3_url— временная ссылка на MP3
Региональные домены
| Регион | Домен |
| Европа (EU) | https://api-euc1.plaud.ai |
| США | https://api.plaud.ai |
Проверка токена
curl -H "Authorization: $PLAUD_TOKEN" \
$PLAUD_API_DOMAIN/file/simple/webУспешный ответ — JSON-массив с записями. Если 401 Unauthorized — токен скопирован неверно или истёк.
Доступные эндпоинты
| Что получаем | Endpoint | Метод |
| Список всех записей (id, название, дата, длительность) | /file/simple/web | GET |
| Транскрипт + AI-саммари конкретной записи | /file/detail/{file_id} | GET |
| Аудиофайл (MP3) | /file/download/{file_id} | GET |
| Теги и папки аккаунта | /filetag/ | GET |
Работа со списком записей
Получить все записи
curl -H "Authorization: $PLAUD_TOKEN" \
$PLAUD_API_DOMAIN/file/simple/webСтруктура ответа (один элемент):
{
"id": "a3f1c2d4e5b6789012345678abcdef01",
"name": "Встреча с клиентом",
"duration": 3720,
"create_time": "2026-02-15T10:30:00Z",
"status": "done"
}Полезные jq-фильтры
# Только file_id
curl ... | jq -r '.[].id'
# id + название + дата (TSV)
curl ... | jq -r '.[] | [.id, .name, .create_time] | @tsv'
# Сортировка по дате (новые сначала)
curl ... | jq '[.[] | {id, name, create_time}] | sort_by(.create_time) | reverse'Транскрипт и AI-саммари
Полный объект записи
curl -H "Authorization: $PLAUD_TOKEN" \
$PLAUD_API_DOMAIN/file/detail/{file_id}Ключевые поля:
| Поле | Содержание |
.data.trans_result.segments | Массив сегментов: {start, end, speaker, text} |
.data.ai_content | AI-саммари |
.data.name | Название записи |
.data.duration | Длительность в секундах |
Извлечение данных
# Чистый текст транскрипта
curl ... | jq -r '.data.trans_result.segments[].text' | tr '\n' ' '
# Транскрипт с таймкодами и спикерами
curl ... | jq -r '.data.trans_result.segments[] | "[\(.start)] \(.speaker): \(.text)"'
# Только AI-саммари
curl ... | jq '.data.ai_content'
# Название + саммари + дата
curl ... | jq '{name: .data.name, date: .data.create_time, summary: .data.ai_content}'Пример вывода транскрипта:
[00:00:05] Speaker 1: Добрый день, начинаем встречу.
[00:00:12] Speaker 2: Спасибо, я готов.Скачивание аудио
# Скачать MP3
curl -H "Authorization: $PLAUD_TOKEN" \
$PLAUD_API_DOMAIN/file/download/{file_id} \
-o "recording.mp3"
# Скачать с оригинальным именем
NAME=$(curl -s -H "Authorization: $PLAUD_TOKEN" \
$PLAUD_API_DOMAIN/file/detail/{file_id} \
| jq -r '.data.name')
curl -H "Authorization: $PLAUD_TOKEN" \
$PLAUD_API_DOMAIN/file/download/{file_id} \
-o "${NAME}.mp3"Python: массовая выгрузка
Базовая настройка
import os
import requests
from dotenv import load_dotenv
load_dotenv()
TOKEN = os.getenv("PLAUD_TOKEN")
DOMAIN = os.getenv("PLAUD_API_DOMAIN")
HEADERS = {"Authorization": TOKEN}
def get(endpoint):
resp = requests.get(f"{DOMAIN}{endpoint}", headers=HEADERS)
resp.raise_for_status()
return resp.json()Получить все записи
files = get("/file/simple/web")
for f in files:
print(f"{f['id']} | {f['name']} | {f['create_time']}")Транскрипт и саммари
def get_detail(file_id):
data = get(f"/file/detail/{file_id}")["data"]
segments = data.get("trans_result", {}).get("segments", [])
transcript = " ".join(s["text"] for s in segments)
return {
"name": data["name"],
"date": data["create_time"],
"duration": data["duration"],
"transcript": transcript,
"summary": data.get("ai_content", "")
}Массовый экспорт в JSON
import json
from time import sleep
files = get("/file/simple/web")
all_data = []
for i, f in enumerate(files):
print(f"[{i+1}/{len(files)}] {f['name']}")
try:
detail = get_detail(f["id"])
all_data.append(detail)
sleep(0.5) # пауза, чтобы не нагружать API
except Exception as e:
print(f" Ошибка: {e}")
with open("plaud_export.json", "w", encoding="utf-8") as out:
json.dump(all_data, out, ensure_ascii=False, indent=2)
print(f"Экспортировано {len(all_data)} записей.")Массовая загрузка в Notion
Настройка .env
PLAUD_TOKEN=bearer eyJ...
PLAUD_API_DOMAIN=https://api-euc1.plaud.ai
NOTION_TOKEN=secret_...
NOTION_DATABASE_ID=ваш-id-базы-данныхСкрипт
import os
import requests
from time import sleep
from dotenv import load_dotenv
load_dotenv()
# --- Plaud ---
PLAUD_TOKEN = os.getenv("PLAUD_TOKEN")
PLAUD_DOMAIN = os.getenv("PLAUD_API_DOMAIN")
PLAUD_HEADERS = {"Authorization": PLAUD_TOKEN}
# --- Notion ---
NOTION_TOKEN = os.getenv("NOTION_TOKEN")
NOTION_DB_ID = os.getenv("NOTION_DATABASE_ID")
NOTION_HEADERS = {
"Authorization": f"Bearer {NOTION_TOKEN}",
"Content-Type": "application/json",
"Notion-Version": "2022-06-28"
}
def plaud_get(endpoint):
r = requests.get(f"{PLAUD_DOMAIN}{endpoint}", headers=PLAUD_HEADERS)
r.raise_for_status()
return r.json()
def get_detail(file_id):
data = plaud_get(f"/file/detail/{file_id}")["data"]
segments = data.get("trans_result", {}).get("segments", [])
transcript = "\n".join(
f"[{s.get('start', '')}] {s.get('speaker', '')}: {s['text']}"
for s in segments
)
return {
"name": data.get("name", "Без названия"),
"date": data.get("create_time", ""),
"transcript": transcript,
"summary": data.get("ai_content", "")
}
def create_notion_page(record):
summary_short = record["summary"][:2000] if record["summary"] else ""
payload = {
"parent": {"database_id": NOTION_DB_ID},
"properties": {
"Name": {"title": [{"text": {"content": record["name"]}}]},
"Date": {"date": {"start": record["date"]}},
"Summary": {"rich_text": [{"text": {"content": summary_short}}]}
},
"children": [{
"object": "block",
"type": "paragraph",
"paragraph": {
"rich_text": [{
"type": "text",
"text": {"content": record["transcript"][:2000]}
}]
}
}]
}
r = requests.post(
"https://api.notion.com/v1/pages",
headers=NOTION_HEADERS, json=payload
)
r.raise_for_status()
return r.json()["url"]
# --- Основной цикл ---
files = plaud_get("/file/simple/web")
print(f"Найдено записей: {len(files)}")
for i, f in enumerate(files):
print(f"[{i+1}/{len(files)}] {f['name']}")
try:
record = get_detail(f["id"])
url = create_notion_page(record)
print(f" ✓ {url}")
sleep(0.5)
except Exception as e:
print(f" ✗ Ошибка: {e}")
print("Готово!")Как найти file_id
File ID — 32-символьная hex-строка. Три способа получить:
- Из URL в браузере: откройте запись на web.plaud.ai — ID в адресной строке:
web.plaud.ai/file/{file_id} - Из API: поле
idв ответе/file/simple/web - Через jq:
curl ... /file/simple/web | jq -r '.[0].id'
Риски и ограничения
tokenstr не зафиксировано — ни в Reddit-сообществе PlaudNoteUsers, ни в GitHub Issues. Open-source сообщество использует метод с 2024 года.Что безопасно
- Вы обращаетесь к своим данным через тот же токен, что использует веб-приложение. Для сервера это неотличимо от обычного запроса из браузера
- Несколько публичных проектов (plaud-toolkit, OpenPlaud, плагины для Obsidian, n8n, OpenClaw Skills) работают на этом методе
Реальные риски
| Риск | Что происходит | Решение |
Rate limit (429) | Слишком частые запросы — временное ограничение | sleep(0.5–1) между запросами |
| Изменение API | Plaud может изменить структуру без предупреждения — скрипты сломаются | Обработка ошибок, слежение за GitHub-репозиториями |
| Истечение токена | Токен перестаёт работать через ~10 месяцев | Повторно извлечь из localStorage или использовать plaud-toolkit (авто-обновление) |
| Серая зона ToS | Plaud не запрещает и не разрешает явно | Прецедентов блокировки нет; для постоянной автоматизации лучше Zapier-триггер |
Ошибки и решения
| Ошибка | Причина | Решение |
401 Unauthorized | Токен истёк или скопирован без bearer | Повторно извлеките tokenstr, копируйте целиком |
| Пустой транскрипт | Запись ещё обрабатывается | Проверьте статус в приложении Plaud |
Пустой ответ /file/detail/ | Неверный file_id | Проверьте id через /file/simple/web |
| Ошибка подключения | Неверный региональный домен | Проверьте plaud_user_api_domain в localStorage |
429 Too Many Requests | Слишком частые запросы | Добавьте sleep(0.5–1) в цикл |
Что нового в экосистеме Plaud (март 2026)
- Plaud Desktop (бета) — приложение, которое автоматически определяет видеозвонки в Zoom, Google Meet и Teams и записывает их нативно, без бота
- Ask Plaud Skills (бета) — 15+ встроенных навыков + до 10 кастомных скиллов с собственными промптами
- Инфографика из Ask Plaud — генерация инфографики из транскриптов встреч
- Plaud NotePin S — новое hardware-устройство с физической кнопкой старта и закладками
- Developer Platform — официальная платформа API и SDK для бизнеса (закрытая бета с октября 2025)
Ссылки
| Ресурс | Ссылка |
| Plaud Web | web.plaud.ai |
| plaud-toolkit (авто-токен, CLI, MCP) | github.com/sergivalverde/plaud-toolkit |
| OpenPlaud (self-hosted транскрипция) | github.com/openplaud/openplaud |
| Plaud Sync for Obsidian | github.com/leonardsellem/plaud-sync-for-obsidian |
| Plaud Release Notes | plaud.ai/pages/plaud-release-notes |
| Developer Platform | plaud.ai/pages/developer-platform |