Instance Management API
Section titled “Instance Management API”The Instance Management API exposes the runtime assets of a Hoody Code container. Use these endpoints to inspect the currently installed VS Code extensions and to install new extensions from a remote VSIX URL, which is useful for automated provisioning, custom extension distribution, and LLM-driven environment setup.
All endpoints are scoped to a single container and are reached via the container-scoped hostname.
Extensions
Section titled “Extensions”GET /api/v1/code/extensions/list
Section titled “GET /api/v1/code/extensions/list”Returns a list of all installed VS Code extensions in the extensions directory.
This endpoint is useful for:
- Verifying extension installation
- Inventory management
- Debugging extension issues
- Automated testing
This endpoint takes no parameters.
curl -X GET "https://{projectId}-{containerId}-code-1.{server}.containers.hoody.com/api/v1/code/extensions/list" \ -H "Authorization: Bearer $HOODY_TOKEN"import { HoodyClient } from 'hoody-sdk';
const client = new HoodyClient({ baseURL: 'https://{projectId}-{containerId}-code-1.{server}.containers.hoody.com', token: process.env.HOODY_TOKEN });
await client.code.extensions.listIterator();Response
Section titled “Response”Extensions installed:
{ "success": true, "extensionsDir": "/home/user/.local/share/hoody-code/extensions", "count": 3, "extensions": [ "ms-python.python-2023.1.0", "ms-toolsai.jupyter-2023.2.0", "github.copilot-1.67.0" ]}No extensions installed:
{ "success": true, "extensionsDir": "/home/user/.local/share/hoody-code/extensions", "count": 0, "extensions": []}{ "success": false, "error": "Failed to read extensions directory"}POST /api/v1/code/extensions/install
Section titled “POST /api/v1/code/extensions/install”Install a VS Code extension by downloading and installing a VSIX file from a URL.
This endpoint allows remote installation of extensions, perfect for:
- Automated deployment workflows
- Custom extension distribution
- Programmatic extension management
- LLM-driven extension installation
The VSIX file is downloaded to a cache directory and then installed using VS Code’s extension manager. If the extension is already cached, the cached version is used.
This endpoint takes no parameters.
Request Body
Section titled “Request Body”| Name | Type | Required | Description |
|---|---|---|---|
url | string | Yes | URL to the VSIX file to install. Supports HTTPS URLs (recommended) and HTTP URLs |
asBuiltin | boolean | No | If true, install as a system/built-in extension. Built-in extensions cannot be uninstalled by users. Default: false |
curl -X POST "https://{projectId}-{containerId}-code-1.{server}.containers.hoody.com/api/v1/code/extensions/install" \ -H "Authorization: Bearer $HOODY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "url": "https://github.com/microsoft/vscode-python/releases/download/2023.1.0/ms-python-python-2023.1.0.vsix", "asBuiltin": false }'import { HoodyClient } from 'hoody-sdk';
const client = new HoodyClient({ baseURL: 'https://{projectId}-{containerId}-code-1.{server}.containers.hoody.com', token: process.env.HOODY_TOKEN });
await client.code.extensions.install({ url: 'https://github.com/microsoft/vscode-python/releases/download/2023.1.0/ms-python-python-2023.1.0.vsix', asBuiltin: false,});Response
Section titled “Response”{ "success": true, "message": "Extension installed successfully", "url": "https://example.com/my-extension.vsix", "vsixPath": "/home/user/.local/share/hoody-code/vsix-cache/a1b2c3d4e5f6-my-extension.vsix", "asBuiltin": false, "installed": true}Missing URL:
{ "success": false, "error": "Missing or invalid 'url' parameter"}Invalid URL format:
{ "success": false, "error": "Invalid URL: not-a-url", "url": "not-a-url"}| Error Code | Title | Description | Resolution |
|---|---|---|---|
MISSING_URL | Missing URL parameter | The required url parameter was not provided | Include a valid VSIX URL in the request body |
INVALID_URL_FORMAT | Invalid URL format | The provided URL is not a valid HTTPS or HTTP URL | Check the URL format and try again |
Download failed:
{ "success": false, "error": "HTTP 404 while downloading https://example.com/missing.vsix", "url": "https://example.com/missing.vsix"}Installation failed:
{ "success": false, "error": "Installation failed: Extension is incompatible", "url": "https://example.com/extension.vsix"}| Error Code | Title | Description | Resolution |
|---|---|---|---|
DOWNLOAD_FAILED | Failed to download VSIX | Unable to download the extension file from the provided URL | Check if the URL is accessible and try again |
INSTALLATION_FAILED | Extension installation failed | VS Code failed to install the extension (may be incompatible or corrupted) | Verify the VSIX file is valid and compatible with this VS Code version |