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

Здесь полный цикл с `curl`. Вам понадобятся [API-ключ](https://docs.accessful.de/ru/authentication/) и PDF. Сначала
экспортируйте ключ:

```bash
export ACCESSFUL_API_KEY="ak_your_key_here"
export BASE="https://api.accessful.de/api/v1/upload-service"
```

1. **Загрузите PDF.** Отправьте его как multipart-поле `files`:

   ```bash
   curl -X POST "$BASE/pdf/upload" \
     -H "X-API-Key: $ACCESSFUL_API_KEY" \
     -F "files=@document.pdf"
   ```

   В ответе перечисляется по одному `caseId` на каждый принятый файл:

   ```json
   {
     "successfulUploads": ["7c2f1e4a-9b0d-4a1e-8f3c-2d6b5a9e1c40"],
     "duplicateFiles": [],
     "message": "Upload completed successfully. Uploaded 1 files. 0 duplicates found.",
     "callbackUrl": null
   }
   ```

2. **Опрашивайте статус задачи** с этим `caseId`, пока он не станет `completed`:

   ```bash
   curl "$BASE/job-status/7c2f1e4a-9b0d-4a1e-8f3c-2d6b5a9e1c40" \
     -H "X-API-Key: $ACCESSFUL_API_KEY"
   ```

   ```json
   { "jobStatus": "completed", "stage": "finished", "score": 87 }
   ```

   `score` — это качество доступности результата (0–100). См. все
   [значения `jobStatus`](https://docs.accessful.de/ru/reference/api/).

3. **Скачайте** сконвертированный PDF/UA:

   ```bash
   curl -L "$BASE/download/7c2f1e4a-9b0d-4a1e-8f3c-2d6b5a9e1c40" \
     -H "X-API-Key: $ACCESSFUL_API_KEY" \
     -o document-pdfua.pdf
   ```

4. **Удалите кейс**, когда он вам больше не нужен (необязательно, но рекомендуется — это
   безвозвратное удаление):

   ```bash
   curl -X DELETE "$BASE/delete/7c2f1e4a-9b0d-4a1e-8f3c-2d6b5a9e1c40" \
     -H "X-API-Key: $ACCESSFUL_API_KEY"
   ```
**Пропустить опрос:** Вместо шага&nbsp;2 зарегистрируйте [вебхук](https://docs.accessful.de/ru/webhooks/) при загрузке, и мы отправим
POST-запросом подписанное событие на ваш URL, как только задача завершится.

## Полный пример

```js
const BASE = 'https://api.accessful.de/api/v1/upload-service';
const headers = { 'X-API-Key': process.env.ACCESSFUL_API_KEY };

// 1. Загрузка
const form = new FormData();
form.append('files', new Blob([await readFile('document.pdf')], { type: 'application/pdf' }), 'document.pdf');
const up = await fetch(`${BASE}/pdf/upload`, { method: 'POST', headers, body: form });
const { successfulUploads: [caseId] } = await up.json();

// 2. Опрос до конечного состояния
const terminal = new Set(['completed', 'failed', 'analyzer_failed', 'canceled', 'quota_exceeded']);
let status;
do {
  await new Promise((r) => setTimeout(r, 2000));
  status = await (await fetch(`${BASE}/job-status/${caseId}`, { headers })).json();
} while (!terminal.has(status.jobStatus));

if (status.jobStatus !== 'completed') throw new Error(`Job ${status.jobStatus}`);

// 3. Скачивание
const pdf = await (await fetch(`${BASE}/download/${caseId}`, { headers })).arrayBuffer();
await writeFile('document-pdfua.pdf', Buffer.from(pdf));
console.log(`Готово — score ${status.score}`);
```
Предпочитаете кликать, а не печатать? Запустите тот же процесс в браузере на странице
[Попробовать](https://docs.accessful.de/ru/try-it-out/).