> This page is for version 0.2.1.
> For other versions, use one of these documentation indexes:
> - Main (default): https://docs.nvidia.com/nemo/gym/main/llms.txt
> - 0.7.0: https://docs.nvidia.com/nemo/gym/v0.7.0/llms.txt
> - 0.6.0: https://docs.nvidia.com/nemo/gym/v0.6.0/llms.txt
> - 0.5.1: https://docs.nvidia.com/nemo/gym/v0.5.1/llms.txt
> - 0.5.0: https://docs.nvidia.com/nemo/gym/v0.5.0/llms.txt
> - 0.4.0: https://docs.nvidia.com/nemo/gym/v0.4.0/llms.txt
> - 0.3.0: https://docs.nvidia.com/nemo/gym/v0.3.0/llms.txt
> - 0.2.1: https://docs.nvidia.com/nemo/gym/v0.2.1/llms.txt

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.nvidia.com/nemo/gym/llms.txt.

# nemo_gym.web.api_models

Backend-neutral HTTP models for stateful web resource servers.

These models live in the dependency-light web protocol package so agents do
not import a concrete browser or computer-control backend.
Resource servers may re-export them for compatibility, but all backends must
preserve this wire contract.

## Module Contents

### Classes

| Name                                                                            | Description                                                           |
| ------------------------------------------------------------------------------- | --------------------------------------------------------------------- |
| [`WebCloseResponse`](#nemo_gym-web-api_models-WebCloseResponse)                 | -                                                                     |
| [`WebEvaluateRequest`](#nemo_gym-web-api_models-WebEvaluateRequest)             | -                                                                     |
| [`WebEvaluateResponse`](#nemo_gym-web-api_models-WebEvaluateResponse)           | -                                                                     |
| [`WebResetRequest`](#nemo_gym-web-api_models-WebResetRequest)                   | -                                                                     |
| [`WebSeedSessionRequest`](#nemo_gym-web-api_models-WebSeedSessionRequest)       | -                                                                     |
| [`WebSeedSessionResponse`](#nemo_gym-web-api_models-WebSeedSessionResponse)     | -                                                                     |
| [`WebSessionIdentity`](#nemo_gym-web-api_models-WebSessionIdentity)             | Caller-owned identity for retrying seed and closing without a cookie. |
| [`WebSessionStatusResponse`](#nemo_gym-web-api_models-WebSessionStatusResponse) | -                                                                     |
| [`WebStepRequest`](#nemo_gym-web-api_models-WebStepRequest)                     | -                                                                     |
| [`WebStepResponse`](#nemo_gym-web-api_models-WebStepResponse)                   | -                                                                     |
| [`WebVerifyRequest`](#nemo_gym-web-api_models-WebVerifyRequest)                 | -                                                                     |
| [`WebVerifyResponse`](#nemo_gym-web-api_models-WebVerifyResponse)               | -                                                                     |

### API

```python
class nemo_gym.web.api_models.WebCloseResponse()
```

**Bases:** `BaseModel`

**`closed`** `bool`

---

**`failure_kind`** `str | None = None`

---

**`failure_reason`** `str | None = None`

---

**`recording_artifacts`** `list[WebArtifactRef] = Field(default_factory=list)`

---

**`session_id`** `Optional[str] = None`

---

```python
class nemo_gym.web.api_models.WebEvaluateRequest()
```

**Bases:** `BaseModel`

**`final_answer`** `Optional[str] = None`

---

```python
class nemo_gym.web.api_models.WebEvaluateResponse()
```

**Bases:** `BaseModel`

**`result`** `WebVerifierResult`

---

```python
class nemo_gym.web.api_models.WebResetRequest()
```

**Bases:** `BaseModel`

**`task`** `WebTask`

---

```python
class nemo_gym.web.api_models.WebSeedSessionRequest()
```

**Bases:** [WebSessionIdentity](#nemo_gym-web-api_models-WebSessionIdentity), [BaseSeedSessionRequest](/nemo/gym/nemo-gym/nemo_gym/server_runtime/base_resources_server#nemo_gym-server_runtime-base_resources_server-BaseSeedSessionRequest)

**`model_config`** `= ConfigDict(extra='allow')`

---

**`task`** `WebTask`

---

```python
class nemo_gym.web.api_models.WebSeedSessionResponse()
```

**Bases:** [BaseSeedSessionResponse](/nemo/gym/nemo-gym/nemo_gym/server_runtime/base_resources_server#nemo_gym-server_runtime-base_resources_server-BaseSeedSessionResponse)

**`info`** `dict[str, Any] = Field(default_factory=dict)`

---

**`observation`** `WebObservation`

---

**`session_id`** `str`

---

**`status`** `str`

---

**`task_id`** `str`

---

```python
class nemo_gym.web.api_models.WebSessionIdentity()
```

**Bases:** `BaseModel`

Caller-owned identity for retrying seed and closing without a cookie.

Field aliases follow the proposed core session lifecycle contract. The
capability never belongs in policy messages, rollout results or logs.
Legacy cookie-only clients may omit both fields.

**`close_token`** `SecretStr | None`

---

**`session_identity`** `str | None`

---

```python
nemo_gym.web.api_models.WebSessionIdentity.require_identity_pair() -> 'WebSessionIdentity'
```

```python
class nemo_gym.web.api_models.WebSessionStatusResponse()
```

**Bases:** `BaseModel`

**`benchmark`** `str`

---

**`browser_lease_id`** `Optional[str] = None`

---

**`browser_provider`** `Optional[str] = None`

---

**`browser_transport`** `Optional[str] = None`

---

**`created_at`** `float`

---

**`last_access_at`** `float`

---

**`session_id`** `str`

---

**`site_lease_id`** `str`

---

**`status`** `str`

---

**`task_id`** `str`

---

```python
class nemo_gym.web.api_models.WebStepRequest()
```

**Bases:** `BaseModel`

**`action`** `WebAction`

---

**`operation_id`** `str`

---

```python
class nemo_gym.web.api_models.WebStepResponse()
```

**Bases:** [WebStepResult](/nemo/gym/nemo-gym/nemo_gym/web/models#nemo_gym-web-models-WebStepResult)

**`operation_id`** `str`

---

```python
class nemo_gym.web.api_models.WebVerifyRequest()
```

**Bases:** [BaseVerifyRequest](/nemo/gym/nemo-gym/nemo_gym/server_runtime/base_resources_server#nemo_gym-server_runtime-base_resources_server-BaseVerifyRequest)

**`final_answer`** `Optional[str] = None`

---

**`model_config`** `= ConfigDict(extra='allow')`

---

```python
class nemo_gym.web.api_models.WebVerifyResponse()
```

**Bases:** [BaseVerifyResponse](/nemo/gym/nemo-gym/nemo_gym/server_runtime/base_resources_server#nemo_gym-server_runtime-base_resources_server-BaseVerifyResponse)

**`cleanup_failure_kind`** `str | None = None`

---

**`cleanup_failure_reason`** `str | None = None`

---

**`failure_kind`** `Optional[str] = None`

---

**`mask_sample`** `bool = False`

---

**`model_config`** `= ConfigDict(extra='allow')`

---

**`raw_score`** `float = 0.0`

---

**`task_success`** `bool = False`

---