API Reference
FreshComplete REST API reference for Steel.dev. Base URL: https://api.steel.dev
Authentication: Include header steel-api-key: YOUR_API_KEY with all requests.
Browser Tools
POST /v1/scrape - Scrape Webpage Content
Extracts content from a URL in multiple formats.
| Parameter | Type | Required | Description |
|---|---|---|---|
url | string | Yes | URL of the webpage to scrape |
delay | number | No | Delay before scraping (ms) |
format | string[] | No | Output formats: html, readability, cleaned_html, markdown |
pdf | boolean | No | Include PDF in response |
screenshot | boolean | No | Include screenshot in response |
useProxy | boolean | No | Use Steel residential proxy |
region | object | No | Geographic region for the request |
bash
curl https://api.steel.dev/v1/scrape \
--request POST \
--header 'Content-Type: application/json' \
--header 'steel-api-key: YOUR_API_KEY' \
--data '{
"url": "https://example.com",
"format": ["markdown", "html"],
"screenshot": true,
"useProxy": true
}'typescript
import Steel from 'steel-sdk';
const client = new Steel({ steelAPIKey: 'YOUR_API_KEY' });
const result = await client.scrape({
url: 'https://example.com',
format: ['markdown'],
useProxy: true
});Response (200):
json
{
"content": {
"html": "string",
"cleaned_html": "string",
"markdown": "string",
"readability": {}
},
"metadata": {
"title": "string",
"description": "string",
"language": "string",
"urlSource": "string",
"timestamp": "2026-02-14T00:00:00Z",
"ogTitle": "string",
"ogDescription": "string",
"canonical": "string",
"favicon": "string"
},
"links": [{ "url": "string", "text": "string" }],
"screenshot": { "url": "string" },
"pdf": { "url": "string" }
}POST /v1/screenshot - Capture Screenshot
| Parameter | Type | Required | Description |
|---|---|---|---|
url | string (uri) | Yes | URL to capture |
delay | number | No | Delay before capture (ms) |
fullPage | boolean | No | Full page screenshot (default: false) |
useProxy | boolean | No | Use residential proxy |
region | object | No | Geographic region |
bash
curl https://api.steel.dev/v1/screenshot \
--request POST \
--header 'Content-Type: application/json' \
--header 'steel-api-key: YOUR_API_KEY' \
--data '{ "url": "https://example.com", "fullPage": true }'POST /v1/pdf - Convert to PDF
| Parameter | Type | Required | Description |
|---|---|---|---|
url | string (uri) | Yes | URL to convert |
delay | number | No | Delay before generation (ms) |
useProxy | boolean | No | Use residential proxy |
region | object | No | Geographic region |
Sessions API
| Method | Endpoint | Description |
|---|---|---|
| GET | /v1/sessions | List all sessions |
| POST | /v1/sessions | Create a new session |
| POST | /v1/sessions/release | Release all sessions |
| GET | /v1/sessions/{id} | Get session details |
| POST | /v1/sessions/{id}/release | Release specific session |
| GET | /v1/sessions/{id}/context | Get session auth context |
| GET | /v1/sessions/{id}/events | Get session recording events |
| GET | /v1/sessions/{id}/live-details | Get live session details |
| GET | /v1/sessions/{id}/hls | Get HLS recording playlist |
Create Session - Key Parameters
typescript
const session = await client.sessions.create({
useProxy: true, // Enable residential proxy
solveCaptcha: true, // Enable CAPTCHA solving
timeout: 1800000, // Session timeout (ms)
proxyUrl: 'http://...', // BYOP proxy URL
profileId: 'prof_xxx', // Browser profile ID
extensionIds: ['ext_1'], // Extensions to load
isSelenium: false, // Selenium mode
userAgent: 'custom-ua', // Custom user agent
dimensions: { width: 1920, height: 1080 },
region: 'lax' // Multi-region: lax, ord, iad
});Files API
| Method | Endpoint | Description |
|---|---|---|
| POST | /v1/sessions/{id}/files | Upload file to session |
| GET | /v1/sessions/{id}/files | List session files |
| GET | /v1/sessions/{id}/files/{path} | Download session file |
| DELETE | /v1/sessions/{id}/files/{path} | Delete session file |
| GET | /v1/sessions/{id}/files.zip | Download all as ZIP |
| POST | /v1/files | Upload global file |
| GET | /v1/files | List global files |
| GET | /v1/files/{path} | Download global file |
| DELETE | /v1/files/{path} | Delete global file |
Credentials API
| Method | Endpoint | Description |
|---|---|---|
| POST | /v1/credentials | Create credential |
| GET | /v1/credentials | List credentials |
| PUT | /v1/credentials | Update credential |
| DELETE | /v1/credentials | Delete credential |
CAPTCHAs API
| Method | Endpoint | Description |
|---|---|---|
| GET | /v1/sessions/{id}/captchas/status | Get CAPTCHA status |
| POST | /v1/sessions/{id}/captchas/solve | Solve CAPTCHAs |
| POST | /v1/sessions/{id}/captchas/solve-image | Solve image CAPTCHA |
Extensions API
| Method | Endpoint | Description |
|---|---|---|
| POST | /v1/extensions | Upload extension |
| GET | /v1/extensions | List extensions |
| DELETE | /v1/extensions | Delete all extensions |
| GET | /v1/extensions/{id} | Get extension details |
| PUT | /v1/extensions/{id} | Update extension |
| DELETE | /v1/extensions/{id} | Delete extension |
Profiles API
| Method | Endpoint | Description |
|---|---|---|
| POST | /v1/profiles | Create profile |
| GET | /v1/profiles | List profiles |
| GET | /v1/profiles/{id} | Get profile |
| PATCH | /v1/profiles/{id} | Update profile |
Computer API
| Method | Endpoint | Description |
|---|---|---|
| POST | /v1/sessions/{id}/computer | Send computer actions |
Error Responses
| Code | Description |
|---|---|
| 400 | Bad Request - Invalid parameters |
| 401 | Unauthorized - Invalid or missing API key |
| 404 | Not Found - Resource doesn't exist |
| 429 | Rate Limited - Too many requests |
| 503 | Service Unavailable - Server error |