API Документация

REST API для интеграции PaperMind с вашими системами. Загружайте документы, получайте извлечённые данные и автоматизируйте документооборот.

Быстрый старт

Интеграция за 5 минут

Безопасность

HTTPS + API ключи

Webhooks

Реалтайм уведомления

Base URL

https://papermind.kz/api

Аутентификация

Все запросы к API должны содержать заголовок X-API-Key с вашим API ключом.

API ключи можно создать в настройках аккаунта.

bash
curl -X GET "https://papermind.kz/api/documents" \
  -H "X-API-Key: pm_ваш_api_ключ"

Лимиты запросов

Лимиты зависят от вашего тарифного плана:

ТарифЗапросов/минДокументов/мес
Бизнес1002 000
ПроБез лимитаБез лимита

При превышении лимита вы получите ответ 429 Too Many Requests.

Обработка ошибок

API возвращает стандартные HTTP коды состояния:

200Успешный запрос
201Ресурс создан
400Неверный запрос
401Неверный API ключ
403Доступ запрещён
404Ресурс не найден
429Превышен лимит запросов
500Внутренняя ошибка сервера

Формат ошибки

json
{
  "error": {
    "code": "INVALID_API_KEY",
    "message": "Неверный или отсутствующий API ключ"
  }
}

Endpoints

Документы

Webhooks

Webhooks позволяют получать уведомления о событиях в реальном времени. Настройте их в настройках аккаунта.

События

СобытиеОписание
document.createdДокумент загружен
document.processedОбработка завершена
document.failedОшибка обработки
document.deletedДокумент удалён

Пример payload

json
{
  "event": "document.processed",
  "timestamp": "2024-12-24T10:05:00Z",
  "data": {
    "document_id": "uuid-1234",
    "file_name": "invoice.pdf",
    "status": "completed",
    "extracted_data": { ... }
  }
}

Проверка подписи

Каждый webhook содержит заголовок X-Webhook-Signature с HMAC-SHA256 подписью для верификации.

javascript
const crypto = require('crypto');

function verifyWebhook(payload, signature, secret) {
  const expectedSignature = crypto
    .createHmac('sha256', secret)
    .update(JSON.stringify(payload))
    .digest('hex');
  
  return signature === expectedSignature;
}

Примеры интеграции

Python

python
import requests

API_KEY = "pm_ваш_api_ключ"
BASE_URL = "https://papermind.kz/api"

# Загрузить документ
with open("invoice.pdf", "rb") as f:
    response = requests.post(
        f"{BASE_URL}/documents",
        headers={"X-API-Key": API_KEY},
        files={"file": f}
    )
    document = response.json()
    print(f"ID документа: {document['id']}")

# Получить результаты
response = requests.get(
    f"{BASE_URL}/documents/{document['id']}",
    headers={"X-API-Key": API_KEY}
)
data = response.json()
print(f"Сумма: {data['extracted_data']['total']} KZT")

JavaScript / Node.js

javascript
const FormData = require('form-data');
const fs = require('fs');
const fetch = require('node-fetch');

const API_KEY = 'pm_ваш_api_ключ';
const BASE_URL = 'https://papermind.kz/api';

// Загрузить документ
async function uploadDocument(filePath) {
  const form = new FormData();
  form.append('file', fs.createReadStream(filePath));

  const response = await fetch(`${BASE_URL}/documents`, {
    method: 'POST',
    headers: { 'X-API-Key': API_KEY },
    body: form
  });

  return response.json();
}

// Получить документ
async function getDocument(id) {
  const response = await fetch(`${BASE_URL}/documents/${id}`, {
    headers: { 'X-API-Key': API_KEY }
  });

  return response.json();
}

// Пример использования
uploadDocument('invoice.pdf')
  .then(doc => console.log('Загружен:', doc.id));

PHP

php
<?php
$apiKey = 'pm_ваш_api_ключ';
$baseUrl = 'https://papermind.kz/api';

// Загрузить документ
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "$baseUrl/documents");
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    "X-API-Key: $apiKey"
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, [
    'file' => new CURLFile('invoice.pdf')
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);
$document = json_decode($response, true);
curl_close($ch);

echo "ID документа: " . $document['id'];

Нужна помощь?

Если у вас возникли вопросы по интеграции, свяжитесь с нами: