## List generation fields

`GET /v1/sites/ai/fields`

Lists field definitions for generation responses.

## Parameters

| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| `select[]` (query) | array<string> | No | All properties | Field definition properties, for example `name`, `type`, `title`. These are properties of each definition, not field names in the generation response |

## Examples

### curl — personal key

```bash
curl -X GET "https://vibecode.bitrix24.com/v1/sites/ai/fields" \
  -H "X-Api-Key: YOUR_API_KEY"
```

### curl — OAuth application

```bash
curl -X GET "https://vibecode.bitrix24.com/v1/sites/ai/fields" \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN"
```

### JavaScript — personal key

```javascript
const res = await fetch("https://vibecode.bitrix24.com/v1/sites/ai/fields", {
  "method": "GET",
  "headers": {
    "X-Api-Key": "YOUR_API_KEY"
  }
});
const result = await res.json();
console.log(result);
```

### JavaScript — OAuth application

```javascript
const res = await fetch("https://vibecode.bitrix24.com/v1/sites/ai/fields", {
  "method": "GET",
  "headers": {
    "X-Api-Key": "YOUR_APP_KEY",
    "Authorization": "Bearer USER_SESSION_TOKEN"
  }
});
const result = await res.json();
console.log(result);
```

## Response fields

| Field | Type | Description |
|---|---|---|
| `success` | boolean | `true` on success |
| `data` | array | Generation field definitions |
| `data[].name` | string | Field name |
| `data[].type` | string | Value type |
| `data[].title` | string | Field title |
| `data[].description` | string \| null | Field description or null |
| `data[].validationRules` | array | Validation rules |
| `data[].requiredGroups` | array \| null | Required groups or null |
| `data[].filterable` | boolean | Can be filtered |
| `data[].sortable` | boolean | Can be sorted |
| `data[].editable` | boolean | Can be edited |
| `data[].editableGroups` | array \| null | Editing groups or null |
| `data[].multiple` | boolean | Multiple values |
| `data[].elementType` | string \| null | Element type or null |

## Response example

```json
{
  "success": true,
  "data": [
    {
      "name": "id",
      "type": "int",
      "title": "Site generation identifier",
      "description": null,
      "validationRules": [],
      "requiredGroups": null,
      "filterable": false,
      "sortable": false,
      "editable": false,
      "editableGroups": null,
      "multiple": false,
      "elementType": null
    },
    {
      "name": "status",
      "type": "string",
      "title": "Generation status: running, completed or failed",
      "description": null,
      "validationRules": [],
      "requiredGroups": null,
      "filterable": false,
      "sortable": false,
      "editable": false,
      "editableGroups": null,
      "multiple": false,
      "elementType": null
    },
    {
      "name": "siteId",
      "type": "int",
      "title": "Generated site identifier, 0 until the site is created",
      "description": null,
      "validationRules": [],
      "requiredGroups": null,
      "filterable": false,
      "sortable": false,
      "editable": false,
      "editableGroups": null,
      "multiple": false,
      "elementType": null
    },
    {
      "name": "pageId",
      "type": "int",
      "title": "Generated page identifier, 0 until the page is created",
      "description": null,
      "validationRules": [],
      "requiredGroups": null,
      "filterable": false,
      "sortable": false,
      "editable": false,
      "editableGroups": null,
      "multiple": false,
      "elementType": null
    },
    {
      "name": "draftSiteId",
      "type": "int",
      "title": "Draft site identifier of a failed generation that got as far as creating one, 0 otherwise",
      "description": null,
      "validationRules": [],
      "requiredGroups": null,
      "filterable": false,
      "sortable": false,
      "editable": false,
      "editableGroups": null,
      "multiple": false,
      "elementType": null
    },
    {
      "name": "draftPageId",
      "type": "int",
      "title": "Draft page identifier of a failed generation that got as far as creating one, 0 otherwise",
      "description": null,
      "validationRules": [],
      "requiredGroups": null,
      "filterable": false,
      "sortable": false,
      "editable": false,
      "editableGroups": null,
      "multiple": false,
      "elementType": null
    },
    {
      "name": "message",
      "type": "string",
      "title": "Human readable generation state, a text for the user - branch on status, not on it",
      "description": null,
      "validationRules": [],
      "requiredGroups": null,
      "filterable": false,
      "sortable": false,
      "editable": false,
      "editableGroups": null,
      "multiple": false,
      "elementType": null
    },
    {
      "name": "error",
      "type": "string",
      "title": "Human readable failure reason, null unless the status is failed",
      "description": null,
      "validationRules": [],
      "requiredGroups": null,
      "filterable": false,
      "sortable": false,
      "editable": false,
      "editableGroups": null,
      "multiple": false,
      "elementType": null
    },
    {
      "name": "errorDetails",
      "type": "string",
      "title": "Exact wording of the request limit that stopped the generation, null when something else did",
      "description": null,
      "validationRules": [],
      "requiredGroups": null,
      "filterable": false,
      "sortable": false,
      "editable": false,
      "editableGroups": null,
      "multiple": false,
      "elementType": null
    }
  ]
}
```

## Error response example

The request `GET /v1/sites/ai/fields?select[]=FAKE_UNKNOWN_FIELD` selects an unknown field definition property. Bitrix24 returns this error. An unknown field name in `GET /v1/sites/ai/fields/FAKE_UNKNOWN_FIELD` is a different case: it returns `ENTITY_NOT_FOUND` (404).

```json
{
  "success": false,
  "error": {
    "code": "BITRIX_ERROR",
    "message": "Unknown field `FAKE_UNKNOWN_FIELD` for entity `DtoFieldDto`",
    "b24Code": "BITRIX_REST_V3_EXCEPTION_UNKNOWNDTOPROPERTYEXCEPTION"
  }
}
```

## Errors

| HTTP | Code | Description |
|---|---|---|
| 422 | `BITRIX_ERROR` | Bitrix24 refused the request |
| 401 | `MISSING_API_KEY`, `INVALID_API_KEY`, `TOKEN_MISSING` | Missing or unusable credentials |
| 403 | `SCOPE_DENIED` | The key lacks the landing scope |

[Common errors](/docs/errors).

## See also

- [AI site generation](../ai.md)
