> ## Documentation Index
> Fetch the complete documentation index at: https://docs.cleariflow.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Асинхронні задачі

> Ендпоінти `jobs` ставлять задачі скрейпінгу в чергу та дозволяють опитувати статус і результати — ідеально для високого навантаження або повільних сторінок.

## Початок роботи

### Базовий URL

```
https://scrape.cleariflow.com/v1/jobs
```

## Створення завдання

Поставте асинхронний скрейпінг у чергу з тим самим payload `ScrapeRequest`, що використовує синхронний ендпоінт.

### Приклад запиту

```bash theme={"system"}
curl -X POST 'https://scrape.cleariflow.com/v1/jobs' \
  -H 'Content-Type: application/json' \
  -d '{
    "request": {
      "api_key": "YOUR_UNIQUE_API_KEY",
      "url": "https://example.com"
    },
    "priority": 10
  }'
```

Успішний запит повертає ідентифікатор завдання:

<ResponseExample>
  ```json theme={"system"}
  {
    "job_id": "550e8400-e29b-41d4-a716-446655440000"
  }
  ```
</ResponseExample>

### Параметри створення завдання

<ParamField body="request" type="Object" required>
  Об'єкт `ScrapeRequest` з тими самими полями, що й синхронний ендпоінт скрейпінгу (`url`, `render`, `actions`, `cookies` тощо).
</ParamField>

<ParamField body="priority" type="Integer">
  Пріоритет завдання. Вищі значення обробляються першими. За замовчуванням: 0.
</ParamField>

## Отримання статусу завдання

Опитуйте завдання за ID, щоб перевірити статус і отримати результати після завершення.

### Базовий URL

```
https://scrape.cleariflow.com/v1/jobs/{job_id}
```

### Приклад запиту

```bash theme={"system"}
curl 'https://scrape.cleariflow.com/v1/jobs/550e8400-e29b-41d4-a716-446655440000'
```

Під час виконання завдання:

<ResponseExample>
  ```json theme={"system"}
  {
    "job_id": "550e8400-e29b-41d4-a716-446655440000",
    "status": "running"
  }
  ```
</ResponseExample>

Після успішного завершення:

<ResponseExample>
  ```json theme={"system"}
  {
    "job_id": "550e8400-e29b-41d4-a716-446655440000",
    "status": "done",
    "result": {
      "ok": true,
      "html": "<!DOCTYPE html><html>...</html>",
      "meta": {
        "elapsed_ms": 8123
      }
    }
  }
  ```
</ResponseExample>

### Значення статусу завдання

| Статус    | Опис                                               |
| --------- | -------------------------------------------------- |
| `queued`  | Завдання очікує в черзі.                           |
| `running` | Сесія браузера активна.                            |
| `done`    | Скрейпінг завершено; `result` містить результат.   |
| `failed`  | Скрейпінг не вдався; `error` містить опис помилки. |

### Параметри відповіді

<ResponseField name="job_id" type="String">
  Унікальний ідентифікатор асинхронного завдання.
</ResponseField>

<ResponseField name="status" type="String">
  Поточний статус завдання: `queued`, `running`, `done` або `failed`.
</ResponseField>

<ResponseField name="result" type="Object">
  Об'єкт результату скрейпінгу (та сама структура, що й відповідь синхронного ендпоінта). Присутній, коли `status` — `done`.
</ResponseField>

<ResponseField name="error" type="String">
  Повідомлення про помилку. Присутнє, коли `status` — `failed`.
</ResponseField>

<ResponseField name="meta" type="Object">
  Додаткові метадані про виконання завдання.
</ResponseField>
