# API Moduli

> [!WARNING]
> Questa API è in anteprima alpha e potrebbe essere modificata o rimossa in futuro.

La visualizzazione progressiva dei campi dei moduli e la convalida dei dati dei moduli sono supportate dalla nostra API di interazione con i moduli.

[L'agente demo Transport](/agents/demo/transport#code) illustra come utilizzare questa funzionalità;
fai clic sulla scheda _Codice_ per visualizzare il codice YAML di questo agente e nota il suo [JSON Schema](https://json-schema.org) incorporato in `output.schema.properties`.

[Crea una chiave API](api-key.md) per utilizzare l'[API _Preview_ dei moduli](/docs/api?specs=form), ad esempio con `curl`:

```bash
curl --no-progress-meter -X 'POST' 'https://api.aish.li/v1/form?agent=demo%2Ftransport' \
  -H 'X-API-Key: sk_...' \
  | jq .
```

restituisce:

```json
{
  "sessionID": "uXxvDmOLaYkGU0qIMpd359Q",
  "mapForm": {
    "nextQuestion": "Do you need a ride? Just let me know your origin, destination, day and time you're interested in!\n",
    "isFormComplete": false
  }
}
```

È quindi possibile utilizzare il `sessionID` restituito per inviare l'input dell'utente e convalidare o mostrare progressivamente i campi rimanenti, ad esempio:

```bash
curl --no-progress-meter -X 'POST' \
  'https://api.aish.li/v1/form/uXxvDmOLaYkGU0qIMpd359Q?agent=demo%2Ftransport' \
  -H 'X-API-Key: sk_...' \
  -d 'John Doe, da Novello a Barolo' \
  | jq .
```

che restituirà:

```json
{
  "sessionID": "uXxvDmOLaYkGU0qIMpd359Q",
  "mapForm": {
    "data": {
      "origin_longitude": 7.9258,
      "origin_date_time": "2026-09-26T15:09Z",
      "destination_latitude": 44.6104,
      "origin": "Novello",
      "name": "John Doe",
      "destination": "Barolo",
      "destination_longitude": 7.9414,
      "origin_latitude": 44.5894
    },
    "isFormComplete": true
  }
}
```
