Skip to main content

Python client for the stablebrowse browser agent API

Project description

stablebrowse (Python)

Python client for the stablebrowse browser agent API.

Install

From PyPI (once published):

pip install stablebrowse

From source (for local development):

cd sdks/python
pip install -e .

Requires Python 3.9+. Depends on httpx.

Quick start

from stablebrowse import Stablebrowse

# Bearer token comes from either the constructor or the
# STABLEBROWSE_API_KEY environment variable.
client = Stablebrowse(api_key="sb_live_...")

# (Optional) upload per-end-user social-media credentials.
client.end_users("alice").credentials.set(
    twitter_auth_token="...",
    twitter_ct0="...",
)

# Sync-feeling submit. Polls internally until the task terminates.
result = client.tasks.run(
    end_user_id="alice",
    task="find the top AI tweets today",
)
print(result.result)
print(f"cost: ${result.total_cost_usd:.4f}")

Async primitives

If you want to drive the poll loop yourself — for example, to push progress into your own queue, or to run many submissions in parallel with your own scheduler — use the raw methods:

submission = client.tasks.submit(end_user_id="alice", task="...")
while True:
    task = client.tasks.get(submission.task_id)
    if task.is_terminal:
        break
    time.sleep(2)

Multi-turn conversations

Pass the session_id you got from the first call to continue a conversation:

first = client.tasks.run(end_user_id="alice", task="who's trending on X?")
follow = client.tasks.run(
    end_user_id="alice",
    task="what about in music specifically?",
    session_id=first.session_id,
)

The server builds previousContext from the last completed turn so the agent has the earlier answer when it reasons about the follow-up.

End users and credentials

Each business scopes end-users by opaque identifier — "alice" inside your business is independent of any other business's "alice":

alice = client.end_users("alice")

alice.credentials.set(
    tiktok_session_id="...",
    tiktok_csrf_token="...",
)

status = alice.credentials.get()
assert status.platforms["tiktok"] is True

# Remove all creds
alice.credentials.delete()

# Or a specific subset
alice.credentials.delete(fields=["twitter_auth_token", "twitter_ct0"])

Field names are snake_case in Python and get translated to camelCase on the wire automatically.

API key management

Only usable with a Cognito JWT (see the web dashboard). API-key bearer tokens cannot mint more keys — that's by design to contain a leak.

# Typically used from a short-lived admin script, not from app code.
keys = client.api_keys.list()
new = client.api_keys.create(label="production")
print("save this — you won't see it again:", new.secret)
client.api_keys.revoke(new.prefix)

Errors

Every exception derives from StablebrowseError:

  • TaskFailedrun() saw the task finish with status=failed. The failed Task is on .task.
  • TaskTimeout — the poll deadline expired before the task terminated. The still-running Task is on .task so you can keep polling.
  • StablebrowseError — every other HTTP or transport error. .status_code and .body are populated when the server returned structured JSON.

Configuration

The constructor reads a couple of env vars if you don't pass them:

  • STABLEBROWSE_API_KEY — bearer token
  • STABLEBROWSE_BASE_URL — override the API base, useful for pointing at beta or a local gateway

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

stablebrowse-0.1.1.tar.gz (9.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

stablebrowse-0.1.1-py3-none-any.whl (9.8 kB view details)

Uploaded Python 3

File details

Details for the file stablebrowse-0.1.1.tar.gz.

File metadata

  • Download URL: stablebrowse-0.1.1.tar.gz
  • Upload date:
  • Size: 9.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.15

File hashes

Hashes for stablebrowse-0.1.1.tar.gz
Algorithm Hash digest
SHA256 b511166f49631f50a3b2a9da5a0c4df82bd350b1bbdaeff39d92d164be7f1b01
MD5 69e73577d563f3f95778a7090d72c9a7
BLAKE2b-256 ea7b2879dbdef3586819103a513a1037878c85757ecf78020112a7e168cec18b

See more details on using hashes here.

File details

Details for the file stablebrowse-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: stablebrowse-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 9.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.15

File hashes

Hashes for stablebrowse-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 bb7de5d9a2255fc85142c99b7994b1b7250a2d08191062d1ae2a99f6ccd87fa6
MD5 0106a78c084099bcdba723d12049af01
BLAKE2b-256 1a1f22c58aab8808831e5157c42658a13b876995e6729d680a0e9f0ee2467368

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page