---
title: "Leggi una pagina generata"
description: "Una pagina della build così come la vede un visitatore, utile a un agente senza browser."
canonical: "https://atelier201.com/docs/it/api/builds/page"
updated: "2026-11-06"
---

# Leggi una pagina generata

Richiede `sites:read`. Non modifica nulla.

Restituisce il titolo, la descrizione, le intestazioni, i link e il testo visibile
della pagina, le altre `pages` della build e i problemi `issues` che emergerebbero
da un controllo rapido: assenza di `<title>` o `h1`, più elementi `h1`, immagini
senza `alt`, link senza testo e testo segnaposto. Valore predefinito: `/` della
build più recente dello stato bozza pronta.

Se hai un browser, [Recupera una build](/docs/api/builds/retrieve) con
`preview=true` restituisce un link privato per visualizzare la pagina.

```http
GET https://api.atelier201.com/v1/sites/{site_id}/pages
```

## Authorizations

- `Authorization` (bearer, in header, required)

## Path parameters

- `site_id` (`string`, required): L'ID del sito o il suo slug (l'indirizzo prima di .atelier201.page).

## Query parameters

- `path` (`string`, length: `≤ 600 chars`): La pagina, nel formato che un visitatore inserirebbe: / o /about. Valore predefinito: /.
- `build_id` (`string<uuid>`, pattern: `^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$`): Una build. Valore predefinito: la build pronta più recente della bozza (quella mostrata nell'anteprima).

## Response

**200**: Leggi una pagina compilata

- `data` (`object`, required)
- `data.build_id` (`string`, required)
- `data.revision` (`string`, required, length: `40–40 chars`): ID di un commit Git (40 caratteri esadecimali) del repository del sito.
- `data.path` (`string`, required)
- `data.status` (`integer`, required, range: `-9007199254740991–9007199254740991`): 200, 404 (la pagina di errore 404 del sito, se presente) oppure il codice di stato del reindirizzamento.
- `data.location` (`string`): Destinazione del reindirizzamento.
- `data.pages` (`string[]`, required): Tutte le pagine della build, per leggere le altre.
- `data.title` (`string,null`)
- `data.description` (`string,null`)
- `data.lang` (`string,null`)
- `data.headings` (`object[]`)
- `data.headings.level` (`integer`, required, range: `-9007199254740991–9007199254740991`)
- `data.headings.text` (`string`, required)
- `data.links` (`object[]`)
- `data.links.href` (`string`, required)
- `data.links.text` (`string`, required)
- `data.images_without_alt` (`string[]`)
- `data.og_image` (`string,null`): L'immagine mostrata da un link condiviso alla pagina (og:image), oppure null.
- `data.structured_data` (`string[]`): I tipi schema.org dichiarati dalla pagina in JSON-LD (LocalBusiness, Article...).
- `data.broken_targets` (`string[]`): Link interni e file (immagini, fogli di stile, script) usati dalla pagina ma assenti nella build.
- `data.text` (`string`): Il testo visibile del contenuto principale della pagina, fino a un massimo di 20,000 caratteri.
- `data.text_truncated` (`boolean`)
- `data.issues` (`string[]`): Problemi che emergerebbero da un controllo rapido: titolo o h1 assente, più h1, immagini senza alt, link senza testo, testo segnaposto.
- `request_id` (`string`, required)

```json
{
  "data": {
    "build_id": "<string>",
    "revision": "<string>",
    "path": "<string>",
    "status": 123,
    "location": "<string>",
    "pages": [
      "<string>"
    ],
    "title": null,
    "description": null,
    "lang": null,
    "headings": [
      {
        "level": 123,
        "text": "<string>"
      }
    ],
    "links": [
      {
        "href": "<string>",
        "text": "<string>"
      }
    ],
    "images_without_alt": [
      "<string>"
    ],
    "og_image": null,
    "structured_data": [
      "<string>"
    ],
    "broken_targets": [
      "<string>"
    ],
    "text": "<string>",
    "text_truncated": true,
    "issues": [
      "<string>"
    ]
  },
  "request_id": "<string>"
}
```

**400**: Codici possibili: invalid_request, unknown_field, invalid_parameter, invalid_cursor

- `error` (`object`, required)
- `error.type` (`string`, required)
- `error.code` (`string`, required)
- `error.message` (`string`, required)
- `error.param` (`string`)
- `error.docs_url` (`string`, required)
- `error.action_url` (`string<uri>`)
- `error.details` (`Record<string, object>`)
- `request_id` (`string`, required)

```json
{
  "error": {
    "type": "<string>",
    "code": "<string>",
    "message": "<string>",
    "param": "<string>",
    "docs_url": "<string>",
    "action_url": "<string>",
    "details": {}
  },
  "request_id": "<string>"
}
```

**401**: Codici possibili: authentication_required, invalid_api_key, api_key_expired, api_key_revoked

- `error` (`object`, required)
- `error.type` (`string`, required)
- `error.code` (`string`, required)
- `error.message` (`string`, required)
- `error.param` (`string`)
- `error.docs_url` (`string`, required)
- `error.action_url` (`string<uri>`)
- `error.details` (`Record<string, object>`)
- `request_id` (`string`, required)

```json
{
  "error": {
    "type": "<string>",
    "code": "<string>",
    "message": "<string>",
    "param": "<string>",
    "docs_url": "<string>",
    "action_url": "<string>",
    "details": {}
  },
  "request_id": "<string>"
}
```

**402**: Codici possibili: insufficient_credits

- `error` (`object`, required)
- `error.type` (`string`, required)
- `error.code` (`string`, required)
- `error.message` (`string`, required)
- `error.param` (`string`)
- `error.docs_url` (`string`, required)
- `error.action_url` (`string<uri>`)
- `error.details` (`Record<string, object>`)
- `request_id` (`string`, required)

```json
{
  "error": {
    "type": "<string>",
    "code": "<string>",
    "message": "<string>",
    "param": "<string>",
    "docs_url": "<string>",
    "action_url": "<string>",
    "details": {}
  },
  "request_id": "<string>"
}
```

**403**: Codici possibili: insufficient_scope, feature_not_available, admin_required

- `error` (`object`, required)
- `error.type` (`string`, required)
- `error.code` (`string`, required)
- `error.message` (`string`, required)
- `error.param` (`string`)
- `error.docs_url` (`string`, required)
- `error.action_url` (`string<uri>`)
- `error.details` (`Record<string, object>`)
- `request_id` (`string`, required)

```json
{
  "error": {
    "type": "<string>",
    "code": "<string>",
    "message": "<string>",
    "param": "<string>",
    "docs_url": "<string>",
    "action_url": "<string>",
    "details": {}
  },
  "request_id": "<string>"
}
```

**404**: Codici possibili: resource_not_found

- `error` (`object`, required)
- `error.type` (`string`, required)
- `error.code` (`string`, required)
- `error.message` (`string`, required)
- `error.param` (`string`)
- `error.docs_url` (`string`, required)
- `error.action_url` (`string<uri>`)
- `error.details` (`Record<string, object>`)
- `request_id` (`string`, required)

```json
{
  "error": {
    "type": "<string>",
    "code": "<string>",
    "message": "<string>",
    "param": "<string>",
    "docs_url": "<string>",
    "action_url": "<string>",
    "details": {}
  },
  "request_id": "<string>"
}
```

**409**: Codici possibili: conflict, result_not_ready, idempotency_key_reused

- `error` (`object`, required)
- `error.type` (`string`, required)
- `error.code` (`string`, required)
- `error.message` (`string`, required)
- `error.param` (`string`)
- `error.docs_url` (`string`, required)
- `error.action_url` (`string<uri>`)
- `error.details` (`Record<string, object>`)
- `request_id` (`string`, required)

```json
{
  "error": {
    "type": "<string>",
    "code": "<string>",
    "message": "<string>",
    "param": "<string>",
    "docs_url": "<string>",
    "action_url": "<string>",
    "details": {}
  },
  "request_id": "<string>"
}
```

**410**: Codici possibili: result_expired

- `error` (`object`, required)
- `error.type` (`string`, required)
- `error.code` (`string`, required)
- `error.message` (`string`, required)
- `error.param` (`string`)
- `error.docs_url` (`string`, required)
- `error.action_url` (`string<uri>`)
- `error.details` (`Record<string, object>`)
- `request_id` (`string`, required)

```json
{
  "error": {
    "type": "<string>",
    "code": "<string>",
    "message": "<string>",
    "param": "<string>",
    "docs_url": "<string>",
    "action_url": "<string>",
    "details": {}
  },
  "request_id": "<string>"
}
```

**413**: Codici possibili: request_too_large

- `error` (`object`, required)
- `error.type` (`string`, required)
- `error.code` (`string`, required)
- `error.message` (`string`, required)
- `error.param` (`string`)
- `error.docs_url` (`string`, required)
- `error.action_url` (`string<uri>`)
- `error.details` (`Record<string, object>`)
- `request_id` (`string`, required)

```json
{
  "error": {
    "type": "<string>",
    "code": "<string>",
    "message": "<string>",
    "param": "<string>",
    "docs_url": "<string>",
    "action_url": "<string>",
    "details": {}
  },
  "request_id": "<string>"
}
```

**422**: Codici possibili: request_too_large_for_plan

- `error` (`object`, required)
- `error.type` (`string`, required)
- `error.code` (`string`, required)
- `error.message` (`string`, required)
- `error.param` (`string`)
- `error.docs_url` (`string`, required)
- `error.action_url` (`string<uri>`)
- `error.details` (`Record<string, object>`)
- `request_id` (`string`, required)

```json
{
  "error": {
    "type": "<string>",
    "code": "<string>",
    "message": "<string>",
    "param": "<string>",
    "docs_url": "<string>",
    "action_url": "<string>",
    "details": {}
  },
  "request_id": "<string>"
}
```

**429**: Codici possibili: rate_limited

- `error` (`object`, required)
- `error.type` (`string`, required)
- `error.code` (`string`, required)
- `error.message` (`string`, required)
- `error.param` (`string`)
- `error.docs_url` (`string`, required)
- `error.action_url` (`string<uri>`)
- `error.details` (`Record<string, object>`)
- `request_id` (`string`, required)

```json
{
  "error": {
    "type": "<string>",
    "code": "<string>",
    "message": "<string>",
    "param": "<string>",
    "docs_url": "<string>",
    "action_url": "<string>",
    "details": {}
  },
  "request_id": "<string>"
}
```

**500**: Codici possibili: internal_error

- `error` (`object`, required)
- `error.type` (`string`, required)
- `error.code` (`string`, required)
- `error.message` (`string`, required)
- `error.param` (`string`)
- `error.docs_url` (`string`, required)
- `error.action_url` (`string<uri>`)
- `error.details` (`Record<string, object>`)
- `request_id` (`string`, required)

```json
{
  "error": {
    "type": "<string>",
    "code": "<string>",
    "message": "<string>",
    "param": "<string>",
    "docs_url": "<string>",
    "action_url": "<string>",
    "details": {}
  },
  "request_id": "<string>"
}
```

**503**: Codici possibili: service_unavailable

- `error` (`object`, required)
- `error.type` (`string`, required)
- `error.code` (`string`, required)
- `error.message` (`string`, required)
- `error.param` (`string`)
- `error.docs_url` (`string`, required)
- `error.action_url` (`string<uri>`)
- `error.details` (`Record<string, object>`)
- `request_id` (`string`, required)

```json
{
  "error": {
    "type": "<string>",
    "code": "<string>",
    "message": "<string>",
    "param": "<string>",
    "docs_url": "<string>",
    "action_url": "<string>",
    "details": {}
  },
  "request_id": "<string>"
}
```

**Example request**

```bash
curl --request GET \
  --url 'https://api.atelier201.com/v1/sites/<site_id>/pages' \
  --header 'Authorization: <api-key>'
```
