# Найти персональные данные

Источник: https://smartpdf.ru/developers/docs/operations/find-personal-data

Находит персональные данные в PDF, файл не меняет. Результат — JSON: {"pages": [{"page", "items": [{"kind", "text", "boxes"}]}], "scanned": [страницы-сканы без текста], "total"}; boxes — [x0, y0, x1, y1] долями страницы, их можно передать в redact как areas.

- Запрос: `POST https://api.smartpdf.ru/v1/pdf/find-personal-data`, тело — JSON, ключ — заголовок `X-API-Key`

- Инструмент MCP: `find_personal_data` (вместо file_id — публичная ссылка file_url)

- Вход: PDF с текстовым слоем

- Результат: JSON

- Единица цены: 10 МБ

## Параметры

| Параметр | Тип | Описание |
|---|---|---|
| `file_id` (обязательный) | `string` | file_id загруженного файла (POST /v1/upload); действует час. |
| `kinds` | `string[]` | Что искать: passport — паспорт, snils — СНИЛС, inn — ИНН, phone — телефоны, email — почта, card — номера карт, account — счета физлиц. СНИЛС, ИНН и карты проверяются контрольными суммами. Значения: `"passport"`, `"snils"`, `"inn"`, `"phone"`, `"email"`, `"card"`, `"account"`. По умолчанию: `["passport","snils","inn","phone","email","card","account"]`. |
| `words` | `string[]` | Свои слова — ФИО, адрес, название: до 50, каждое от 3 символов. Ищутся целыми словами без учёта регистра. |
| `webhook_url` | `string` | https-адрес: по завершении SmartPDF отправит на него POST с результатом и подписью — вместо опроса статуса (раздел «Вебхуки»). |

## Запрос

Шаг 2 полного цикла: файл уже загружен, статус и скачивание — как в быстром старте (https://smartpdf.ru/developers/docs/quickstart.md).

### cURL

```bash
BODY=$(jq -n --arg file_id "$FILE_ID" '{file_id: $file_id, kinds: ["phone", "email", "snils"]}')
curl -sS --fail-with-body -H "X-API-Key: $SMARTPDF_API_KEY" -H "Content-Type: application/json" \
  -d "$BODY" https://api.smartpdf.ru/v1/pdf/find-personal-data
```

### Python

```python
task_id = call("POST", "/pdf/find-personal-data", json={"file_id": file_id, "kinds": ["phone", "email", "snils"]})["task_id"]
```

### Node.js

```javascript
const { task_id } = await call("/pdf/find-personal-data", { method: "POST", json: { file_id: fileId, kinds: ["phone", "email", "snils"] } });
```

### PHP

```php
$taskId = call('POST', '/pdf/find-personal-data', ['file_id' => $fileId, 'kinds' => ['phone', 'email', 'snils']])['task_id'];
```

### Go

```go
payload, _ := json.Marshal(map[string]any{"file_id": fileID, "kinds": []any{"phone", "email", "snils"}})
call("POST", "/pdf/find-personal-data", bytes.NewReader(payload), "application/json", &task)
```

### Java

```java
String body = JSON.writeValueAsString(Map.of("file_id", fileId, "kinds", List.of("phone", "email", "snils")));
String taskId = call(HttpRequest.newBuilder(URI.create(API + "/pdf/find-personal-data"))
        .header("Content-Type", "application/json")
        .POST(HttpRequest.BodyPublishers.ofString(body))).get("task_id").asText();
```

### C#

```csharp
var task = await Read(await http.PostAsJsonAsync($"{Api}/pdf/find-personal-data", new { file_id = fileId, kinds = new[] { "phone", "email", "snils" } }));
```

## Ответ

`202 Accepted` — операция оплачена и поставлена в очередь:

```json
{
  "task_id": "3f2c5b0e-8a41-4d7e-9c1f-5d0b8f2e7a64"
}
```

Дальше — GET /v1/tasks/{task_id} (https://smartpdf.ru/developers/docs/tasks.md) или вебхук (https://smartpdf.ru/developers/docs/webhooks.md).
