import json
import os
import uuid
import urllib.request
API_KEY = os.environ["WEBCOMPUTE_API_KEY"]
BASE_URL = "https://api.webcompute.dev"
def request(method, path, body=None, idempotency_key=None):
data = None if body is None else json.dumps(body).encode("utf-8")
headers = {
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json",
}
if idempotency_key:
headers["Idempotency-Key"] = idempotency_key
req = urllib.request.Request(
f"{BASE_URL}{path}",
data=data,
method=method,
headers=headers,
)
with urllib.request.urlopen(req, timeout=60) as response:
payload = response.read()
return json.loads(payload) if payload else None
created = request("POST", "/v1/browsers", {
"recording": True,
"policy": {"allowedDomains": ["example.com"]},
}, idempotency_key=f"browser-create-{uuid.uuid4()}")
browser_id = created.get("id") or created["browser"]["id"]
try:
result = request("POST", f"/v1/browsers/{browser_id}/playwright/execute", {
"code": "await page.goto('https://example.com'); return await page.title();",
"capture": {"status": True, "observation": {"kind": "aria", "includeOn": "always"}},
})
print(result["result"])
finally:
request("DELETE", f"/v1/browsers/{browser_id}", idempotency_key=f"browser-close-{uuid.uuid4()}")