SDKs

Official client libraries for the IBEE Solutions API. Install one for your language and start building.

ToolInstallLanguage
Python SDKpip install ibeePython 3.10+
TypeScript SDKnpm install ibee-sdkNode 18+ / browsers
CLIpip install ibee-cliTerminal

Version 0.3 covers object storage, secret store, compute discovery, cloud and GPU VMs, VPC networking, Reserved IPs, firewalls, load balancers, Block Storage, CDN, and an explicit billing eligibility check. Every client authenticates with an API token from Settings → API Tokens plus a workspace ID.

Environments

The SDKs target production (https://api.ibee.ai/v1) by default. To use the development gateway (https://api.ibee.co.in/v1) with a ibee_dev_key_... token:

1from ibee import Ibee, IbeeEnvironment
2
3client = Ibee(token="ibee_dev_key_xxx", environment=IbeeEnvironment.DEVELOPMENT)

Billing admission on create

The Python SDK, TypeScript SDK, and CLI expose the billing eligibility endpoint as an explicit preflight. They do not call it automatically before create requests. When your workflow needs an early decision, call the eligibility operation immediately before creating the resource and continue only when allowed is true.

The preflight token needs billing.read; the create request needs the relevant product write scope. The public gateway is authoritative and performs a fail-closed billing decision before forwarding every declared billable create to the existing product service. A successful earlier preflight is not a reservation or a guarantee that a later create will succeed.

Python SDK

Install the Python SDK from PyPI:

$pip install ibee
1from ibee import Ibee
2
3client = Ibee(token="ibee_prod_key_xxxxxxxxxxxx")
4
5# Discover IDs accepted by VM creation
6sites = client.compute_catalog.list_compute_sites(workspace_id="907479")
7plans = client.compute_catalog.list_compute_plans(
8 workspace_id="907479", vm_type="cloud"
9)
10images = client.compute_catalog.list_compute_images(
11 workspace_id="907479", vm_type="cloud"
12)
13
14# List cloud VMs
15vms = client.cloud_vms.list_cloud_vms(workspace_id="907479")
16
17# Create a cloud VM
18vm = client.cloud_vms.create_cloud_vm(
19 workspace_id="907479",
20 idempotency_key="create-web-server-01",
21 name="web-server",
22 plan_id="plan_standard_2c_4g",
23 template_id="tmpl_ubuntu_2204",
24 os_distro="ubuntu",
25 os_type="linux",
26 cpu=2,
27 ram_mb=4096,
28)
29
30# List GPU VMs
31gpu_vms = client.gpu_vms.list_gpu_vms(workspace_id="907479")
32
33# Object storage — list and create
34buckets = client.object_storage.list_buckets(workspace_id="907479")
35bucket = client.object_storage.create_bucket(
36 workspace_id="907479", name="my-bucket", region="in-south-2"
37)
38
39# Secret store — create a store, then a versioned secret
40store = client.secret_store.create_secret_store(workspace_id="907479", name="payments")
41secret = client.secret_store.create_secret(
42 workspace_id="907479",
43 store_id=store.id,
44 secret_name="stripe-key",
45 value={"API_KEY": "sk_live_xxx"},
46)
47value = client.secret_store.get_secret_value(workspace_id="907479", secret_id=secret.id)

To create a VM from the same kind of choices shown in the portal, pass the selected IDs into the create call:

1vm = client.cloud_vms.create_cloud_vm(
2 workspace_id="907479",
3 idempotency_key="create-web-server-01",
4 name="web-server-01",
5 os_distro="ubuntu",
6 os_type="linux",
7 template_id="tmpl_ubuntu_2204",
8 plan_id="plan_standard_2c_4g",
9 cpu=2,
10 ram_mb=4096,
11 disk_gb=80,
12 ssh_key_ids=["ssh_key_123"],
13 tags=["prod", "web"],
14)

plan_id is the selected instance plan. template_id is the selected OS template or image. ssh_key_ids are the SSH keys to inject at first boot. Omit site_id for automatic placement. To pin a VM, copy the exact site_id returned by list_compute_sites; do not use a region or site name. In the current SDK, cpu and ram_mb are still required fallback fields even when plan_id is provided.

Async support is built in:

1import asyncio
2from ibee import AsyncIbee
3
4async def main():
5 client = AsyncIbee(token="ibee_prod_key_xxxxxxxxxxxx")
6 vms = await client.cloud_vms.list_cloud_vms(workspace_id="907479")
7 print(vms)
8
9asyncio.run(main())

TypeScript SDK

Install the TypeScript SDK from npm. It works in Node 18+ and modern browsers, ships ESM and CommonJS builds with full type declarations, and has no runtime dependencies.

$npm install ibee-sdk
1import { Ibee } from "ibee-sdk";
2
3const client = new Ibee({ token: "ibee_prod_key_xxxxxxxxxxxx" });
4
5const sites = await client.computeCatalog.listSites({ workspaceId: "907479" });
6const plans = await client.computeCatalog.listPlans({
7 workspaceId: "907479",
8 vmType: "cloud",
9});
10const images = await client.computeCatalog.listImages({
11 workspaceId: "907479",
12 vmType: "cloud",
13});
14
15// List cloud VMs
16const vms = await client.cloudVms.list({ workspaceId: "907479" });
17
18// Create a cloud VM
19await client.cloudVms.create({
20 workspaceId: "907479",
21 name: "web-server",
22 plan_id: "plan_standard_2c_4g",
23 template_id: "tmpl_ubuntu_2204",
24 os_distro: "ubuntu",
25 os_type: "linux",
26 cpu: 2,
27 ram_mb: 4096,
28});
29
30// List buckets
31const buckets = await client.objectStorage.listBuckets({ workspaceId: "907479" });
32
33// Create a bucket in an Object Storage region
34const bucket = await client.objectStorage.createBucket({
35 workspaceId: "907479",
36 name: "my-bucket",
37 region: "in-south-2",
38});

Non-2xx responses throw an ApiError carrying the HTTP status and parsed body:

1import { ApiError } from "ibee-sdk";
2
3try {
4 await client.secretStore.listSecretStores({ workspaceId: "907479" });
5} catch (err) {
6 if (err instanceof ApiError) {
7 console.error(err.statusCode, err.body);
8 }
9}

Billing eligibility preflight

Before a billable create, ask billing whether the workspace is allowed to create the SKU. Proceed only when allowed is true; the token needs billing.read in addition to the product write scope.

1eligibility = client.billing.check_resource_eligibility(
2 workspace_id="907479", sku_code="OBJECTST-STD"
3)
4if not eligibility.allowed:
5 raise RuntimeError(f"Blocked by billing: {eligibility.reason}")
6
7bucket = client.object_storage.create_bucket(
8 workspace_id="907479", name="my-bucket"
9)

The decision is point-in-time and does not reserve funds, so run it immediately before the create request. The SDKs and CLI do not invoke it automatically.

Command-line interface

Prefer the terminal? The ibee CLI is built on the Python SDK and covers the same products.

$pip install ibee-cli
$export IBEE_TOKEN="ibee_prod_key_xxxxxxxxxxxx"
$export IBEE_WORKSPACE_ID="907479"
$
$ibee buckets list
$ibee buckets create my-bucket --region in-south-2
$ibee secrets stores list
$ibee compute sites
$ibee vpcs list
$ibee vms list

See the CLI reference for all commands.

Resource reference

Both SDKs expose the same resources (Python uses snake_case, TypeScript uses camelCase):

ResourceOperations
Object storagebucket list, create, get, update, delete · S3 credential list, create, get, revoke
Secret storestores (create, list, get, update, archive) · secrets (create, list, get, get value, update value, delete)
Compute cataloglist placement sites, billable plans, and compatible images
Cloud VMslist, get, create, delete, start, stop, reboot, metrics
GPU VMslist, get, create, delete, start, stop, reboot, metrics
VPCssites, VPCs, subnets, VM attachments, NAT gateways, port-forwarding rules
Reserved IPslist, reserve, get, update, release, attach, detach, move
Firewallsgroup, rule, and VM attachment lifecycle
Load balancersL4/L7 lifecycle and provisioning status
Billingcheck resource eligibility before a billable create
Operationsget (poll async operation status)

Using the API without an SDK

You can call the REST API directly using any HTTP client:

$curl https://api.ibee.ai/v1/object-storage/buckets?workspace_id=907479 \
> -H "Authorization: Bearer ibee_prod_key_xxxxxxxxxxxx"