diff --git a/docs/changelog.mdx b/docs/changelog.mdx index 4a5664c5c..04e3ff0f9 100644 --- a/docs/changelog.mdx +++ b/docs/changelog.mdx @@ -13,20 +13,30 @@ keywords:

TIMELINE

- Week of Apr 21, 2026 - Week of Apr 14, 2026 - v1.0.22 — Feb 26, 2026 - v1.0.21 — Feb 24, 2026 - v1.0.18 — Feb 19, 2026 - v1.0.17 — Feb 19, 2026 - v1.0.16 — Feb 19, 2026 - v1.0.15 — Feb 17, 2026 + Week of Apr 21, 2026 + Week of Apr 14, 2026 + v1.0.22 — Feb 26, 2026 + v1.0.21 — Feb 24, 2026 + v1.0.20 — Feb 21, 2026 + v1.0.19 — Feb 20, 2026 + v1.0.18 — Feb 19, 2026 + v1.0.17 — Feb 19, 2026 + v1.0.16 — Feb 19, 2026 + v1.0.15 — Feb 17, 2026 + v1.0.14 — Feb 17, 2026 + v1.0.13 — Feb 10, 2026 + v1.0.12 — Feb 3, 2026 + v1.0.11 — Jan 29, 2026 + v1.0.10 — Jan 22, 2026 + v1.0.9 — Jan 20, 2026 + v1.0.8 — Jan 9, 2026

Changelog

New features, improvements, and fixes in Skyvern

+ ## Improvements @@ -44,6 +54,7 @@ keywords: + ## New features @@ -85,8 +96,10 @@ keywords: - Fixed per-step video sync spawning a redundant ffmpeg process on every step, causing CPU spikes and log noise. ([#5559](https://github.com/Skyvern-AI/skyvern/pull/5559)) - Fixed workflow parameter edit and delete buttons being hidden when a parameter name was too long. - Fixed webhook delivery failing silently when a stored webhook URL had a leading or trailing space. ([#5550](https://github.com/Skyvern-AI/skyvern/pull/5550)) + + ## New features @@ -132,6 +145,7 @@ keywords: + ## New features @@ -159,6 +173,35 @@ keywords: + + + +## New features + +- **Browser Profile Testing UI (Frontend)** — The Browsers page now lets you launch a test run against a saved browser profile to confirm its login state is still valid before scheduling production workflows. ([#4833](https://github.com/Skyvern-AI/skyvern/pull/4833)) + +- **2FA Verification Code UI and Notifications** — When a workflow pauses for a 2FA code, the UI now shows a clear prompt and pushes a notification so you don't miss it. ([#4787](https://github.com/Skyvern-AI/skyvern/pull/4787)) + +## Improvements + +- **2FA Backend Cleanup** — Refactored the 2FA pipeline to make code delivery more reliable across both the UI form and the API endpoint. ([#4826](https://github.com/Skyvern-AI/skyvern/pull/4826)) + + + + + + +## New features + +- **Gated Admin Impersonation for MCP API Keys** — Adds gated admin controls so support engineers can impersonate an organization scope when troubleshooting MCP-based automations, with audit-friendly access controls. ([#4822](https://github.com/Skyvern-AI/skyvern/pull/4822)) + +## Improvements + +- **Environment Variables Override Mounted API Keys** — In Skyvern's Streamlit-based deployment, env vars now take precedence over keys baked into the image, making local overrides simpler. ([#4824](https://github.com/Skyvern-AI/skyvern/pull/4824)) + + + + ## New features @@ -171,6 +214,7 @@ keywords: + ## New features @@ -181,6 +225,7 @@ keywords: + ## New features @@ -202,12 +247,258 @@ keywords: + ## New features - **Anthropic Claude Opus 4.6** — Added Claude Opus 4.6 as an available LLM engine for web automation tasks. ([#4777](https://github.com/Skyvern-AI/skyvern/pull/4777), [#4778](https://github.com/Skyvern-AI/skyvern/pull/4778)) + + + + + +## New features + +- **Unified Browser Task Block** — The Navigation V1 and Task V2 blocks have been merged into a single **Browser Task** block. The block now exposes both engines as a dropdown, simplifying the workflow editor and reducing block-type confusion. ([#4695](https://github.com/Skyvern-AI/skyvern/pull/4695)) + +- **Block Discovery MCP Tools** — Added MCP tools that let AI assistants enumerate available block types and their schemas, plus richer instructions for building workflows through MCP. ([#4683](https://github.com/Skyvern-AI/skyvern/pull/4683)) + +- **Edit Existing Credentials API** — A new endpoint lets you update credential values without deleting and recreating them, preserving credential IDs across changes. ([#4693](https://github.com/Skyvern-AI/skyvern/pull/4693)) + +- **Filter Workflow Runs by Error Code and Search Key** — The workflow runs list endpoint now supports `error_code` and `search_key` query parameters for narrowing down failed runs. ([#4694](https://github.com/Skyvern-AI/skyvern/pull/4694)) + +- **GPT-5 Mini in Model Selector** — GPT-5 Mini is now selectable as an LLM engine. GPT-5 has been hidden in favor of more reliable variants. ([#4686](https://github.com/Skyvern-AI/skyvern/pull/4686)) + +## Improvements + +- **Block Failure Reasons Surfaced in UI** — Every block type now shows its `failure_reason` in the run timeline, making debugging non-obvious failures faster. ([#4672](https://github.com/Skyvern-AI/skyvern/pull/4672)) + +- **Webhook Payload Truncation in Logs** — Large webhook payloads are now truncated in log entries, keeping logs readable without losing context. ([#4701](https://github.com/Skyvern-AI/skyvern/pull/4701)) + +## Bug fixes + +- Fixed the cursor jumping to the end while editing conditional expressions in the workflow editor. ([#4682](https://github.com/Skyvern-AI/skyvern/pull/4682)) +- Fixed dotted Jinja variables (e.g. `{{ block_output.field }}`) rendering incorrectly in the expression preview. ([#4684](https://github.com/Skyvern-AI/skyvern/pull/4684)) +- The API now returns 404 instead of 500 when a workflow is not found. ([#4699](https://github.com/Skyvern-AI/skyvern/pull/4699)) + + + + + + +## New features + +- **Conditional Block Caching** — The script cache now supports Conditional blocks, so workflows that branch based on page state can replay from cache instead of re-running the AI agent. ([#4642](https://github.com/Skyvern-AI/skyvern/pull/4642)) + +- **OpenTelemetry Backend** — Skyvern can now export metrics, traces, and logs to any OTEL-compatible collector for centralized observability. ([#4632](https://github.com/Skyvern-AI/skyvern/pull/4632)) + +- **Workflow API Route Reorganization** — Workflow API endpoints have been split into focused routers, making the OpenAPI surface easier to navigate. ([#4628](https://github.com/Skyvern-AI/skyvern/pull/4628)) + +## Improvements + +- **Workflow Copilot Auto-Opens for Empty Workflows** — When you create a new workflow with no blocks yet, the Workflow Copilot opens by default to help you get started. ([#4625](https://github.com/Skyvern-AI/skyvern/pull/4625)) + +- **Run Workflow Button Moved to Top** — The Run button now lives at the top of the workflow editor for easier access. ([#4626](https://github.com/Skyvern-AI/skyvern/pull/4626)) + +- **Skip LLM for Single-Match Location Autocomplete** — Location autocomplete now skips the LLM call when only one option matches the user's input, reducing cost and latency. ([#4631](https://github.com/Skyvern-AI/skyvern/pull/4631)) + +- **Improved Version History Icon** — The workflow version history button now uses an icon that better represents document versions. ([#4640](https://github.com/Skyvern-AI/skyvern/pull/4640)) + +## Bug fixes + +- Fixed `ForLoop` blocks failing to execute under script caching (regression from v1.0.12). ([#4630](https://github.com/Skyvern-AI/skyvern/pull/4630)) +- Fixed `ActionDragPath` subscript error in CUA drag-action parsing. ([#4623](https://github.com/Skyvern-AI/skyvern/pull/4623)) +- Fixed cron-scheduled tasks getting stuck with "task not found" errors. ([#4627](https://github.com/Skyvern-AI/skyvern/pull/4627)) +- Fixed parameter creation dialog not clearing default-value state when switching to credential type. ([#4622](https://github.com/Skyvern-AI/skyvern/pull/4622)) +- Fixed debugger loop-block visual overlap when the status row appeared. ([#4641](https://github.com/Skyvern-AI/skyvern/pull/4641)) + + + + + + +## New features + +- **Task V2 Termination** — Task V2 (the planner-agent-validator system) can now be terminated mid-run via API, matching the cancel behavior already available for Task V1. ([#4589](https://github.com/Skyvern-AI/skyvern/pull/4589)) + +- **ForLoop Block Caching** — Cached scripts now support `ForLoop` blocks. Workflows that iterate over lists can replay from cache after the first successful run. ([#4600](https://github.com/Skyvern-AI/skyvern/pull/4600)) + +- **Conditional Block Caching** — Initial support for caching workflows that include conditional branching. ([#4603](https://github.com/Skyvern-AI/skyvern/pull/4603)) + +- **`run_with` Parameter for Run Task** — The `run_task` endpoint now accepts a `run_with` parameter so you can target Task V2 (or future variants) without changing the endpoint. ([#4576](https://github.com/Skyvern-AI/skyvern/pull/4576)) + +- **`skyvern run dev` Command** — A new CLI command spins up a Superset workspace alongside the standard dev environment for local analytics work. ([#4593](https://github.com/Skyvern-AI/skyvern/pull/4593)) + +## Improvements + +- **All Branch Evaluations Shown in Conditional Block Timeline** — The run timeline now shows every conditional branch's evaluation result, not just the chosen one — useful when debugging "why did it pick that branch?" ([#4577](https://github.com/Skyvern-AI/skyvern/pull/4577)) + +- **Sidebar Expand/Collapse Icon** — Replaced the pin icon with a chevron, matching common conventions. ([#4586](https://github.com/Skyvern-AI/skyvern/pull/4586)) + +- **PDF Parsing Token Cap** — PDF parsing now caps token volume per request to avoid total failure on very large documents. ([#4602](https://github.com/Skyvern-AI/skyvern/pull/4602)) + +- **`DATABASE_STRING` Parameter on Quickstart** — `skyvern quickstart` now accepts a `DATABASE_STRING` argument for explicit DB connection configuration. ([#4580](https://github.com/Skyvern-AI/skyvern/pull/4580)) + +## Bug fixes + +- Fixed credentials not clearing from the Login block when deselected from the picker. ([#4581](https://github.com/Skyvern-AI/skyvern/pull/4581)) +- Fixed workflow run timeline missing recent steps until a manual refresh. ([#4587](https://github.com/Skyvern-AI/skyvern/pull/4587)) +- Fixed the workflow editor showing spurious "unsaved changes" when switching between conditional branches. ([#4588](https://github.com/Skyvern-AI/skyvern/pull/4588)) + + + + + + +## New features + +- **Workflow Copilot Generally Available** — The Workflow Copilot is now enabled for all users. Describe what you want in natural language and it generates a multi-block workflow you can edit. ([#4533](https://github.com/Skyvern-AI/skyvern/pull/4533)) + +- **Browser Sessions v2 Frontend** — The new browser session management UI lands on the Browsers page, building on the v2 backend shipped in v1.0.10. ([#4514](https://github.com/Skyvern-AI/skyvern/pull/4514)) + +- **TOTP Endpoint OTP Type Filter** — The TOTP listing endpoint now accepts an `otp_type` query parameter for filtering numeric codes vs. magic links. ([#4529](https://github.com/Skyvern-AI/skyvern/pull/4529)) + +- **Mintlify Documentation Setup** — Skyvern's documentation site moves to Mintlify, with redirects for the legacy Fern URLs. ([#4516](https://github.com/Skyvern-AI/skyvern/pull/4516)) + +## Improvements + +- **Async File I/O via aiofiles** — Replaced blocking file I/O with `aiofiles` throughout the agent runtime, improving throughput on I/O-heavy workloads. ([#4520](https://github.com/Skyvern-AI/skyvern/pull/4520)) + +- **Cached Experimentation Provider TTL** — `BaseExperimentationProvider` now caches feature-flag lookups with a per-item TTL, reducing pressure on the experimentation backend. ([#4536](https://github.com/Skyvern-AI/skyvern/pull/4536), [#4540](https://github.com/Skyvern-AI/skyvern/pull/4540)) + +## Bug fixes + +- Fixed `ai_fallback` not being read correctly from the database for cached workflow runs. ([#4524](https://github.com/Skyvern-AI/skyvern/pull/4524)) +- Fixed iframe-tree extraction crashing when the page raised a transient exception. ([#4530](https://github.com/Skyvern-AI/skyvern/pull/4530)) +- Fixed the workflow version comparison view ordering versions on the wrong sides. ([#4531](https://github.com/Skyvern-AI/skyvern/pull/4531)) +- Fixed the workflow history panel scroll behavior in debug mode. ([#4532](https://github.com/Skyvern-AI/skyvern/pull/4532)) +- Fixed `TypeError` when comparing offset-naive and offset-aware datetimes during workflow scheduling. ([#4534](https://github.com/Skyvern-AI/skyvern/pull/4534)) +- Fixed schema regeneration overwriting unchanged block field names. ([#4535](https://github.com/Skyvern-AI/skyvern/pull/4535)) +- Fixed `uvicorn` reload breaking on Windows due to async event loop policy. ([#4538](https://github.com/Skyvern-AI/skyvern/pull/4538)) + + + + + + +## New features + +- **Browser Sessions v2 (Backend)** — A new persistent browser session architecture with cleaner lifecycle management, better resource reuse, and improved reliability for long-running automations. The frontend follows in v1.0.11. ([#4515](https://github.com/Skyvern-AI/skyvern/pull/4515)) + +- **General Text CAPTCHA Solver** — Skyvern can now solve a wider range of text-based CAPTCHAs without site-specific configuration. ([#4517](https://github.com/Skyvern-AI/skyvern/pull/4517)) + +- **TOTP Webhook Retries** — TOTP webhook delivery now retries automatically on transient failures, reducing the rate of "no code received" errors during 2FA flows. ([#4518](https://github.com/Skyvern-AI/skyvern/pull/4518)) + +- **Block-Label Validation in `run_blocks`** — The `run_blocks` endpoint now validates block labels up front, returning a clear error instead of failing partway through execution. ([#4500](https://github.com/Skyvern-AI/skyvern/pull/4500)) + +## Improvements + +- **Confirmation Dialog Shows Affected Blocks** — Deleting a parameter or block now lists every block that references it, so you don't accidentally break downstream logic. ([#4519](https://github.com/Skyvern-AI/skyvern/pull/4519)) + +- **Workflow Updates Return 409 on Race** — Concurrent workflow updates now return HTTP 409 instead of silently overwriting each other. ([#4510](https://github.com/Skyvern-AI/skyvern/pull/4510)) + +- **Tiktoken Caching** — Tokenizer instances are now cached, cutting per-step overhead on token counting. ([#4521](https://github.com/Skyvern-AI/skyvern/pull/4521)) + +## Bug fixes + +- Fixed a Gemini 3 Flash cache-creation bug that caused false-positive fallback detection. ([#4502](https://github.com/Skyvern-AI/skyvern/pull/4502)) +- Fixed Bitwarden item-ID format validation rejecting valid IDs. ([#4508](https://github.com/Skyvern-AI/skyvern/pull/4508)) +- Fixed dangling block-output and parameter references after rename or deletion. ([#4507](https://github.com/Skyvern-AI/skyvern/pull/4507)) + + + + + + +## New features + +- **Print PDF Block** — A new workflow block that prints the current page to PDF and saves it to your run's downloaded files, useful for archiving receipts, invoices, and reports. ([#4452](https://github.com/Skyvern-AI/skyvern/pull/4452)) + +- **HTTP File Downloads** — The HTTP Request block can now download files directly via HTTP (not just GET JSON), enabling workflows that pull artifacts from authenticated APIs. ([#4440](https://github.com/Skyvern-AI/skyvern/pull/4440)) + +- **Workflow Copilot Streaming with Cancel** — The Workflow Copilot now streams its responses with a cancel button, so you can stop generation mid-stream if you want to refine your prompt. ([#4437](https://github.com/Skyvern-AI/skyvern/pull/4437), [#4456](https://github.com/Skyvern-AI/skyvern/pull/4456)) + +- **"Execute on Any Outcome" (Finally) Block Option** — Blocks can now be configured to run regardless of whether prior blocks succeeded, enabling cleanup steps and "always send report" workflows. ([#4443](https://github.com/Skyvern-AI/skyvern/pull/4443)) + +- **Persistent Browser Session Uptime Billing** — Billing v2 now meters persistent browser session uptime separately, with PostHog feature flags controlling rollout. ([#4444](https://github.com/Skyvern-AI/skyvern/pull/4444)) + +- **GPT-5 Mini Flex Engine** — Added GPT-5 Mini Flex as an available LLM engine. ([#4432](https://github.com/Skyvern-AI/skyvern/pull/4432)) + +- **Clipboard Copy over HTTP** — The browser now exposes clipboard copy functionality that works in HTTP-served browser sessions, not just HTTPS. ([#4446](https://github.com/Skyvern-AI/skyvern/pull/4446)) + +## Improvements + +- **HTTP Block Boolean and Integer Templates** — The HTTP Request block now correctly passes boolean and integer template values without coercing them to strings. ([#4435](https://github.com/Skyvern-AI/skyvern/pull/4435)) + +- **Bitwarden and Azure Vault Tooltips** — Added inline help tooltips explaining how to set up Bitwarden and Azure Key Vault credential sources. ([#4447](https://github.com/Skyvern-AI/skyvern/pull/4447)) + +- **Smaller S3 Objects Use STANDARD Tier** — Storage cost optimization: small artifacts now use STANDARD instead of GLACIER_IR. ([#4453](https://github.com/Skyvern-AI/skyvern/pull/4453)) + +- **Reduced Max SVG Parsing** — Lowered the SVG parsing cap to prevent runaway memory usage on pathological pages. ([#4430](https://github.com/Skyvern-AI/skyvern/pull/4430)) + + + + + + +## New features + +- **Workflow Copilot v1** — The first version of the Workflow Copilot ships behind a feature flag. Describe a workflow in natural language and the copilot generates blocks, parameters, and connections you can edit on the canvas. ([#4401](https://github.com/Skyvern-AI/skyvern/pull/4401), [#4413](https://github.com/Skyvern-AI/skyvern/pull/4413), [#4416](https://github.com/Skyvern-AI/skyvern/pull/4416), [#4423](https://github.com/Skyvern-AI/skyvern/pull/4423)) + +- **Per-Action Credit Billing (Billing v2)** — A new billing model meters credits per browser action instead of per step, giving more predictable cost behavior on action-heavy workflows. ([#4398](https://github.com/Skyvern-AI/skyvern/pull/4398)) + +- **Azure Key Vault Secret Storage** — Skyvern can now store and retrieve credentials from Azure Key Vault as a managed secret backend. ([#4384](https://github.com/Skyvern-AI/skyvern/pull/4384)) + +- **Conditional Inside Conditional** — Conditional blocks can now be nested inside other conditional blocks for richer branching logic. ([#4362](https://github.com/Skyvern-AI/skyvern/pull/4362)) + +- **Reference Workflow Output in Sub-Blocks** — Blocks can now reference upstream `workflow_output` variables, simplifying multi-stage workflows. ([#4414](https://github.com/Skyvern-AI/skyvern/pull/4414)) + +- **Browser Type Choice for Persistent Browser Sessions** — Persistent sessions now let you choose the browser type (Chromium, etc.) at create time. ([#4406](https://github.com/Skyvern-AI/skyvern/pull/4406)) + +- **Browser Extension Support for PBS** — Persistent browser sessions can launch with a specified browser extension. ([#4364](https://github.com/Skyvern-AI/skyvern/pull/4364)) + +- **Step Count in Webhooks and Run Payloads** — Webhook payloads and `get_run` responses now include `step_count` for cost reconciliation. ([#4410](https://github.com/Skyvern-AI/skyvern/pull/4410)) + +- **PH (Philippines) Proxy Location** — Added Philippines as a residential proxy option. ([#4395](https://github.com/Skyvern-AI/skyvern/pull/4395)) + +- **TextPromptBlock Artifact Storage** — TextPromptBlock now saves the LLM prompt and response as run artifacts for debugging. ([#4361](https://github.com/Skyvern-AI/skyvern/pull/4361)) + +- **Action–Screenshot Linking** — Actions in the run timeline now link directly to the screenshot captured at the time of execution, so you can see what the agent saw when it made each decision. ([#4403](https://github.com/Skyvern-AI/skyvern/pull/4403), [#4404](https://github.com/Skyvern-AI/skyvern/pull/4404)) + +## Improvements + +- **Clearer Errors for Missing Workflow Parameters** — Missing required parameters now return a clear HTTP 400 instead of HTTP 500. ([#4380](https://github.com/Skyvern-AI/skyvern/pull/4380)) + +- **Empty-String Defaults for String Parameters** — Workflow string parameters without explicit defaults now initialize to `""` instead of `null`, matching common Jinja-template expectations. ([#4382](https://github.com/Skyvern-AI/skyvern/pull/4382)) + +- **HAR Files Use Zstd Compression** — HAR archives now ship as `.har.zst`, cutting storage size significantly with no fidelity loss. ([#4420](https://github.com/Skyvern-AI/skyvern/pull/4420)) + +- **Hydrated Workflow Title in Run Responses** — `workflow_run` responses now include the workflow title for cleaner logging without an extra API call. ([#4363](https://github.com/Skyvern-AI/skyvern/pull/4363)) + +- **Cached Workflow-Script Lookup** — `get_workflow_script_by_cache_key_value` is now cached and post-action execution can re-enable code generation. ([#4385](https://github.com/Skyvern-AI/skyvern/pull/4385)) + +- **Updated Datacenter Proxy Provider** — Datacenter proxies now route through a new provider with broader IP coverage. ([#4386](https://github.com/Skyvern-AI/skyvern/pull/4386)) + +- **Improved Conditional NL Branch Tooltip** — Updated tooltip and placeholder text on conditional blocks to better describe how natural-language branches are evaluated. ([#4368](https://github.com/Skyvern-AI/skyvern/pull/4368), [#4369](https://github.com/Skyvern-AI/skyvern/pull/4369)) + +- **OLLAMA Vision Support Toggle** — Added `OLLAMA_SUPPORTS_VISION` env var to enable vision-capable Ollama models. ([#4351](https://github.com/Skyvern-AI/skyvern/pull/4351)) + +## Bug fixes + +- Fixed older credentials becoming inaccessible after an internal schema change. ([#4358](https://github.com/Skyvern-AI/skyvern/pull/4358)) +- Fixed scrolling actions misfiring on pages with overflow-hidden ancestors. ([#4389](https://github.com/Skyvern-AI/skyvern/pull/4389)) +- Fixed `close_browser_on_completion` not being honored during workflow run cleanup. ([#4381](https://github.com/Skyvern-AI/skyvern/pull/4381)) +- Fixed run-ID generation collisions under high concurrency. ([#4383](https://github.com/Skyvern-AI/skyvern/pull/4383)) +- Fixed empty browser-extension config crashing PBS launch. ([#4365](https://github.com/Skyvern-AI/skyvern/pull/4365)) +- Fixed wrong screenshots being attached to certain actions. ([#4400](https://github.com/Skyvern-AI/skyvern/pull/4400)) +- Fixed nested DB connection management in workflow execution. ([#4402](https://github.com/Skyvern-AI/skyvern/pull/4402), [#4411](https://github.com/Skyvern-AI/skyvern/pull/4411)) +- Fixed `local variable not defined` errors in cached-action execution. ([#4376](https://github.com/Skyvern-AI/skyvern/pull/4376)) +- Fixed artifacts endpoint incorrectly including `api/` in the path. ([#4417](https://github.com/Skyvern-AI/skyvern/pull/4417)) +- Fixed S3 storage class selection for small objects (`_get_storage_class_for_org`). ([#4424](https://github.com/Skyvern-AI/skyvern/pull/4424)) +- Fixed cached actions executing without a brief settling delay. ([#4418](https://github.com/Skyvern-AI/skyvern/pull/4418)) +
diff --git a/docs/cloud/browser-management/browser-profiles.mdx b/docs/cloud/browser-management/browser-profiles.mdx index badca168d..c1ffb0fe0 100644 --- a/docs/cloud/browser-management/browser-profiles.mdx +++ b/docs/cloud/browser-management/browser-profiles.mdx @@ -21,7 +21,7 @@ Profiles are ideal when you: - Need multiple workflows to share the same authenticated state -Looking to manage profiles from code? See the [API & SDK guide](/optimization/browser-profiles) instead. +Looking to manage profiles from code? See the [API & SDK guide](/developers/optimization/browser-profiles) instead. --- @@ -111,7 +111,7 @@ For sites with short-lived sessions (banks, healthcare portals), refresh profile Create and manage profiles programmatically diff --git a/docs/cloud/browser-management/browser-sessions.mdx b/docs/cloud/browser-management/browser-sessions.mdx index 7b6a9df57..a8556944b 100644 --- a/docs/cloud/browser-management/browser-sessions.mdx +++ b/docs/cloud/browser-management/browser-sessions.mdx @@ -15,7 +15,7 @@ keywords: A **browser session** is a live browser instance that stays open between runs. Cookies, login state, cart contents, and page context all persist, like keeping a browser tab open. Use sessions when you need back-to-back tasks to share state, or when you want to interact with the browser yourself between automated steps. -Looking to use browser sessions from code? See the [API & SDK guide](/optimization/browser-sessions) instead. +Looking to use browser sessions from code? See the [API & SDK guide](/developers/optimization/browser-sessions) instead. --- @@ -174,7 +174,7 @@ Use a session when you need a live browser right now. Use a [profile](/cloud/bro Create and manage sessions programmatically diff --git a/docs/cloud/building-workflows/add-parameters.mdx b/docs/cloud/building-workflows/add-parameters.mdx index 568d8d29a..e1ef62a18 100644 --- a/docs/cloud/building-workflows/add-parameters.mdx +++ b/docs/cloud/building-workflows/add-parameters.mdx @@ -15,7 +15,7 @@ keywords: Parameters let you create reusable workflows that accept different input values each time they run. Instead of hardcoding a URL or search term into a block, you reference a parameter and fill in the value when you run the workflow. -This page covers parameters in the Cloud UI workflow editor. If you're building automations in code, parameters are just function arguments. See [Browser Automation](/browser-automations/overview) for the code-first approach. +This page covers parameters in the Cloud UI workflow editor. If you're building automations in code, parameters are just function arguments. See [Browser Automation](/developers/browser-automations/overview) for the code-first approach. --- diff --git a/docs/cloud/building-workflows/build-a-workflow.mdx b/docs/cloud/building-workflows/build-a-workflow.mdx index 695cfaa47..5095a7c84 100644 --- a/docs/cloud/building-workflows/build-a-workflow.mdx +++ b/docs/cloud/building-workflows/build-a-workflow.mdx @@ -16,7 +16,7 @@ keywords: Workflows are multi-step automations built visually in the Cloud UI. You drag blocks onto a canvas, wire them together, configure each one, and run the whole sequence with a click. No code required. Workflows can be versioned, shared across your team, scheduled on a cron, and run with different parameters each time. -If you prefer writing automation code in Python or TypeScript, see [Browser Automation](/browser-automations/overview) in the developer docs. Both approaches handle multi-step work across pages. Workflows are the visual path, browser automations are the code path. +If you prefer writing automation code in Python or TypeScript, see [Browser Automation](/developers/browser-automations/overview) in the developer docs. Both approaches handle multi-step work across pages. Workflows are the visual path, browser automations are the code path. **Workflows vs. Browser Automation:** Workflows are defined in this visual editor and run from the Cloud UI (or [triggered from code](/cloud/building-workflows/run-from-code)). Browser automations are written in Python/TypeScript using Page, Agent, and Browser. Choose based on whether your team prefers a visual editor or a code editor. diff --git a/docs/cloud/building-workflows/configure-blocks.mdx b/docs/cloud/building-workflows/configure-blocks.mdx index e042b3b6f..30cb93437 100644 --- a/docs/cloud/building-workflows/configure-blocks.mdx +++ b/docs/cloud/building-workflows/configure-blocks.mdx @@ -19,7 +19,7 @@ keywords: Workflows are built from blocks. Each block performs one specific operation: navigating a page, extracting data, making an API call, or branching logic. This page covers every block type available in the Cloud UI [workflow editor](/cloud/building-workflows/build-a-workflow), grouped by category. -If you're writing automations in code instead, the equivalent operations are Page and Agent methods. See the [Actions Reference](/browser-automations/actions-reference) for the code-first counterparts to these blocks. +If you're writing automations in code instead, the equivalent operations are Page and Agent methods. See the [Actions Reference](/developers/browser-automations/actions-reference) for the code-first counterparts to these blocks. how to add a block to a workflow in Skyvern diff --git a/docs/cloud/building-workflows/manage-workflows.mdx b/docs/cloud/building-workflows/manage-workflows.mdx index 3b2ae53b7..fce56ae1a 100644 --- a/docs/cloud/building-workflows/manage-workflows.mdx +++ b/docs/cloud/building-workflows/manage-workflows.mdx @@ -15,7 +15,7 @@ keywords: Workflows are multi-step automations built visually in the Cloud UI. Once you've [built a workflow](/cloud/building-workflows/build-a-workflow), the **Workflows** page is where you organize, share, and manage them. Each workflow is a reusable sequence of blocks that you can run with different inputs each time. -If you're building automations in code instead, see the [Browser Automation](/browser-automations/overview) developer docs. +If you're building automations in code instead, see the [Browser Automation](/developers/browser-automations/overview) developer docs. Click **Workflows** in the left sidebar to open it. diff --git a/docs/cloud/building-workflows/run-from-code.mdx b/docs/cloud/building-workflows/run-from-code.mdx index 39461761f..301bd529f 100644 --- a/docs/cloud/building-workflows/run-from-code.mdx +++ b/docs/cloud/building-workflows/run-from-code.mdx @@ -17,7 +17,7 @@ keywords: If you've built a workflow in the Cloud UI and want to trigger it from your codebase, this page shows how. You can run workflows on demand, poll for results, and set up recurring schedules using the Python SDK, TypeScript SDK, or REST API. -This is for workflows defined in the visual editor. If you're writing your entire automation in code (no workflow editor involved), see [Browser Automation](/browser-automations/overview) instead. +This is for workflows defined in the visual editor. If you're writing your entire automation in code (no workflow editor involved), see [Browser Automation](/developers/browser-automations/overview) instead. --- @@ -213,7 +213,7 @@ curl -X POST "https://api.skyvern.com/v1/run/workflows" \ ``` -The webhook payload contains the same data as the polling response. See [Webhooks](/going-to-production/webhooks) for authentication and retry options. +The webhook payload contains the same data as the polling response. See [Webhooks](/developers/going-to-production/webhooks) for authentication and retry options. ### Response fields diff --git a/docs/cloud/building-workflows/scheduling.mdx b/docs/cloud/building-workflows/scheduling.mdx index 379f718e3..c0b8bf9b2 100644 --- a/docs/cloud/building-workflows/scheduling.mdx +++ b/docs/cloud/building-workflows/scheduling.mdx @@ -139,7 +139,7 @@ To change which workflow a schedule runs, delete the schedule and create a new o Manage costs for recurring automations diff --git a/docs/cloud/getting-started/core-concepts.mdx b/docs/cloud/getting-started/core-concepts.mdx index f730fad0d..c776f337b 100644 --- a/docs/cloud/getting-started/core-concepts.mdx +++ b/docs/cloud/getting-started/core-concepts.mdx @@ -1,7 +1,7 @@ --- title: Core Concepts -subtitle: The building blocks of Skyvern automations -description: Understand the building blocks of Skyvern automations +subtitle: The building blocks of every automation in the Skyvern dashboard +description: Understand tasks, workflows, blocks, runs, browser sessions, browser profiles, and credentials in the Skyvern Cloud UI — what each is, where to find it, and how it fits together. slug: cloud/getting-started/core-concepts keywords: - task @@ -10,10 +10,236 @@ keywords: - browser session - browser profile - credential + - run + - schedule - engine - - run status --- -import CoreConceptsContent from "/snippets/core-concepts-content.mdx"; +Every automation you build in Skyvern Cloud is composed of the same nine building blocks. This page is a quick tour of each one — what it is, where you find it in the dashboard, and when to reach for it. - +If you've already poked around the dashboard, this map will tie what you've seen to the underlying concepts. + +--- + +## Tasks + +A **Task** is a single automation job. You describe what you want, Skyvern opens a browser and does it. + +You create tasks from the **Discover** page. Type your prompt and target URL into the input bar, pick an engine, and hit send. + +Discover page where you create one-off tasks + +Tasks are the right starting point for one-off automations, ad-hoc data extraction, or quickly testing whether an idea is feasible before turning it into a workflow. + +When you outgrow a single task — you need parameters, branching, loops, or to run the same flow on a schedule — graduate to a Workflow. + + + Walkthrough of every option on the Discover page. + + +--- + +## Workflows + +A **Workflow** is a reusable automation built by chaining blocks together on a visual canvas. Workflows are versioned, parameterized, and shareable across your team. + +You build them on the **Workflows** page. Click any workflow to open the editor, where blocks appear as connected nodes you can drag and configure. + +Workflow editor with blocks chained together + +Use a workflow when: + +- The same flow needs to run repeatedly with different inputs +- You need to loop over a list, branch on a condition, or pass data between steps +- You want to schedule the automation to run on a cadence +- You want a teammate to be able to re-run it without re-deriving the logic + + + Tutorial covering blocks, parameters, branching, and execution. + + +--- + +## Blocks + +**Blocks** are the units a workflow is built from. Each block performs one thing — navigate, log in, extract data, branch on a condition, send an email — and passes its output to the next block. + +In the workflow editor, click the **+** button on any node to insert a new block. The picker groups every available block by category. + +Block picker with categories and block types + +There are 20+ block types organized into: + +- **Browser automation** — Browser Task, Browser Action, Login, Extraction, Go to URL, Print Page +- **Data and extraction** — Text Prompt, File Parser +- **Control flow** — Loop, Conditional, AI Validation, Code, Wait +- **Files** — File Download, Cloud Storage Upload +- **Communication** — Send Email, HTTP Request, Human Interaction + +Each block has its own configuration panel. The full reference, with every field for every block, lives at [Workflow Blocks](/cloud/building-workflows/configure-blocks). + +--- + +## Runs + +Every time a task or workflow executes, Skyvern creates a **Run** — a record of what happened, with a video, screenshots, action log, and any extracted data. + +The **Runs** page is your history. Filter by status, search by run ID, click any row to drill in. + +Runs page showing execution history with statuses + +Inside a run detail page you'll find: + +- **Live viewer / recording** — full video of the browser as it executed +- **Actions** — every step the agent took, with the LLM's reasoning +- **Output** — the structured data extracted (matches the schema you defined) +- **Code** — auto-generated Python/TypeScript/cURL to reproduce this run via API +- **Downloaded files** — anything Skyvern saved, with signed URLs and checksums + +A run can be `queued`, `running`, `completed`, `failed`, `terminated`, `timed_out`, or `canceled`. You're billed per **step** — one screenshot + LLM decision + browser action. + + + How to interpret the actions tab, recordings, and output. + + +--- + +## Browser sessions + +A **browser session** is a live browser instance you keep open across multiple runs. Sessions preserve everything that lives in the browser — cookies, login state, cached pages, the current tab — so a follow-up task picks up exactly where the previous one left off. + +You manage sessions on the **Browsers** page. Create a session, run tasks against it, then close it when you're done. + +Browsers page with active session and details + +Sessions are perfect when you want to: + +- Log in once, then run a sequence of tasks behind that login +- Hand off a partially-completed flow between an agent and a human (Take Control) +- Keep a long-running automation warm without re-authenticating each step + +Sessions live for 5 minutes to 24 hours (default 60 minutes). When the timer ends or you close it manually, the browser is destroyed and its state goes with it. + + + Create, attach, and reuse sessions across runs. + + +--- + +## Browser profiles + +A **browser profile** is the persistent counterpart to a session. Where a session is a live browser that times out, a profile is a saved snapshot — cookies, auth tokens, local storage — that you can reload weeks later to skip the login flow entirely. + +Profiles are listed on the **Browsers** page under the Profiles tab. You create one from any completed run, then attach it to future runs to start in an already-authenticated state. + +| | Browser session | Browser profile | +|---|---|---| +| **Live or saved?** | Live, in-memory browser | Saved snapshot of state | +| **Lifetime** | 5 min – 24 hr | Indefinite | +| **Best for** | Chaining tasks in real time | Skipping login on repeat runs | + + + Save and reuse authenticated state across days or weeks. + + +--- + +## Credentials + +A **credential** is a stored login, credit card, or 2FA secret that Skyvern injects directly into the browser at runtime. Credentials are encrypted at rest and **never sent to the LLM** — the agent decides where the password field is, and the value is filled in via the browser layer. + +The **Credentials** page is where you manage them. + +Credentials page with password and credit card credentials + +Three credential types are supported: + +- **Password** — username + password, optionally with a TOTP secret or email/SMS 2FA +- **Credit card** — card number, expiry, CVC, billing address +- **Secret** — any single value you want to keep out of the LLM context + +You can also sync credentials from **Bitwarden**, **1Password**, or **Azure Key Vault** instead of storing them in Skyvern. + + + Security model, supported types, and external vault integration. + + +--- + +## Schedules + +A **schedule** runs a workflow automatically on a recurring cadence. You set a cron expression and timezone, and Skyvern fires the workflow at every interval — no manual trigger needed. + +Schedules are configured per workflow. Open any workflow's actions menu and choose **Schedule**. + +Schedule form with cron expression and timezone + +Use schedules for daily reports, hourly monitoring, periodic data syncs, or anything that should "just keep running" without you remembering to click Run. + + + Cron syntax, timezones, and managing scheduled runs. + + +--- + +## Engines + +An **engine** is the AI model Skyvern uses to drive the browser. Different engines have different strengths — speed, accuracy on complex pages, cost — and you can pick one per task or per block. + +The engine picker appears on the Discover page (for tasks) and on every browser-driven block in the workflow editor. + +| Engine | When to use | +|--------|-------------| +| **Skyvern 2.0** | Default. Best balance of accuracy and speed for most automations. | +| **Skyvern 1.0** | Lighter and faster for simple, single-page interactions. | +| **OpenAI CUA** | OpenAI's Computer Use Agent. Good for visual reasoning. | +| **Anthropic CUA** | Anthropic's Claude Computer Use. Strong at multi-step planning. | +| **UI-TARS** | Lightweight CUA model option. | + +If you're not sure, leave it on the default. Switch engines if you hit accuracy issues on a specific site. + +--- + +## How they fit together + +```mermaid +flowchart LR + A[Task] -->|Single job, one prompt| R1[Run] + W[Workflow] -->|Reusable, multi-step| R2[Run] + W -->|Composed of| B[Blocks] + S[Schedule] -->|Triggers| W + R1 & R2 -->|Optionally use| BS[Browser Session] + BS -->|Snapshot to| BP[Browser Profile] + BP -->|Restored by| R1 + BP -->|Restored by| R2 + R1 & R2 -->|Inject at runtime| C[Credentials] + R1 & R2 -->|Driven by| E[Engine] +``` + +A typical day in the dashboard: + +1. **Prototype** with a Task on the Discover page. Iterate on the prompt until it works. +2. **Productionize** by turning the prompt into a Workflow with Blocks, Parameters, and a Schedule. +3. **Persist state** by saving a Browser Profile after the first authenticated run, so future runs skip login. +4. **Audit** every execution on the Runs page — recording, actions, output, downloaded files. + +--- + +## Next steps + + + + Hands-on tutorial — go from prompt to extracted data in a few minutes. + + + Wire blocks together into a reusable, parameterized automation. + + diff --git a/docs/cloud/getting-started/overview.mdx b/docs/cloud/getting-started/overview.mdx index 1478960ad..93e73d12b 100644 --- a/docs/cloud/getting-started/overview.mdx +++ b/docs/cloud/getting-started/overview.mdx @@ -20,7 +20,7 @@ New to Skyvern? The [homepage](/) covers how Skyvern works under the hood, built -Looking to integrate Skyvern into your own app? See the [Quickstart](/getting-started/quickstart) instead. +Looking to integrate Skyvern into your own app? See the [Quickstart](/developers/getting-started/quickstart) instead. ## The dashboard @@ -87,7 +87,7 @@ That's it. The next guide walks you through this flow with a real example. Understand tasks, workflows, and other foundational concepts diff --git a/docs/cloud/getting-started/run-from-code.mdx b/docs/cloud/getting-started/run-from-code.mdx index 72d10d7ca..2c0448a0b 100644 --- a/docs/cloud/getting-started/run-from-code.mdx +++ b/docs/cloud/getting-started/run-from-code.mdx @@ -348,10 +348,10 @@ The response from polling (`get_run`) and webhooks have slightly different struc ### Artifacts -Every run captures recordings, screenshots, and logs. See [Using Artifacts](/debugging/using-artifacts) for retrieval and the full artifact type reference. +Every run captures recordings, screenshots, and logs. See [Using Artifacts](/developers/debugging/using-artifacts) for retrieval and the full artifact type reference. --- -For multi-step automations that chain multiple actions, see [Browser Automation](/browser-automations/overview). +For multi-step automations that chain multiple actions, see [Browser Automation](/developers/browser-automations/overview). diff --git a/docs/cloud/getting-started/run-your-first-task.mdx b/docs/cloud/getting-started/run-your-first-task.mdx index f416fb2d2..1fd3ef98b 100644 --- a/docs/cloud/getting-started/run-your-first-task.mdx +++ b/docs/cloud/getting-started/run-your-first-task.mdx @@ -134,7 +134,7 @@ Now that you've seen the basic flow, here are a few ideas to try next: Understand tasks, workflows, and other building blocks diff --git a/docs/cloud/viewing-results/downloading-artifacts.mdx b/docs/cloud/viewing-results/downloading-artifacts.mdx index 08163eacb..4a29ebbe8 100644 --- a/docs/cloud/viewing-results/downloading-artifacts.mdx +++ b/docs/cloud/viewing-results/downloading-artifacts.mdx @@ -97,7 +97,7 @@ The annotated screenshots (`screenshot_llm`) and parsed action lists (`llm_respo Full API reference for artifact retrieval diff --git a/docs/cookbooks/bulk-invoice-downloader.mdx b/docs/cookbooks/bulk-invoice-downloader.mdx index 2e79b1dad..d4f0c6978 100644 --- a/docs/cookbooks/bulk-invoice-downloader.mdx +++ b/docs/cookbooks/bulk-invoice-downloader.mdx @@ -1239,7 +1239,7 @@ Create the workflow from your definition file and execute it. Download, parse, and upload files in workflows - + Handle failures and retries in production diff --git a/docs/cookbooks/healthcare-portal-data.mdx b/docs/cookbooks/healthcare-portal-data.mdx index 41b3e1b4b..cf41aca04 100644 --- a/docs/cookbooks/healthcare-portal-data.mdx +++ b/docs/cookbooks/healthcare-portal-data.mdx @@ -24,7 +24,7 @@ This cookbook extracts two datasets from [OpenEMR](https://www.open-emr.org/), a ## Prerequisites -- A [Skyvern Cloud](https://app.skyvern.com) account or [self-hosted](/self-hosted/overview) deployment +- A [Skyvern Cloud](https://app.skyvern.com) account or [self-hosted](/developers/self-hosted/overview) deployment - The Skyvern SDK (for API usage) @@ -103,7 +103,7 @@ Route the browser through a residential IP to bypass WAF/bot detection. The demo -See [Proxy & Geolocation](/going-to-production/proxy-geolocation) for all available locations. +See [Proxy & Geolocation](/developers/going-to-production/proxy-geolocation) for all available locations. --- @@ -263,7 +263,7 @@ Log in once, save the browser state as a profile, and skip login on future runs. -`persist_browser_session` is a workflow definition property. Set it when creating the workflow, not when running it. See [Browser Profiles](/optimization/browser-profiles) for the full lifecycle. +`persist_browser_session` is a workflow definition property. Set it when creating the workflow, not when running it. See [Browser Profiles](/developers/optimization/browser-profiles) for the full lifecycle. --- @@ -397,7 +397,7 @@ The demo resets daily and community users add test patients, so exact records ma -Browser profiles cannot be used directly with standalone tasks. Create a [browser session](/optimization/browser-sessions) from the profile first, then pass the session ID. See [Pagination with browser sessions](#pagination-with-browser-sessions) below for the full pattern. +Browser profiles cannot be used directly with standalone tasks. Create a [browser session](/developers/optimization/browser-sessions) from the profile first, then pass the session ID. See [Pagination with browser sessions](#pagination-with-browser-sessions) below for the full pattern. --- @@ -510,7 +510,7 @@ Navigate to **Reports > Visits > Superbill**, set a date range, and extract the ## Pagination with browser sessions -A [Browser Profile](/optimization/browser-profiles) is a saved snapshot. A [Browser Session](/optimization/browser-sessions) is a live browser instance that persists between tasks. Use sessions to paginate: extract page 1, click Next, extract page 2. +A [Browser Profile](/developers/optimization/browser-profiles) is a saved snapshot. A [Browser Session](/developers/optimization/browser-sessions) is a live browser instance that persists between tasks. Use sessions to paginate: extract page 1, click Next, extract page 2. @@ -786,7 +786,7 @@ OpenEMR can timeout or show session-expired pages. Use `error_code_mapping` on w -See [Error Handling](/going-to-production/error-handling) and [CAPTCHA & Bot Bypass](/features/captcha-and-bot-bypass) for more. +See [Error Handling](/developers/going-to-production/error-handling) and [CAPTCHA & Bot Bypass](/developers/features/captcha-and-bot-bypass) for more. --- @@ -1062,7 +1062,7 @@ This workflow combines everything: navigate to the Patient Finder, extract demog | Error mapping + retries | Recover from session timeouts | -The OpenEMR demo resets daily at 8:00 AM UTC, so profiles expire every day. In production, re-run your login workflow weekly or whenever extractions fail with auth errors. See [Browser Profiles](/optimization/browser-profiles) for the refresh pattern. +The OpenEMR demo resets daily at 8:00 AM UTC, so profiles expire every day. In production, re-run your login workflow weekly or whenever extractions fail with auth errors. See [Browser Profiles](/developers/optimization/browser-profiles) for the refresh pattern. --- @@ -1073,14 +1073,14 @@ The OpenEMR demo resets daily at 8:00 AM UTC, so profiles expire every day. In p Full lifecycle: create, refresh, and delete saved browser state All proxy locations and country-specific routing options @@ -1094,7 +1094,7 @@ The OpenEMR demo resets daily at 8:00 AM UTC, so profiles expire every day. In p Error code mapping, failure classification, and retry strategies diff --git a/docs/cookbooks/job-application-filler.mdx b/docs/cookbooks/job-application-filler.mdx index d37d6fb8d..0a779162f 100644 --- a/docs/cookbooks/job-application-filler.mdx +++ b/docs/cookbooks/job-application-filler.mdx @@ -1155,7 +1155,7 @@ Create the workflow from your definition file and execute it. Upload and parse files in workflows - + Handle failures and retries in production diff --git a/docs/browser-automations/actions-reference.mdx b/docs/developers/browser-automations/actions-reference.mdx similarity index 98% rename from docs/browser-automations/actions-reference.mdx rename to docs/developers/browser-automations/actions-reference.mdx index bd3311373..2a9b74e06 100644 --- a/docs/browser-automations/actions-reference.mdx +++ b/docs/developers/browser-automations/actions-reference.mdx @@ -2,7 +2,7 @@ title: Actions Reference subtitle: Every page action and agent method description: Reference for all page actions (act, extract, validate, prompt, click, fill, select_option) and agent methods (login, run_task, download_files, run_workflow) with parameters and return types. -slug: browser-automations/actions-reference +slug: developers/browser-automations/actions-reference keywords: - act - extract @@ -550,14 +550,14 @@ console.log(result.output) | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `prompt` | `str` | Yes | Multi-step goal description | -| `data_extraction_schema` | `dict \| str` | No | JSON Schema for structured output. See [Extract Structured Data](/browser-automations/extract-structured-data). | +| `data_extraction_schema` | `dict \| str` | No | JSON Schema for structured output. See [Extract Structured Data](/developers/browser-automations/extract-structured-data). | | `max_steps` | `int` | No | Cap AI steps. The run terminates with `timed_out` if hit. Controls cost; each step is one AI decision + action cycle. | | `engine` | `RunEngine` | No | AI engine. Defaults to `skyvern-1.0` in the SDK for backward compatibility. Pass `skyvern-2.0` for the latest model (also the Cloud UI default). Other options: `openai-cua`, `anthropic-cua`, `ui-tars`. | | `model` | `dict` / `Record` | No | Override LLM model configuration | | `url` | `str` / `string` | No | URL to navigate to (defaults to current page URL) | -| `webhook_url` | `str` / `string` | No | Callback URL. Skyvern POSTs the full run result on completion or failure. See [Webhooks](/going-to-production/webhooks). | -| `totp_identifier` | `str` / `string` | No | Identifier for push-based TOTP. See [Handle 2FA](/credentials/handle-2fa). | -| `totp_url` | `str` / `string` | No | Endpoint Skyvern calls to pull TOTP codes. See [Handle 2FA](/credentials/handle-2fa). | +| `webhook_url` | `str` / `string` | No | Callback URL. Skyvern POSTs the full run result on completion or failure. See [Webhooks](/developers/going-to-production/webhooks). | +| `totp_identifier` | `str` / `string` | No | Identifier for push-based TOTP. See [Handle 2FA](/developers/credentials/handle-2fa). | +| `totp_url` | `str` / `string` | No | Endpoint Skyvern calls to pull TOTP codes. See [Handle 2FA](/developers/credentials/handle-2fa). | | `title` | `str` / `string` | No | Display name for this run | | `error_code_mapping` | `dict` / `Record` | No | Map custom error codes to conditions. Keys are your error codes, values describe when to trigger them. If matched, `output` contains `{"error": "your_code"}`. | | `user_agent` | `str` / `string` | No | Custom User-Agent header for the browser | @@ -633,7 +633,7 @@ const result = await page.agent.runWorkflow( | `parameters` | `dict` | No | Workflow input parameters | | `template` | `bool` | No | Run a template workflow | | `title` | `str` / `string` | No | Display name for this run | -| `webhook_url` | `str` / `string` | No | Callback URL for run completion. See [Webhooks](/going-to-production/webhooks). | +| `webhook_url` | `str` / `string` | No | Callback URL for run completion. See [Webhooks](/developers/going-to-production/webhooks). | | `totp_url` | `str` / `string` | No | Endpoint for pulling TOTP codes | | `totp_identifier` | `str` / `string` | No | Identifier for push-based TOTP | | `timeout` | `float` | No | Max wait in seconds (default: 1800) | diff --git a/docs/browser-automations/extract-structured-data.mdx b/docs/developers/browser-automations/extract-structured-data.mdx similarity index 99% rename from docs/browser-automations/extract-structured-data.mdx rename to docs/developers/browser-automations/extract-structured-data.mdx index 32bc34d73..07a9374e3 100644 --- a/docs/browser-automations/extract-structured-data.mdx +++ b/docs/developers/browser-automations/extract-structured-data.mdx @@ -2,7 +2,7 @@ title: Extract Structured Data subtitle: Get consistent, typed output from your automations description: Define JSON Schema extraction schemas for Skyvern tasks to get consistent, typed output. Build schemas for single objects or arrays of items with the interactive schema builder. -slug: browser-automations/extract-structured-data +slug: developers/browser-automations/extract-structured-data keywords: - JSON Schema - extraction schema @@ -703,14 +703,14 @@ If using webhooks, the same `output` field appears in the webhook payload. All available page actions and agent methods Launch a browser, navigate pages, and extract data diff --git a/docs/browser-automations/handle-browsers.mdx b/docs/developers/browser-automations/handle-browsers.mdx similarity index 93% rename from docs/browser-automations/handle-browsers.mdx rename to docs/developers/browser-automations/handle-browsers.mdx index 28e878153..2ce270a33 100644 --- a/docs/browser-automations/handle-browsers.mdx +++ b/docs/developers/browser-automations/handle-browsers.mdx @@ -2,7 +2,7 @@ title: Handle Browsers subtitle: Launch, connect, configure, and manage browser sessions description: Launch cloud browsers, connect via CDP, configure proxies and timeouts, open multiple tabs, and manage browser lifecycle for Skyvern automations. -slug: browser-automations/handle-browsers +slug: developers/browser-automations/handle-browsers keywords: - launch_cloud_browser - use_cloud_browser @@ -133,7 +133,7 @@ skyvern = Skyvern.local() browser = await skyvern.launch_local_browser(headless=False, port=9222) ``` -See the [Self-Hosted Browser Configuration](/self-hosted/browser) guide for headless/headful modes, display settings, and Docker setups. +See the [Self-Hosted Browser Configuration](/developers/self-hosted/browser) guide for headless/headful modes, display settings, and Docker setups. --- @@ -188,7 +188,7 @@ await browser.close(); ``` -Closes the browser and releases cloud resources. If connected to a cloud session, the session ends. Any unsaved state (cookies, localStorage) is lost unless you saved a [browser profile](/optimization/browser-profiles) first. +Closes the browser and releases cloud resources. If connected to a cloud session, the session ends. Any unsaved state (cookies, localStorage) is lost unless you saved a [browser profile](/developers/optimization/browser-profiles) first. --- @@ -226,7 +226,7 @@ Available locations: | `RESIDENTIAL_CA` | Canada | | `NONE` | No proxy (direct connection) | -For self-hosted proxy configuration, see [Proxy Setup](/self-hosted/proxy). +For self-hosted proxy configuration, see [Proxy Setup](/developers/self-hosted/proxy). --- @@ -234,9 +234,9 @@ For self-hosted proxy configuration, see [Proxy Setup](/self-hosted/proxy). Two mechanisms for preserving browser state between automation runs: -**Browser Sessions** keep a browser alive between API calls. Use `create_browser_session` from the [Tasks API](/sdk-reference/tasks/run-task) to create a session, then pass its ID to multiple `run_task` calls. See [Browser Sessions](/optimization/browser-sessions). +**Browser Sessions** keep a browser alive between API calls. Use `create_browser_session` from the [Tasks API](/sdk-reference/tasks/run-task) to create a session, then pass its ID to multiple `run_task` calls. See [Browser Sessions](/developers/optimization/browser-sessions). -**Browser Profiles** save a snapshot of browser state (cookies, localStorage) that persists indefinitely. Create a profile from a completed run, then load it into future runs to skip login. See [Browser Profiles](/optimization/browser-profiles). +**Browser Profiles** save a snapshot of browser state (cookies, localStorage) that persists indefinitely. Create a profile from a completed run, then load it into future runs to skip login. See [Browser Profiles](/developers/optimization/browser-profiles). --- diff --git a/docs/browser-automations/overview.mdx b/docs/developers/browser-automations/overview.mdx similarity index 97% rename from docs/browser-automations/overview.mdx rename to docs/developers/browser-automations/overview.mdx index fd63ebeb3..19e971eee 100644 --- a/docs/browser-automations/overview.mdx +++ b/docs/developers/browser-automations/overview.mdx @@ -2,7 +2,7 @@ title: Build a Browser Automation subtitle: Step-by-step guide to multi-step automations with code description: Launch a cloud browser, interact with pages using AI and Playwright, chain agent tasks, and build complete browser automations in Python or TypeScript. -slug: browser-automations/overview +slug: developers/browser-automations/overview keywords: - launch_cloud_browser - get_working_page @@ -74,13 +74,13 @@ const page = await browser.getWorkingPage(); The browser stays alive until you call `browser.close()` or the session times out (default: 60 minutes). All pages inside it share cookies, localStorage, and auth state. -For browser launch options (timeouts, proxies, connecting to local browsers), see [Managing Browsers](/browser-automations/handle-browsers). +For browser launch options (timeouts, proxies, connecting to local browsers), see [Managing Browsers](/developers/browser-automations/handle-browsers). --- ## Step 2: Navigate and interact with the page -Once you have a page, you can interact with it using standard Playwright, AI actions, or both. For the full list of available methods and parameters, see the [Actions Reference](/browser-automations/actions-reference). +Once you have a page, you can interact with it using standard Playwright, AI actions, or both. For the full list of available methods and parameters, see the [Actions Reference](/developers/browser-automations/actions-reference). ### Navigate @@ -528,7 +528,7 @@ for (const artifact of artifacts) { ``` -For the full artifact type reference and debugging workflows, see [Using Artifacts](/debugging/using-artifacts). +For the full artifact type reference and debugging workflows, see [Using Artifacts](/developers/debugging/using-artifacts). --- @@ -538,14 +538,14 @@ For the full artifact type reference and debugging workflows, see [Using Artifac Every page action and agent method with parameters and return types Launch options, multiple tabs, proxies, connecting to local browsers diff --git a/docs/browser-automations/work-with-files.mdx b/docs/developers/browser-automations/work-with-files.mdx similarity index 97% rename from docs/browser-automations/work-with-files.mdx rename to docs/developers/browser-automations/work-with-files.mdx index 17e76e879..b8fd4ac86 100644 --- a/docs/browser-automations/work-with-files.mdx +++ b/docs/developers/browser-automations/work-with-files.mdx @@ -2,7 +2,7 @@ title: Work with Files subtitle: Download files from websites during browser automations description: Use agent.download_files to navigate websites, find download links, and retrieve files. Access downloaded files via presigned URLs. -slug: browser-automations/work-with-files +slug: developers/browser-automations/work-with-files keywords: - download_files - downloaded_files @@ -177,4 +177,4 @@ Files downloaded during a workflow accumulate in a temporary directory and can b ## Full reference - [agent.download_files](/sdk-reference/browser-automation/agent-download-files) - SDK reference with all parameter options -- [Using Artifacts](/debugging/using-artifacts) - access recordings, screenshots, and downloaded files from any run +- [Using Artifacts](/developers/debugging/using-artifacts) - access recordings, screenshots, and downloaded files from any run diff --git a/docs/credentials/handle-2fa.mdx b/docs/developers/credentials/handle-2fa.mdx similarity index 98% rename from docs/credentials/handle-2fa.mdx rename to docs/developers/credentials/handle-2fa.mdx index d255fa63a..25c34dc45 100644 --- a/docs/credentials/handle-2fa.mdx +++ b/docs/developers/credentials/handle-2fa.mdx @@ -2,7 +2,7 @@ title: Handle 2FA subtitle: Configure two-factor authentication for automated logins description: Configure two-factor authentication for Skyvern automations using TOTP secrets, pushed verification codes, pull-based endpoints, or magic links. Supports Bitwarden TOTP integration. -slug: credentials/handle-2fa +slug: developers/credentials/handle-2fa keywords: - TOTP - 2FA @@ -507,10 +507,10 @@ Skyvern only returns codes from the last 10 minutes (configurable via `TOTP_LIFE ## Next steps - + Set up your credential vault integration - + Debug 2FA and login failures diff --git a/docs/credentials/store-credentials.mdx b/docs/developers/credentials/store-credentials.mdx similarity index 98% rename from docs/credentials/store-credentials.mdx rename to docs/developers/credentials/store-credentials.mdx index 9c8db922b..5203174e5 100644 --- a/docs/credentials/store-credentials.mdx +++ b/docs/developers/credentials/store-credentials.mdx @@ -2,7 +2,7 @@ title: Store Credentials subtitle: Securely manage login credentials, credit cards, and API secrets description: Create, manage, and delete credentials using Skyvern's credential API. Store passwords, credit cards, and API secrets in Bitwarden, 1Password, Azure Key Vault, or a custom vault. -slug: credentials/store-credentials +slug: developers/credentials/store-credentials keywords: - create_credential - get_credentials @@ -486,10 +486,10 @@ When you view a run's artifacts or recordings, you'll see placeholder values lik ## Next steps - + Set up two-factor authentication for your automations - + Debug common login failures diff --git a/docs/credentials/troubleshooting-login.mdx b/docs/developers/credentials/troubleshooting-login.mdx similarity index 97% rename from docs/credentials/troubleshooting-login.mdx rename to docs/developers/credentials/troubleshooting-login.mdx index d5c8225d7..37b25b35b 100644 --- a/docs/credentials/troubleshooting-login.mdx +++ b/docs/developers/credentials/troubleshooting-login.mdx @@ -2,7 +2,7 @@ title: Troubleshooting Login Failures subtitle: Debug common authentication issues in your automations description: Debug common login failures in Skyvern automations including credential errors, expired 2FA codes, CAPTCHA blocks, SSO redirects, and multi-step login flows. Includes a step-by-step debugging checklist. -slug: credentials/troubleshooting-login +slug: developers/credentials/troubleshooting-login keywords: - login failure - debug @@ -340,10 +340,10 @@ Contact [support@skyvern.com](mailto:support@skyvern.com) or join our [Discord]( ## Next steps - + Review credential setup - + Configure two-factor authentication diff --git a/docs/debugging/faq.mdx b/docs/developers/debugging/faq.mdx similarity index 95% rename from docs/debugging/faq.mdx rename to docs/developers/debugging/faq.mdx index 2dc25ae0a..611ce0444 100644 --- a/docs/debugging/faq.mdx +++ b/docs/developers/debugging/faq.mdx @@ -2,7 +2,7 @@ title: Frequently Asked Questions subtitle: Common questions and answers from the Skyvern community description: Answers to common Skyvern questions covering troubleshooting failed tasks, workflow parameters, credentials, scheduling, proxy configuration, API polling, data extraction, and LLM model selection. -slug: debugging/faq +slug: developers/debugging/faq keywords: - FAQ - common questions @@ -28,7 +28,7 @@ Common causes: - **`timed_out`**: Exceeded `max_steps`. Increase it or simplify the task - **`failed`**: System error (browser crash, network failure) -See the [Troubleshooting Guide](/debugging/troubleshooting-guide) for detailed steps. +See the [Troubleshooting Guide](/developers/debugging/troubleshooting-guide) for detailed steps. @@ -115,7 +115,7 @@ Yes. Skyvern has built-in cron-based scheduling for workflows. You define a cron - **Cloud UI**: Create and manage schedules from the [Schedules page](/cloud/building-workflows/scheduling) - **API**: Use the [scheduling API](/cloud/building-workflows/run-from-code#create-a-schedule) to create, update, enable/disable, and delete schedules programmatically -Scheduled runs appear in [Run History](/cloud/viewing-results/run-history) with a calendar icon badge. Set up a [webhook](/going-to-production/webhooks) to get notified when scheduled runs complete. +Scheduled runs appear in [Run History](/cloud/viewing-results/run-history) with a calendar icon badge. Set up a [webhook](/developers/going-to-production/webhooks) to get notified when scheduled runs complete. @@ -193,7 +193,7 @@ while True: await asyncio.sleep(5) ``` -Or use [webhooks](/going-to-production/webhooks) to get notified when runs complete without polling. +Or use [webhooks](/developers/going-to-production/webhooks) to get notified when runs complete without polling. @@ -262,7 +262,7 @@ Skyvern has built-in CAPTCHA solving for common types, but some sites use advanc 2. Create a new TOTP credential with your authenticator secret 3. Reference the TOTP credential in your workflow's login block -The AI will automatically fetch and enter the TOTP code when it encounters a 2FA prompt. See [TOTP Setup](/credentials/totp) for detailed instructions. +The AI will automatically fetch and enter the TOTP code when it encounters a 2FA prompt. See [TOTP Setup](/developers/credentials/totp) for detailed instructions. @@ -333,7 +333,7 @@ If persistent, contact support with your run IDs. - An LLM API key (OpenAI, Anthropic, Azure, Gemini, or Ollama) - Docker (optional, for containerized deployment) -Run `skyvern init` for an interactive setup wizard. See the [Quickstart](/getting-started/quickstart) for full instructions. +Run `skyvern init` for an interactive setup wizard. See the [Quickstart](/developers/getting-started/quickstart) for full instructions. @@ -393,7 +393,7 @@ Go to [Settings > Billing](https://app.skyvern.com/billing) to download invoices Step-by-step debugging for failed runs diff --git a/docs/debugging/observability-with-laminar.mdx b/docs/developers/debugging/observability-with-laminar.mdx similarity index 94% rename from docs/debugging/observability-with-laminar.mdx rename to docs/developers/debugging/observability-with-laminar.mdx index f1f999a86..8ef34e59f 100644 --- a/docs/debugging/observability-with-laminar.mdx +++ b/docs/developers/debugging/observability-with-laminar.mdx @@ -2,7 +2,7 @@ title: Observability with Laminar subtitle: Add observability to your Skyvern automations with Laminar description: Integrate Laminar observability into Skyvern to capture traces of automation runs, track LLM call latency and token usage, monitor failure rates, and debug performance across tasks and workflows. -slug: debugging/observability-with-laminar +slug: developers/debugging/observability-with-laminar keywords: - Laminar - traces @@ -20,7 +20,7 @@ keywords: - **Self-hosted**: Skyvern's server can export full traces to Laminar, including every LLM call (prompts, responses, token usage), browser actions, and workflow step execution. See [self-hosted tracing setup](#self-hosted-tracing-setup) below. -Laminar traces complement [artifacts](/debugging/using-artifacts). Use artifacts for per-run debugging (screenshots, recordings, logs) and Laminar for tracking patterns across runs (failure rates, response times, and which tasks are slowest). +Laminar traces complement [artifacts](/developers/debugging/using-artifacts). Use artifacts for per-run debugging (screenshots, recordings, logs) and Laminar for tracking patterns across runs (failure rates, response times, and which tasks are slowest). @@ -215,14 +215,14 @@ No code changes needed. Once the env vars are set, traces appear in your Laminar Per-run recordings, screenshots, logs, and network data Common issues and how to fix them diff --git a/docs/debugging/troubleshooting-guide.mdx b/docs/developers/debugging/troubleshooting-guide.mdx similarity index 97% rename from docs/debugging/troubleshooting-guide.mdx rename to docs/developers/debugging/troubleshooting-guide.mdx index d94d83513..63aeb6652 100644 --- a/docs/debugging/troubleshooting-guide.mdx +++ b/docs/developers/debugging/troubleshooting-guide.mdx @@ -2,7 +2,7 @@ title: Troubleshooting Guide subtitle: Common issues, step timeline, and when to adjust what description: Diagnose and fix common Skyvern run failures using the step timeline, artifacts, and run status. Covers issues like wrong output, timeouts, CAPTCHA blocks, login failures, and element detection problems. -slug: debugging/troubleshooting-guide +slug: developers/debugging/troubleshooting-guide keywords: - step timeline - wrong output @@ -172,7 +172,7 @@ curl -X GET "https://api.skyvern.com/v1/runs/$RUN_ID/artifacts?artifact_type=scr ``` -See [Using Artifacts](/debugging/using-artifacts) for the full list of artifact types. +See [Using Artifacts](/developers/debugging/using-artifacts) for the full list of artifact types. --- @@ -372,14 +372,14 @@ See [Using Artifacts](/debugging/using-artifacts) for the full list of artifact Detailed reference for all artifact types Write prompts that fail less often diff --git a/docs/debugging/using-artifacts.mdx b/docs/developers/debugging/using-artifacts.mdx similarity index 98% rename from docs/debugging/using-artifacts.mdx rename to docs/developers/debugging/using-artifacts.mdx index 0811b84b9..ab9925c65 100644 --- a/docs/debugging/using-artifacts.mdx +++ b/docs/developers/debugging/using-artifacts.mdx @@ -2,7 +2,7 @@ title: Using Artifacts subtitle: Access recordings, screenshots, logs, and network data for every run description: Retrieve and inspect artifacts from Skyvern runs including browser recordings, screenshots, AI reasoning logs, DOM element trees, network HAR files, and Playwright traces to debug failures and unexpected results. -slug: debugging/using-artifacts +slug: developers/debugging/using-artifacts keywords: - artifact - recording @@ -208,14 +208,14 @@ These contain structured execution data. Common issues and how to fix them Map errors to custom codes for programmatic handling diff --git a/docs/features/authentication-and-2fa.mdx b/docs/developers/features/authentication-and-2fa.mdx similarity index 93% rename from docs/features/authentication-and-2fa.mdx rename to docs/developers/features/authentication-and-2fa.mdx index ce53f99d7..3693fdecc 100644 --- a/docs/features/authentication-and-2fa.mdx +++ b/docs/developers/features/authentication-and-2fa.mdx @@ -2,7 +2,7 @@ title: Authentication & 2FA subtitle: Log in to any site, including sites with multi-factor authentication description: Skyvern handles logins with stored credentials, TOTP/authenticator codes, email and SMS verification, magic links, and password manager integrations with Bitwarden, 1Password, and Azure Key Vault. -slug: features/authentication-and-2fa +slug: developers/features/authentication-and-2fa icon: key keywords: - authentication @@ -43,19 +43,19 @@ You'll see this in practice: run recordings, action timelines, and LLM prompts s Create passwords, cards, and secrets. Wire up Bitwarden, 1Password, Azure, or a custom vault. TOTP setup, pushed codes, polled endpoints, and magic links. Debug 2FA and login failures. diff --git a/docs/features/browser-sessions.mdx b/docs/developers/features/browser-sessions.mdx similarity index 77% rename from docs/features/browser-sessions.mdx rename to docs/developers/features/browser-sessions.mdx index b21cb042f..ca20d1806 100644 --- a/docs/features/browser-sessions.mdx +++ b/docs/developers/features/browser-sessions.mdx @@ -2,7 +2,7 @@ title: Browser Sessions subtitle: Keep a live browser open across multiple tasks and workflows description: Skyvern browser sessions are live browser instances that persist cookies, local storage, and page state across runs. Use them for back-to-back tasks, human-in-the-loop flows, and real-time agents. -slug: features/browser-sessions +slug: developers/features/browser-sessions icon: window-restore keywords: - browser sessions @@ -28,30 +28,30 @@ A Browser Session is a live browser instance that Skyvern keeps running between ## Configuration -Sessions support timeouts from 5 minutes to 24 hours (defaulting to 60 minutes), proxy locations across any of Skyvern's [21 supported countries](/going-to-production/proxy-geolocation), Chrome or Edge browser types, and built-in extensions for ad-blocking and CAPTCHA solving. Every session exposes a live VNC stream. +Sessions support timeouts from 5 minutes to 24 hours (defaulting to 60 minutes), proxy locations across any of Skyvern's [21 supported countries](/developers/going-to-production/proxy-geolocation), Chrome or Edge browser types, and built-in extensions for ad-blocking and CAPTCHA solving. Every session exposes a live VNC stream. ## Sessions vs. Profiles -Sessions are live browsers that bill while open. [Browser Profiles](/optimization/browser-profiles) are saved snapshots of browser state you reuse across days or weeks. You can create a profile from a finished session to save its authenticated state for later. +Sessions are live browsers that bill while open. [Browser Profiles](/developers/optimization/browser-profiles) are saved snapshots of browser state you reuse across days or weeks. You can create a profile from a finished session to save its authenticated state for later. ## Learn more Create sessions, run operations through them, and close cleanly. Save state to reuse across days or weeks. Use your own Chrome with its existing logins and extensions. diff --git a/docs/features/captcha-and-bot-bypass.mdx b/docs/developers/features/captcha-and-bot-bypass.mdx similarity index 89% rename from docs/features/captcha-and-bot-bypass.mdx rename to docs/developers/features/captcha-and-bot-bypass.mdx index b67874ff7..3438426d0 100644 --- a/docs/features/captcha-and-bot-bypass.mdx +++ b/docs/developers/features/captcha-and-bot-bypass.mdx @@ -2,7 +2,7 @@ title: CAPTCHA & Bot Bypass subtitle: How Skyvern handles CAPTCHAs and avoids triggering anti-bot systems description: Learn how Skyvern automatically detects and solves CAPTCHAs including reCAPTCHA, hCaptcha, and Cloudflare Turnstile, and how to reduce bot detection risk using residential proxies, browser sessions, and browser profiles. -slug: features/captcha-and-bot-bypass +slug: developers/features/captcha-and-bot-bypass icon: shield-halved keywords: - CAPTCHA @@ -33,11 +33,11 @@ Every run gets these protections automatically, with no configuration needed: Beyond fingerprinting, how you structure your automation affects whether you get flagged. -**Use residential proxies for sensitive sites.** Datacenter IPs are the single most common bot signal. Residential proxies route through real ISP addresses. Set `proxy_location="RESIDENTIAL"` or use `RESIDENTIAL_ISP` for a static IP that persists across the session. See [Proxy & Geolocation](/going-to-production/proxy-geolocation). +**Use residential proxies for sensitive sites.** Datacenter IPs are the single most common bot signal. Residential proxies route through real ISP addresses. Set `proxy_location="RESIDENTIAL"` or use `RESIDENTIAL_ISP` for a static IP that persists across the session. See [Proxy & Geolocation](/developers/going-to-production/proxy-geolocation). -**Reuse browser sessions for multi-step flows.** Creating a fresh browser for every step is suspicious. A persistent session maintains cookies, cache, and history between operations. See [Browser Sessions](/optimization/browser-sessions). +**Reuse browser sessions for multi-step flows.** Creating a fresh browser for every step is suspicious. A persistent session maintains cookies, cache, and history between operations. See [Browser Sessions](/developers/optimization/browser-sessions). -**Use browser profiles for repeat visits.** Profiles save browser state from a previous session. The site sees a known browser with familiar cookies instead of a blank slate. See [Browser Profiles](/optimization/browser-profiles). +**Use browser profiles for repeat visits.** Profiles save browser state from a previous session. The site sees a known browser with familiar cookies instead of a blank slate. See [Browser Profiles](/developers/optimization/browser-profiles). **Add wait blocks between rapid actions.** Instant back-to-back actions can trigger behavioral detection. A short pause between steps looks more human. @@ -60,25 +60,25 @@ Automatic CAPTCHA solving is not available for self-hosted deployments. When a C Route traffic through residential proxies in 21 countries. Configure TOTP, email, and SMS verification codes. Persist browser state across multiple runs. Map CAPTCHA and bot failures to custom error codes. diff --git a/docs/features/code-caching.mdx b/docs/developers/features/code-caching.mdx similarity index 95% rename from docs/features/code-caching.mdx rename to docs/developers/features/code-caching.mdx index b4f4251e3..ead279be9 100644 --- a/docs/features/code-caching.mdx +++ b/docs/developers/features/code-caching.mdx @@ -2,7 +2,7 @@ title: Code Caching subtitle: Convert successful runs into cached code for faster, deterministic replays description: Skyvern records the actions an AI run takes and generates executable code from them. Subsequent runs execute the cached code directly, skipping LLM inference and screenshot analysis. Faster, cheaper, deterministic. -slug: features/code-caching +slug: developers/features/code-caching icon: bolt keywords: - code caching @@ -48,7 +48,7 @@ Pair cached code with [scheduled workflows](/cloud/building-workflows/scheduling Use `run_with: code` plus `max_steps` and engine tiers to manage costs. @@ -60,7 +60,7 @@ Pair cached code with [scheduled workflows](/cloud/building-workflows/scheduling Keep cached runs stable as target sites evolve. diff --git a/docs/features/proxy-and-geo-targeting.mdx b/docs/developers/features/proxy-and-geo-targeting.mdx similarity index 87% rename from docs/features/proxy-and-geo-targeting.mdx rename to docs/developers/features/proxy-and-geo-targeting.mdx index 47a1641fa..4d0b66062 100644 --- a/docs/features/proxy-and-geo-targeting.mdx +++ b/docs/developers/features/proxy-and-geo-targeting.mdx @@ -2,7 +2,7 @@ title: Proxy & GEO Targeting subtitle: Route browser traffic through residential IPs in 21 countries description: Skyvern routes browser traffic through residential proxies in 21 countries, with city- and state-level targeting in the US. Use it to access region-locked content, test geo-specific experiences, and reduce bot detection risk. -slug: features/proxy-and-geo-targeting +slug: developers/features/proxy-and-geo-targeting icon: globe keywords: - proxy @@ -26,7 +26,7 @@ For services that require a stable IP across a session, `RESIDENTIAL_ISP` provid ## How it's applied -**Per task:** pass `proxy_location` in the run request. **Per workflow:** set a default on the workflow and override on any individual run. **Per session:** lock a proxy to a [browser session](/optimization/browser-sessions) so every operation in that session shares the same IP. +**Per task:** pass `proxy_location` in the run request. **Per workflow:** set a default on the workflow and override on any individual run. **Per session:** lock a proxy to a [browser session](/developers/optimization/browser-sessions) so every operation in that session shares the same IP. ## When to use it @@ -37,25 +37,25 @@ Region-locked pricing, inventory, or UX becomes visible when you route through t Full country list, `proxy_location` values, and `GeoTarget` examples. Pair residential proxies with stealth for sensitive sites. Lock a proxy location across multiple operations in one session. Bring your own proxy on self-hosted deployments. diff --git a/docs/getting-started/ai-agents-quickstart.mdx b/docs/developers/getting-started/ai-agents-quickstart.mdx similarity index 89% rename from docs/getting-started/ai-agents-quickstart.mdx rename to docs/developers/getting-started/ai-agents-quickstart.mdx index 2b090edf5..c03f63743 100644 --- a/docs/getting-started/ai-agents-quickstart.mdx +++ b/docs/developers/getting-started/ai-agents-quickstart.mdx @@ -2,7 +2,7 @@ title: AI Agents Quickstart subtitle: Give your AI coding assistant full browser automation in one command description: Give your AI coding assistant full browser control capabilities in one prommpt -slug: getting-started/ai-agents-quickstart +slug: developers/getting-started/ai-agents-quickstart keywords: - MCP - Claude Desktop diff --git a/docs/getting-started/core-concepts.mdx b/docs/developers/getting-started/core-concepts.mdx similarity index 91% rename from docs/getting-started/core-concepts.mdx rename to docs/developers/getting-started/core-concepts.mdx index 39c5bbbbd..f8c0c386f 100644 --- a/docs/getting-started/core-concepts.mdx +++ b/docs/developers/getting-started/core-concepts.mdx @@ -2,7 +2,7 @@ title: Core Concepts subtitle: The building blocks of Skyvern automations description: Learn about tasks, workflows, browser sessions, credentials, and other building blocks that make up Skyvern automations. -slug: getting-started/core-concepts +slug: developers/getting-started/core-concepts keywords: - task - workflow diff --git a/docs/getting-started/introduction.mdx b/docs/developers/getting-started/introduction.mdx similarity index 92% rename from docs/getting-started/introduction.mdx rename to docs/developers/getting-started/introduction.mdx index 655d08da4..1ff042cb5 100644 --- a/docs/getting-started/introduction.mdx +++ b/docs/developers/getting-started/introduction.mdx @@ -2,7 +2,7 @@ title: What is Skyvern? subtitle: AI-powered browser automation for any website description: Skyvern automates browser-based workflows using LLMs and computer vision. It navigates websites it has never seen before, filling forms, extracting data, and completing multi-step tasks via a simple API. -slug: getting-started/introduction +slug: developers/getting-started/introduction keywords: - browser automation - AI agent diff --git a/docs/getting-started/quickstart.mdx b/docs/developers/getting-started/quickstart.mdx similarity index 96% rename from docs/getting-started/quickstart.mdx rename to docs/developers/getting-started/quickstart.mdx index d9c970306..aa798fd98 100644 --- a/docs/getting-started/quickstart.mdx +++ b/docs/developers/getting-started/quickstart.mdx @@ -2,7 +2,7 @@ title: Quickstart subtitle: Run your first browser automation in 5 minutes description: Launch a cloud browser, go to a webpage, and extract structured data with Python, TypeScript, or cURL in under 5 minutes. -slug: getting-started/quickstart +slug: developers/getting-started/quickstart keywords: - quickstart - launch_cloud_browser @@ -126,7 +126,7 @@ curl -X POST "https://api.skyvern.com/v1/run/tasks" \ -**Why `page.extract` is enough here.** For a one-shot read on a single page, `page.extract(prompt, schema=...)` returns the extracted data directly (a `dict` in Python, `object` in TS). For multi-step goals like *"log in, navigate to billing, download the invoice"*, use `page.agent.run_task(prompt)` instead; it runs a full AI task loop on the page and returns a [`TaskRunResponse`](/sdk-reference/tasks/run-task#returns-taskrunresponse). See [Build a Browser Automation](/browser-automations/overview) for the full walkthrough. +**Why `page.extract` is enough here.** For a one-shot read on a single page, `page.extract(prompt, schema=...)` returns the extracted data directly (a `dict` in Python, `object` in TS). For multi-step goals like *"log in, navigate to billing, download the invoice"*, use `page.agent.run_task(prompt)` instead; it runs a full AI task loop on the page and returns a [`TaskRunResponse`](/sdk-reference/tasks/run-task#returns-taskrunresponse). See [Build a Browser Automation](/developers/browser-automations/overview) for the full walkthrough. ## Step 4: Understand the output @@ -139,7 +139,7 @@ Extracted: {'top_post_title': 'Linux kernel framework for PCIe device emulation, ``` - **`Watch live: ...`** is printed before any AI calls. Open it in another tab to watch the browser navigate and extract in real time. -- **`Extracted: {...}`** appears after `page.extract` returns. The key names come from the AI (unless you pass a `schema`, in which case they match your schema). For typed, predictable output, see [Extract Structured Data](/browser-automations/extract-structured-data). +- **`Extracted: {...}`** appears after `page.extract` returns. The key names come from the AI (unless you pass a `schema`, in which case they match your schema). For typed, predictable output, see [Extract Structured Data](/developers/browser-automations/extract-structured-data). ### If you used the cURL path @@ -308,21 +308,21 @@ If you also selected Claude Code during setup, start your local frontend dev ser The full Page/Agent/Browser walkthrough: AI actions, Playwright selectors, and agent tasks Every page action and agent method with parameters and return types Define a schema to get typed JSON output from your automations @@ -343,7 +343,7 @@ If you also selected Claude Code during setup, start your local frontend dev ser Get notified when tasks complete instead of polling diff --git a/docs/going-to-production/error-handling.mdx b/docs/developers/going-to-production/error-handling.mdx similarity index 99% rename from docs/going-to-production/error-handling.mdx rename to docs/developers/going-to-production/error-handling.mdx index 6628528d7..ce64df261 100644 --- a/docs/going-to-production/error-handling.mdx +++ b/docs/developers/going-to-production/error-handling.mdx @@ -2,7 +2,7 @@ title: Error Handling subtitle: Build systems that detect, classify, and recover from failures description: Detect, classify, and recover from task and workflow failures using run status, failure_reason, custom error_code_mapping, and validation blocks. Build programmatic error handling with retry logic and branching. -slug: going-to-production/error-handling +slug: developers/going-to-production/error-handling keywords: - failure_reason - run status @@ -691,14 +691,14 @@ If `verify_login` sees a login error, the workflow terminates with `output.error Write prompts that fail less often Get notified when runs complete or fail diff --git a/docs/going-to-production/proxy-geolocation.mdx b/docs/developers/going-to-production/proxy-geolocation.mdx similarity index 99% rename from docs/going-to-production/proxy-geolocation.mdx rename to docs/developers/going-to-production/proxy-geolocation.mdx index 365088749..d010c0489 100644 --- a/docs/going-to-production/proxy-geolocation.mdx +++ b/docs/developers/going-to-production/proxy-geolocation.mdx @@ -2,7 +2,7 @@ title: Proxy & Geolocation subtitle: Route browser traffic through residential proxies worldwide description: Route Skyvern browser traffic through residential proxies in 20 countries to bypass geo-restrictions, avoid bot detection, and access region-locked content. Configure proxy_location for tasks, workflows, and browser sessions. -slug: going-to-production/proxy-geolocation +slug: developers/going-to-production/proxy-geolocation keywords: - proxy_location - residential proxy @@ -725,7 +725,7 @@ curl -X POST "https://api.skyvern.com/v1/run/tasks" \ | Site still blocks requests | Bot detection beyond IP geolocation (fingerprinting, behavioral analysis) | Use `RESIDENTIAL_ISP` for static IPs, match proxy to site's region, add `wait` blocks between actions | | Need to debug proxy issues | Isolate whether proxy is causing failures | Set `proxy_location: "NONE"` to bypass proxy entirely | -For sites with aggressive bot detection, combine residential proxies with the techniques in [CAPTCHA & Bot Bypass](/features/captcha-and-bot-bypass). +For sites with aggressive bot detection, combine residential proxies with the techniques in [CAPTCHA & Bot Bypass](/developers/features/captcha-and-bot-bypass). Need a location that's not available? Get help in the [Skyvern Discord community](https://discord.gg/skyvern) to request new proxy pools. @@ -737,14 +737,14 @@ Need a location that's not available? Get help in the [Skyvern Discord community Combine proxies with anti-detection techniques Maintain IP consistency across multi-step tasks diff --git a/docs/going-to-production/reliability-tips.mdx b/docs/developers/going-to-production/reliability-tips.mdx similarity index 99% rename from docs/going-to-production/reliability-tips.mdx rename to docs/developers/going-to-production/reliability-tips.mdx index 74932f28a..1cc3564e5 100644 --- a/docs/going-to-production/reliability-tips.mdx +++ b/docs/developers/going-to-production/reliability-tips.mdx @@ -2,7 +2,7 @@ title: Reliability Tips subtitle: Write robust prompts and handle edge cases description: Write robust prompts with clear completion criteria, choose the right block type for each step, handle dynamic pages and popups, and add validation blocks to catch errors before they cascade. -slug: going-to-production/reliability-tips +slug: developers/going-to-production/reliability-tips keywords: - prompt engineering - completion criteria @@ -362,7 +362,7 @@ When a run fails: Map errors to custom codes for programmatic handling diff --git a/docs/going-to-production/webhooks.mdx b/docs/developers/going-to-production/webhooks.mdx similarity index 98% rename from docs/going-to-production/webhooks.mdx rename to docs/developers/going-to-production/webhooks.mdx index 870aae8c6..bb9604780 100644 --- a/docs/going-to-production/webhooks.mdx +++ b/docs/developers/going-to-production/webhooks.mdx @@ -2,7 +2,7 @@ title: Webhooks subtitle: Get notified when tasks and workflows complete description: Configure webhook URLs for tasks and workflows to receive notifications when runs reach terminal status. Includes payload structure, HMAC-SHA256 signature verification, failure handling, and retry mechanisms. -slug: going-to-production/webhooks +slug: developers/going-to-production/webhooks keywords: - webhook_url - HMAC-SHA256 @@ -230,7 +230,7 @@ User-Agent: python-httpx/0.28.1 | `run_id` | string | Unique identifier for this run | | `task_id` | string | Same as `run_id` | | `status` | string | `completed`, `failed`, `terminated`, `timed_out`, or `canceled` | -| `output` | object \| null | Extracted data from the task. If you configured [`error_code_mapping`](/going-to-production/error-handling#step-3-use-error_code_mapping), failed runs include `output.error` with your custom error code. | +| `output` | object \| null | Extracted data from the task. If you configured [`error_code_mapping`](/developers/going-to-production/error-handling#step-3-use-error_code_mapping), failed runs include `output.error` with your custom error code. | | `summary` | string | AI-generated description of what was done | | `prompt` | string | The prompt from the original request | | `url` | string | The URL from the original request | @@ -526,14 +526,14 @@ You can pass a different `webhook_url` to send the payload to a new endpoint; us Handle failures and map custom error codes Write robust prompts and add validation blocks diff --git a/docs/optimization/browser-profiles.mdx b/docs/developers/optimization/browser-profiles.mdx similarity index 98% rename from docs/optimization/browser-profiles.mdx rename to docs/developers/optimization/browser-profiles.mdx index b808fc0dc..d0c6fb6e1 100644 --- a/docs/optimization/browser-profiles.mdx +++ b/docs/developers/optimization/browser-profiles.mdx @@ -2,7 +2,7 @@ title: Browser Profiles subtitle: Save and reuse authenticated browser state across runs description: Save browser state snapshots including cookies, localStorage, and session files as reusable profiles. Skip login steps and restore authenticated state instantly across workflow runs. -slug: optimization/browser-profiles +slug: developers/optimization/browser-profiles keywords: - create_browser_profile - state snapshot @@ -224,7 +224,7 @@ done ### From a browser session -You can also create a profile from a [Browser Session](/optimization/browser-sessions) that was used inside a workflow with `persist_browser_session=true`. After the workflow run completes and the session is closed, pass the session ID instead of the workflow run ID. +You can also create a profile from a [Browser Session](/developers/optimization/browser-sessions) that was used inside a workflow with `persist_browser_session=true`. After the workflow run completes and the session is closed, pass the session ID instead of the workflow run ID. Only sessions that were part of a workflow with `persist_browser_session=true` produce an archive. A session created with `create_browser_session()` alone does not archive its state. Archiving happens asynchronously after the session closes, so add retry logic. @@ -907,14 +907,14 @@ if (shouldRefreshProfile) { Maintain live browser state for real-time interactions Optimize costs with max_steps and efficient prompts diff --git a/docs/optimization/browser-sessions.mdx b/docs/developers/optimization/browser-sessions.mdx similarity index 96% rename from docs/optimization/browser-sessions.mdx rename to docs/developers/optimization/browser-sessions.mdx index 4400ce2f9..eee0775ea 100644 --- a/docs/optimization/browser-sessions.mdx +++ b/docs/developers/optimization/browser-sessions.mdx @@ -2,7 +2,7 @@ title: Browser Sessions subtitle: Persist live browser state across multiple tasks and workflows description: Create and manage live browser sessions that persist cookies, local storage, and page state between task or workflow runs. Use sessions for back-to-back tasks, human-in-the-loop approval, and real-time agents. -slug: optimization/browser-sessions +slug: developers/optimization/browser-sessions keywords: - create_browser_session - persistent state @@ -83,7 +83,7 @@ curl -X POST "https://api.skyvern.com/v1/browser_sessions" \ | Parameter | Type | Description | |-----------|------|-------------| | `timeout` | integer | Session lifetime in minutes. Min: 5, Max: 1440 (24 hours). Default: `60` | -| `proxy_location` | string | Geographic proxy location (Cloud only). See [Proxy & Geolocation](/going-to-production/proxy-geolocation) for available options | +| `proxy_location` | string | Geographic proxy location (Cloud only). See [Proxy & Geolocation](/developers/going-to-production/proxy-geolocation) for available options | | `browser_type` | string | Browser type: `chrome` or `msedge` | | `extensions` | array | Extensions to install: `ad-blocker`, `captcha-solver` | @@ -683,7 +683,7 @@ curl -s -X POST "https://api.skyvern.com/v1/browser_sessions" \ ## Sessions vs Profiles -Skyvern also offers [Browser Profiles](/optimization/browser-profiles), saved snapshots of browser state (cookies, storage, session files) that you can reuse across days or weeks. Choose based on your use case: +Skyvern also offers [Browser Profiles](/developers/optimization/browser-profiles), saved snapshots of browser state (cookies, storage, session files) that you can reuse across days or weeks. Choose based on your use case: | Aspect | Browser Session | Browser Profile | |--------|----------------|-----------------| @@ -694,7 +694,7 @@ Skyvern also offers [Browser Profiles](/optimization/browser-profiles), saved sn | **Best for** | Back-to-back tasks, human-in-the-loop, real-time agents | Repeated logins, scheduled workflows, shared auth state | -You can create a [Browser Profile](/optimization/browser-profiles) from a completed session to save its authenticated state for future reuse. +You can create a [Browser Profile](/developers/optimization/browser-profiles) from a completed session to save its authenticated state for future reuse. --- @@ -705,21 +705,21 @@ You can create a [Browser Profile](/optimization/browser-profiles) from a comple Let Skyvern Cloud use your local browser with your existing logins Save session state for reuse across days Optimize costs with max_steps and efficient prompts diff --git a/docs/optimization/browser-tunneling.mdx b/docs/developers/optimization/browser-tunneling.mdx similarity index 92% rename from docs/optimization/browser-tunneling.mdx rename to docs/developers/optimization/browser-tunneling.mdx index e13fae0f7..4bf4c549b 100644 --- a/docs/optimization/browser-tunneling.mdx +++ b/docs/developers/optimization/browser-tunneling.mdx @@ -2,7 +2,7 @@ title: Connect Skyvern to Your Local Browser subtitle: Run automations using your existing cookies, logins, and extensions description: Use skyvern browser serve to let Skyvern Cloud control a Chrome browser on your local machine, reusing your existing cookies, sessions, extensions, and saved passwords through a secure tunnel. -slug: optimization/browser-tunneling +slug: developers/optimization/browser-tunneling keywords: - browser session - task @@ -208,9 +208,9 @@ The built-in API key provides basic protection. For additional security such as | Approach | When to use | |----------|-------------| | **Connect to your local browser** (`skyvern browser serve`) | You want Skyvern Cloud to use your local browser with your existing sessions | -| **[Browser Sessions](/optimization/browser-sessions)** | You want Skyvern Cloud to manage the browser entirely in the cloud | -| **[Browser Profiles](/optimization/browser-profiles)** | You want to save and reuse cookies/storage state across cloud sessions | -| **[CDP Connect](/self-hosted/browser#cdp-connect-external-chrome)** (self-hosted) | You're running Skyvern locally and want to connect to an existing Chrome instance | +| **[Browser Sessions](/developers/optimization/browser-sessions)** | You want Skyvern Cloud to manage the browser entirely in the cloud | +| **[Browser Profiles](/developers/optimization/browser-profiles)** | You want to save and reuse cookies/storage state across cloud sessions | +| **[CDP Connect](/developers/self-hosted/browser#cdp-connect-external-chrome)** (self-hosted) | You're running Skyvern locally and want to connect to an existing Chrome instance | --- @@ -258,10 +258,10 @@ The built-in API key provides basic protection. For additional security such as ## Next steps - + Use cloud-managed browser sessions for multi-step tasks - + Save and reuse authenticated browser state diff --git a/docs/optimization/cost-control.mdx b/docs/developers/optimization/cost-control.mdx similarity index 96% rename from docs/optimization/cost-control.mdx rename to docs/developers/optimization/cost-control.mdx index 4ad8d6708..26432ec98 100644 --- a/docs/optimization/cost-control.mdx +++ b/docs/developers/optimization/cost-control.mdx @@ -2,7 +2,7 @@ title: Cost Control subtitle: Limit steps and optimize prompts to manage costs description: Control Skyvern costs using max_steps limits, code generation for repeatable tasks, cheaper engine tiers, and prompt optimization techniques to reduce step count and credit usage. -slug: optimization/cost-control +slug: developers/optimization/cost-control keywords: - max_steps - credits @@ -258,7 +258,7 @@ curl -X POST "https://api.skyvern.com/v1/run/tasks" \ ``` -For self-hosted deployments, you can also swap the underlying LLM to a cheaper model (e.g., Gemini 2.5 Flash instead of a pro-tier model) via the `LLM_KEY` environment variable. See [LLM configuration](/self-hosted/llm-configuration) for details. +For self-hosted deployments, you can also swap the underlying LLM to a cheaper model (e.g., Gemini 2.5 Flash instead of a pro-tier model) via the `LLM_KEY` environment variable. See [LLM configuration](/developers/self-hosted/llm-configuration) for details. --- @@ -270,7 +270,7 @@ Small prompt changes can cut step count significantly. - **Avoid open-ended exploration.** Prompts like "find interesting data" or "look around" cause the agent to wander. - **Use `data_extraction_schema`** to constrain what fields the AI extracts. This prevents it from spending steps parsing irrelevant content. - **Provide `url`** to start on the correct page instead of making the agent search for it. -- **Use [browser profiles](/optimization/browser-profiles)** to skip login steps on repeated runs. +- **Use [browser profiles](/developers/optimization/browser-profiles)** to skip login steps on repeated runs. --- @@ -287,14 +287,14 @@ Small prompt changes can cut step count significantly. Maintain live browser state between calls Save authenticated state for reuse across days diff --git a/docs/self-hosted/browser.mdx b/docs/developers/self-hosted/browser.mdx similarity index 96% rename from docs/self-hosted/browser.mdx rename to docs/developers/self-hosted/browser.mdx index 7ea5677bb..515581ed2 100644 --- a/docs/self-hosted/browser.mdx +++ b/docs/developers/self-hosted/browser.mdx @@ -2,7 +2,7 @@ title: Browser Configuration subtitle: Configure browser modes, display settings, and external Chrome connections description: Configure Skyvern's browser modes including headful, headless, local Chrome, and CDP connect. Set display resolution, viewport size, and connect to external Chrome instances for self-hosted deployments. -slug: self-hosted/browser +slug: developers/self-hosted/browser keywords: - headless - headful @@ -323,7 +323,7 @@ Add more RAM to your server and increase `MAX_STEPS_PER_RUN` and `BROWSER_MAX_PA ### Option 2: Horizontal scaling -Deploy multiple Skyvern instances behind a load balancer. Each instance runs its own browser. See [Kubernetes Deployment](/self-hosted/kubernetes) for orchestrated scaling. +Deploy multiple Skyvern instances behind a load balancer. Each instance runs its own browser. See [Kubernetes Deployment](/developers/self-hosted/kubernetes) for orchestrated scaling. ### Option 3: External browser pool @@ -339,10 +339,10 @@ BROWSER_REMOTE_DEBUGGING_URL=http://browserless:3000/ ## Next steps - + Configure proxies to avoid bot detection - + Store recordings and artifacts in S3 or Azure Blob diff --git a/docs/self-hosted/docker.mdx b/docs/developers/self-hosted/docker.mdx similarity index 94% rename from docs/self-hosted/docker.mdx rename to docs/developers/self-hosted/docker.mdx index 3e5935451..86db8142c 100644 --- a/docs/self-hosted/docker.mdx +++ b/docs/developers/self-hosted/docker.mdx @@ -2,7 +2,7 @@ title: Docker Setup subtitle: Get Skyvern running in 10 minutes with Docker Compose description: Deploy Skyvern using Docker Compose with the API server, embedded browser, PostgreSQL database, and web UI. Includes LLM provider configuration and first-run setup. -slug: self-hosted/docker +slug: developers/self-hosted/docker keywords: - Docker Compose - docker-compose.yml @@ -46,7 +46,7 @@ OPENAI_API_KEY=sk-your-api-key-here LLM_KEY=OPENAI_GPT4O ``` -For other providers, see [LLM Configuration](/self-hosted/llm-configuration). +For other providers, see [LLM Configuration](/developers/self-hosted/llm-configuration). ### 3. Configure the frontend @@ -172,7 +172,7 @@ The `.env` file controls the Skyvern server. Here are the most important variabl ### LLM Configuration -Configure at least one LLM provider. See [LLM Configuration](/self-hosted/llm-configuration) for all providers. +Configure at least one LLM provider. See [LLM Configuration](/developers/self-hosted/llm-configuration) for all providers. ```bash # OpenAI @@ -384,16 +384,16 @@ The page content is too large for the LLM. Try: ## Next steps - + Configure OpenAI, Anthropic, Azure, Ollama, and other providers - + Customize browser settings, locales, and connect to external Chrome - + Store artifacts in S3 or Azure Blob instead of local disk - + Configure proxies to avoid bot detection diff --git a/docs/self-hosted/kubernetes.mdx b/docs/developers/self-hosted/kubernetes.mdx similarity index 96% rename from docs/self-hosted/kubernetes.mdx rename to docs/developers/self-hosted/kubernetes.mdx index 6ea8f02bd..0084c2cb8 100644 --- a/docs/self-hosted/kubernetes.mdx +++ b/docs/developers/self-hosted/kubernetes.mdx @@ -2,7 +2,7 @@ title: Kubernetes Deployment subtitle: Deploy Skyvern at scale with Kubernetes manifests description: Deploy Skyvern on Kubernetes for production environments with horizontal scaling and high availability. Includes manifests for the API server, frontend, PostgreSQL, and ingress configuration. -slug: self-hosted/kubernetes +slug: developers/self-hosted/kubernetes keywords: - Kubernetes - Helm @@ -94,7 +94,7 @@ stringData: LOG_LEVEL: "INFO" ``` -For other LLM providers, see [LLM Configuration](/self-hosted/llm-configuration). +For other LLM providers, see [LLM Configuration](/developers/self-hosted/llm-configuration). ### 3. Configure frontend secrets @@ -292,7 +292,7 @@ spec: ### Using S3 or Azure Blob -For cloud storage, configure the backend environment variables instead of mounting volumes. See [Storage Configuration](/self-hosted/storage). +For cloud storage, configure the backend environment variables instead of mounting volumes. See [Storage Configuration](/developers/self-hosted/storage). --- @@ -442,10 +442,10 @@ rm -rf /data/artifacts /data/videos /data/har /data/log /app/.streamlit ## Next steps - + Configure S3 or Azure Blob for artifact storage - + Configure additional LLM providers diff --git a/docs/self-hosted/llm-configuration.mdx b/docs/developers/self-hosted/llm-configuration.mdx similarity index 98% rename from docs/self-hosted/llm-configuration.mdx rename to docs/developers/self-hosted/llm-configuration.mdx index 7f9e71ab8..a68374898 100644 --- a/docs/self-hosted/llm-configuration.mdx +++ b/docs/developers/self-hosted/llm-configuration.mdx @@ -2,7 +2,7 @@ title: LLM Configuration subtitle: Connect your preferred language model provider description: Configure LLM providers for self-hosted Skyvern including OpenAI, Anthropic, Azure OpenAI, Google Gemini, AWS Bedrock, Ollama, and OpenAI-compatible endpoints via LiteLLM. -slug: self-hosted/llm-configuration +slug: developers/self-hosted/llm-configuration keywords: - OpenAI - Anthropic @@ -601,10 +601,10 @@ LLM calls typically take 2-10 seconds. Longer times may indicate: ## Next steps - + Configure browser modes, locales, and display settings - + Return to the main Docker setup guide diff --git a/docs/self-hosted/overview.mdx b/docs/developers/self-hosted/overview.mdx similarity index 96% rename from docs/self-hosted/overview.mdx rename to docs/developers/self-hosted/overview.mdx index cf37cd92e..ebd0db90d 100644 --- a/docs/self-hosted/overview.mdx +++ b/docs/developers/self-hosted/overview.mdx @@ -2,7 +2,7 @@ title: Self-Hosted Overview subtitle: Run Skyvern on your own infrastructure description: Deploy Skyvern on your own infrastructure with Docker or Kubernetes. Configure LLM providers, browsers, proxies, and storage. -slug: self-hosted/overview +slug: developers/self-hosted/overview keywords: - self-hosted - on-premise @@ -98,10 +98,10 @@ Most teams start with Docker Compose. It's the fastest path to a working deploym ## Next steps - + Get Skyvern running in 10 minutes with Docker Compose - + Deploy to production with Kubernetes manifests diff --git a/docs/self-hosted/proxy.mdx b/docs/developers/self-hosted/proxy.mdx similarity index 97% rename from docs/self-hosted/proxy.mdx rename to docs/developers/self-hosted/proxy.mdx index e122cf155..9b4d0347f 100644 --- a/docs/self-hosted/proxy.mdx +++ b/docs/developers/self-hosted/proxy.mdx @@ -2,7 +2,7 @@ title: Proxy Setup subtitle: Configure proxies to avoid bot detection description: Configure residential, ISP, or datacenter proxies for self-hosted Skyvern deployments to avoid bot detection, bypass geo-restrictions, and prevent rate limiting on target websites. -slug: self-hosted/proxy +slug: developers/self-hosted/proxy keywords: - residential proxy - ISP proxy @@ -236,10 +236,10 @@ Your browser traffic will originate directly from your server's IP. This works w ## Next steps - + Store recordings and artifacts in S3 or Azure Blob - + Deploy Skyvern at scale with Kubernetes diff --git a/docs/self-hosted/storage.mdx b/docs/developers/self-hosted/storage.mdx similarity index 98% rename from docs/self-hosted/storage.mdx rename to docs/developers/self-hosted/storage.mdx index 013ce5c21..726f81d16 100644 --- a/docs/self-hosted/storage.mdx +++ b/docs/developers/self-hosted/storage.mdx @@ -2,7 +2,7 @@ title: Storage Configuration subtitle: Configure where Skyvern stores artifacts and recordings description: Configure Skyvern artifact storage using local filesystem, AWS S3, or Azure Blob Storage. Covers screenshots, browser recordings, HAR files, and extracted data storage for self-hosted deployments. -slug: self-hosted/storage +slug: developers/self-hosted/storage keywords: - AWS S3 - Azure Blob Storage @@ -355,10 +355,10 @@ Use lifecycle policies to automatically delete old objects: ## Next steps - + Return to the Docker setup guide - + Deploy Skyvern at scale diff --git a/docs/docs.json b/docs/docs.json index 7294aacc3..560174dcf 100644 --- a/docs/docs.json +++ b/docs/docs.json @@ -61,6 +61,23 @@ "cloud/getting-started/overview" ] }, + { + "group": "Building Workflows", + "pages": [ + "cloud/building-workflows/build-a-workflow", + "cloud/building-workflows/manage-workflows", + "cloud/building-workflows/add-parameters", + "cloud/building-workflows/run-a-workflow", + "cloud/building-workflows/scheduling", + "cloud/building-workflows/run-from-code" + ] + }, + { + "group": "Workflow Blocks", + "pages": [ + "cloud/building-workflows/configure-blocks" + ] + }, { "group": "Running Tasks", "pages": [ @@ -70,18 +87,6 @@ "cloud/getting-started/run-from-code" ] }, - { - "group": "Building Workflows", - "pages": [ - "cloud/building-workflows/build-a-workflow", - "cloud/building-workflows/manage-workflows", - "cloud/building-workflows/add-parameters", - "cloud/building-workflows/configure-blocks", - "cloud/building-workflows/run-a-workflow", - "cloud/building-workflows/scheduling", - "cloud/building-workflows/run-from-code" - ] - }, { "group": "Re-using Browsers", "pages": [ @@ -107,6 +112,16 @@ "cloud/managing-credentials/external-providers" ] }, + { + "group": "Integrations", + "pages": [ + "integrations/zapier", + "integrations/make", + "integrations/n8n", + "integrations/workato", + "integrations/mcp" + ] + }, { "group": "Account & Settings", "pages": [ @@ -115,15 +130,6 @@ "cloud/account-settings/organization-settings", "cloud/account-settings/profile-settings" ] - }, - { - "group": "Integrations", - "pages": [ - "integrations/zapier", - "integrations/make", - "integrations/n8n", - "integrations/workato" - ] } ] }, @@ -133,10 +139,10 @@ { "group": "Getting Started", "pages": [ - "getting-started/introduction", - "getting-started/core-concepts", - "getting-started/quickstart", - "getting-started/ai-agents-quickstart", + "developers/getting-started/introduction", + "developers/getting-started/core-concepts", + "developers/getting-started/quickstart", + "developers/getting-started/ai-agents-quickstart", "integrations/mcp", "integrations/cli" ] @@ -144,67 +150,72 @@ { "group": "Core Features", "pages": [ - "features/captcha-and-bot-bypass", - "features/browser-sessions", - "features/proxy-and-geo-targeting", - "features/authentication-and-2fa", - "features/code-caching" + "developers/features/captcha-and-bot-bypass", + "developers/features/browser-sessions", + "developers/features/proxy-and-geo-targeting", + "developers/features/authentication-and-2fa", + "developers/features/code-caching" ] }, { "group": "Browser Automation", "pages": [ - "browser-automations/overview", - "browser-automations/actions-reference", - "browser-automations/extract-structured-data", - "browser-automations/work-with-files", - "browser-automations/handle-browsers" + "developers/browser-automations/overview", + "developers/browser-automations/extract-structured-data", + "developers/browser-automations/work-with-files", + "developers/browser-automations/handle-browsers" + ] + }, + { + "group": "Workflow Blocks", + "pages": [ + "developers/browser-automations/actions-reference" ] }, { "group": "Handling Authentication", "pages": [ - "credentials/store-credentials", - "credentials/handle-2fa", - "credentials/troubleshooting-login" + "developers/credentials/store-credentials", + "developers/credentials/handle-2fa", + "developers/credentials/troubleshooting-login" ] }, { "group": "Optimization", "pages": [ - "optimization/browser-sessions", - "optimization/browser-profiles", - "optimization/cost-control" + "developers/optimization/browser-sessions", + "developers/optimization/browser-profiles", + "developers/optimization/cost-control" ] }, { "group": "Going to Production", "pages": [ - "going-to-production/webhooks", - "going-to-production/proxy-geolocation", - "going-to-production/error-handling", - "going-to-production/reliability-tips" + "developers/going-to-production/webhooks", + "developers/going-to-production/proxy-geolocation", + "developers/going-to-production/error-handling", + "developers/going-to-production/reliability-tips" ] }, { "group": "Debugging", "pages": [ - "debugging/using-artifacts", - "debugging/troubleshooting-guide", - "debugging/observability-with-laminar", - "debugging/faq" + "developers/debugging/using-artifacts", + "developers/debugging/troubleshooting-guide", + "developers/debugging/observability-with-laminar", + "developers/debugging/faq" ] }, { "group": "Self-Hosted Deployment", "pages": [ - "self-hosted/overview", - "self-hosted/docker", - "self-hosted/llm-configuration", - "self-hosted/browser", - "self-hosted/proxy", - "self-hosted/kubernetes", - "self-hosted/storage", + "developers/self-hosted/overview", + "developers/self-hosted/docker", + "developers/self-hosted/llm-configuration", + "developers/self-hosted/browser", + "developers/self-hosted/proxy", + "developers/self-hosted/kubernetes", + "developers/self-hosted/storage", "integrations/local-llms" ] } @@ -408,7 +419,7 @@ "redirects": [ { "source": "/going-to-production/captcha-bot-detection", - "destination": "/features/captcha-and-bot-bypass" + "destination": "/developers/features/captcha-and-bot-bypass" }, { "source": "/sdk-reference/browser-automation/find", @@ -484,15 +495,15 @@ }, { "source": "/introduction", - "destination": "/getting-started/quickstart" + "destination": "/developers/getting-started/quickstart" }, { "source": "/getting-started/skyvern-in-action", - "destination": "/getting-started/core-concepts" + "destination": "/developers/getting-started/core-concepts" }, { "source": "/getting-started/prompting-guide", - "destination": "/debugging/troubleshooting-guide" + "destination": "/developers/debugging/troubleshooting-guide" }, { "source": "/running-tasks/run-tasks", @@ -500,7 +511,7 @@ }, { "source": "/running-tasks/visualizing-results", - "destination": "/debugging/using-artifacts" + "destination": "/developers/debugging/using-artifacts" }, { "source": "/running-tasks/cancel-runs", @@ -508,15 +519,15 @@ }, { "source": "/running-tasks/webhooks-faq", - "destination": "/going-to-production/webhooks" + "destination": "/developers/going-to-production/webhooks" }, { "source": "/running-tasks/connect-local-browser", - "destination": "/self-hosted/browser" + "destination": "/developers/self-hosted/browser" }, { "source": "/running-tasks/proxy-location", - "destination": "/going-to-production/proxy-geolocation" + "destination": "/developers/going-to-production/proxy-geolocation" }, { "source": "/running-tasks/advanced-features", @@ -536,7 +547,7 @@ }, { "source": "/running-automations/extract-structured-data", - "destination": "/browser-automations/extract-structured-data" + "destination": "/developers/browser-automations/extract-structured-data" }, { "source": "/workflows/manage-workflows", @@ -556,7 +567,7 @@ }, { "source": "/workflows/consistent-workflows", - "destination": "/going-to-production/reliability-tips" + "destination": "/developers/going-to-production/reliability-tips" }, { "source": "/workflows/running-workflows", @@ -584,35 +595,35 @@ }, { "source": "/multi-step-automations/overview", - "destination": "/browser-automations/overview" + "destination": "/developers/browser-automations/overview" }, { "source": "/multi-step-automations/actions-reference", - "destination": "/browser-automations/actions-reference" + "destination": "/developers/browser-automations/actions-reference" }, { "source": "/multi-step-automations/extract-structured-data", - "destination": "/browser-automations/extract-structured-data" + "destination": "/developers/browser-automations/extract-structured-data" }, { "source": "/multi-step-automations/work-with-files", - "destination": "/browser-automations/work-with-files" + "destination": "/developers/browser-automations/work-with-files" }, { "source": "/multi-step-automations/handle-browsers", - "destination": "/browser-automations/handle-browsers" + "destination": "/developers/browser-automations/handle-browsers" }, { "source": "/multi-step-automations/build-a-workflow", - "destination": "/browser-automations/overview" + "destination": "/developers/browser-automations/overview" }, { "source": "/multi-step-automations/workflow-blocks-reference", - "destination": "/browser-automations/actions-reference" + "destination": "/developers/browser-automations/actions-reference" }, { "source": "/multi-step-automations/file-operations", - "destination": "/browser-automations/work-with-files" + "destination": "/developers/browser-automations/work-with-files" }, { "source": "/multi-step-automations/workflow-parameters", @@ -648,15 +659,15 @@ }, { "source": "/browser-sessions/introduction", - "destination": "/optimization/browser-sessions" + "destination": "/developers/optimization/browser-sessions" }, { "source": "/browser-sessions/browser-profiles", - "destination": "/optimization/browser-profiles" + "destination": "/developers/optimization/browser-profiles" }, { "source": "/observability/overview", - "destination": "/debugging/using-artifacts" + "destination": "/developers/debugging/using-artifacts" }, { "source": "/integrations/make.com", @@ -813,6 +824,38 @@ { "source": "/api-reference/api-reference/files/upload-file", "destination": "/api-reference/files/upload-file" + }, + { + "source": "/getting-started/:slug*", + "destination": "/developers/getting-started/:slug*" + }, + { + "source": "/credentials/:slug*", + "destination": "/developers/credentials/:slug*" + }, + { + "source": "/debugging/:slug*", + "destination": "/developers/debugging/:slug*" + }, + { + "source": "/going-to-production/:slug*", + "destination": "/developers/going-to-production/:slug*" + }, + { + "source": "/optimization/:slug*", + "destination": "/developers/optimization/:slug*" + }, + { + "source": "/self-hosted/:slug*", + "destination": "/developers/self-hosted/:slug*" + }, + { + "source": "/features/:slug*", + "destination": "/developers/features/:slug*" + }, + { + "source": "/browser-automations/:slug*", + "destination": "/developers/browser-automations/:slug*" } ] } diff --git a/docs/integrations/cli.mdx b/docs/integrations/cli.mdx index 6fb4c57c6..ed0fdd0b5 100644 --- a/docs/integrations/cli.mdx +++ b/docs/integrations/cli.mdx @@ -114,7 +114,7 @@ The `--use-local-profile` flag clones cookies and saved passwords from your Chro Always pass `--api-key` when using `--tunnel`. Without it, anyone with the ngrok URL has full browser control. -See the [full guide](/optimization/browser-tunneling) for all options, manual tunnel setup, and security details. +See the [full guide](/developers/optimization/browser-tunneling) for all options, manual tunnel setup, and security details. ### Workflows diff --git a/docs/integrations/local-llms.mdx b/docs/integrations/local-llms.mdx index 98398dc53..63a8ec0a9 100644 --- a/docs/integrations/local-llms.mdx +++ b/docs/integrations/local-llms.mdx @@ -135,7 +135,7 @@ skyvern run server Get started with Skyvern diff --git a/docs/integrations/make.mdx b/docs/integrations/make.mdx index 961fca14f..11bc120b2 100644 --- a/docs/integrations/make.mdx +++ b/docs/integrations/make.mdx @@ -121,7 +121,7 @@ Retrieve the output of a completed run. Get notified when tasks complete diff --git a/docs/integrations/n8n.mdx b/docs/integrations/n8n.mdx index 3969dbef0..f3a53440f 100644 --- a/docs/integrations/n8n.mdx +++ b/docs/integrations/n8n.mdx @@ -113,7 +113,7 @@ First, create your workflow in the [Skyvern UI](https://app.skyvern.com). Get notified when tasks complete diff --git a/docs/integrations/workato.mdx b/docs/integrations/workato.mdx index 540202472..2a0206290 100644 --- a/docs/integrations/workato.mdx +++ b/docs/integrations/workato.mdx @@ -118,7 +118,7 @@ Retrieve the details of a completed run. Get notified when tasks complete diff --git a/docs/integrations/zapier.mdx b/docs/integrations/zapier.mdx index 246306fb3..c127bc327 100644 --- a/docs/integrations/zapier.mdx +++ b/docs/integrations/zapier.mdx @@ -131,7 +131,7 @@ Retrieve the output of a completed run. Get notified when tasks complete diff --git a/docs/nav/getting-started.mdx b/docs/nav/getting-started.mdx index 6074eb4ca..0656e9b60 100644 --- a/docs/nav/getting-started.mdx +++ b/docs/nav/getting-started.mdx @@ -1,4 +1,4 @@ --- title: "Getting Started" -url: "/getting-started/introduction" +url: "/developers/getting-started/introduction" --- diff --git a/docs/sdk-reference/browser-profiles/create-browser-profile.mdx b/docs/sdk-reference/browser-profiles/create-browser-profile.mdx index c78d99b6d..01b686647 100644 --- a/docs/sdk-reference/browser-profiles/create-browser-profile.mdx +++ b/docs/sdk-reference/browser-profiles/create-browser-profile.mdx @@ -5,7 +5,7 @@ slug: sdk-reference/browser-profiles/create-browser-profile A browser profile is a snapshot of browser state: cookies, local storage, session data. Create a profile from a completed run, then load it into future workflow runs to skip login and setup steps. -For conceptual background, see [Browser Profiles](/optimization/browser-profiles). +For conceptual background, see [Browser Profiles](/developers/optimization/browser-profiles). Python uses `snake_case` (e.g., `create_browser_profile`); TypeScript uses `camelCase` (e.g., `createBrowserProfile`). Parameter tables show Python names. TypeScript names are the camelCase equivalents. diff --git a/docs/sdk-reference/browser-sessions/create-browser-session.mdx b/docs/sdk-reference/browser-sessions/create-browser-session.mdx index e9d390a6a..eeafd5c73 100644 --- a/docs/sdk-reference/browser-sessions/create-browser-session.mdx +++ b/docs/sdk-reference/browser-sessions/create-browser-session.mdx @@ -5,7 +5,7 @@ slug: sdk-reference/browser-sessions/create-browser-session A browser session is a persistent browser instance that stays alive between API calls. Use sessions to chain multiple tasks in the same browser without losing cookies, local storage, or login state. -For conceptual background, see [Browser Sessions](/optimization/browser-sessions). +For conceptual background, see [Browser Sessions](/developers/optimization/browser-sessions). Python uses `snake_case` (e.g., `create_browser_session`); TypeScript uses `camelCase` (e.g., `createBrowserSession`). Parameter tables show Python names. TypeScript names are the camelCase equivalents. diff --git a/docs/sdk-reference/tasks/run-task.mdx b/docs/sdk-reference/tasks/run-task.mdx index b8a5dd156..f349aef53 100644 --- a/docs/sdk-reference/tasks/run-task.mdx +++ b/docs/sdk-reference/tasks/run-task.mdx @@ -49,7 +49,7 @@ console.log(result.output); | `max_steps` | `int` | No | `None` | Cap the number of AI steps to limit cost. Run terminates with `timed_out` if hit. | | `data_extraction_schema` | `dict \| str` | No | `None` | JSON schema or Pydantic model name constraining the output shape. | | `proxy_location` | `ProxyLocation` | No | `None` | Route the browser through a geographic proxy. | -| `browser_session_id` | `str` | No | `None` | Run inside an existing [browser session](/optimization/browser-sessions). | +| `browser_session_id` | `str` | No | `None` | Run inside an existing [browser session](/developers/optimization/browser-sessions). | | `publish_workflow` | `bool` | No | `False` | Save the generated code as a reusable workflow. Only works with `skyvern_v2`. | | `webhook_url` | `str` | No | `None` | URL to receive a POST when the run finishes. | | `error_code_mapping` | `dict[str, str]` | No | `None` | Map custom error codes to failure reasons. | @@ -281,7 +281,7 @@ console.log(run.output); -For production, prefer `wait_for_completion=True` / `waitForCompletion: true` or [webhooks](/going-to-production/webhooks) over manual polling. +For production, prefer `wait_for_completion=True` / `waitForCompletion: true` or [webhooks](/developers/going-to-production/webhooks) over manual polling. --- diff --git a/docs/sdk-reference/workflows/run-workflow.mdx b/docs/sdk-reference/workflows/run-workflow.mdx index 85ad326ab..ecfa0204d 100644 --- a/docs/sdk-reference/workflows/run-workflow.mdx +++ b/docs/sdk-reference/workflows/run-workflow.mdx @@ -43,8 +43,8 @@ console.log(result.output); | `timeout` | `float` | No | `1800` | Max wait time in seconds when `wait_for_completion=True`. | | `run_with` | `str` | No | `None` | Force execution mode: `"code"` (use cached Playwright code) or `"agent"` (use AI). | | `ai_fallback` | `bool` | No | `None` | Fall back to AI if the cached code fails. | -| `browser_session_id` | `str` | No | `None` | Run inside an existing [browser session](/optimization/browser-sessions). | -| `browser_profile_id` | `str` | No | `None` | Load a [browser profile](/optimization/browser-profiles) (cookies, storage) into the session. | +| `browser_session_id` | `str` | No | `None` | Run inside an existing [browser session](/developers/optimization/browser-sessions). | +| `browser_profile_id` | `str` | No | `None` | Load a [browser profile](/developers/optimization/browser-profiles) (cookies, storage) into the session. | | `proxy_location` | `ProxyLocation` | No | `None` | Route the browser through a geographic proxy. | | `max_steps_override` | `int` | No | `None` | Cap total AI steps across all blocks. | | `webhook_url` | `str` | No | `None` | URL to receive a POST when the run finishes. | diff --git a/docs/snippets/ai-agents-quickstart-content.mdx b/docs/snippets/ai-agents-quickstart-content.mdx index d12adc75a..2649e3e0e 100644 --- a/docs/snippets/ai-agents-quickstart-content.mdx +++ b/docs/snippets/ai-agents-quickstart-content.mdx @@ -74,7 +74,7 @@ Skyvern lets AI coding assistants (Claude Code, Cursor, Windsurf, Codex) control **Copy the prompt below** into your AI coding agent and you'll have a running automation in minutes. -Looking to self-host instead? See the [local installation guide](/getting-started/quickstart) for full setup instructions. +Looking to self-host instead? See the [local installation guide](/developers/getting-started/quickstart) for full setup instructions. ## 1. Get your API key @@ -321,7 +321,7 @@ x-api-key = "YOUR_SKYVERN_API_KEY" The full Page/Agent/Browser walkthrough diff --git a/docs/snippets/core-concepts-content.mdx b/docs/snippets/core-concepts-content.mdx index 04c242dbe..b8ce9086a 100644 --- a/docs/snippets/core-concepts-content.mdx +++ b/docs/snippets/core-concepts-content.mdx @@ -107,7 +107,7 @@ await browser.close() Agents are useful when you want to mix precise Playwright control with open-ended AI goals. Log in with a direct call, then hand off "find and download the invoice" to the agent, then take back control to process the file. -Full method reference: [Page](/sdk-reference/browser-automation/act), [Agent](/sdk-reference/browser-automation/agent-run-task), [Browser](/sdk-reference/browser-automation/launch-cloud-browser). Developer guide: [Multi-Step Automations](/browser-automations/overview). +Full method reference: [Page](/sdk-reference/browser-automation/act), [Agent](/sdk-reference/browser-automation/agent-run-task), [Browser](/sdk-reference/browser-automation/launch-cloud-browser). Developer guide: [Multi-Step Automations](/developers/browser-automations/overview). ## Workflows @@ -277,7 +277,7 @@ data = await page.extract("Extract the monthly report data") await browser.close() ``` -See [Browser Sessions](/optimization/browser-sessions) for details. +See [Browser Sessions](/developers/optimization/browser-sessions) for details. ## Artifacts @@ -334,7 +334,7 @@ result = await skyvern.run_task( Integrate Skyvern into your product with Python, TypeScript, or REST. @@ -343,13 +343,13 @@ result = await skyvern.run_task( Give Claude Code, Cursor, or Windsurf browser automation via MCP. Deploy on your own infrastructure with your own LLM keys. diff --git a/docs/snippets/introduction-content.mdx b/docs/snippets/introduction-content.mdx index 7511b3f46..8d3503646 100644 --- a/docs/snippets/introduction-content.mdx +++ b/docs/snippets/introduction-content.mdx @@ -58,6 +58,6 @@ Most browser automation breaks down at authentication, CAPTCHAs, or dynamic cont Now that you understand how Skyvern works under the hood, learn the eight building blocks you'll use to create any automation. - + Tasks, workflows, blocks, runs, credentials, browser sessions, engines: everything you need to know before you start building.