> ## Documentation Index
> Fetch the complete documentation index at: https://hub.hcompany.ai/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> H Platform has three products: the Agents API (managed computer-use agents, base URL https://agp.eu.hcompany.ai/api/v2 or https://agp.hcompany.ai/api/v2 for the US), the Models API (OpenAI-compatible Holo vision-language models at https://api.hcompany.ai/v1), and HoloTab (a free no-code Chrome extension that runs Holo in the user's browser, with recordable routines and schedules). The `holo` CLI (`pip install "hai-agents[cli]"`) runs Agents API agents from a terminal, drives the user's own desktop with `-a h/holo-desktop`, and serves coding agents through `holo mcp`.
> Authenticate with a bearer API key from the HAI_API_KEY environment variable. SDKs: `pip install hai-agents` (Python, `from hai_agents import Client`) and `npm install hai-agents` (TypeScript, `import { HaiAgentsClient } from "hai-agents"`). CLI: `holo`.
> Agents do work in a browser or on a desktop; describe the task as an imperative instruction. To run a task quickly, prefer the pre-built agent `h/web-surfer-flash`. Read results from the session's `latest_answer` after it reaches a terminal status.
> Sessions are the unit of work; wait for a terminal status (completed, failed, timed_out, interrupted) before reading the answer. Use webhooks or the `changes` long-poll endpoint to follow progress.

# Restore an environment revision

> Restore an earlier revision's spec as a new revision.

## Behavior

History is never rewritten: the spec of revision `number` becomes the environment's next [revision](https://hub.hcompany.ai/agents-api/environments/overview.md#revisions), with the message `Restored from vN` and `restored_from` set to `N`. Agents use it from their next session, except those pinned to another revision with `id:N`. Restoring a spec equal to the current one changes nothing.

The restored spec is checked like an [update](https://hub.hcompany.ai/agents-api/environments/update.md).

## Headers

**If-Match** `string`

The `ETag` of the revision you based this rollback on, for example `"2"`. If the environment has moved past it, the restore fails with `412`. Omit it, or send `*`, to restore regardless.

## Path parameters

**id** `string` *required*

The environment's `id`, for example `wide-browser` or `myorg/wide-browser`.

**number** `integer` *required*

The revision to restore, from [List revisions](https://hub.hcompany.ai/agents-api/environments/list-revisions.md).

## Response

`200` with the restored [environment object](https://hub.hcompany.ai/agents-api/environments/retrieve.md#response), with its new revision in the `ETag` header.

```python Python theme={"system"}
from hai_agents import Client

client = Client()

environment = client.environments.restore_environment_revision("wide-browser", number=1, if_match='"2"')
print(environment.start_url)
```

```typescript TypeScript theme={"system"}
import { HaiAgentsClient } from "hai-agents";

const client = new HaiAgentsClient();

const environment = await client.environments.restoreEnvironmentRevision({ id: "wide-browser", number: 1, ifMatch: '"2"' });
if (environment.kind === "web") {
  console.log(environment.startUrl);
}
```

```bash cURL theme={"system"}
curl -X POST https://agp.eu.hcompany.ai/api/v2/environments/wide-browser/revisions/1/restore \
  -H "Authorization: Bearer $HAI_API_KEY" \
  -H 'If-Match: "2"'
```

```json 200 theme={"system"}
{
  "id": "wide-browser",
  "kind": "web",
  "host": "cloud",
  "start_url": "https://www.google.com",
  "headless": false,
  "session_id": null,
  "mode": {"type": "visual", "width": 1920, "height": 1080, "markdown": false},
  "lazy": false,
  "settle_s": 1.0,
  "vault_id": null,
  "browser_profile_id": null,
  "use_default_browser_profile": false,
  "persist_browser_profile": false,
  "network": null
}
```

## Errors

| Status | Cause |
| - | - |
| `400` | The path carries an `id:N` pin, or `If-Match` is not a single revision tag. |
| `403` | The environment is reserved (`h/`) and read-only, or in preview (`environment_not_public`). |
| `404` | Not found, or not in your organization. Also sent for an unknown revision. |
| `410` | The revision's stored spec fails current validation. |
| `412` | `If-Match` names a revision that isn't the current one. The `ETag` header has the current one. |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.