Skip to content
Get started

AI Task

agent.automate(AgentAutomateParams**kwargs) -> AutomateEvent
POST/automate

Execute AI-powered browser automation tasks using natural language with optional geotargeting. This endpoint always streams responses using Server-Sent Events (SSE).

Streaming Response:

  • All responses are streamed using Server-Sent Events (text/event-stream)
  • Real-time progress updates and results as they're generated

Geotargeting:

  • Optionally specify a country code for geotargeted browsing

Use Cases:

  • Web scraping and data extraction
  • Form filling and interaction
  • Navigation and information gathering
  • Multi-step web workflows
  • Content analysis from web pages
ParametersExpand Collapse
task: str

The task description in natural language

data: Optional[object]

JSON data to provide context for form filling or complex tasks

geo_target: Optional[GeoTarget]

Optional geotargeting parameters for proxy requests

country: Optional[str]

Country code using ISO 3166-1 alpha-2 standard (2 letters, e.g., "US", "GB", "JP"). See: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2

guardrails: Optional[str]

Safety constraints for execution

max_iterations: Optional[int]

Maximum task iterations

maximum100
minimum1
max_validation_attempts: Optional[int]

Maximum validation attempts

maximum10
minimum1
url: Optional[str]

Starting URL for the task

formaturi
ReturnsExpand Collapse
class AutomateEvent:
data: Optional[object]

Event payload data

event: Optional[str]

The event type (e.g., start, agent:processing, complete)

class AutomateEvent:
data: Optional[object]

Event payload data

event: Optional[str]

The event type (e.g., start, agent:processing, complete)

AI Task

import os
from tabstack import Tabstack

client = Tabstack(
    api_key=os.environ.get("TABSTACK_API_KEY"),  # This is the default and can be omitted
)
automate_event = client.agent.automate(
    task="Find the top 3 trending repositories and extract their names, descriptions, and star counts",
    guardrails="browse and extract only, don't interact with repositories",
    url="https://github.com/trending",
)
print(automate_event.data)
event: start data: {"task": "Find the top 3 trending repositories", "url": "https://github.com/trending"} event: agent:processing data: {"operation": "Creating task plan", "hasScreenshot": false} event: browser:navigated data: {"title": "Trending - GitHub", "url": "https://github.com/trending"} event: agent:extracted data: {"extractedData": "[{\"name\": \"awesome-ai\", \"stars\": \"45.2k\"}]"} event: task:completed data: {"success": true, "finalAnswer": "Top 3 trending repos extracted"} event: complete data: {"success": true} event: done data: {}
{
  "error": "maxIterations must be between 1 and 100"
}
Returns Examples
event: start data: {"task": "Find the top 3 trending repositories", "url": "https://github.com/trending"} event: agent:processing data: {"operation": "Creating task plan", "hasScreenshot": false} event: browser:navigated data: {"title": "Trending - GitHub", "url": "https://github.com/trending"} event: agent:extracted data: {"extractedData": "[{\"name\": \"awesome-ai\", \"stars\": \"45.2k\"}]"} event: task:completed data: {"success": true, "finalAnswer": "Top 3 trending repos extracted"} event: complete data: {"success": true} event: done data: {}
{
  "error": "maxIterations must be between 1 and 100"
}