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

# Job asincroni

> Gli endpoint `jobs` accodano attività di screenshot e permettono di verificare stato e risultati — ideali per alto volume o catture di lunga durata.

## Per iniziare

### URL base

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

## Creare un job

Accoda uno screenshot asincrono con lo stesso payload `ScreenshotRequest` usato dall'endpoint sincrono.

### Esempio di richiesta

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

Una richiesta riuscita restituisce un identificatore di job:

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

### Parametri di creazione del job

<ParamField body="request" type="Object" required>
  Un oggetto `ScreenshotRequest` con gli stessi campi dell'endpoint screenshot sincrono (`url`, `render`, `actions`, `cookies`, ecc.).
</ParamField>

<ParamField body="priority" type="Integer">
  Priorità del job. Valori più alti vengono elaborati per primi. Predefinito: 0.
</ParamField>

## Ottenere lo stato del job

Interroga un job per ID per verificarne lo stato e recuperare i risultati al completamento.

### URL base

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

### Esempio di richiesta

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

Mentre il job è in esecuzione:

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

Al completamento con successo:

<ResponseExample>
  ```json theme={"system"}
  {
    "job_id": "550e8400-e29b-41d4-a716-446655440000",
    "status": "done",
    "result": {
      "ok": true,
      "image_base64": "/9j/4AAQSkZJRg...",
      "content_type": "image/jpeg",
      "meta": {
        "elapsed_ms": 8123
      }
    }
  }
  ```
</ResponseExample>

### Valori di stato del job

| Stato     | Descrizione                                           |
| --------- | ----------------------------------------------------- |
| `queued`  | Il job è in attesa in coda.                           |
| `running` | La sessione del browser è attiva.                     |
| `done`    | Screenshot completato; `result` contiene l'output.    |
| `failed`  | Screenshot fallito; `error` contiene una descrizione. |

### Parametri di risposta

<ResponseField name="job_id" type="String">
  Identificatore univoco del job asincrono.
</ResponseField>

<ResponseField name="status" type="String">
  Stato attuale del job: `queued`, `running`, `done` o `failed`.
</ResponseField>

<ResponseField name="result" type="Object">
  L'oggetto risultato dello screenshot (stessa struttura della risposta dell'endpoint sincrono). Presente quando `status` è `done`.
</ResponseField>

<ResponseField name="error" type="String">
  Messaggio di errore. Presente quando `status` è `failed`.
</ResponseField>

<ResponseField name="meta" type="Object">
  Metadati aggiuntivi sull'esecuzione del job.
</ResponseField>
