Код

Примеры кода

Готовые примеры интеграции с МедАссист 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()) автоматически экранирует переводы строк — дополнительных действий не нужно.

Обсудить подключение