Commands & SDK Reference
FreshSteel SDK (TypeScript)
Sessions API
typescript
import Steel from 'steel-sdk';
const client = new Steel({ steelAPIKey: process.env.STEEL_API_KEY });
// Create session
const session = await client.sessions.create({
useProxy: true, // Enable residential proxy
solveCaptcha: true, // Auto CAPTCHA solving
timeout: 600000, // Timeout in ms (default: 300000)
userAgent: 'custom-ua', // Custom user agent
persistProfile: true, // Save browser profile
profileId: 'profile-id', // Reuse existing profile
extensionIds: ['all_ext'], // Inject extensions
namespace: 'default', // Credential namespace
credentials: {}, // Enable credential injection
sessionContext: contextObj, // Reuse auth context
});
// Release session
await client.sessions.release(session.id);
// Release ALL sessions
await client.sessions.releaseAll();
// Get session context (for auth reuse)
const ctx = await client.sessions.context(session.id);
// Retrieve session details
const details = await client.sessions.retrieve(session.id);CAPTCHA API
typescript
await client.sessions.captchas.solve(sessionId);
await client.sessions.captchas.solve(sessionId, { taskId: 'id' });
await client.sessions.captchas.solve(sessionId, { url: 'https://...' });
await client.sessions.captchas.solve(sessionId, { pageId: 'id' });Extensions API
typescript
await client.extensions.upload({ file: buffer });
await client.extensions.upload({ url: 'chrome-web-store-url' });
await client.extensions.list();
await client.extensions.update(id, { file: buffer });
await client.extensions.delete(id);
await client.extensions.deleteAll();Credentials API
typescript
await client.credentials.create({
origin: 'https://...',
namespace: 'default',
value: { username: '...', password: '...', totpSecret: '...' }
});Profiles API
typescript
await client.profiles.create({ userDataDir: buffer, userAgent: '...' });
await client.profiles.update(profileId, { userAgent: '...' });Connection Strings
Playwright (Node.js)
typescript
// Method 1: Auto-create session
const browser = await chromium.connectOverCDP(
'wss://connect.steel.dev?apiKey=KEY'
);
// Method 2: Connect to existing session
const browser = await chromium.connectOverCDP(
`wss://connect.steel.dev?apiKey=KEY&sessionId=ID`
);
// Get page from existing context
const page = browser.contexts()[0].pages()[0];Puppeteer
typescript
const browser = await puppeteer.connect({
browserWSEndpoint: `wss://connect.steel.dev?apiKey=KEY&sessionId=ID`
});
const page = await browser.newPage();Proxy Configuration
typescript
// Steel-managed (simple)
{ useProxy: true }
// Geographic targeting
{ useProxy: { geolocation: { country: "US" } } }
{ useProxy: { geolocation: { country: "US", state: "NY" } } }
{ useProxy: { geolocation: { city: "LOS_ANGELES" } } }
// BYOP
{ useProxy: { server: "http://user:pass@host:port" } }
// Formats: http://, https://, socks5://Steel CLI
bash
# Authentication
steel login # Login to Steel
steel logout # Logout
steel config # View session info
# Instant Execution
steel run playwright # Run Playwright automation
steel run browser-use --task "..." # Run AI agent with task
steel run playwright --view # Run with live session viewer
# Project Scaffolding
steel forge # Interactive template selection
steel forge playwright --name NAME # Create project from template
# Configuration
steel settings # Switch local/cloud mode
# Maintenance
steel cache --clean # Clear cached templates
steel update # Update CLI
steel --version # Check version
steel docs # Open documentation
steel support # Join DiscordDocker (Self-Hosting)
bash
# Single image
docker run --rm -it -p 3000:3000 -p 9223:9223 ghcr.io/steel-dev/steel-browser:latest
# Docker Compose
docker compose up -d
docker compose pull && docker compose up -d # Update
# Health check
curl http://localhost:3000/api/healthPricing Quick Reference
| Plan | Price | Browser Hours | Concurrent | Max Session |
|---|---|---|---|---|
| Hobby | $0 | 100 | 5 | 15 min |
| Starter | $29 | 290 | 10 | 30 min |
| Developer | $99 | 1,238 | 20 | 1 hour |
| Pro | $499 | 9,980 | 100 | 24 hours |