An API for workstations that agents use to complete tasks at scale. Give your agents access to a browser, Zoom meetings, audio/video streams, virtual hardware and more.
Easily design cross-platform, multimodal agents, with 40+ actions available via the API.
Complete browser tasks by interacting with web applications.
Write and run Python, Golang and NodeJS scripts within a dedicated workspace.
Create, join and share screen in Zoom meetings.
Speak, ask questions and drive real-time conversations.
Crawl webpages and extract data from HTML or a screenshot.
Build your own tooling and deploy it with Kubernetes manifests.
Easy-to-use API and SDKs
Leverage 50+ agent actions with a few lines of code.
Customize your workstation
Select hardware and software based on use case.
Avoid scaling headaches
Run thousands of concurrent agent sessions in the cloud.
# Request a workstation
curl -L 'https://api.agentstation.ai/v1/workstations' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <TOKEN>' \
-d '{ "type": "zoom-web", "workspace_id": "bMf1euMgczAY" }'
# Open a new tab and go to URL
curl -L 'https://api.agentstation.ai/v1/workstations/:id/browser/tabs' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <TOKEN>' \
-d '{ "url": "string" }'
# Press "Enter"
curl -L \
'https://api.agentstation.ai/v1/workstations/:id/browser/keyboard' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <TOKEN>' \
-d '{ "event": "press", "text": "string" }'
# Take a screenshot
curl -L -X POST \
'https://api.agentstation.ai/v1/workstations/:id/browser/screenshot' \
-H 'Authorization: Bearer <TOKEN>'
import asyncio, aiohttp
API_URL = 'https://api.agentstation.ai/v1/workstations'
API_KEY = '4DH21-93LQ2-293QW'
async def main():
headers = {'Authorization': f'Bearer {API_KEY}'}
async with aiohttp.ClientSession(base_url=API_URL,
headers=headers)as session:
try:
# Create workstation
ws = await session.post('/', json={
'type': 'zoom-web',
'workspace_id': 'bMf1euMgczA'
}).json()
# Open a new tab and navigate to URL
tab = await session.post(
f"/{ws['id']}/browser/tabs", json={'type': 'tab'}).json()
await session.post(f"/{ws['id']}/browser/tabs/{tab['id']}/url",
json={'url': 'https://www.google.com'})
# Take a screenshot
await session.post(f"/{ws['id']}/browser/screenshot")
except aiohttp.ClientError as e:
print(f'Error: {e}')
asyncio.run(main())
// defaults to os.Getenv("AGENTSTATION_API_KEY")
as := agentstation.NewClient()
// Request a new workstation
ws, _ := as.RequestWorkstation(WorkstationTypeChromium)
// Open a browser tab and go to website
as.BrowserTabOpen(ws, "https://google.com")
// Type text into input field
as.BrowserText(ws, "textarea[title='Search']", "2024 Olympics")
// Press "Enter"
as.BrowserKeyboard(ws, "press","Enter")
// Take a screenshot
as.BrowserScreenshot(ws)
const api = require('axios').create({
baseURL: 'https://api.agentstation.ai/v1/workstations',
headers: {'Authorization': 'Bearer 4DH21-93LQ2-293QW'}
});
(async () => {
try {
// Request a workstation
const {data: workstation} = await api.post(
'/',
{type: 'zoom-web', workspace_id: 'bMf1euMgczA'});
// Open a new tab and navigate to a URL
const {data: tab} = await api.post(
`/${ws.id}/browser/tabs`, {type: 'tab'});
await api.post(
`/${workstation.id}/browser/tabs/${tab.id}/url`,
{url: 'https://www.google.com'});
// Take a screenshot
await api.post(`/${ws.id}/browser/screenshot`);
} catch (error) {console.error('Error:', error);
};
})();
Real-time monitoring
Stream workstation displays in the dashboard.
Control agents remotely
Enable "human-in-the-loop" workflows with VNC and RFB.
Recordings and transcripts
Access files immediately after every agent run.
Monitor and control agents remotely via VNC or dashboard.
Generate recordings and transcripts of every agent workstation.
Monitor and control agents remotely via VNC or dashboard. Generate recordings and transcripts of every agent workstation.