POST /tabs
Creates a new browser tab within a user’s session. Tabs are organized bysessionKey (also called listItemId for backward compatibility) to group related browsing tasks.
Authentication
All tab operations require auserId in the request body to identify which user session owns the tab.
Request
Body parameters
User identifier for session isolation. Sessions maintain separate cookies, storage, and browser contexts.
Session key to group related tabs together (e.g., by conversation or task). Legacy name:
listItemId.Deprecated. Use
sessionKey instead. Accepted for backward compatibility.Initial URL to navigate to after creating the tab. Must use
http: or https: protocol. If omitted, tab opens to about:blank.Response
UUID identifier for the newly created tab. Use this in all subsequent tab operations.
Current URL of the tab after creation.
Example
Error responses
| Status | Error | Cause |
|---|---|---|
| 400 | userId and sessionKey required | Missing required fields |
| 400 | Invalid URL: <url> | Malformed URL |
| 400 | Blocked URL scheme: <scheme> | Non-HTTP/HTTPS protocol |
| 429 | Maximum tabs per session reached | Session has 10+ tabs (configurable via MAX_TABS_PER_SESSION) |
| 500 | Internal server error | Browser launch failure or unexpected error |
Notes
- Maximum tabs per session is configurable (default: 10 via
MAX_TABS_PER_SESSION) - Global tab limit across all users is 100 (configurable via
MAX_TABS_GLOBAL) - Each
userIdgets an isolated browser context with separate cookies and storage - Tabs within the same
sessionKeycan be closed together usingDELETE /tabs/group/:groupId - URL navigation timeout is 30 seconds
- Sessions auto-expire after 30 minutes of inactivity (configurable via
SESSION_TIMEOUT_MS)