Documentation

Everything you need to deploy and manage your applications on HostStack.

TypeScript SDK Reference

Manage your HostStack infrastructure programmatically with full TypeScript support.

Installation

npm
npm install @hoststack/sdk
bun
bun add @hoststack/sdk

Quick Start

typescript
import { HostStack } from '@hoststack/sdk';

const client = new HostStack({
  apiKey: 'hs_live_your_api_key',
});

// List all services
const services = await client.services.list();

// Trigger a deploy
const deploy = await client.deploys.trigger('svc_abc123');

// Get deploy logs
const logs = await client.deploys.getLogs(deploy.id);

Available Resources

client.projectslist, get, create, update, delete
client.serviceslist, get, create, update, delete, suspend, resume, metrics
client.deployslist, get, trigger, cancel, rollback, getLogs
client.databaseslist, get, create, delete, credentials, resetPassword
client.domainslist, add, update, remove, verify
client.envVarslist, create, update, delete, bulkSet
client.cronlist, get, trigger

Examples

Manage environment variables

typescript
// Set a single variable
await client.envVars.set('svc_abc123', {
  key: 'DATABASE_URL',
  value: 'postgres://...',
  target: 'runtime',
});

// Bulk set multiple variables
await client.envVars.bulkSet('svc_abc123', [
  { key: 'NODE_ENV', value: 'production', target: 'both' },
  { key: 'API_SECRET', value: 'sk_...', target: 'runtime', isSecret: true },
]);

Deploy and monitor

typescript
// Trigger deploy
const deploy = await client.deploys.trigger('svc_abc123');

// Check status
const status = await client.deploys.get(deploy.id);
console.log(status.status); // 'building' | 'live' | 'failed'

// Rollback if needed
await client.deploys.rollback('svc_abc123');

Database management

typescript
// Create a Postgres database
const db = await client.databases.create({
  name: 'my-db',
  engine: 'postgres',
  version: '17',
  plan: 'starter',
  projectId: 'prj_abc123',
});

// Get connection credentials
const creds = await client.databases.credentials(db.id);
console.log(creds.connectionUrl);

Error Handling

typescript
import { HostStack, NotFoundError, RateLimitError } from '@hoststack/sdk';

try {
  const service = await client.services.get('svc_invalid');
} catch (error) {
  if (error instanceof NotFoundError) {
    console.log('Service not found');
  } else if (error instanceof RateLimitError) {
    console.log('Rate limited, retry after:', error.retryAfter);
  }
}