Код
Примеры кода
Готовые примеры интеграции с МедАссист API на Python, JavaScript и curl
Base URL: https://partner.medassistai.ru
Python: полный цикл авторизации
Получение access token и API-ключа — выполняется один раз при настройке интеграции.
import requests
BASE = "https://partner.medassistai.ru"
REFERER = {"Referer": f"{BASE}/"}
session = requests.Session()
# 1) CSRF cookie
session.get(f"{BASE}/v1/auth/csrf", timeout=10)
csrf = session.cookies["csrftoken"]
# 2) Login
resp = session.post(
f"{BASE}/v1/auth/login",
headers={"X-CSRFToken": csrf, **REFERER},
json={
"email": "ваш@email.com",
"password": "ваш_пароль",
},
timeout=10,
)
resp.raise_for_status()
access_token = resp.json()["access_token"]
# 3) Выпустить API-ключ (выполняется один раз, ключ нужно сохранить)
resp = session.post(
f"{BASE}/v1/api-key/rotate",
headers={"Authorization": f"Bearer {access_token}"},
timeout=10,
)
resp.raise_for_status()
api_key = resp.json()["api_key"]["key"]
print(f"API key: {api_key}") # Сохраните! Показывается только один раз.
Python: отправка текста и получение результата
import time
import uuid
import requests
BASE = "https://partner.medassistai.ru"
API_KEY = "ваш_api_key"
idem = str(uuid.uuid4())
# 1) Отправка текста (всегда возвращает 202)
submit = requests.post(
f"{BASE}/v1/text/process/short",
headers={
"Content-Type": "application/json",
"X-API-Key": API_KEY,
"Idempotency-Key": idem,
},
json={
"text": "Текст для обработки.",
},
timeout=30,
)
submit.raise_for_status()
request_id = submit.json()["request_id"]
# 2) Polling до получения результата
while True:
r = requests.get(
f"{BASE}/v1/requests/{request_id}",
headers={"X-API-Key": API_KEY},
timeout=30,
)
if r.status_code == 202:
time.sleep(2)
continue
r.raise_for_status()
result = r.json()
print(result["output_text"])
break
Для endpoint’а /v1/text/process/long код идентичен — меняется только URL.
JavaScript (Node.js 18+): отправка и polling
import crypto from "node:crypto";
const BASE = "https://partner.medassistai.ru";
const API_KEY = "ваш_api_key";
const idem = crypto.randomUUID();
// 1) Отправка текста
const submit = await fetch(`${BASE}/v1/text/process/long`, {
method: "POST",
headers: {
"Content-Type": "application/json",
"X-API-Key": API_KEY,
"Idempotency-Key": idem,
},
body: JSON.stringify({
text: "Текст для обработки.",
}),
});
const submitJson = await submit.json();
const requestId = submitJson.request_id;
// 2) Polling
while (true) {
const r = await fetch(
`${BASE}/v1/requests/${requestId}`,
{
headers: { "X-API-Key": API_KEY },
}
);
if (r.status === 202) {
await new Promise((res) => setTimeout(res, 2000));
continue;
}
const result = await r.json();
console.log(result.output_text);
break;
}
curl: отправка и polling
API_KEY="ваш_api_key"
IDEM="demo-$(date +%s)"
# Отправка
REQ_ID="$(
curl -sS \
-H "Content-Type: application/json" \
-H "X-API-Key: $API_KEY" \
-H "Idempotency-Key: $IDEM" \
-X POST \
https://partner.medassistai.ru/v1/text/process/short \
-d '{"text":"Текст для обработки."}' \
| jq -r '.request_id'
)"
echo "request_id=$REQ_ID"
# Polling
curl -sS \
-H "X-API-Key: $API_KEY" \
"https://partner.medassistai.ru/v1/requests/$REQ_ID"
Если в ответе polling’а status: "started" — повторите через 2 секунды.
Передача многострочного текста
В JSON нельзя помещать буквальные переводы строк внутри строк. Используйте JSON-сериализацию вашего языка, а не ручную сборку JSON.
curl + jq (рекомендуется)
API_KEY="ваш_api_key"
IDEM="demo-$(date +%s)"
jq -Rs '{text: .}' <<'EOF' | \
curl -sS \
-H "Content-Type: application/json" \
-H "X-API-Key: $API_KEY" \
-H "Idempotency-Key: $IDEM" \
-X POST \
https://partner.medassistai.ru/v1/text/process/short \
-d @-
ПРОФИЛЬ ПАЦИЕНТА
Пол: Мужской
Возраст: 42 года
Анализ крови: ...
EOF
curl + python (если нет jq)
API_KEY="ваш_api_key"
IDEM="demo-$(date +%s)"
python3 -c "
import json, sys
text = sys.stdin.read()
print(json.dumps({'text': text}, ensure_ascii=False))
" <<'EOF' | \
curl -sS \
-H "Content-Type: application/json" \
-H "X-API-Key: $API_KEY" \
-H "Idempotency-Key: $IDEM" \
-X POST \
https://partner.medassistai.ru/v1/text/process/short \
-d @-
ПРОФИЛЬ ПАЦИЕНТА
Пол: Мужской
Возраст: 42 года
EOF
Python / JavaScript
В коде на Python и JavaScript стандартная JSON-сериализация (json.dumps() / JSON.stringify()) автоматически экранирует переводы строк — дополнительных действий не нужно.
Смотрите также
- Документация API — обзор и быстрый старт
- API Reference — полный список endpoint'ов
- Концепции — архитектура, биллинг, безопасность