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_ключ"Лимиты запросов
Лимиты зависят от вашего тарифного плана:
| Тариф | Запросов/мин | Документов/мес |
|---|---|---|
| Бизнес | 100 | 2 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'];Нужна помощь?
Если у вас возникли вопросы по интеграции, свяжитесь с нами: