This reference is currently available in English. The Cloud console remains in your selected language.
BEEOS CLOUD / DEVELOPER REFERENCE
Catalog
Providers, deploy regions and models, instance and agent templates, and the protocol discovery document.
Overview
The catalog domain lists what you can choose from when you create resources: providers, deploy regions and models, instance templates, and agent templates. It also serves the protocol discovery document, which needs no authentication.
8 operations · SDK resource: TypeScript cloud.catalog · Python cloud.catalog · Go cloud.Catalog · API overview
Operations whose path starts with /uhp/v1 are served from https://api.cloud.beeos.ai/uhp/v1 instead of https://api.cloud.beeos.ai/v1; the SDKs switch automatically.
Main objects
InstanceTemplate(with itsCatalogVariantentries): a template whose published variant you pick when you create an instance.Provider,DeployRegion, andDeployModel: where and with what models instances can run.agentTemplateCatalogView: an agent template.UHPDiscovery: the protocol discovery document.
InstanceTemplate
| Field | Type | Required | Description |
|---|---|---|---|
id | string | yes | ID of the template. |
name | string | yes | Display name of the template. |
description | string | no | Description of the template. |
logo_url | string | no | — |
sort_order | integer | no | — |
harness | string | no | — |
provider_id | string | no | — |
specs | array<CatalogSpec> | no | — |
variants | array<CatalogVariant> | no | Deployable variants of the template. Send a variant's id as variant_id when creating an instance. |
Every field, and the methods that use this object: appendix.
CatalogVariant
| Field | Type | Required | Description |
|---|---|---|---|
id | string | yes | ID of the variant. Send it as variant_id when creating an instance. |
spec_value_ids | array<string> | yes | — |
sort_order | integer | yes | — |
Every field, and the methods that use this object: appendix.
Provider
| Field | Type | Required | Description |
|---|---|---|---|
id | string | yes | ID of the provider. |
name | string | yes | Display name of the provider. |
description | string | no | — |
capabilities | ProviderCapabilities | no | — |
Every field, and the methods that use this object: appendix.
DeployRegion
| Field | Type | Required | Description |
|---|---|---|---|
id | string | yes | ID of the region. |
name | string | yes | Display name of the region. |
available | boolean | yes | Whether the region is currently available. |
Every field, and the methods that use this object: appendix.
DeployModel
| Field | Type | Required | Description |
|---|---|---|---|
id | string | yes | ID of the model, usually in provider/model form. |
name | string | yes | Display name of the model. |
tier | string | no | — |
reasoning | boolean | no | — |
input | array<string> | no | — |
context_window | integer | no | Maximum context window of the model, in tokens. |
Every field, and the methods that use this object: appendix.
agentTemplateCatalogView
| Field | Type | Required | Description |
|---|---|---|---|
id | string | yes | ID of the template. Pass it as template_id when creating a harness from the template. |
display_name | string | yes | Display name of the template, in the language of Accept-Language when a translation exists. |
summary | string | yes | One-line summary of what the template is for, localized like display_name. |
description | string | yes | Full description of the template, localized like display_name. |
category | string | yes | Category the template is listed under. Use it as the category filter of the list operation. |
vibe | string | yes | Short phrase describing the personality of the agent the template creates, localized like display_name. |
icon_url | string | yes | URL of the template icon. Empty when the template has none. |
banner_url | string | yes | URL of the template banner image. Empty when the template has none. |
default_model | string | yes | ID of the model the template selects as the agent's primary model. |
tags | array<string> | yes | Tags that describe the template. |
harness | string | yes | Harness (agent runtime) the template is applied to, for example openclaw. |
template_version | string | yes | Version of the template package, as a semantic version such as 1.2.0. |
Every field, and the methods that use this object: appendix.
UHPDiscovery
| Field | Type | Required | Description |
|---|---|---|---|
object | string | yes | Object type: always uhp.discovery. Allowed values: "uhp.discovery" — A protocol discovery document. |
protocol | string | yes | Protocol the server speaks: always uhp, the Unified Harness Protocol. Allowed values: "uhp" — The Unified Harness Protocol. |
versions | array<string> | yes | Protocol versions the server speaks, as values of the UHP-Version header. Constraints: minItems=1. |
default_version | string | yes | Protocol version the server uses when a request does not send a UHP-Version header. |
conformance_class | string | yes | Coarse conformance class of the server. Branch on the flags in capabilities, which are exact, rather than on the class. Allowed values: "core" — Discovery, harness reads, tasks and sessions; "extended" — Core plus file input and artifact retrieval; "full" — Extended plus harness management, plugins, environments and memories. (enum table) |
capabilities | UHPCapabilities | yes | What the server can do. A flag is true only when the endpoints behind it answer. |
plugin_schemas | array<string> | no | The Agent Plugins manifest schema identifiers this server installs. Present and non-empty when capabilities.plugins is true. |
implementation | object | no | Information about the server. Besides name and version it may carry availability, a statement of how model availability is computed. |
implementation.name | string | no | Name of the server implementation: BeeOS Cloud. |
implementation.version | string | no | Version of the server implementation. Omitted when it is not known. |
Every field, and the methods that use this object: appendix.
CatalogSpec
| Field | Type | Required | Description |
|---|---|---|---|
id | string | yes | — |
name | string | yes | — |
label | string | yes | — |
values | array<CatalogSpecValue> | yes | — |
Every field, and the methods that use this object: appendix.
ProviderCapabilities
| Field | Type | Required | Description |
|---|---|---|---|
long_running | boolean | yes | — |
browser_use | boolean | yes | — |
code_exec | boolean | yes | — |
file_system | boolean | yes | — |
custom_image | boolean | yes | — |
device | boolean | yes | — |
max_duration_sec | integer | yes | — |
cost_model | string | yes | — |
Every field, and the methods that use this object: appendix.
UHPCapabilities
Named booleans. A server reports false for a capability it does not implement rather than omitting it, so a client can distinguish "not supported" from "server predates this field". A client treats an absent key as false.
| Field | Type | Required | Description |
|---|---|---|---|
streaming | boolean | no | The server can stream a response as server-sent events. |
sessions | boolean | no | The server keeps sessions that later requests can continue. |
cancellation | boolean | no | A running response can be cancelled. |
files_input | boolean | no | The server accepts files as input to a request. |
files_output | boolean | no | The server returns files that a harness produced. |
session_listing | boolean | no | The server can list existing sessions. |
harness_management | boolean | no | Harnesses can be created, updated and deleted through the API. |
session_sharing | boolean | no | The server can share a session with other callers. |
idempotency | boolean | no | The server honors the Idempotency-Key header on the writes that accept it. |
plugins | boolean | no | The server installs Agent Plugins packages into harnesses, serves their files, and exports a harness as a package. Optional at every class. |
environments | boolean | no | The server holds environments: a project's files and installed dependencies, built once, read-only at a fixed path in every session that names one. Optional at every class. |
memories | boolean | no | The server holds memories: a tree of memories with access granted per node, records kept by a connected provider, and tools a harness's agent reaches them with. Optional at every class. |
Every field, and the methods that use this object: appendix.
Typical flow
- List the templates with
catalog.listInstanceTemplatesand read one withcatalog.getInstanceTemplateto choose a variant. - Check the choices for placement and models with
catalog.listProviders,catalog.listRegions, andcatalog.listModels. - Create the instance with
instances.create. catalog.listAgentTemplatesandcatalog.getAgentTemplatelist the agent templates;catalog.getDiscoverytells a client which protocol versions the server speaks.
Methods
| Method | HTTP | Summary |
|---|---|---|
| catalog.listAgentTemplates | GET /v1/agent-templates | List agent templates |
| catalog.getAgentTemplate | GET /v1/agent-templates/{id} | Get an agent template |
| catalog.listModels | GET /v1/deploy/models | List deploy models |
| catalog.listRegions | GET /v1/deploy/regions | List deploy regions |
| catalog.listInstanceTemplates | GET /v1/instance-templates | List instance templates |
| catalog.getInstanceTemplate | GET /v1/instance-templates/{templateId} | Get an instance template |
| catalog.listProviders | GET /v1/providers | List providers |
| catalog.getDiscovery | GET /uhp/v1/uhp | Protocol discovery document |
catalog.listAgentTemplates
GET /v1/agent-templates · Operation ID listAgentTemplates
List agent templates
SDK methods
| Language | Method | Signature |
|---|---|---|
| TypeScript | cloud.catalog.listAgentTemplates | listAgentTemplates(query?: Models.ListAgentTemplatesQuery): Promise<Models.ListAgentTemplatesResponse> |
| Python | cloud.catalog.list_agent_templates | def list_agent_templates(self, options: ListAgentTemplatesOptions | None = None) -> ListAgentTemplatesResponse |
| Go | cloud.Catalog.ListAgentTemplates | func (r *CatalogResource) ListAgentTemplates(ctx context.Context, options ListAgentTemplatesOptions) (ListAgentTemplatesResponse, error) |
Parameters
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
category | query | string | no | Return only templates in this category, at most 128 characters. It must equal the category of the template. |
search | query | string | no | Case-insensitive substring match on the template's display name or summary, at most 256 characters. |
page | query | integer | no | 1-based page number, from 1 to 1000000. Defaults to 1. |
page_size | query | integer | no | Number of templates per page, from 1 to 100. Defaults to 50. |
Response
200 · application/json
| Field | Type | Required | Description |
|---|---|---|---|
data | array<agentTemplateCatalogView> | yes | — |
total | integer | yes | — |
Errors
| Status | Schema | Description |
|---|---|---|
| other (default) | ErrorResponse | Cloud Server error |
The error schemas are described in Errors.
Example
import { BeeOSClient } from "@beeos-ai/cloud-sdk";
const cloud = new BeeOSClient({
baseURL: "https://api.cloud.beeos.ai/v1",
apiKey: "YOUR_API_KEY", // bsk_ key: backend only
});
const result = await cloud.catalog.listAgentTemplates();
console.log(result);catalog.getAgentTemplate
GET /v1/agent-templates/{id} · Operation ID getAgentTemplate
Get an agent template
SDK methods
| Language | Method | Signature |
|---|---|---|
| TypeScript | cloud.catalog.getAgentTemplate | getAgentTemplate(id: string): Promise<Models.GetAgentTemplateResponse> |
| Python | cloud.catalog.get_agent_template | def get_agent_template(self, id: str) -> agentTemplateCatalogView |
| Go | cloud.Catalog.GetAgentTemplate | func (r *CatalogResource) GetAgentTemplate(ctx context.Context, id string) (agentTemplateCatalogView, error) |
Parameters
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes | ID of the agent template. |
Response
200 · application/json · Schema: agentTemplateCatalogView
| Field | Type | Required | Description |
|---|---|---|---|
id | string | yes | ID of the template. Pass it as template_id when creating a harness from the template. |
display_name | string | yes | Display name of the template, in the language of Accept-Language when a translation exists. |
summary | string | yes | One-line summary of what the template is for, localized like display_name. |
description | string | yes | Full description of the template, localized like display_name. |
category | string | yes | Category the template is listed under. Use it as the category filter of the list operation. |
vibe | string | yes | Short phrase describing the personality of the agent the template creates, localized like display_name. |
icon_url | string | yes | URL of the template icon. Empty when the template has none. |
banner_url | string | yes | URL of the template banner image. Empty when the template has none. |
default_model | string | yes | ID of the model the template selects as the agent's primary model. |
tags | array<string> | yes | Tags that describe the template. |
harness | string | yes | Harness (agent runtime) the template is applied to, for example openclaw. |
template_version | string | yes | Version of the template package, as a semantic version such as 1.2.0. |
Errors
| Status | Schema | Description |
|---|---|---|
| other (default) | ErrorResponse | Cloud Server error |
The error schemas are described in Errors.
Example
import { BeeOSClient } from "@beeos-ai/cloud-sdk";
const cloud = new BeeOSClient({
baseURL: "https://api.cloud.beeos.ai/v1",
apiKey: "YOUR_API_KEY", // bsk_ key: backend only
});
const result = await cloud.catalog.getAgentTemplate("id_123");
console.log(result);catalog.listModels
GET /v1/deploy/models · Operation ID listDeployModels
List deploy models
SDK methods
| Language | Method | Signature |
|---|---|---|
| TypeScript | cloud.catalog.listModels | listModels(query?: Models.ListDeployModelsQuery): Promise<Models.ListDeployModelsResponse> |
| Python | cloud.catalog.list_models | def list_models(self, options: ListDeployModelsOptions | None = None) -> ModelPage |
| Go | cloud.Catalog.ListModels | func (r *CatalogResource) ListModels(ctx context.Context, options ListDeployModelsOptions) (ModelPage, error) |
Parameters
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
harness | query | string | no | Not supported: sending it returns 400 invalid_request. |
search | query | string | no | Case-insensitive substring match on the model name. |
Response
200 Deploy models · application/json · Schema: ModelPage
| Field | Type | Required | Description |
|---|---|---|---|
data | array<DeployModel> | yes | Models that match the filters. |
total | integer | yes | Number of models that match the filters. |
Errors
| Status | Schema | Description |
|---|---|---|
| other (default) | ErrorResponse | Cloud Server error |
The error schemas are described in Errors.
Example
import { BeeOSClient } from "@beeos-ai/cloud-sdk";
const cloud = new BeeOSClient({
baseURL: "https://api.cloud.beeos.ai/v1",
apiKey: "YOUR_API_KEY", // bsk_ key: backend only
});
const result = await cloud.catalog.listModels();
console.log(result);catalog.listRegions
GET /v1/deploy/regions · Operation ID listDeployRegions
List deploy regions
SDK methods
| Language | Method | Signature |
|---|---|---|
| TypeScript | cloud.catalog.listRegions | listRegions(query?: Models.ListDeployRegionsQuery): Promise<Models.ListDeployRegionsResponse> |
| Python | cloud.catalog.list_regions | def list_regions(self, options: ListDeployRegionsOptions | None = None) -> RegionPage |
| Go | cloud.Catalog.ListRegions | func (r *CatalogResource) ListRegions(ctx context.Context, options ListDeployRegionsOptions) (RegionPage, error) |
Parameters
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
provider_id | query | string | no | Return only regions of this provider. |
available | query | boolean | no | true returns only available regions and false only unavailable ones. Any other value returns 400 invalid_request. |
Response
200 Deploy regions · application/json · Schema: RegionPage
| Field | Type | Required | Description |
|---|---|---|---|
data | array<DeployRegion> | yes | Regions that match the filters. |
total | integer | yes | Number of regions that match the filters. |
Errors
| Status | Schema | Description |
|---|---|---|
| other (default) | ErrorResponse | Cloud Server error |
The error schemas are described in Errors.
Example
import { BeeOSClient } from "@beeos-ai/cloud-sdk";
const cloud = new BeeOSClient({
baseURL: "https://api.cloud.beeos.ai/v1",
apiKey: "YOUR_API_KEY", // bsk_ key: backend only
});
const result = await cloud.catalog.listRegions();
console.log(result);catalog.listInstanceTemplates
GET /v1/instance-templates · Operation ID listInstanceTemplates
List instance templates
SDK methods
| Language | Method | Signature |
|---|---|---|
| TypeScript | cloud.catalog.listInstanceTemplates | listInstanceTemplates(query?: Models.ListInstanceTemplatesQuery): Promise<Models.ListInstanceTemplatesResponse> |
| Python | cloud.catalog.list_instance_templates | def list_instance_templates(self, options: ListInstanceTemplatesOptions | None = None) -> InstanceTemplatePage |
| Go | cloud.Catalog.ListInstanceTemplates | func (r *CatalogResource) ListInstanceTemplates(ctx context.Context, options ListInstanceTemplatesOptions) (InstanceTemplatePage, error) |
Parameters
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
page | query | integer | no | 1-based page number, from 1 to 1000000. Defaults to 1. Constraints: minimum=1, maximum=1000000. |
page_size | query | integer | no | Number of templates per page, from 1 to 100. Defaults to 50. Constraints: minimum=1, maximum=100. |
harness | query | string | no | Not supported: sending it returns 400 invalid_request. |
provider_id | query | string | no | Not supported: sending it returns 400 invalid_request. |
search | query | string | no | Not supported: sending it returns 400 invalid_request. |
Response
200 Instance templates · application/json · Schema: InstanceTemplatePage
| Field | Type | Required | Description |
|---|---|---|---|
data | array<InstanceTemplate> | yes | Templates on the requested page. |
total | integer | yes | Total number of templates that match the filters, across all pages. |
Errors
| Status | Schema | Description |
|---|---|---|
| other (default) | ErrorResponse | Cloud Server error |
The error schemas are described in Errors.
Example
import { BeeOSClient } from "@beeos-ai/cloud-sdk";
const cloud = new BeeOSClient({
baseURL: "https://api.cloud.beeos.ai/v1",
apiKey: "YOUR_API_KEY", // bsk_ key: backend only
});
const result = await cloud.catalog.listInstanceTemplates();
console.log(result);catalog.getInstanceTemplate
GET /v1/instance-templates/{templateId} · Operation ID getInstanceTemplate
Get an instance template
SDK methods
| Language | Method | Signature |
|---|---|---|
| TypeScript | cloud.catalog.getInstanceTemplate | getInstanceTemplate(id: string): Promise<Models.GetInstanceTemplateResponse> |
| Python | cloud.catalog.get_instance_template | def get_instance_template(self, template_id: str) -> InstanceTemplate |
| Go | cloud.Catalog.GetInstanceTemplate | func (r *CatalogResource) GetInstanceTemplate(ctx context.Context, templateId string) (InstanceTemplate, error) |
Parameters
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
templateId | path | string | yes | ID of the instance template. Constraints: minLength=1, maxLength=256. |
Response
200 Instance template · application/json · Schema: InstanceTemplate
| Field | Type | Required | Description |
|---|---|---|---|
id | string | yes | ID of the template. |
name | string | yes | Display name of the template. |
description | string | no | Description of the template. |
logo_url | string | no | — |
sort_order | integer | no | — |
harness | string | no | — |
provider_id | string | no | — |
specs | array<CatalogSpec> | no | — |
variants | array<CatalogVariant> | no | Deployable variants of the template. Send a variant's id as variant_id when creating an instance. |
Errors
| Status | Schema | Description |
|---|---|---|
| other (default) | ErrorResponse | Cloud Server error |
The error schemas are described in Errors.
Example
import { BeeOSClient } from "@beeos-ai/cloud-sdk";
const cloud = new BeeOSClient({
baseURL: "https://api.cloud.beeos.ai/v1",
apiKey: "YOUR_API_KEY", // bsk_ key: backend only
});
const result = await cloud.catalog.getInstanceTemplate("template_123");
console.log(result);catalog.listProviders
GET /v1/providers · Operation ID listProviders
List providers
SDK methods
| Language | Method | Signature |
|---|---|---|
| TypeScript | cloud.catalog.listProviders | listProviders(query?: Models.ListProvidersQuery): Promise<Models.ListProvidersResponse> |
| Python | cloud.catalog.list_providers | def list_providers(self, options: ListProvidersOptions | None = None) -> ProviderPage |
| Go | cloud.Catalog.ListProviders | func (r *CatalogResource) ListProviders(ctx context.Context, options ListProvidersOptions) (ProviderPage, error) |
Parameters
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
capability | query | string | no | Return only providers that list this capability, for example instance. |
Response
200 Provider catalog · application/json · Schema: ProviderPage
| Field | Type | Required | Description |
|---|---|---|---|
data | array<Provider> | yes | Providers that match the filters. |
total | integer | yes | Number of providers that match the filters. |
Errors
| Status | Schema | Description |
|---|---|---|
| other (default) | ErrorResponse | Cloud Server error |
The error schemas are described in Errors.
Example
import { BeeOSClient } from "@beeos-ai/cloud-sdk";
const cloud = new BeeOSClient({
baseURL: "https://api.cloud.beeos.ai/v1",
apiKey: "YOUR_API_KEY", // bsk_ key: backend only
});
const result = await cloud.catalog.listProviders();
console.log(result);catalog.getDiscovery
GET /uhp/v1/uhp · Operation ID getDiscovery
Protocol discovery document
Served without authentication: a client must be able to learn whether it is talking to a UHP server, and which versions it speaks, before presenting credentials. The document contains nothing principal-specific.
No authentication required.
SDK methods
| Language | Method | Signature |
|---|---|---|
| TypeScript | cloud.catalog.getDiscovery | getDiscovery(): Promise<Models.GetDiscoveryResponse> |
| Python | cloud.catalog.get_discovery | def get_discovery(self) -> UHPDiscovery |
| Go | cloud.Catalog.GetDiscovery | func (r *CatalogResource) GetDiscovery(ctx context.Context) (UHPDiscovery, error) |
Response
200 The discovery document · application/json · Schema: UHPDiscovery
| Field | Type | Required | Description |
|---|---|---|---|
object | string | yes | Object type: always uhp.discovery. Allowed values: "uhp.discovery" — A protocol discovery document. |
protocol | string | yes | Protocol the server speaks: always uhp, the Unified Harness Protocol. Allowed values: "uhp" — The Unified Harness Protocol. |
versions | array<string> | yes | Protocol versions the server speaks, as values of the UHP-Version header. Constraints: minItems=1. |
default_version | string | yes | Protocol version the server uses when a request does not send a UHP-Version header. |
conformance_class | string | yes | Coarse conformance class of the server. Branch on the flags in capabilities, which are exact, rather than on the class. Allowed values: "core" — Discovery, harness reads, tasks and sessions; "extended" — Core plus file input and artifact retrieval; "full" — Extended plus harness management, plugins, environments and memories. (enum table) |
capabilities | UHPCapabilities | yes | What the server can do. A flag is true only when the endpoints behind it answer. |
plugin_schemas | array<string> | no | The Agent Plugins manifest schema identifiers this server installs. Present and non-empty when capabilities.plugins is true. |
implementation | object | no | Information about the server. Besides name and version it may carry availability, a statement of how model availability is computed. |
implementation.name | string | no | Name of the server implementation: BeeOS Cloud. |
implementation.version | string | no | Version of the server implementation. Omitted when it is not known. |
Errors
| Status | Schema | Description |
|---|---|---|
| other (default) | UHPErrorEnvelope | UHP protocol error envelope |
The error schemas are described in Errors.
Example
import { BeeOSClient } from "@beeos-ai/cloud-sdk";
const cloud = new BeeOSClient({
baseURL: "https://api.cloud.beeos.ai/v1",
apiKey: "YOUR_API_KEY", // bsk_ key: backend only
});
const result = await cloud.catalog.getDiscovery();
console.log(result);