> ## 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 asynchrones

> Les endpoints `jobs` mettent les tâches de scraping en file d'attente et permettent de consulter le statut et les résultats — idéal pour un volume élevé ou des pages lentes.

## Premiers pas

### URL de base

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

## Créer une tâche

Mettez en file d'attente un scrape asynchrone avec la même charge `ScrapeRequest` que l'endpoint synchrone.

### Exemple de requête

```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
  }'
```

Cette requête réussie renvoie un identifiant de tâche :

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

### Paramètres de création de tâche

<ParamField body="request" type="Object" required>
  Un objet `ScrapeRequest` avec les mêmes champs que l'endpoint de scraping synchrone (`url`, `render`, `actions`, `cookies`, etc.).
</ParamField>

<ParamField body="priority" type="Integer">
  Priorité de la tâche. Les valeurs plus élevées sont traitées en premier. Par défaut : 0.
</ParamField>

## Obtenir le statut d'une tâche

Interrogez une tâche par ID pour vérifier son statut et récupérer les résultats une fois terminée.

### URL de base

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

### Exemple de requête

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

Pendant l'exécution de la tâche :

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

Lorsque la tâche se termine avec succès :

<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>

### Valeurs de statut de tâche

| Statut    | Description                                         |
| --------- | --------------------------------------------------- |
| `queued`  | La tâche attend dans la file d'attente.             |
| `running` | La session du navigateur est active.                |
| `done`    | Scraping terminé ; `result` contient la sortie.     |
| `failed`  | Scraping échoué ; `error` contient une description. |

### Paramètres de réponse

<ResponseField name="job_id" type="String">
  Identifiant unique de la tâche asynchrone.
</ResponseField>

<ResponseField name="status" type="String">
  Statut actuel de la tâche : `queued`, `running`, `done` ou `failed`.
</ResponseField>

<ResponseField name="result" type="Object">
  L'objet résultat du scraping (même structure que la réponse de l'endpoint synchrone). Présent lorsque `status` est `done`.
</ResponseField>

<ResponseField name="error" type="String">
  Message d'erreur. Présent lorsque `status` est `failed`.
</ResponseField>

<ResponseField name="meta" type="Object">
  Métadonnées supplémentaires sur l'exécution de la tâche.
</ResponseField>
