> ## 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 a skill revision

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

## Behavior

History is never rewritten: the content of revision `number` becomes the skill's next [revision](https://hub.hcompany.ai/agents-api/skills/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 `name:N`. Restoring content equal to the current one changes nothing.

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

## Headers

**If-Match** `string`

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

## Path parameters

**name** `string` *required*

The skill's `name`, for example `acme/excel` or `extract-table-data`.

**number** `integer` *required*

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

## Response

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

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

client = Client()

skill = client.skills.restore_skill_revision(name="acme/excel", number=1, if_match='"2"')
print(skill.body)
```

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

const client = new HaiAgentsClient();

const skill = await client.skills.restoreSkillRevision({ name: "acme/excel", number: 1, ifMatch: '"2"' });
console.log(skill.body);
```

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

```json 200 theme={"system"}
{
  "name": "acme/excel",
  "description": "Use when the task reads or edits an Excel workbook.",
  "body": "Read each sheet as a table, with the header row as keys.",
  "source": null,
  "url_pattern": null,
  "compatibility": null,
  "files": {},
  "executable_files": []
}
```

## Errors

| Status | Cause |
| - | - |
| `400` | The path carries a `name:N` pin, or `If-Match` is not a single revision tag. |
| `403` | The skill is reserved (`h/`) and read-only. |
| `404` | Not found, or not in your organization. Also sent for an unknown revision. |
| `410` | The revision's stored content 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.