{ "openapi": "3.1.0", "info": { "title": "Skyvern API", "description": "API for Skyvern", "version": "1.0.0" }, "paths": { "/v1/run/tasks": { "post": { "tags": [ "Agents" ], "summary": "Run a task", "description": "Run a task", "operationId": "run_task_v1_run_tasks_post", "parameters": [ { "name": "x-user-agent", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-User-Agent" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TaskRunRequest-Input" } } } }, "responses": { "200": { "description": "Successfully run task", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TaskRunResponse" } } } }, "400": { "description": "Invalid agent engine" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-hidden": true, "x-fern-sdk-method-name": "run_task", "x-fern-examples": [ { "code-samples": [ { "sdk": "python", "code": "from skyvern import Skyvern\n\nskyvern = Skyvern(api_key=\"YOUR_API_KEY\")\nawait skyvern.run_task(prompt=\"What's the top post on hackernews?\")\n" }, { "sdk": "typescript", "code": "import { SkyvernClient } from \"@skyvern/client\";\n\nconst skyvern = new SkyvernClient({ apiKey: \"YOUR_API_KEY\" });\nawait skyvern.runTask({\n prompt: \"Find the top 3 posts on Hacker News.\"\n})\n" } ] } ], "security": [ { "ApiKeyAuth": [] } ] } }, "/v1/run/agents": { "post": { "tags": [ "Runs" ], "summary": "Run an agent", "description": "Run an agent", "operationId": "run_workflow_v1_run_agents_post", "parameters": [ { "name": "template", "in": "query", "required": false, "schema": { "type": "boolean", "default": false, "title": "Template" } }, { "name": "x-max-steps-override", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "X-Max-Steps-Override" } }, { "name": "x-user-agent", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-User-Agent" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WorkflowRunRequest-Input" } } } }, "responses": { "200": { "description": "Successfully ran agent", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WorkflowRunResponse" } } } }, "400": { "description": "Invalid agent run request" }, "503": { "description": "The server is busy dispatching other runs. No run was created; retry after Retry-After seconds.", "headers": { "Retry-After": { "description": "Seconds to wait before retrying", "schema": { "type": "integer" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-fern-sdk-method-name": "run_workflow", "x-fern-examples": [ { "code-samples": [ { "sdk": "python", "code": "from skyvern import Skyvern\n\nskyvern = Skyvern(api_key=\"YOUR_API_KEY\")\nawait skyvern.run_workflow(workflow_id=\"wpid_123\", parameters={\"parameter1\": \"value1\", \"parameter2\": \"value2\"})\n" }, { "sdk": "typescript", "code": "import { SkyvernClient } from \"@skyvern/client\";\n\nconst skyvern = new SkyvernClient({ apiKey: \"YOUR_API_KEY\" });\nawait skyvern.runWorkflow({\n agent_id: \"wpid_123\",\n parameters: { parameter1: \"value1\", parameter2: \"value2\" }\n});\n" } ] } ], "security": [ { "ApiKeyAuth": [] } ] } }, "/v1/runs/{run_id}": { "get": { "tags": [ "Runs" ], "summary": "Get run info by id", "description": "Get run information (task run, workflow run)", "operationId": "get_run_v1_runs__run_id__get", "parameters": [ { "name": "run_id", "in": "path", "required": true, "schema": { "type": "string", "description": "The id of the task run or the workflow run.", "examples": [ "tsk_123", "tsk_v2_123", "wr_123" ], "title": "Run Id" }, "description": "The id of the task run or the workflow run." } ], "responses": { "200": { "description": "Successfully got run", "content": { "application/json": { "schema": { "oneOf": [ { "$ref": "#/components/schemas/TaskRunResponse" }, { "$ref": "#/components/schemas/WorkflowRunResponse" } ], "discriminator": { "propertyName": "run_type", "mapping": { "task_v1": "#/components/schemas/TaskRunResponse", "task_v2": "#/components/schemas/TaskRunResponse", "task_v3": "#/components/schemas/TaskRunResponse", "openai_cua": "#/components/schemas/TaskRunResponse", "anthropic_cua": "#/components/schemas/TaskRunResponse", "ui_tars": "#/components/schemas/TaskRunResponse", "yutori_navigator": "#/components/schemas/TaskRunResponse", "workflow_run": "#/components/schemas/WorkflowRunResponse" } }, "title": "Response Get Run V1 Runs Run Id Get" } } } }, "404": { "description": "Run not found" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-fern-sdk-method-name": "get_run", "x-fern-examples": [ { "code-samples": [ { "sdk": "python", "code": "from skyvern import Skyvern\n\nskyvern = Skyvern(api_key=\"YOUR_API_KEY\")\nrun = await skyvern.get_run(run_id=\"tsk_v2_123\")\nprint(run)\n" }, { "sdk": "typescript", "code": "import { SkyvernClient } from \"@skyvern/client\";\n\nconst skyvern = new SkyvernClient({ apiKey: \"YOUR_API_KEY\" });\nconst run = await skyvern.getRun(\"tsk_v2_123\");\nconsole.log(run);\n" } ] } ], "security": [ { "ApiKeyAuth": [] } ] } }, "/v1/runs/{run_id}/cancel": { "post": { "tags": [ "Runs" ], "summary": "Cancel a run by id", "description": "Cancel a run (task or workflow)", "operationId": "cancel_run_v1_runs__run_id__cancel_post", "parameters": [ { "name": "run_id", "in": "path", "required": true, "schema": { "type": "string", "description": "The id of the task run or the workflow run to cancel.", "title": "Run Id" }, "description": "The id of the task run or the workflow run to cancel." } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": {} } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-fern-sdk-method-name": "cancel_run", "x-fern-examples": [ { "code-samples": [ { "sdk": "python", "code": "from skyvern import Skyvern\n\nskyvern = Skyvern(api_key=\"YOUR_API_KEY\")\nawait skyvern.cancel_run(run_id=\"tsk_v2_123\")\n" }, { "sdk": "typescript", "code": "import { SkyvernClient } from \"@skyvern/client\";\n\nconst skyvern = new SkyvernClient({ apiKey: \"YOUR_API_KEY\" });\nawait skyvern.cancelRun(\"tsk_v2_123\");\n" } ] } ], "security": [ { "ApiKeyAuth": [] } ] } }, "/v1/runs/cancel": { "post": { "tags": [ "Runs" ], "summary": "Bulk cancel runs", "description": "Cancel multiple runs (tasks or workflows) in a single request", "operationId": "bulk_cancel_runs_v1_runs_cancel_post", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BulkCancelRunsRequest" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BulkCancelRunsResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-fern-sdk-method-name": "bulk_cancel_runs", "x-fern-examples": [ { "code-samples": [ { "sdk": "python", "code": "from skyvern import Skyvern\n\nskyvern = Skyvern(api_key=\"YOUR_API_KEY\")\nawait skyvern.bulk_cancel_runs(run_ids=[\"tsk_v2_123\", \"wr_456\"])\n" }, { "sdk": "typescript", "code": "import { SkyvernClient } from \"@skyvern/client\";\n\nconst skyvern = new SkyvernClient({ apiKey: \"YOUR_API_KEY\" });\nawait skyvern.bulkCancelRuns({ run_ids: [\"tsk_v2_123\", \"wr_456\"] });\n" } ] } ], "security": [ { "ApiKeyAuth": [] } ] } }, "/v1/agents": { "post": { "tags": [ "Agents" ], "summary": "Create a new agent", "description": "Create a new agent", "operationId": "create_workflow_v1_agents_post", "parameters": [ { "name": "folder_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Optional folder ID to assign the workflow to", "title": "Folder Id" }, "description": "Optional folder ID to assign the workflow to" }, { "name": "Idempotency-Key", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Idempotency-Key must contain 1 to 255 visible ASCII bytes.", "title": "Idempotency-Key" }, "description": "Idempotency-Key must contain 1 to 255 visible ASCII bytes." } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WorkflowRequest" } } } }, "responses": { "200": { "description": "Successfully created agent", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Workflow" } } } }, "409": { "description": "A create with this idempotency key is still in progress" }, "422": { "description": "Invalid agent definition" } }, "x-fern-sdk-method-name": "create_workflow", "x-fern-examples": [ { "code-samples": [ { "sdk": "curl", "code": "curl -X POST https://api.skyvern.com/v1/workflows --header 'x-api-key: {{x-api-key}}' --header 'Content-Type: text/plain' --data-raw 'title: Contact Forms\ndescription: Fill the contact form on the website\nproxy_location: RESIDENTIAL\nwebhook_callback_url: https://example.com/webhook\ntotp_verification_url: https://example.com/totp\npersist_browser_session: false\nmodel:\n name: gpt-4.1\nworkflow_definition:\n parameters:\n - key: website_url\n description: null\n parameter_type: workflow\n workflow_parameter_type: string\n default_value: null\n - key: name\n description: null\n parameter_type: workflow\n workflow_parameter_type: string\n default_value: null\n - key: additional_information\n description: null\n parameter_type: workflow\n workflow_parameter_type: string\n default_value: |-\n Message: I'd love to learn more about your...\n Phone: 123-456-7890\n Inquiry type: sales\n Optional Subject: Hello from [Company Here]\n - key: email\n description: null\n parameter_type: workflow\n workflow_parameter_type: string\n default_value: null\n blocks:\n - label: Fill_Out_Contact_Form\n continue_on_failure: true\n block_type: navigation\n url: \"{{website_url}}\"\n title: Fill_Out_Contact_Form\n navigation_goal: >-\n Find the contact form. Fill out the contact us form and submit it. Your\n goal is complete when the page says your message has been sent. In the\n case you can't find a contact us form, terminate.\n\n\n Fill out required fields as best you can using the following\n information:\n\n {{name}}\n\n {{email}}\n\n {{additional_information}}\n error_code_mapping: null\n max_retries: 0\n max_steps_per_run: null\n complete_on_download: false\n download_suffix: null\n parameter_keys: []\n totp_identifier: null\n totp_verification_url: null\n complete_criterion: \"\"\n terminate_criterion: \"\"\n include_action_history_in_verification: false\n - label: Extract_Email\n continue_on_failure: false\n block_type: extraction\n url: \"\"\n title: Extract_Email\n data_extraction_goal: \"Extract a company email if available \"\n data_schema: null\n max_retries: 0\n max_steps_per_run: null\n parameter_keys: []\n'\n" }, { "sdk": "python", "code": "\nfrom skyvern import Skyvern\n\n# Create a workflow in JSON format\nworkflow_definition = {\n \"title\": \"Contact Forms Workflow\",\n \"description\": \"Fill the contact form on the website\",\n \"proxy_location\": \"RESIDENTIAL\",\n \"webhook_callback_url\": \"https://example.com/webhook\",\n \"totp_verification_url\": \"https://example.com/totp\",\n \"totp_identifier\": \"4155555555\",\n \"model\": {\"name\": \"gpt-4.1\"},\n \"workflow_definition\": {\n \"parameters\": [\n {\n \"key\": \"website_url\",\n \"description\": None,\n \"parameter_type\": \"workflow\",\n \"workflow_parameter_type\": \"string\",\n \"default_value\": None,\n },\n {\n \"key\": \"name\",\n \"description\": None,\n \"parameter_type\": \"workflow\",\n \"workflow_parameter_type\": \"string\",\n \"default_value\": None,\n },\n {\n \"key\": \"additional_information\",\n \"description\": None,\n \"parameter_type\": \"workflow\",\n \"workflow_parameter_type\": \"string\",\n \"default_value\": \"Message: I'd love to learn more about your...\nPhone: 123-456-7890\nInquiry type: sales\nOptional Subject: Hello from [Company Here]\",\n },\n {\n \"key\": \"email\",\n \"description\": None,\n \"parameter_type\": \"workflow\",\n \"workflow_parameter_type\": \"string\",\n \"default_value\": None,\n },\n ],\n \"blocks\": [\n {\n \"label\": \"Fill_Out_Contact_Form\",\n \"continue_on_failure\": True,\n \"block_type\": \"navigation\",\n \"url\": \"{{website_url}}\",\n \"title\": \"Fill_Out_Contact_Form\",\n \"navigation_goal\": \"Find the contact form. Fill out the contact us form and submit it. Your goal is complete when the page says your message has been sent. In the case you can't find a contact us form, terminate.\n\nFill out required fields as best you can using the following information:\n{{name}}\n{{email}}\n{{additional_information}}\",\n \"error_code_mapping\": None,\n \"max_retries\": 0,\n \"max_steps_per_run\": None,\n \"complete_on_download\": False,\n \"download_suffix\": None,\n \"parameter_keys\": [],\n \"totp_identifier\": None,\n \"totp_verification_url\": None,\n \"complete_criterion\": \"\",\n \"terminate_criterion\": \"\",\n \"include_action_history_in_verification\": False,\n },\n {\n \"label\": \"Extract_Email\",\n \"continue_on_failure\": False,\n \"block_type\": \"extraction\",\n \"url\": \"\",\n \"title\": \"Extract_Email\",\n \"data_extraction_goal\": \"Extract a company email if available \",\n \"data_schema\": None,\n \"max_retries\": 0,\n \"max_steps_per_run\": None,\n \"parameter_keys\": [],\n },\n ],\n },\n}\nskyvern = Skyvern(api_key=\"YOUR_API_KEY\")\nworkflow = await skyvern.create_workflow(json_definition=workflow_definition)\nprint(workflow)\n" }, { "sdk": "typescript", "code": "import { SkyvernClient } from \"@skyvern/client\";\n\nconst skyvern = new SkyvernClient({ apiKey: \"YOUR_API_KEY\" });\n\n// Create a workflow in JSON format\nconst workflowDefinition = {\n title: \"Contact Forms Workflow\",\n description: \"Fill the contact form on the website\",\n proxy_location: \"RESIDENTIAL\",\n webhook_callback_url: \"https://example.com/webhook\",\n totp_verification_url: \"https://example.com/totp\",\n totp_identifier: \"4155555555\",\n model: { name: \"gpt-4.1\" },\n workflow_definition: {\n parameters: [\n {\n key: \"website_url\",\n description: null,\n parameter_type: \"workflow\",\n workflow_parameter_type: \"string\",\n default_value: null\n },\n {\n key: \"name\",\n description: null,\n parameter_type: \"workflow\",\n workflow_parameter_type: \"string\",\n default_value: null\n },\n {\n key: \"additional_information\",\n description: null,\n parameter_type: \"workflow\",\n workflow_parameter_type: \"string\",\n default_value: \"Message: I'd love to learn more about your...\\nPhone: 123-456-7890\\nInquiry type: sales\\nOptional Subject: Hello from [Company Here]\"\n },\n {\n key: \"email\",\n description: null,\n parameter_type: \"workflow\",\n workflow_parameter_type: \"string\",\n default_value: null\n }\n ],\n blocks: [\n {\n label: \"Fill_Out_Contact_Form\",\n continue_on_failure: true,\n block_type: \"navigation\",\n url: \"{{website_url}}\",\n title: \"Fill_Out_Contact_Form\",\n navigation_goal: \"Find the contact form. Fill out the contact us form and submit it. Your goal is complete when the page says your message has been sent. In the case you can't find a contact us form, terminate.\\n\\nFill out required fields as best you can using the following information:\\n{{name}}\\n{{email}}\\n{{additional_information}}\",\n error_code_mapping: null,\n max_retries: 0,\n max_steps_per_run: null,\n complete_on_download: false,\n download_suffix: null,\n parameter_keys: [],\n totp_identifier: null,\n totp_verification_url: null,\n complete_criterion: \"\",\n terminate_criterion: \"\",\n include_action_history_in_verification: false\n },\n {\n label: \"Extract_Email\",\n continue_on_failure: false,\n block_type: \"extraction\",\n url: \"\",\n title: \"Extract_Email\",\n data_extraction_goal: \"Extract a company email if available \",\n data_schema: null,\n max_retries: 0,\n max_steps_per_run: null,\n parameter_keys: [],\n }\n ]\n }\n};\n\nconst workflow = await skyvern.createWorkflow({\n json_definition: workflowDefinition\n});\nconsole.log(workflow);\n" } ] } ], "security": [ { "ApiKeyAuth": [] } ] }, "get": { "tags": [ "Agents" ], "summary": "Get all agents", "description": "Get all workflows with the latest version for the organization.\n\nSearch semantics:\n- If `search_key` is provided, its value is used as a unified search term for\n `workflows.title`, `folders.title`, and workflow parameter metadata (key, description, and default_value for\n `WorkflowParameterModel`).\n- Falls back to deprecated `title` (title-only search) if `search_key` is not provided.\n- Parameter metadata search excludes soft-deleted parameter rows across all parameter tables.", "operationId": "get_workflows_v1_workflows_get", "parameters": [ { "name": "page", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "default": 1, "title": "Page" } }, { "name": "page_size", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "default": 10, "title": "Page Size" } }, { "name": "only_saved_tasks", "in": "query", "required": false, "schema": { "type": "boolean", "default": false, "title": "Only Saved Tasks" } }, { "name": "only_workflows", "in": "query", "required": false, "schema": { "type": "boolean", "default": false, "title": "Only Workflows" } }, { "name": "only_templates", "in": "query", "required": false, "schema": { "type": "boolean", "default": false, "title": "Only Templates" } }, { "name": "search_key", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Case-insensitive substring search across: workflow title, folder name, and parameter metadata (key, description, default_value). A workflow is returned if any of these fields match. Soft-deleted parameter definitions are excluded. Takes precedence over the deprecated `title` parameter.", "examples": [ "my_workflow", "login_url", "production" ], "title": "Search Key" }, "description": "Case-insensitive substring search across: workflow title, folder name, and parameter metadata (key, description, default_value). A workflow is returned if any of these fields match. Soft-deleted parameter definitions are excluded. Takes precedence over the deprecated `title` parameter." }, { "name": "title", "in": "query", "required": false, "schema": { "type": "string", "description": "Deprecated: use search_key instead. Falls back to title-only search if search_key is not provided.", "deprecated": true, "default": "", "title": "Title" }, "description": "Deprecated: use search_key instead. Falls back to title-only search if search_key is not provided.", "deprecated": true }, { "name": "folder_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Filter workflows by folder ID", "title": "Folder Id" }, "description": "Filter workflows by folder ID" }, { "name": "status", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "array", "items": { "$ref": "#/components/schemas/WorkflowStatus" } }, { "type": "null" } ], "title": "Status" } }, { "name": "tags", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "array", "items": { "type": "string" }, "maxItems": 20 }, { "type": "null" } ], "description": "Filter by tags. Each term is a label (`production`), a group (`env:*`), or a group:label (`env:prod`). Repeat the param or comma-separate (`?tags=env:prod,env:staging`). AND across distinct terms, OR within a group's labels (`?tags=customer:acme,env:prod,env:staging` -> customer=acme AND env in (prod, staging)). A label term matches the value across any/no group. Matches current tag values only. Not supported with `template=true`.", "examples": [ "env:prod", "production", "env:*", "customer:acme,env:prod" ], "title": "Tags" }, "description": "Filter by tags. Each term is a label (`production`), a group (`env:*`), or a group:label (`env:prod`). Repeat the param or comma-separate (`?tags=env:prod,env:staging`). AND across distinct terms, OR within a group's labels (`?tags=customer:acme,env:prod,env:staging` -> customer=acme AND env in (prod, staging)). A label term matches the value across any/no group. Matches current tag values only. Not supported with `template=true`." }, { "name": "template", "in": "query", "required": false, "schema": { "type": "boolean", "default": false, "title": "Template" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Workflow" }, "title": "Response Get Workflows V1 Workflows Get" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-fern-sdk-method-name": "get_workflows", "x-fern-examples": [ { "code-samples": [ { "sdk": "python", "code": "from skyvern import Skyvern\n\nskyvern = Skyvern(api_key=\"YOUR_API_KEY\")\nworkflows = await skyvern.get_workflows()\nprint(workflows)\n" }, { "sdk": "typescript", "code": "import { SkyvernClient } from \"@skyvern/client\";\n\nconst skyvern = new SkyvernClient({ apiKey: \"YOUR_API_KEY\" });\nconst workflows = await skyvern.getWorkflows();\nconsole.log(workflows);\n" } ] } ], "security": [ { "ApiKeyAuth": [] } ] } }, "/v1/agents/{workflow_id}": { "post": { "tags": [ "Agents" ], "summary": "Update an agent", "description": "Update an agent", "operationId": "update_workflow_v1_agents__workflow_id__post", "parameters": [ { "name": "workflow_id", "in": "path", "required": true, "schema": { "type": "string", "description": "The ID of the agent to update. Starts with `wpid_`.", "examples": [ "wpid_123" ], "title": "Workflow Id" }, "description": "The ID of the agent to update. Starts with `wpid_`." } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WorkflowRequest" } } } }, "responses": { "200": { "description": "Successfully updated agent", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Workflow" } } } }, "422": { "description": "Invalid agent definition" } }, "x-fern-sdk-method-name": "update_workflow", "x-fern-examples": [ { "code-samples": [ { "sdk": "curl", "code": "curl -X POST https://api.skyvern.com/v1/workflows/wpid_123 --header 'x-api-key: {{x-api-key}}' --header 'Content-Type: text/plain' --data-raw 'title: Contact Forms\ndescription: Fill the contact form on the website\nproxy_location: RESIDENTIAL\nwebhook_callback_url: https://example.com/webhook\ntotp_verification_url: https://example.com/totp\npersist_browser_session: false\nmodel:\n name: gpt-4.1\nworkflow_definition:\n parameters:\n - key: website_url\n description: null\n parameter_type: workflow\n workflow_parameter_type: string\n default_value: null\n - key: name\n description: null\n parameter_type: workflow\n workflow_parameter_type: string\n default_value: null\n - key: additional_information\n description: null\n parameter_type: workflow\n workflow_parameter_type: string\n default_value: |-\n Message: I'd love to learn more about your...\n Phone: 123-456-7890\n Inquiry type: sales\n Optional Subject: Hello from [Company Here]\n - key: email\n description: null\n parameter_type: workflow\n workflow_parameter_type: string\n default_value: null\n blocks:\n - label: Fill_Out_Contact_Form\n continue_on_failure: true\n block_type: navigation\n url: \"{{website_url}}\"\n title: Fill_Out_Contact_Form\n navigation_goal: >-\n Find the contact form. Fill out the contact us form and submit it. Your\n goal is complete when the page says your message has been sent. In the\n case you can't find a contact us form, terminate.\n\n\n Fill out required fields as best you can using the following\n information:\n\n {{name}}\n\n {{email}}\n\n {{additional_information}}\n error_code_mapping: null\n max_retries: 0\n max_steps_per_run: null\n complete_on_download: false\n download_suffix: null\n parameter_keys: []\n totp_identifier: null\n totp_verification_url: null\n complete_criterion: \"\"\n terminate_criterion: \"\"\n include_action_history_in_verification: false\n - label: Extract_Email\n continue_on_failure: false\n block_type: extraction\n url: \"\"\n title: Extract_Email\n data_extraction_goal: \"Extract a company email if available \"\n data_schema: null\n max_retries: 0\n max_steps_per_run: null\n parameter_keys: []\n'\n" }, { "sdk": "python", "code": "\nfrom skyvern import Skyvern\n\nupdated_workflow_definition = {\n \"title\": \"Updated Contact Forms Workflow\",\n \"description\": \"Fill the contact form on the website\",\n \"proxy_location\": \"RESIDENTIAL\",\n \"webhook_callback_url\": \"https://example.com/webhook\",\n \"totp_verification_url\": \"https://example.com/totp\",\n \"totp_identifier\": \"4155555555\",\n \"model\": {\"name\": \"gpt-4.1\"},\n \"workflow_definition\": {\n \"parameters\": [\n {\n \"key\": \"website_url\",\n \"description\": None,\n \"parameter_type\": \"workflow\",\n \"workflow_parameter_type\": \"string\",\n \"default_value\": None,\n },\n {\n \"key\": \"name\",\n \"description\": None,\n \"parameter_type\": \"workflow\",\n \"workflow_parameter_type\": \"string\",\n \"default_value\": None,\n },\n {\n \"key\": \"additional_information\",\n \"description\": None,\n \"parameter_type\": \"workflow\",\n \"workflow_parameter_type\": \"string\",\n \"default_value\": \"Message: I'd love to learn more about your...\nPhone: 123-456-7890\nInquiry type: sales\nOptional Subject: Hello from [Company Here]\",\n },\n {\n \"key\": \"email\",\n \"description\": None,\n \"parameter_type\": \"workflow\",\n \"workflow_parameter_type\": \"string\",\n \"default_value\": None,\n },\n ],\n \"blocks\": [\n {\n \"label\": \"Fill_Out_Contact_Form\",\n \"continue_on_failure\": True,\n \"block_type\": \"navigation\",\n \"url\": \"{{website_url}}\",\n \"title\": \"Fill_Out_Contact_Form\",\n \"navigation_goal\": \"Find the contact form. Fill out the contact us form and submit it. Your goal is complete when the page says your message has been sent. In the case you can't find a contact us form, terminate.\n\nFill out required fields as best you can using the following information:\n{{name}}\n{{email}}\n{{additional_information}}\",\n \"error_code_mapping\": None,\n \"max_retries\": 0,\n \"max_steps_per_run\": None,\n \"complete_on_download\": False,\n \"download_suffix\": None,\n \"parameter_keys\": [],\n \"totp_identifier\": None,\n \"totp_verification_url\": None,\n \"complete_criterion\": \"\",\n \"terminate_criterion\": \"\",\n \"include_action_history_in_verification\": False,\n },\n {\n \"label\": \"Extract_Email\",\n \"continue_on_failure\": False,\n \"block_type\": \"extraction\",\n \"url\": \"\",\n \"title\": \"Extract_Email\",\n \"data_extraction_goal\": \"Extract a company email if available \",\n \"data_schema\": None,\n \"max_retries\": 0,\n \"max_steps_per_run\": None,\n \"parameter_keys\": [],\n },\n ],\n },\n}\nskyvern = Skyvern(api_key=\"YOUR_API_KEY\")\nworkflow = await skyvern.update_workflow(workflow_id=\"wpid_123\", json_definition=updated_workflow_definition)\nprint(workflow)\n" }, { "sdk": "typescript", "code": "import { SkyvernClient } from \"@skyvern/client\";\n\nconst skyvern = new SkyvernClient({ apiKey: \"YOUR_API_KEY\" });\n\nconst updatedWorkflowDefinition = {\n title: \"Updated Contact Forms Workflow\",\n description: \"Fill the contact form on the website\",\n proxy_location: \"RESIDENTIAL\",\n webhook_callback_url: \"https://example.com/webhook\",\n totp_verification_url: \"https://example.com/totp\",\n totp_identifier: \"4155555555\",\n model: { name: \"gpt-4.1\" },\n workflow_definition: {\n parameters: [\n {\n key: \"website_url\",\n description: null,\n parameter_type: \"workflow\",\n workflow_parameter_type: \"string\",\n default_value: null\n },\n {\n key: \"name\",\n description: null,\n parameter_type: \"workflow\",\n workflow_parameter_type: \"string\",\n default_value: null\n },\n {\n key: \"additional_information\",\n description: null,\n parameter_type: \"workflow\",\n workflow_parameter_type: \"string\",\n default_value: \"Message: I'd love to learn more about your...\\nPhone: 123-456-7890\\nInquiry type: sales\\nOptional Subject: Hello from [Company Here]\"\n },\n {\n key: \"email\",\n description: null,\n parameter_type: \"workflow\",\n workflow_parameter_type: \"string\",\n default_value: null\n }\n ],\n blocks: [\n {\n label: \"Fill_Out_Contact_Form\",\n continue_on_failure: true,\n block_type: \"navigation\",\n url: \"{{website_url}}\",\n title: \"Fill_Out_Contact_Form\",\n navigation_goal: \"Find the contact form. Fill out the contact us form and submit it. Your goal is complete when the page says your message has been sent. In the case you can't find a contact us form, terminate.\\n\\nFill out required fields as best you can using the following information:\\n{{name}}\\n{{email}}\\n{{additional_information}}\",\n error_code_mapping: null,\n max_retries: 0,\n max_steps_per_run: null,\n complete_on_download: false,\n download_suffix: null,\n parameter_keys: [],\n totp_identifier: null,\n totp_verification_url: null,\n complete_criterion: \"\",\n terminate_criterion: \"\",\n include_action_history_in_verification: false\n },\n {\n label: \"Extract_Email\",\n continue_on_failure: false,\n block_type: \"extraction\",\n url: \"\",\n title: \"Extract_Email\",\n data_extraction_goal: \"Extract a company email if available \",\n data_schema: null,\n max_retries: 0,\n max_steps_per_run: null,\n parameter_keys: []\n }\n ]\n }\n};\n\nconst workflow = await skyvern.updateWorkflow(\"wpid_123\", {\n json_definition: updatedWorkflowDefinition\n});\nconsole.log(workflow);\n" } ] } ], "security": [ { "ApiKeyAuth": [] } ] } }, "/v1/agents/{workflow_id}/delete": { "post": { "tags": [ "Agents" ], "summary": "Delete an agent", "description": "Delete an agent", "operationId": "delete_workflow_v1_agents__workflow_id__delete_post", "parameters": [ { "name": "workflow_id", "in": "path", "required": true, "schema": { "type": "string", "description": "The ID of the agent to delete. Starts with `wpid_`.", "examples": [ "wpid_123" ], "title": "Workflow Id" }, "description": "The ID of the agent to delete. Starts with `wpid_`." } ], "responses": { "200": { "description": "Successfully deleted agent", "content": { "application/json": { "schema": {} } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-fern-sdk-method-name": "delete_workflow", "x-fern-examples": [ { "code-samples": [ { "sdk": "python", "code": "from skyvern import Skyvern\n\nskyvern = Skyvern(api_key=\"YOUR_API_KEY\")\nawait skyvern.delete_workflow(workflow_id=\"wpid_123\")\n" }, { "sdk": "typescript", "code": "import { SkyvernClient } from \"@skyvern/client\";\n\nconst skyvern = new SkyvernClient({ apiKey: \"YOUR_API_KEY\" });\nawait skyvern.deleteWorkflow(\"wpid_123\");\n" } ] } ], "security": [ { "ApiKeyAuth": [] } ] } }, "/v1/folders": { "post": { "tags": [ "Folders" ], "summary": "Create folder", "description": "Create a new folder to organize workflows", "operationId": "create_folder_v1_folders_post", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FolderCreate" } } } }, "responses": { "200": { "description": "Successfully created folder", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Folder" } } } }, "400": { "description": "Invalid request" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-fern-sdk-method-name": "create_folder", "security": [ { "ApiKeyAuth": [] } ] }, "get": { "tags": [ "Folders" ], "summary": "Get folders", "description": "Get all folders for the organization", "operationId": "get_folders_v1_folders_get", "parameters": [ { "name": "page", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "description": "Page number", "default": 1, "title": "Page" }, "description": "Page number" }, { "name": "page_size", "in": "query", "required": false, "schema": { "type": "integer", "maximum": 500, "minimum": 1, "description": "Number of folders per page", "default": 100, "title": "Page Size" }, "description": "Number of folders per page" }, { "name": "search", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Search folders by title or description", "title": "Search" }, "description": "Search folders by title or description" } ], "responses": { "200": { "description": "Successfully retrieved folders", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Folder" }, "title": "Response Get Folders V1 Folders Get" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-fern-sdk-method-name": "get_folders", "security": [ { "ApiKeyAuth": [] } ] } }, "/v1/folders/{folder_id}": { "get": { "tags": [ "Folders" ], "summary": "Get folder", "description": "Get a specific folder by ID", "operationId": "get_folder_v1_folders__folder_id__get", "parameters": [ { "name": "folder_id", "in": "path", "required": true, "schema": { "type": "string", "description": "Folder ID", "examples": [ "fld_123" ], "title": "Folder Id" }, "description": "Folder ID" } ], "responses": { "200": { "description": "Successfully retrieved folder", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Folder" } } } }, "404": { "description": "Folder not found" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-fern-sdk-method-name": "get_folder", "security": [ { "ApiKeyAuth": [] } ] }, "put": { "tags": [ "Folders" ], "summary": "Update folder", "description": "Update a folder's title or description", "operationId": "update_folder_v1_folders__folder_id__put", "parameters": [ { "name": "folder_id", "in": "path", "required": true, "schema": { "type": "string", "description": "Folder ID", "examples": [ "fld_123" ], "title": "Folder Id" }, "description": "Folder ID" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FolderUpdate" } } } }, "responses": { "200": { "description": "Successfully updated folder", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Folder" } } } }, "404": { "description": "Folder not found" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-fern-sdk-method-name": "update_folder", "security": [ { "ApiKeyAuth": [] } ] }, "delete": { "tags": [ "Folders" ], "summary": "Delete folder", "description": "Delete a folder. Optionally delete all workflows in the folder.", "operationId": "delete_folder_v1_folders__folder_id__delete", "parameters": [ { "name": "folder_id", "in": "path", "required": true, "schema": { "type": "string", "description": "Folder ID", "examples": [ "fld_123" ], "title": "Folder Id" }, "description": "Folder ID" }, { "name": "delete_workflows", "in": "query", "required": false, "schema": { "type": "boolean", "description": "If true, also delete all workflows in this folder", "default": false, "title": "Delete Workflows" }, "description": "If true, also delete all workflows in this folder" } ], "responses": { "200": { "description": "Successfully deleted folder", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": true, "title": "Response Delete Folder V1 Folders Folder Id Delete" } } } }, "404": { "description": "Folder not found" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-fern-sdk-method-name": "delete_folder", "security": [ { "ApiKeyAuth": [] } ] } }, "/v1/browser_types": { "get": { "tags": [ "Server" ], "summary": "List selectable browser types", "description": "List the selectable browser engines for the workflow/run browser_type setting. The list is runtime-capability aware: a runtime that can honor an explicit engine (the cloud dynamic-browser capability) returns all supported engines, while a runtime without it (OSS/self-host) returns an empty list rather than advertising selections the server would reject.", "operationId": "get_browser_types_v1_browser_types_get", "responses": { "200": { "description": "Successfully listed selectable browser types", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/BrowserTypeOption" }, "title": "Response Get Browser Types V1 Browser Types Get" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-fern-sdk-method-name": "get_browser_types", "security": [ { "ApiKeyAuth": [] } ] } }, "/v1/runs/{workflow_run_id}/tags": { "post": { "tags": [ "Tags" ], "summary": "Apply run tags", "description": "Atomically apply tag changes to a workflow run. Sets and deletes happen in one transaction; same-key collisions resolve set-wins.", "operationId": "apply_run_tags_v1_runs__workflow_run_id__tags_post", "parameters": [ { "name": "workflow_run_id", "in": "path", "required": true, "schema": { "type": "string", "description": "Workflow run ID", "examples": [ "wr_123" ], "title": "Workflow Run Id" }, "description": "Workflow run ID" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TagApplyRequest" } } } }, "responses": { "200": { "description": "Successfully applied tag changes", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RunTagsResponse" } } } }, "404": { "description": "Workflow run not found" }, "422": { "description": "Invalid tag key or value" } }, "x-hidden": true, "x-fern-sdk-method-name": "apply_run_tags", "security": [ { "ApiKeyAuth": [] } ] }, "get": { "tags": [ "Tags" ], "summary": "Get run tags", "description": "Get the current tag state for a workflow run.", "operationId": "get_run_tags_v1_runs__workflow_run_id__tags_get", "parameters": [ { "name": "workflow_run_id", "in": "path", "required": true, "schema": { "type": "string", "description": "Workflow run ID", "examples": [ "wr_123" ], "title": "Workflow Run Id" }, "description": "Workflow run ID" } ], "responses": { "200": { "description": "Successfully retrieved tags", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RunTagsResponse" } } } }, "404": { "description": "Workflow run not found" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-hidden": true, "x-fern-sdk-method-name": "get_run_tags", "security": [ { "ApiKeyAuth": [] } ] } }, "/v1/runs/{workflow_run_id}/tags/{key}": { "delete": { "tags": [ "Tags" ], "summary": "Delete run tag", "description": "Soft-delete a single grouped tag from a workflow run. Writes a DELETE event row.", "operationId": "delete_run_tag_v1_runs__workflow_run_id__tags__key__delete", "parameters": [ { "name": "workflow_run_id", "in": "path", "required": true, "schema": { "type": "string", "description": "Workflow run ID", "examples": [ "wr_123" ], "title": "Workflow Run Id" }, "description": "Workflow run ID" }, { "name": "key", "in": "path", "required": true, "schema": { "type": "string", "description": "Tag key to delete", "examples": [ "env" ], "title": "Key" }, "description": "Tag key to delete" } ], "responses": { "200": { "description": "Successfully deleted tag (or no-op if absent)", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RunTagsResponse" } } } }, "404": { "description": "Workflow run not found" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-hidden": true, "x-fern-sdk-method-name": "delete_run_tag", "security": [ { "ApiKeyAuth": [] } ] } }, "/v1/runs/{workflow_run_id}/tags/history": { "get": { "tags": [ "Tags" ], "summary": "Get run tag history", "description": "Chronological tag-event log for a workflow run (newest first). Includes SET and DELETE events.", "operationId": "get_run_tag_history_v1_runs__workflow_run_id__tags_history_get", "parameters": [ { "name": "workflow_run_id", "in": "path", "required": true, "schema": { "type": "string", "description": "Workflow run ID", "examples": [ "wr_123" ], "title": "Workflow Run Id" }, "description": "Workflow run ID" }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "maximum": 500, "minimum": 1, "description": "Max events to return", "default": 100, "title": "Limit" }, "description": "Max events to return" }, { "name": "since", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "description": "Only return events at or after this timestamp", "title": "Since" }, "description": "Only return events at or after this timestamp" }, { "name": "key", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Filter to events for a single tag key", "title": "Key" }, "description": "Filter to events for a single tag key" } ], "responses": { "200": { "description": "Successfully retrieved tag history", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RunTagHistoryResponse" } } } }, "404": { "description": "Workflow run not found" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-hidden": true, "x-fern-sdk-method-name": "get_run_tag_history", "security": [ { "ApiKeyAuth": [] } ] } }, "/v1/tag-keys": { "get": { "tags": [ "Tags" ], "summary": "List tag keys", "description": "List all tag keys registered for the organization with their descriptions.", "operationId": "list_tag_keys_v1_tag_keys_get", "responses": { "200": { "description": "Successfully retrieved tag keys", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/TagKey" }, "title": "Response List Tag Keys V1 Tag Keys Get" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-hidden": true, "x-fern-sdk-method-name": "list_tag_keys", "security": [ { "ApiKeyAuth": [] } ] } }, "/v1/tag-keys/{key}": { "patch": { "tags": [ "Tags" ], "summary": "Update tag key", "description": "Update the description for a tag key.", "operationId": "update_tag_key_v1_tag_keys__key__patch", "parameters": [ { "name": "key", "in": "path", "required": true, "schema": { "type": "string", "description": "Tag key to update", "title": "Key" }, "description": "Tag key to update" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TagKeyUpdate" } } } }, "responses": { "200": { "description": "Successfully updated tag key", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TagKey" } } } }, "404": { "description": "Tag key not found" }, "422": { "description": "Description too long" } }, "x-hidden": true, "x-fern-sdk-method-name": "update_tag_key", "security": [ { "ApiKeyAuth": [] } ] }, "delete": { "tags": [ "Tags" ], "summary": "Delete tag key", "description": "Delete a tag key from the organization registry and remove that tag from every workflow that currently has it (cascade). Returns how many workflows the tag was removed from.", "operationId": "delete_tag_key_v1_tag_keys__key__delete", "parameters": [ { "name": "key", "in": "path", "required": true, "schema": { "type": "string", "description": "Tag key to delete", "examples": [ "env" ], "title": "Key" }, "description": "Tag key to delete" } ], "responses": { "200": { "description": "Successfully deleted tag key", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TagKeyDeleteResponse" } } } }, "404": { "description": "Tag key not found" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-hidden": true, "x-fern-sdk-method-name": "delete_tag_key", "security": [ { "ApiKeyAuth": [] } ] } }, "/v1/tag-values": { "get": { "tags": [ "Tags" ], "summary": "List tag values", "description": "List the palette color and current workflow usage count for each grouped tag (key, value) for the organization. The frontend joins these onto tags by (key, value); workflow_count is the number of non-deleted workflows carrying the label and powers the per-label usage and delete blast-radius warnings.", "operationId": "list_tag_values_v1_tag_values_get", "parameters": [ { "name": "key", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Filter to values for a single tag key", "title": "Key" }, "description": "Filter to values for a single tag key" } ], "responses": { "200": { "description": "Successfully retrieved tag values", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/TagValue" }, "title": "Response List Tag Values V1 Tag Values Get" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-hidden": true, "x-fern-sdk-method-name": "list_tag_values", "security": [ { "ApiKeyAuth": [] } ] }, "post": { "tags": [ "Tags" ], "summary": "Create tag value", "description": "Register a grouped tag (key, value) with a palette color before any workflow uses it. The label shows a zero workflow count until applied to a workflow.", "operationId": "create_tag_value_v1_tag_values_post", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TagValueCreate" } } } }, "responses": { "200": { "description": "Successfully registered tag value", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TagValue" } } } }, "409": { "description": "Tag value already exists" }, "422": { "description": "Invalid key, value, or color" } }, "x-hidden": true, "x-fern-sdk-method-name": "create_tag_value", "security": [ { "ApiKeyAuth": [] } ] } }, "/v1/tag-values/{key}": { "patch": { "tags": [ "Tags" ], "summary": "Update tag value color", "description": "Recolor a grouped tag (key, value). The value is supplied in the body so values containing '/' stay addressable. The new color must be a palette name.", "operationId": "update_tag_value_v1_tag_values__key__patch", "parameters": [ { "name": "key", "in": "path", "required": true, "schema": { "type": "string", "description": "Tag key (group)", "examples": [ "env" ], "title": "Key" }, "description": "Tag key (group)" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TagValueUpdate" } } } }, "responses": { "200": { "description": "Successfully recolored tag value", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TagValue" } } } }, "404": { "description": "Tag value not found" }, "422": { "description": "Invalid palette color" } }, "x-hidden": true, "x-fern-sdk-method-name": "update_tag_value", "security": [ { "ApiKeyAuth": [] } ] }, "delete": { "tags": [ "Tags" ], "summary": "Delete tag value", "description": "Soft-delete a grouped tag (key, value) and remove that label from every workflow carrying it (cascade). The value rides in the body so values containing '/' stay addressable. Returns how many workflows the label was removed from.", "operationId": "delete_tag_value_v1_tag_values__key__delete", "parameters": [ { "name": "key", "in": "path", "required": true, "schema": { "type": "string", "description": "Tag key (group)", "examples": [ "env" ], "title": "Key" }, "description": "Tag key (group)" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TagValueDelete" } } } }, "responses": { "200": { "description": "Successfully deleted tag value", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TagValueDeleteResponse" } } } }, "404": { "description": "Tag value not found" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-hidden": true, "x-fern-sdk-method-name": "delete_tag_value", "security": [ { "ApiKeyAuth": [] } ] } }, "/v1/tag-values/{key}/rename": { "patch": { "tags": [ "Tags" ], "summary": "Rename tag value", "description": "Rename a grouped tag (key, value) to (key, new_value). The cascade re-tags every workflow carrying the old label; the new label inherits the old color. Both values ride in the body so values containing '/' stay addressable. Rejects with 409 when the new value already exists for the key.", "operationId": "rename_tag_value_v1_tag_values__key__rename_patch", "parameters": [ { "name": "key", "in": "path", "required": true, "schema": { "type": "string", "description": "Tag key (group)", "examples": [ "env" ], "title": "Key" }, "description": "Tag key (group)" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TagValueRename" } } } }, "responses": { "200": { "description": "Successfully renamed tag value", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TagValueRenameResponse" } } } }, "404": { "description": "Tag value not found" }, "409": { "description": "Target value already exists for this key" }, "422": { "description": "Invalid value" } }, "x-hidden": true, "x-fern-sdk-method-name": "rename_tag_value", "security": [ { "ApiKeyAuth": [] } ] } }, "/v1/workflow-tags": { "get": { "tags": [ "Tags" ], "summary": "Batch get agent tags", "description": "Batch fetch current tags for many workflows. Avoids N+1 on the workflows-list page.", "operationId": "batch_get_workflow_tags_v1_workflow_tags_get", "parameters": [ { "name": "workflow_permanent_ids", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Comma-separated workflow permanent IDs", "examples": [ "wpid_123,wpid_456" ], "title": "Workflow Permanent Ids" }, "description": "Comma-separated workflow permanent IDs" } ], "responses": { "200": { "description": "Successfully retrieved tags", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WorkflowTagsBatchResponse" } } } }, "400": { "description": "Too many workflow IDs requested" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-hidden": true, "x-fern-sdk-method-name": "batch_get_workflow_tags", "security": [ { "ApiKeyAuth": [] } ] }, "post": { "tags": [ "Tags" ], "summary": "Batch get agent tags (POST)", "description": "Batch fetch current tags for many workflows (POST variant for id lists exceeding URL length).", "operationId": "batch_get_workflow_tags_post_v1_workflow_tags_post", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WorkflowTagsBatchRequest" } } } }, "responses": { "200": { "description": "Successfully retrieved tags", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WorkflowTagsBatchResponse" } } } }, "400": { "description": "Too many workflow IDs requested" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-hidden": true, "x-fern-sdk-method-name": "batch_get_workflow_tags_post", "security": [ { "ApiKeyAuth": [] } ] } }, "/v1/run-tags": { "get": { "tags": [ "Tags" ], "summary": "Batch get run tags", "description": "Batch fetch current tags for many workflow runs. Avoids N+1 on run-list pages.", "operationId": "batch_get_run_tags_v1_run_tags_get", "parameters": [ { "name": "workflow_run_ids", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Comma-separated workflow run IDs", "examples": [ "wr_123,wr_456" ], "title": "Workflow Run Ids" }, "description": "Comma-separated workflow run IDs" } ], "responses": { "200": { "description": "Successfully retrieved tags", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RunTagsBatchResponse" } } } }, "400": { "description": "Too many workflow run IDs requested" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-hidden": true, "x-fern-sdk-method-name": "batch_get_run_tags", "security": [ { "ApiKeyAuth": [] } ] }, "post": { "tags": [ "Tags" ], "summary": "Batch get run tags (POST)", "description": "Batch fetch current tags for many workflow runs (POST variant for id lists exceeding URL length).", "operationId": "batch_get_run_tags_post_v1_run_tags_post", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RunTagsBatchRequest" } } } }, "responses": { "200": { "description": "Successfully retrieved tags", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RunTagsBatchResponse" } } } }, "400": { "description": "Too many workflow run IDs requested" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-hidden": true, "x-fern-sdk-method-name": "batch_get_run_tags_post", "security": [ { "ApiKeyAuth": [] } ] } }, "/v1/run-tag-suggestions": { "get": { "tags": [ "Tags" ], "summary": "List run tag suggestions", "description": "List distinct (key, value) pairs ever set on a run for the organization, sourced from the run-tag event log rather than the tag-key/tag-value registry. Surfaces reserved 'skyvern.*' system keys (which are never registered) so pickers can offer them alongside user-defined tags.", "operationId": "get_run_tag_suggestions_v1_run_tag_suggestions_get", "responses": { "200": { "description": "Successfully retrieved run tag suggestions", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RunTagSuggestionsResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-hidden": true, "x-fern-sdk-method-name": "get_run_tag_suggestions", "security": [ { "ApiKeyAuth": [] } ] } }, "/v1/artifacts/{artifact_id}/content": { "get": { "tags": [ "Artifacts" ], "summary": "Get artifact content", "description": "Download the raw content of an artifact (supports bundled artifacts).", "operationId": "get_artifact_content_v1_artifacts__artifact_id__content_get", "parameters": [ { "name": "artifact_id", "in": "path", "required": true, "schema": { "type": "string", "title": "Artifact Id" } } ], "responses": { "200": { "description": "Raw artifact content", "content": { "application/json": { "schema": {} } } }, "206": { "description": "Partial artifact content (Range request)" }, "403": { "description": "Invalid or expired artifact URL" }, "404": { "description": "Artifact not found or content unavailable" }, "416": { "description": "Range not satisfiable" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/v1/runs/{run_id}/artifacts": { "get": { "tags": [ "Artifacts" ], "summary": "Get artifacts for a run", "description": "Get artifacts for a run", "operationId": "get_run_artifacts_v1_runs__run_id__artifacts_get", "parameters": [ { "name": "run_id", "in": "path", "required": true, "schema": { "type": "string", "description": "The id of the task run or the workflow run.", "title": "Run Id" }, "description": "The id of the task run or the workflow run." }, { "name": "artifact_type", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "array", "items": { "$ref": "#/components/schemas/ArtifactType" } }, { "type": "null" } ], "title": "Artifact Type" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Artifact" }, "title": "Response Get Run Artifacts V1 Runs Run Id Artifacts Get" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-fern-sdk-method-name": "get_run_artifacts", "security": [ { "ApiKeyAuth": [] } ] } }, "/v1/runs/{run_id}/retry_webhook": { "post": { "tags": [ "Runs" ], "summary": "Replay a run webhook", "description": "Retry sending the webhook for a run", "operationId": "retry_run_webhook_v1_runs__run_id__retry_webhook_post", "parameters": [ { "name": "run_id", "in": "path", "required": true, "schema": { "type": "string", "description": "The id of the task run or the workflow run.", "examples": [ "tsk_123", "wr_123" ], "title": "Run Id" }, "description": "The id of the task run or the workflow run." } ], "requestBody": { "content": { "application/json": { "schema": { "anyOf": [ { "$ref": "#/components/schemas/RetryRunWebhookRequest" }, { "type": "null" } ], "title": "Request" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RunWebhookReplayResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-fern-sdk-method-name": "retry_run_webhook", "x-fern-examples": [ { "code-samples": [ { "sdk": "python", "code": "from skyvern import Skyvern\n\nskyvern = Skyvern(api_key=\"YOUR_API_KEY\")\nawait skyvern.retry_run_webhook(run_id=\"tsk_v2_123\")\n" }, { "sdk": "typescript", "code": "import { SkyvernClient } from \"@skyvern/client\";\n\nconst skyvern = new SkyvernClient({ apiKey: \"YOUR_API_KEY\" });\nawait skyvern.retryRunWebhook(\"tsk_v2_123\");\n" } ] } ], "security": [ { "ApiKeyAuth": [] } ] } }, "/v1/runs/{run_id}/timeline": { "get": { "tags": [ "Runs" ], "summary": "Get run timeline", "description": "Get timeline for a run (workflow run or task_v2 run)", "operationId": "get_run_timeline_v1_runs__run_id__timeline_get", "parameters": [ { "name": "run_id", "in": "path", "required": true, "schema": { "type": "string", "description": "The id of the workflow run or task_v2 run.", "examples": [ "wr_123", "tsk_v2_123" ], "title": "Run Id" }, "description": "The id of the workflow run or task_v2 run." } ], "responses": { "200": { "description": "Successfully retrieved run timeline", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/WorkflowRunTimeline" }, "title": "Response Get Run Timeline V1 Runs Run Id Timeline Get" } } } }, "404": { "description": "Run not found" }, "400": { "description": "Timeline not available for this run type" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-fern-sdk-method-name": "get_run_timeline", "x-fern-examples": [ { "code-samples": [ { "sdk": "python", "code": "from skyvern import Skyvern\n\nskyvern = Skyvern(api_key=\"YOUR_API_KEY\")\n# Get timeline for a workflow run\ntimeline = await skyvern.get_run_timeline(run_id=\"wr_123\")\nprint(timeline)\n\n# Get timeline for a task_v2 run\ntimeline = await skyvern.get_run_timeline(run_id=\"tsk_v2_123\")\nprint(timeline)\n" }, { "sdk": "typescript", "code": "import { SkyvernClient } from \"@skyvern/client\";\n\nconst skyvern = new SkyvernClient({ apiKey: \"YOUR_API_KEY\" });\n// Get timeline for a workflow run\nconst timeline = await skyvern.getRunTimeline(\"wr_123\");\nconsole.log(timeline);\n\n// Get timeline for a task_v2 run\nconst timeline2 = await skyvern.getRunTimeline(\"tsk_v2_123\");\nconsole.log(timeline2);\n" } ] } ], "security": [ { "ApiKeyAuth": [] } ] } }, "/v1/version": { "get": { "tags": [ "Server" ], "summary": "Get server version", "description": "Returns the current Skyvern server version (git SHA for official builds).", "operationId": "get_version_v1_version_get", "responses": { "200": { "description": "Current server version", "content": { "application/json": { "schema": { "additionalProperties": { "type": "string" }, "type": "object", "title": "Response Get Version V1 Version Get" } } } } }, "x-fern-sdk-method-name": "get_version" } }, "/v1/runs": { "get": { "tags": [ "agent" ], "summary": "List runs", "description": "List the organization's task and agent runs, newest first, filterable by status, run type, agent, a free-text search term, and failure category. Returns a paginated array of run summaries.", "operationId": "get_runs_v2_v1_runs_get", "parameters": [ { "name": "page", "in": "query", "required": false, "schema": { "type": "integer", "maximum": 100, "minimum": 1, "default": 1, "title": "Page" } }, { "name": "page_size", "in": "query", "required": false, "schema": { "type": "integer", "maximum": 100, "minimum": 1, "default": 10, "title": "Page Size" } }, { "name": "status", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "array", "items": { "$ref": "#/components/schemas/RunStatus" } }, { "type": "null" } ], "title": "Status" } }, { "name": "search_key", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "minLength": 3 }, { "type": "null" } ], "description": "Case-insensitive substring search (min 3 chars for trigram index) across the run's title, URL, run ID, agent (workflow) ID and inputs, plus a workflow run's webhook callback URL. A complete browser profile ID, browser session ID or credential ID matches the run that used it exactly (no substring match). A complete workflow run ID matches that run. A complete task ID matches the workflow run the task ran in, when this list includes that run, or the standalone task itself where standalone tasks are listed. A complete browser profile, browser session, workflow run or task ID is matched against those identifiers only, not the text fields. A credential ID matches when it is the run's sequential credential, the credential the run selected from a pool or fell back to, or the credential bound by a credential parameter on the run's workflow version when the run was created and the run recorded no selection for it. Browser profile and credential IDs apply to workflow runs; a browser session ID also matches a standalone task that used it.", "examples": [ "login_url", "wr_abc123", "bp_123456789", "cred_123456789" ], "title": "Search Key" }, "description": "Case-insensitive substring search (min 3 chars for trigram index) across the run's title, URL, run ID, agent (workflow) ID and inputs, plus a workflow run's webhook callback URL. A complete browser profile ID, browser session ID or credential ID matches the run that used it exactly (no substring match). A complete workflow run ID matches that run. A complete task ID matches the workflow run the task ran in, when this list includes that run, or the standalone task itself where standalone tasks are listed. A complete browser profile, browser session, workflow run or task ID is matched against those identifiers only, not the text fields. A credential ID matches when it is the run's sequential credential, the credential the run selected from a pool or fell back to, or the credential bound by a credential parameter on the run's workflow version when the run was created and the run recorded no selection for it. Browser profile and credential IDs apply to workflow runs; a browser session ID also matches a standalone task that used it." }, { "name": "run_type", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "array", "items": { "$ref": "#/components/schemas/RunType" } }, { "type": "null" } ], "title": "Run Type" } }, { "name": "workflow_permanent_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "array", "items": { "type": "string" }, "maxItems": 50 }, { "type": "null" } ], "description": "Filter to runs of these workflows (agents). Repeat the param to include multiple.", "title": "Workflow Permanent Id" }, "description": "Filter to runs of these workflows (agents). Repeat the param to include multiple." }, { "name": "tags", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "array", "items": { "type": "string" }, "maxItems": 20 }, { "type": "null" } ], "description": "Filter by run tags. Each term is a label (`production`), a group (`env:*`), or a group:label (`env:prod`). Repeat the param or comma-separate (`?tags=env:prod,env:staging`). AND across distinct terms, OR within a group's labels (`?tags=customer:acme,env:prod,env:staging` -> customer=acme AND env in (prod, staging)). A label term matches the value across any/no group. Matches current tag values only.", "examples": [ "env:prod", "production", "env:*", "customer:acme,env:prod" ], "title": "Tags" }, "description": "Filter by run tags. Each term is a label (`production`), a group (`env:*`), or a group:label (`env:prod`). Repeat the param or comma-separate (`?tags=env:prod,env:staging`). AND across distinct terms, OR within a group's labels (`?tags=customer:acme,env:prod,env:staging` -> customer=acme AND env in (prod, staging)). A label term matches the value across any/no group. Matches current tag values only." }, { "name": "failure_category", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "maxLength": 100 }, { "type": "null" } ], "description": "Exact-match filter on a workflow run's top classifier failure category (`failure_category[0].category`). Only failed, terminated, and timed_out runs are eligible; canceled runs are never returned by this filter. Applies to `run_type=workflow_run` only — combined with a task run_type it matches nothing.", "examples": [ "ANTI_BOT_DETECTION", "AUTH_FAILURE" ], "title": "Failure Category" }, "description": "Exact-match filter on a workflow run's top classifier failure category (`failure_category[0].category`). Only failed, terminated, and timed_out runs are eligible; canceled runs are never returned by this filter. Applies to `run_type=workflow_run` only — combined with a task run_type it matches nothing." } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/TaskRunListItem" }, "title": "Response Get Runs V2 V1 Runs Get" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-hidden": true, "x-fern-sdk-method-name": "get_runs_v2", "security": [ { "ApiKeyAuth": [] } ] } }, "/v1/upload_file": { "post": { "tags": [ "Files" ], "summary": "Upload a file", "description": "Upload a file to Skyvern storage so runs can reference it as an input. Returns the file id, its storage URI, a presigned download URL, and the expiry implied by the requested retention period.", "operationId": "upload_file_v1_upload_file_post", "requestBody": { "required": true, "content": { "multipart/form-data": { "schema": { "$ref": "#/components/schemas/Body_upload_file_v1_upload_file_post" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UploadFileResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-fern-sdk-method-name": "upload_file", "security": [ { "ApiKeyAuth": [] } ] } }, "/v1/files/{file_id}": { "delete": { "tags": [ "Files" ], "summary": "Delete File", "description": "Delete a previously uploaded file.\n\nA file that does not exist, was already deleted, or belongs to another organization all\nanswer 404 alike — the endpoint must not tell a caller whether someone else's file id\nexists.", "operationId": "delete_file_v1_files__file_id__delete", "parameters": [ { "name": "file_id", "in": "path", "required": true, "schema": { "type": "string", "title": "File Id" } } ], "responses": { "204": { "description": "Successful Response" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-fern-sdk-method-name": "delete_file", "security": [ { "ApiKeyAuth": [] } ] } }, "/v1/browser_profiles": { "post": { "tags": [ "Browser Profiles" ], "summary": "Create a browser profile", "description": "Create a blank browser profile, or create one from a persistent browser session or workflow run.", "operationId": "create_browser_profile_v1_browser_profiles_post", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateBrowserProfileRequest" } } } }, "responses": { "200": { "description": "Successfully created browser profile", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BrowserProfile" } } } }, "400": { "description": "Invalid request - source not found or source archive unavailable" }, "409": { "description": "Browser profile name already exists" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-fern-sdk-method-name": "create_browser_profile", "x-fern-examples": [ { "code-samples": [ { "sdk": "python", "code": "from skyvern import Skyvern\n\nskyvern = Skyvern(api_key=\"YOUR_API_KEY\")\n# Create a blank browser profile for future runs\nblank_profile = await skyvern.browser_profiles.create_browser_profile(\n name=\"Fresh Profile\",\n)\nprint(blank_profile)\n\n# Create a browser profile from a persistent browser session\nbrowser_profile = await skyvern.browser_profiles.create_browser_profile(\n name=\"My Profile\",\n browser_session_id=\"pbs_123\",\n)\nprint(browser_profile)\n\n# Or create from any workflow run that saved a browser (has a persisted archive)\nbrowser_profile = await skyvern.browser_profiles.create_browser_profile(\n name=\"My Profile\",\n workflow_run_id=\"wr_123\",\n)\nprint(browser_profile)\n" }, { "sdk": "typescript", "code": "import { SkyvernClient } from \"@skyvern/client\";\n\nconst skyvern = new SkyvernClient({ apiKey: \"YOUR_API_KEY\" });\n// Create a blank browser profile for future runs\nconst blankProfile = await skyvern.browserProfiles.createBrowserProfile({\n name: \"Fresh Profile\",\n});\nconsole.log(blankProfile);\n\n// Create a browser profile from a persistent browser session\nconst browserProfile = await skyvern.browserProfiles.createBrowserProfile({\n name: \"My Profile\",\n browser_session_id: \"pbs_123\",\n});\nconsole.log(browserProfile);\n\n// Or create from any workflow run that saved a browser (has a persisted archive)\nconst browserProfile2 = await skyvern.browserProfiles.createBrowserProfile({\n name: \"My Profile\",\n workflow_run_id: \"wr_123\",\n});\nconsole.log(browserProfile2);\n" } ] } ], "security": [ { "ApiKeyAuth": [] } ] }, "get": { "tags": [ "Browser Profiles" ], "summary": "List browser profiles", "description": "Get all browser profiles for the organization", "operationId": "list_browser_profiles_v1_browser_profiles_get", "parameters": [ { "name": "page", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "default": 1, "title": "Page" } }, { "name": "page_size", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "default": 10, "title": "Page Size" } }, { "name": "include_deleted", "in": "query", "required": false, "schema": { "type": "boolean", "description": "Include deleted browser profiles", "default": false, "title": "Include Deleted" }, "description": "Include deleted browser profiles" }, { "name": "search_key", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Case-insensitive substring search across: browser profile name and description. A profile is returned if either field matches.", "examples": [ "my_profile", "production" ], "title": "Search Key" }, "description": "Case-insensitive substring search across: browser profile name and description. A profile is returned if either field matches." }, { "name": "managed", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "description": "Omit to return all profiles; false returns only user-created profiles; true returns only auto-managed profiles.", "title": "Managed" }, "description": "Omit to return all profiles; false returns only user-created profiles; true returns only auto-managed profiles." } ], "responses": { "200": { "description": "Successfully retrieved browser profiles", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/BrowserProfile" }, "title": "Response List Browser Profiles V1 Browser Profiles Get" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-fern-sdk-method-name": "list_browser_profiles", "x-fern-examples": [ { "code-samples": [ { "sdk": "python", "code": "from skyvern import Skyvern\n\nskyvern = Skyvern(api_key=\"YOUR_API_KEY\")\nbrowser_profiles = await skyvern.browser_profiles.list_browser_profiles()\nprint(browser_profiles)\n" }, { "sdk": "typescript", "code": "import { SkyvernClient } from \"@skyvern/client\";\n\nconst skyvern = new SkyvernClient({ apiKey: \"YOUR_API_KEY\" });\nconst browserProfiles = await skyvern.browserProfiles.listBrowserProfiles();\nconsole.log(browserProfiles);\n" } ] } ], "security": [ { "ApiKeyAuth": [] } ] } }, "/v1/browser_profiles/{profile_id}": { "get": { "tags": [ "Browser Profiles" ], "summary": "Get browser profile", "description": "Get a specific browser profile by ID", "operationId": "get_browser_profile_v1_browser_profiles__profile_id__get", "parameters": [ { "name": "profile_id", "in": "path", "required": true, "schema": { "type": "string", "description": "The ID of the browser profile. browser_profile_id starts with `bp_`", "examples": [ "bp_123456" ], "title": "Profile Id" }, "description": "The ID of the browser profile. browser_profile_id starts with `bp_`" } ], "responses": { "200": { "description": "Successfully retrieved browser profile", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BrowserProfile" } } } }, "404": { "description": "Browser profile not found" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-fern-sdk-method-name": "get_browser_profile", "x-fern-examples": [ { "code-samples": [ { "sdk": "python", "code": "from skyvern import Skyvern\n\nskyvern = Skyvern(api_key=\"YOUR_API_KEY\")\nbrowser_profile = await skyvern.browser_profiles.get_browser_profile(\"bp_123\")\nprint(browser_profile)\n" }, { "sdk": "typescript", "code": "import { SkyvernClient } from \"@skyvern/client\";\n\nconst skyvern = new SkyvernClient({ apiKey: \"YOUR_API_KEY\" });\nconst browserProfile = await skyvern.browserProfiles.getBrowserProfile(\"bp_123\");\nconsole.log(browserProfile);\n" } ] } ], "security": [ { "ApiKeyAuth": [] } ] }, "patch": { "tags": [ "Browser Profiles" ], "summary": "Update browser profile", "description": "Update a browser profile's name and/or description", "operationId": "update_browser_profile_v1_browser_profiles__profile_id__patch", "parameters": [ { "name": "profile_id", "in": "path", "required": true, "schema": { "type": "string", "description": "The ID of the browser profile to update. browser_profile_id starts with `bp_`", "examples": [ "bp_123456" ], "title": "Profile Id" }, "description": "The ID of the browser profile to update. browser_profile_id starts with `bp_`" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateBrowserProfileRequest" } } } }, "responses": { "200": { "description": "Successfully updated browser profile", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BrowserProfile" } } } }, "404": { "description": "Browser profile not found" }, "409": { "description": "Browser profile name already exists" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-fern-sdk-method-name": "update_browser_profile", "x-fern-examples": [ { "code-samples": [ { "sdk": "python", "code": "from skyvern import Skyvern\n\nskyvern = Skyvern(api_key=\"YOUR_API_KEY\")\nbrowser_profile = await skyvern.browser_profiles.update_browser_profile(\n \"bp_123\",\n name=\"Renamed Profile\",\n description=\"Updated description\",\n)\nprint(browser_profile)\n" }, { "sdk": "typescript", "code": "import { SkyvernClient } from \"@skyvern/client\";\n\nconst skyvern = new SkyvernClient({ apiKey: \"YOUR_API_KEY\" });\nconst browserProfile = await skyvern.browserProfiles.updateBrowserProfile(\"bp_123\", {\n name: \"Renamed Profile\",\n description: \"Updated description\",\n});\nconsole.log(browserProfile);\n" } ] } ], "security": [ { "ApiKeyAuth": [] } ] }, "delete": { "tags": [ "Browser Profiles" ], "summary": "Delete browser profile", "description": "Delete a browser profile (soft delete)", "operationId": "delete_browser_profile_v1_browser_profiles__profile_id__delete", "parameters": [ { "name": "profile_id", "in": "path", "required": true, "schema": { "type": "string", "description": "The ID of the browser profile to delete. browser_profile_id starts with `bp_`", "examples": [ "bp_123456" ], "title": "Profile Id" }, "description": "The ID of the browser profile to delete. browser_profile_id starts with `bp_`" } ], "responses": { "204": { "description": "Successfully deleted browser profile" }, "404": { "description": "Browser profile not found" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-fern-sdk-method-name": "delete_browser_profile", "x-fern-examples": [ { "code-samples": [ { "sdk": "python", "code": "from skyvern import Skyvern\n\nskyvern = Skyvern(api_key=\"YOUR_API_KEY\")\nawait skyvern.browser_profiles.delete_browser_profile(\"bp_123\")\n" }, { "sdk": "typescript", "code": "import { SkyvernClient } from \"@skyvern/client\";\n\nconst skyvern = new SkyvernClient({ apiKey: \"YOUR_API_KEY\" });\nawait skyvern.browserProfiles.deleteBrowserProfile(\"bp_123\");\n" } ] } ], "security": [ { "ApiKeyAuth": [] } ] } }, "/v1/browser_profiles/{profile_id}/usage": { "get": { "tags": [ "Browser Profiles" ], "summary": "Get browser profile usage", "description": "List the workflows, credentials, and recent runs that depend on a browser profile.", "operationId": "get_browser_profile_usage_v1_browser_profiles__profile_id__usage_get", "parameters": [ { "name": "profile_id", "in": "path", "required": true, "schema": { "type": "string", "description": "The ID of the browser profile. browser_profile_id starts with `bp_`", "examples": [ "bp_123456" ], "title": "Profile Id" }, "description": "The ID of the browser profile. browser_profile_id starts with `bp_`" } ], "responses": { "200": { "description": "Successfully retrieved browser profile usage", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BrowserProfileUsage" } } } }, "404": { "description": "Browser profile not found" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-fern-sdk-method-name": "get_browser_profile_usage", "security": [ { "ApiKeyAuth": [] } ] } }, "/v1/browser_sessions": { "post": { "tags": [ "Browser Sessions" ], "summary": "Create a session", "description": "Create a browser session that persists across multiple runs", "operationId": "create_browser_session_v1_browser_sessions_post", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateBrowserSessionRequest", "default": { "timeout": 60, "generate_browser_profile": false, "needs_live_view": false } } } } }, "responses": { "200": { "description": "Successfully created browser session", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BrowserSessionResponse" } } } }, "400": { "description": "Invalid request" }, "403": { "description": "Unauthorized - Invalid or missing authentication" }, "404": { "description": "Browser profile not found" }, "429": { "description": "Too many browser sessions are starting for this organization at once. Retry after the number of seconds in the Retry-After header.", "content": { "application/json": { "schema": { "type": "object", "required": [ "detail", "error_code" ], "properties": { "detail": { "type": "string" }, "error_code": { "type": "string", "enum": [ "too_many_starting_browser_sessions" ] } } } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-fern-sdk-method-name": "create_browser_session", "x-fern-examples": [ { "code-samples": [ { "sdk": "python", "code": "from skyvern import Skyvern\n\nskyvern = Skyvern(api_key=\"YOUR_API_KEY\")\nbrowser_session = await skyvern.create_browser_session(timeout=60)\nprint(browser_session)\n" }, { "sdk": "typescript", "code": "import { SkyvernClient } from \"@skyvern/client\";\n\nconst skyvern = new SkyvernClient({ apiKey: \"YOUR_API_KEY\" });\nconst browserSession = await skyvern.createBrowserSession({\n timeout: 60\n});\nconsole.log(browserSession);\n" } ] } ], "security": [ { "ApiKeyAuth": [] } ] }, "get": { "tags": [ "Browser Sessions" ], "summary": "Get active browser sessions", "description": "Get all active browser sessions for the organization", "operationId": "get_browser_sessions_v1_browser_sessions_get", "responses": { "200": { "description": "Successfully retrieved all active browser sessions", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/BrowserSessionResponse" }, "title": "Response Get Browser Sessions V1 Browser Sessions Get" } } } }, "403": { "description": "Unauthorized - Invalid or missing authentication" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-fern-sdk-method-name": "get_browser_sessions", "x-fern-examples": [ { "code-samples": [ { "sdk": "python", "code": "from skyvern import Skyvern\n\nskyvern = Skyvern(api_key=\"YOUR_API_KEY\")\nbrowser_sessions = await skyvern.get_browser_sessions()\nprint(browser_sessions)\n" }, { "sdk": "typescript", "code": "import { SkyvernClient } from \"@skyvern/client\";\n\nconst skyvern = new SkyvernClient({ apiKey: \"YOUR_API_KEY\" });\nconst browserSessions = await skyvern.getBrowserSessions();\nconsole.log(browserSessions);\n" } ] } ], "security": [ { "ApiKeyAuth": [] } ] } }, "/v1/browser_sessions/{browser_session_id}/close": { "post": { "tags": [ "Browser Sessions" ], "summary": "Close a session", "description": "Close a session. Once closed, the session cannot be used again.", "operationId": "close_browser_session_v1_browser_sessions__browser_session_id__close_post", "parameters": [ { "name": "browser_session_id", "in": "path", "required": true, "schema": { "type": "string", "description": "The ID of the browser session to close. completed_at will be set when the browser session is closed. browser_session_id starts with `pbs_`", "examples": [ "pbs_123456" ], "title": "Browser Session Id" }, "description": "The ID of the browser session to close. completed_at will be set when the browser session is closed. browser_session_id starts with `pbs_`" } ], "responses": { "200": { "description": "Successfully closed browser session", "content": { "application/json": { "schema": {} } } }, "404": { "description": "Browser session not found" }, "403": { "description": "Unauthorized - Invalid or missing authentication" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-fern-sdk-method-name": "close_browser_session", "x-fern-examples": [ { "code-samples": [ { "sdk": "python", "code": "from skyvern import Skyvern\n\nskyvern = Skyvern(api_key=\"YOUR_API_KEY\")\nawait skyvern.close_browser_session(browser_session_id=\"pbs_123\")\n" }, { "sdk": "typescript", "code": "import { SkyvernClient } from \"@skyvern/client\";\n\nconst skyvern = new SkyvernClient({ apiKey: \"YOUR_API_KEY\" });\nawait skyvern.closeBrowserSession(\"pbs_123\");\n" } ] } ], "security": [ { "ApiKeyAuth": [] } ] } }, "/v1/browser_sessions/{browser_session_id}/extend": { "post": { "tags": [ "Browser Sessions" ], "summary": "Extend a session", "description": "Extend a live browser session by a number of minutes. Sessions are created with a timeout of at most 240 minutes and can be extended, one or more times, up to a total lifetime of 360 minutes (6 hours). The minutes are added to the session's current deadline. A request for more than the remaining headroom is granted the remainder, and the response carries a warning. The response's `timeout` is the session's new total budget in minutes, counted from when the session started.", "operationId": "extend_browser_session_v1_browser_sessions__browser_session_id__extend_post", "parameters": [ { "name": "browser_session_id", "in": "path", "required": true, "schema": { "type": "string", "description": "The ID of the browser session. browser_session_id starts with `pbs_`", "examples": [ "pbs_123456" ], "title": "Browser Session Id" }, "description": "The ID of the browser session. browser_session_id starts with `pbs_`" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ExtendBrowserSessionRequest" } } } }, "responses": { "200": { "description": "Successfully extended browser session", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BrowserSessionResponse" } } } }, "404": { "description": "Browser session not found" }, "403": { "description": "Unauthorized - Invalid or missing authentication" }, "409": { "description": "Conflict - the browser session has ended, is about to expire, is already at its maximum lifetime, or runs on infrastructure whose lifetime is fixed at creation" }, "202": { "description": "Accepted - the extension was requested but its effect could not be confirmed yet. The body carries the session as last recorded and a `warning`; read `timeout` back with a GET rather than retrying, because each retry adds again." }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-fern-sdk-method-name": "extend_browser_session", "x-fern-examples": [ { "code-samples": [ { "sdk": "python", "code": "from skyvern import Skyvern\n\nskyvern = Skyvern(api_key=\"YOUR_API_KEY\")\nbrowser_session = await skyvern.extend_browser_session(browser_session_id=\"pbs_123\", additional_minutes=30)\nprint(browser_session.timeout) # the session's new total budget in minutes\n" }, { "sdk": "curl", "code": "curl -X POST https://api.skyvern.com/v1/browser_sessions/pbs_123/extend \\\n -H \"x-api-key: YOUR_API_KEY\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\"additional_minutes\": 30}'\n" } ] } ], "security": [ { "ApiKeyAuth": [] } ] } }, "/v1/browser_sessions/{browser_session_id}": { "patch": { "tags": [ "Browser Sessions" ], "summary": "Update a session", "description": "Update a live browser session. Currently supports toggling generate_browser_profile, which is read when the session ends to decide whether to save its browser profile.", "operationId": "update_browser_session_v1_browser_sessions__browser_session_id__patch", "parameters": [ { "name": "browser_session_id", "in": "path", "required": true, "schema": { "type": "string", "description": "The ID of the browser session. browser_session_id starts with `pbs_`", "examples": [ "pbs_123456" ], "title": "Browser Session Id" }, "description": "The ID of the browser session. browser_session_id starts with `pbs_`" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateBrowserSessionRequest" } } } }, "responses": { "200": { "description": "Successfully updated browser session", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BrowserSessionResponse" } } } }, "404": { "description": "Browser session not found" }, "403": { "description": "Unauthorized - Invalid or missing authentication" }, "409": { "description": "Conflict - browser session has already ended and can no longer be updated" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-fern-sdk-method-name": "update_browser_session", "security": [ { "ApiKeyAuth": [] } ] }, "get": { "tags": [ "Browser Sessions" ], "summary": "Get a session", "description": "Get details about a specific browser session, including the browser address for cdp connection.", "operationId": "get_browser_session_v1_browser_sessions__browser_session_id__get", "parameters": [ { "name": "browser_session_id", "in": "path", "required": true, "schema": { "type": "string", "description": "The ID of the browser session. browser_session_id starts with `pbs_`", "examples": [ "pbs_123456" ], "title": "Browser Session Id" }, "description": "The ID of the browser session. browser_session_id starts with `pbs_`" } ], "responses": { "200": { "description": "Successfully retrieved browser session details", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BrowserSessionResponse" } } } }, "404": { "description": "Browser session not found" }, "403": { "description": "Unauthorized - Invalid or missing authentication" }, "503": { "description": "Downloaded files could not be returned", "content": { "application/json": { "schema": { "type": "object", "required": [ "detail" ], "properties": { "detail": { "type": "object", "required": [ "code", "retryable" ], "properties": { "code": { "type": "string", "enum": [ "downloaded_files_unavailable" ] }, "retryable": { "type": "boolean" } } } } } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-fern-sdk-method-name": "get_browser_session", "x-fern-examples": [ { "code-samples": [ { "sdk": "python", "code": "from skyvern import Skyvern\n\nskyvern = Skyvern(api_key=\"YOUR_API_KEY\")\nbrowser_session = await skyvern.get_browser_session(browser_session_id=\"pbs_123\")\nprint(browser_session)\n" }, { "sdk": "typescript", "code": "import { SkyvernClient } from \"@skyvern/client\";\n\nconst skyvern = new SkyvernClient({ apiKey: \"YOUR_API_KEY\" });\nconst browserSession = await skyvern.getBrowserSession(\"pbs_123\");\nconsole.log(browserSession);\n" } ] } ], "security": [ { "ApiKeyAuth": [] } ] } }, "/v1/credentials/totp": { "post": { "tags": [ "Credentials" ], "summary": "Send TOTP code", "description": "Forward a TOTP (2FA, MFA) email or sms message containing the code to Skyvern. This endpoint stores the code in database so that Skyvern can use it while running tasks/workflows.", "operationId": "send_totp_code_v1_credentials_totp_post", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TOTPCodeCreate" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TOTPCode" } } } }, "402": { "description": "Insufficient credits to parse OTP content" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-fern-sdk-method-name": "send_totp_code", "x-fern-examples": [ { "code-samples": [ { "sdk": "python", "code": "from skyvern import Skyvern\n\nskyvern = Skyvern(api_key=\"YOUR_API_KEY\")\nawait skyvern.send_totp_code(\n totp_identifier=\"john.doe@example.com\",\n content=\"Hello, your verification code is 123456\"\n)\n" }, { "sdk": "typescript", "code": "import { SkyvernClient } from \"@skyvern/client\";\n\nconst skyvern = new SkyvernClient({ apiKey: \"YOUR_API_KEY\" });\nawait skyvern.sendTotpCode({\n totp_identifier: \"john.doe@example.com\",\n content: \"Hello, your verification code is 123456\"\n});\n" } ] } ], "security": [ { "ApiKeyAuth": [] } ] } }, "/v1/credentials": { "post": { "tags": [ "Credentials" ], "summary": "Create credential", "description": "Creates a new credential for the current organization", "operationId": "create_credential_v1_credentials_post", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateCredentialRequest", "description": "The credential data to create", "examples": [ { "name": "My Credential", "credential_type": "PASSWORD", "credential": { "username": "user@example.com", "password": "securepassword123", "totp": "JBSWY3DPEHPK3PXP" } } ], "openapi_extra": { "x-fern-sdk-parameter-name": "data" } } } } }, "responses": { "201": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CredentialResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-fern-sdk-method-name": "create_credential", "x-fern-examples": [ { "code-samples": [ { "sdk": "python", "code": "from skyvern import Skyvern\n\nskyvern = Skyvern(api_key=\"YOUR_API_KEY\")\nawait skyvern.create_credential(\n name=\"My Credential\",\n credential_type=\"password\",\n credential={\"username\": \"username\", \"password\": \"password\"},\n)\n" }, { "sdk": "python", "code": "from skyvern import Skyvern\n\nskyvern = Skyvern(api_key=\"YOUR_API_KEY\")\nawait skyvern.create_credential(\n name=\"My Credit Card\",\n credential_type=\"credit_card\",\n credential={\n \"card_number\": \"4242424242424242\",\n \"card_cvv\": \"424\",\n \"card_exp_month\": \"12\",\n \"card_exp_year\": \"2028\",\n \"card_brand\": \"visa\",\n \"card_holder_name\": \"John Doe\",\n \"billing_address\": {\n \"line1\": \"123 Main St\",\n \"city\": \"San Francisco\",\n \"state_code\": \"CA\",\n \"postal_code\": \"94105\",\n \"country_code\": \"US\",\n },\n \"billing_email\": \"billing@example.com\",\n \"metadata\": {\"checkout_profile\": \"default\"},\n },\n)\n" }, { "sdk": "typescript", "code": "import { SkyvernClient } from \"@skyvern/client\";\n\nconst skyvern = new SkyvernClient({ apiKey: \"YOUR_API_KEY\" });\nawait skyvern.createCredential({\n name: \"My Credential\",\n credential_type: \"password\",\n credential: { username: \"username\", password: \"password\" }\n});\n" }, { "sdk": "typescript", "code": "import { SkyvernClient } from \"@skyvern/client\";\n\nconst skyvern = new SkyvernClient({ apiKey: \"YOUR_API_KEY\" });\nawait skyvern.createCredential({\n name: \"My Credit Card\",\n credential_type: \"credit_card\",\n credential: {\n card_number: \"4242424242424242\",\n card_cvv: \"424\",\n card_exp_month: \"12\",\n card_exp_year: \"2028\",\n card_brand: \"visa\",\n card_holder_name: \"John Doe\",\n billing_address: {\n line1: \"123 Main St\",\n city: \"San Francisco\",\n state_code: \"CA\",\n postal_code: \"94105\",\n country_code: \"US\",\n },\n billing_email: \"billing@example.com\",\n metadata: { checkout_profile: \"default\" }\n }\n});\n" } ] } ], "security": [ { "ApiKeyAuth": [] } ] }, "get": { "tags": [ "Credentials" ], "summary": "Get all credentials", "description": "Retrieves a paginated list of credentials for the current organization", "operationId": "get_credentials_v1_credentials_get", "parameters": [ { "name": "page", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "description": "Page number for pagination", "examples": [ 1 ], "openapi_extra": { "x-fern-sdk-parameter-name": "page" }, "default": 1, "title": "Page" }, "description": "Page number for pagination" }, { "name": "page_size", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "description": "Number of items per page", "examples": [ 10 ], "openapi_extra": { "x-fern-sdk-parameter-name": "page_size" }, "default": 10, "title": "Page Size" }, "description": "Number of items per page" }, { "name": "vault_type", "in": "query", "required": false, "schema": { "anyOf": [ { "$ref": "#/components/schemas/CredentialVaultType" }, { "type": "null" } ], "description": "Filter credentials by vault type (e.g. 'skyvern', 'custom', 'bitwarden', 'azure_vault')", "title": "Vault Type" }, "description": "Filter credentials by vault type (e.g. 'skyvern', 'custom', 'bitwarden', 'azure_vault')" }, { "name": "credential_type", "in": "query", "required": false, "schema": { "anyOf": [ { "$ref": "#/components/schemas/skyvern__forge__sdk__schemas__credentials__CredentialType" }, { "type": "null" } ], "description": "Filter credentials by type (e.g. 'password', 'credit_card', 'secret')", "title": "Credential Type" }, "description": "Filter credentials by type (e.g. 'password', 'credit_card', 'secret')" }, { "name": "search", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "maxLength": 200 }, { "type": "null" } ], "description": "Case-insensitive search across credential name, username, secret label, and card details, or an exact credential ID", "title": "Search" }, "description": "Case-insensitive search across credential name, username, secret label, and card details, or an exact credential ID" } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/CredentialResponse" }, "title": "Response Get Credentials V1 Credentials Get" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-fern-sdk-method-name": "get_credentials", "x-fern-examples": [ { "code-samples": [ { "sdk": "python", "code": "from skyvern import Skyvern\n\nskyvern = Skyvern(api_key=\"YOUR_API_KEY\")\ncredentials = await skyvern.get_credentials()\nprint(credentials)\n" }, { "sdk": "typescript", "code": "import { SkyvernClient } from \"@skyvern/client\";\n\nconst skyvern = new SkyvernClient({ apiKey: \"YOUR_API_KEY\" });\nconst credentials = await skyvern.getCredentials();\nconsole.log(credentials);\n" } ] } ], "security": [ { "ApiKeyAuth": [] } ] } }, "/v1/credentials/{credential_id}/update": { "post": { "tags": [ "Credentials" ], "summary": "Update credential", "description": "Overwrites the stored credential data (e.g. username/password) while keeping the same credential_id.", "operationId": "update_credential_v1_credentials__credential_id__update_post", "parameters": [ { "name": "credential_id", "in": "path", "required": true, "schema": { "type": "string", "description": "The unique identifier of the credential to update", "examples": [ "cred_1234567890" ], "openapi_extra": { "x-fern-sdk-parameter-name": "credential_id" }, "title": "Credential Id" }, "description": "The unique identifier of the credential to update" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateCredentialRequest", "description": "The new credential data to store", "examples": [ { "name": "My Credential", "credential_type": "PASSWORD", "credential": { "username": "user@example.com", "password": "newpassword123" } } ], "openapi_extra": { "x-fern-sdk-parameter-name": "data" } } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CredentialResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-fern-sdk-method-name": "update_credential", "x-fern-examples": [ { "code-samples": [ { "sdk": "python", "code": "from skyvern import Skyvern\n\nskyvern = Skyvern(api_key=\"YOUR_API_KEY\")\nupdated = await skyvern.update_credential(\n credential_id=\"cred_123\",\n name=\"My Credential\",\n credential_type=\"password\",\n credential={\"username\": \"user@example.com\", \"password\": \"newpassword123\"},\n)\nprint(updated)\n" }, { "sdk": "typescript", "code": "import { SkyvernClient } from \"@skyvern/client\";\n\nconst skyvern = new SkyvernClient({ apiKey: \"YOUR_API_KEY\" });\nconst updated = await skyvern.updateCredential(\"cred_123\", {\n name: \"My Credential\",\n credential_type: \"password\",\n credential: { username: \"user@example.com\", password: \"newpassword123\" }\n});\nconsole.log(updated);\n" } ] } ], "security": [ { "ApiKeyAuth": [] } ] } }, "/v1/credentials/{credential_id}/delete": { "post": { "tags": [ "Credentials" ], "summary": "Delete credential", "description": "Deletes a specific credential by its ID", "operationId": "delete_credential_v1_credentials__credential_id__delete_post", "parameters": [ { "name": "credential_id", "in": "path", "required": true, "schema": { "type": "string", "description": "The unique identifier of the credential to delete", "examples": [ "cred_1234567890" ], "openapi_extra": { "x-fern-sdk-parameter-name": "credential_id" }, "title": "Credential Id" }, "description": "The unique identifier of the credential to delete" } ], "responses": { "204": { "description": "Successful Response" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-fern-sdk-method-name": "delete_credential", "x-fern-examples": [ { "code-samples": [ { "sdk": "python", "code": "from skyvern import Skyvern\n\nskyvern = Skyvern(api_key=\"YOUR_API_KEY\")\nawait skyvern.delete_credential(credential_id=\"cred_123\")\n" }, { "sdk": "typescript", "code": "import { SkyvernClient } from \"@skyvern/client\";\n\nconst skyvern = new SkyvernClient({ apiKey: \"YOUR_API_KEY\" });\nawait skyvern.deleteCredential(\"cred_123\");\n" } ] } ], "security": [ { "ApiKeyAuth": [] } ] } }, "/v1/credentials/{credential_id}": { "get": { "tags": [ "Credentials" ], "summary": "Get credential by ID", "description": "Retrieves a specific credential by its ID", "operationId": "get_credential_v1_credentials__credential_id__get", "parameters": [ { "name": "credential_id", "in": "path", "required": true, "schema": { "type": "string", "description": "The unique identifier of the credential", "examples": [ "cred_1234567890" ], "openapi_extra": { "x-fern-sdk-parameter-name": "credential_id" }, "title": "Credential Id" }, "description": "The unique identifier of the credential" } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CredentialResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-fern-sdk-method-name": "get_credential", "x-fern-examples": [ { "code-samples": [ { "sdk": "python", "code": "from skyvern import Skyvern\n\nskyvern = Skyvern(api_key=\"YOUR_API_KEY\")\ncredential = await skyvern.get_credential(credential_id=\"cred_123\")\nprint(credential)\n" }, { "sdk": "typescript", "code": "import { SkyvernClient } from \"@skyvern/client\";\n\nconst skyvern = new SkyvernClient({ apiKey: \"YOUR_API_KEY\" });\nconst credential = await skyvern.getCredential(\"cred_123\");\nconsole.log(credential);\n" } ] } ], "security": [ { "ApiKeyAuth": [] } ] } }, "/v1/custom-llms": { "get": { "tags": [ "Custom LLMs" ], "summary": "List Custom LLMs", "description": "List the custom LLM configurations available to the current organization.", "operationId": "list_custom_llms_v1_custom_llms_get", "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CustomLLMListResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-hidden": true, "x-fern-sdk-method-name": "list_custom_llms", "security": [ { "ApiKeyAuth": [] } ] }, "post": { "tags": [ "Custom LLMs" ], "summary": "Create Custom LLM", "description": "Create a custom LLM configuration for the current organization.", "operationId": "create_custom_llm_v1_custom_llms_post", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CustomLLMCreateRequest" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CustomLLMResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-hidden": true, "x-fern-sdk-method-name": "create_custom_llm", "security": [ { "ApiKeyAuth": [] } ] } }, "/v1/custom-llms/{custom_llm_id}": { "put": { "tags": [ "Custom LLMs" ], "summary": "Update Custom LLM", "description": "Update a custom LLM configuration for the current organization.", "operationId": "update_custom_llm_v1_custom_llms__custom_llm_id__put", "parameters": [ { "name": "custom_llm_id", "in": "path", "required": true, "schema": { "type": "string", "description": "The custom LLM id.", "title": "Custom Llm Id" }, "description": "The custom LLM id." } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CustomLLMUpdateRequest" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CustomLLMResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-hidden": true, "x-fern-sdk-method-name": "update_custom_llm", "security": [ { "ApiKeyAuth": [] } ] }, "delete": { "tags": [ "Custom LLMs" ], "summary": "Delete Custom LLM", "description": "Delete a custom LLM configuration for the current organization.", "operationId": "delete_custom_llm_v1_custom_llms__custom_llm_id__delete", "parameters": [ { "name": "custom_llm_id", "in": "path", "required": true, "schema": { "type": "string", "description": "The custom LLM id.", "title": "Custom Llm Id" }, "description": "The custom LLM id." } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ClearOrganizationAuthTokenResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-hidden": true, "x-fern-sdk-method-name": "delete_custom_llm", "security": [ { "ApiKeyAuth": [] } ] } }, "/v1/run/tasks/login": { "post": { "tags": [ "Agents" ], "summary": "Login Task", "description": "Log in to a website using either credential stored in Skyvern, Bitwarden, 1Password, or Azure Vault", "operationId": "login_v1_run_tasks_login_post", "parameters": [ { "name": "x-user-agent", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-User-Agent" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LoginRequest" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WorkflowRunResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-hidden": true, "x-excluded": true, "x-fern-sdk-method-name": "login", "x-fern-examples": [ { "code-samples": [ { "sdk": "python", "code": "# Login with password saved in Skyvern\nfrom skyvern import Skyvern\n\nskyvern = Skyvern(api_key=\"YOUR_API_KEY\")\nawait skyvern.login(\n url=\"https://example.com\",\n credential_type=\"skyvern\",\n credential_id=\"cred_123\"),\n)\n" }, { "sdk": "python", "code": "# Login with password saved in Bitwarden\nfrom skyvern import Skyvern\n\nskyvern = Skyvern(api_key=\"YOUR_API_KEY\")\n# Login with a Bitwarden collection and website url filter\nawait skyvern.login(\n url=\"https://example.com\",\n credential_type=\"bitwarden\",\n bitwarden_collection_id=\"BITWARDEN COLLECTION ID\",\n)\n\n# Login with a Bitwarden item\nawait skyvern.login(\n url=\"https://example.com\",\n credential_type=\"bitwarden\",\n bitwarden_item_id=\"BITWARDEN ITEM ID\",\n)\n" }, { "sdk": "python", "code": "# Login with password saved in 1Password\nfrom skyvern import Skyvern\n\nskyvern = Skyvern(api_key=\"YOUR_API_KEY\")\nawait skyvern.login(\n url=\"https://example.com\",\n credential_type=\"onepassword\",\n onepassword_vault_id=\"1PASSWORD VAULT ID\",\n onepassword_item_id=\"1PASSWORD ITEM ID\",\n)\n" }, { "sdk": "typescript", "code": "// Login with password saved in Skyvern\nimport { SkyvernClient } from \"@skyvern/client\";\n\nconst skyvern = new SkyvernClient({ apiKey: \"YOUR_API_KEY\" });\nawait skyvern.login({\n url: \"https://example.com\",\n credential_type: \"skyvern\",\n credential_id: \"cred_123\"\n});\n" }, { "sdk": "typescript", "code": "// Login with password saved in Bitwarden\nimport { SkyvernClient } from \"@skyvern/client\";\n\nconst skyvern = new SkyvernClient({ apiKey: \"YOUR_API_KEY\" });\n// Login with a Bitwarden collection and website url filter\nawait skyvern.login({\n url: \"https://example.com\",\n credential_type: \"bitwarden\",\n bitwarden_collection_id: \"BITWARDEN COLLECTION ID\"\n});\n\n// Login with a Bitwarden item\nawait skyvern.login({\n url: \"https://example.com\",\n credential_type: \"bitwarden\",\n bitwarden_item_id: \"BITWARDEN ITEM ID\"\n});\n" }, { "sdk": "typescript", "code": "// Login with password saved in 1Password\nimport { SkyvernClient } from \"@skyvern/client\";\n\nconst skyvern = new SkyvernClient({ apiKey: \"YOUR_API_KEY\" });\nawait skyvern.login({\n url: \"https://example.com\",\n credential_type: \"onepassword\",\n onepassword_vault_id: \"1PASSWORD VAULT ID\",\n onepassword_item_id: \"1PASSWORD ITEM ID\"\n});\n" } ] } ], "security": [ { "ApiKeyAuth": [] } ] } }, "/v1/run/tasks/download_files": { "post": { "tags": [ "Agents" ], "summary": "File Download Task", "description": "Download a file from a website by navigating and clicking download buttons", "operationId": "download_files_v1_run_tasks_download_files_post", "parameters": [ { "name": "x-user-agent", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-User-Agent" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DownloadFilesRequest" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WorkflowRunResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-hidden": true, "x-excluded": true, "x-fern-sdk-method-name": "download_files", "x-fern-examples": [ { "code-samples": [ { "sdk": "python", "code": "from skyvern import Skyvern\n\nskyvern = Skyvern(api_key=\"YOUR_API_KEY\")\nawait skyvern.download_files(\n url=\"https://example.com/downloads\",\n navigation_goal=\"Navigate to the downloads page and click the 'Download PDF' button\",\n download_suffix=\"report.pdf\"\n)\n" }, { "sdk": "typescript", "code": "import { SkyvernClient } from \"@skyvern/client\";\n\nconst skyvern = new SkyvernClient({ apiKey: \"YOUR_API_KEY\" });\nawait skyvern.downloadFiles({\n url: \"https://example.com/downloads\",\n navigation_goal: \"Navigate to the downloads page and click the 'Download PDF' button\",\n download_suffix: \"report.pdf\"\n});\n" } ] } ], "security": [ { "ApiKeyAuth": [] } ] } }, "/v1/scripts": { "post": { "tags": [ "Scripts" ], "summary": "Create script", "description": "Create a new script with optional files and metadata", "operationId": "create_script_v1_scripts_post", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateScriptRequest" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateScriptResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-hidden": true, "x-fern-sdk-method-name": "create_script", "security": [ { "ApiKeyAuth": [] } ] }, "get": { "tags": [ "Scripts" ], "summary": "Get all scripts", "description": "Retrieves a paginated list of scripts for the current organization", "operationId": "get_scripts_v1_scripts_get", "parameters": [ { "name": "page", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "description": "Page number for pagination", "examples": [ 1 ], "default": 1, "title": "Page" }, "description": "Page number for pagination" }, { "name": "page_size", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "description": "Number of items per page", "examples": [ 10 ], "default": 10, "title": "Page Size" }, "description": "Number of items per page" } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Script" }, "title": "Response Get Scripts V1 Scripts Get" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-hidden": true, "x-fern-sdk-method-name": "get_scripts", "security": [ { "ApiKeyAuth": [] } ] } }, "/v1/scripts/{script_id}": { "get": { "tags": [ "Scripts" ], "summary": "Get script by ID", "description": "Retrieves a specific script by its ID", "operationId": "get_script_v1_scripts__script_id__get", "parameters": [ { "name": "script_id", "in": "path", "required": true, "schema": { "type": "string", "description": "The unique identifier of the script", "examples": [ "s_abc123" ], "title": "Script Id" }, "description": "The unique identifier of the script" } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Script" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-hidden": true, "x-fern-sdk-method-name": "get_script", "security": [ { "ApiKeyAuth": [] } ] } }, "/v1/scripts/{script_id}/deploy": { "post": { "tags": [ "Scripts" ], "summary": "Deploy script", "description": "Deploy a script with updated files, creating a new version", "operationId": "deploy_script_v1_scripts__script_id__deploy_post", "parameters": [ { "name": "script_id", "in": "path", "required": true, "schema": { "type": "string", "description": "The unique identifier of the script", "examples": [ "s_abc123" ], "title": "Script Id" }, "description": "The unique identifier of the script" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DeployScriptRequest" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateScriptResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-hidden": true, "x-fern-sdk-method-name": "deploy_script", "security": [ { "ApiKeyAuth": [] } ] } }, "/v1/scripts/{script_id}/run": { "post": { "tags": [ "Scripts" ], "summary": "Run script", "description": "Run a script", "operationId": "run_script_v1_scripts__script_id__run_post", "parameters": [ { "name": "script_id", "in": "path", "required": true, "schema": { "type": "string", "description": "The unique identifier of the script", "examples": [ "s_abc123" ], "title": "Script Id" }, "description": "The unique identifier of the script" } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": {} } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-hidden": true, "security": [ { "ApiKeyAuth": [] } ] } }, "/v1/sdk/run_action": { "post": { "tags": [ "SDK" ], "summary": "Run an SDK action", "description": "Execute a single SDK action with the specified parameters", "operationId": "run_sdk_action_v1_sdk_run_action_post", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RunSdkActionRequest" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RunSdkActionResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-excluded": true, "x-fern-sdk-method-name": "run_sdk_action", "security": [ { "ApiKeyAuth": [] } ] } }, "/v1/schedules": { "get": { "tags": [ "Schedules" ], "summary": "List all schedules for the organization", "description": "List every schedule in the organization, across all agents, filterable by active/paused status and a search term matched against agent title or schedule name. Returns a paginated list plus the total count.", "operationId": "schedules_list_all", "parameters": [ { "name": "page", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "default": 1, "title": "Page" } }, { "name": "page_size", "in": "query", "required": false, "schema": { "type": "integer", "maximum": 100, "minimum": 1, "default": 10, "title": "Page Size" } }, { "name": "status", "in": "query", "required": false, "schema": { "anyOf": [ { "enum": [ "active", "paused" ], "type": "string" }, { "type": "null" } ], "description": "Filter by status: 'active' or 'paused'", "title": "Status" }, "description": "Filter by status: 'active' or 'paused'" }, { "name": "search", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Search by workflow title or schedule name", "title": "Search" }, "description": "Search by workflow title or schedule name" } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OrganizationScheduleListResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "security": [ { "ApiKeyAuth": [] } ] } }, "/v1/integrations/twilio/phone-numbers/enable": { "post": { "tags": [ "Credentials" ], "summary": "Enable Twilio phone number", "description": "Enable SMS forwarding for a Twilio phone number in the current organization.", "operationId": "enable_twilio_phone_number_v1_integrations_twilio_phone_numbers_enable_post", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EnablePhoneNumberRequest" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OrganizationPhoneNumberResponse" } } } }, "400": { "description": "The Twilio credential or phone number selection is invalid" }, "404": { "description": "Twilio SMS is unavailable or the phone number was not found" }, "409": { "description": "The phone number requires takeover confirmation or changed during setup" }, "422": { "description": "Request validation failed" }, "502": { "description": "The Twilio provider request failed" }, "503": { "description": "The Twilio provider rate limit was reached" } }, "x-fern-sdk-group-name": "twilio", "x-fern-sdk-method-name": "enable_phone_number", "security": [ { "ApiKeyAuth": [] } ] } }, "/v1/integrations/twilio/credentials": { "post": { "tags": [ "Credentials" ], "summary": "Connect Twilio credentials", "description": "Validate and store Twilio credentials for the current organization.", "operationId": "create_twilio_credential_v1_integrations_twilio_credentials_post", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateTwilioCredentialRequest" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TwilioCredentialResponse" } } } }, "400": { "description": "The Twilio credentials are invalid" }, "404": { "description": "Twilio SMS is unavailable or the account was not found" }, "409": { "description": "Connected phone numbers must be disabled before changing accounts" }, "422": { "description": "Request validation failed" }, "502": { "description": "The Twilio provider request failed" }, "503": { "description": "The Twilio provider rate limit was reached" } }, "x-fern-sdk-group-name": "twilio", "x-fern-sdk-method-name": "create_credentials", "security": [ { "ApiKeyAuth": [] } ] }, "get": { "tags": [ "Credentials" ], "summary": "Get Twilio credentials", "description": "Get the safe Twilio credential metadata for the current organization.", "operationId": "get_twilio_credential_v1_integrations_twilio_credentials_get", "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TwilioCredentialResponse" } } } }, "404": { "description": "Twilio SMS is unavailable" }, "422": { "description": "Request validation failed" } }, "x-fern-sdk-group-name": "twilio", "x-fern-sdk-method-name": "get_credentials", "security": [ { "ApiKeyAuth": [] } ] }, "delete": { "tags": [ "Credentials" ], "summary": "Disconnect Twilio credentials", "description": "Remove the stored Twilio credentials after connected phone numbers are disabled.", "operationId": "delete_twilio_credential_v1_integrations_twilio_credentials_delete", "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": { "type": "boolean" }, "title": "Response Delete Twilio Credential V1 Integrations Twilio Credentials Delete" } } } }, "404": { "description": "Twilio SMS is unavailable" }, "409": { "description": "Connected phone numbers must be disabled before disconnecting Twilio" }, "422": { "description": "Request validation failed" } }, "x-fern-sdk-group-name": "twilio", "x-fern-sdk-method-name": "delete_credentials", "security": [ { "ApiKeyAuth": [] } ] } }, "/v1/integrations/twilio/phone-number-registry": { "get": { "tags": [ "Credentials" ], "summary": "List registered phone numbers", "description": "List the current organization's phone numbers registered for SMS forwarding.", "operationId": "list_registered_phone_numbers_v1_integrations_twilio_phone_number_registry_get", "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/OrganizationPhoneNumberResponse" }, "title": "Response List Registered Phone Numbers V1 Integrations Twilio Phone Number Registry Get" } } } }, "404": { "description": "Twilio SMS is unavailable" }, "422": { "description": "Request validation failed" } }, "x-fern-sdk-group-name": "twilio", "x-fern-sdk-method-name": "list_registered_phone_numbers", "security": [ { "ApiKeyAuth": [] } ] } }, "/v1/integrations/twilio/phone-numbers": { "get": { "tags": [ "Credentials" ], "summary": "List Twilio phone numbers", "description": "List SMS-capable phone numbers available in the connected Twilio account.", "operationId": "list_twilio_phone_numbers_v1_integrations_twilio_phone_numbers_get", "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/TwilioPhoneNumberInfo" }, "title": "Response List Twilio Phone Numbers V1 Integrations Twilio Phone Numbers Get" } } } }, "400": { "description": "The Twilio credentials are invalid" }, "404": { "description": "Twilio SMS is unavailable or the phone number was not found" }, "422": { "description": "Request validation failed" }, "502": { "description": "The Twilio provider request failed" }, "503": { "description": "The Twilio provider rate limit was reached" } }, "x-fern-sdk-group-name": "twilio", "x-fern-sdk-method-name": "list_phone_numbers", "security": [ { "ApiKeyAuth": [] } ] } }, "/v1/integrations/twilio/phone-numbers/disable": { "post": { "tags": [ "Credentials" ], "summary": "Disable Twilio phone number", "description": "Disable SMS forwarding for a phone number registered in the current organization.", "operationId": "disable_twilio_phone_number_v1_integrations_twilio_phone_numbers_disable_post", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DisablePhoneNumberRequest" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OrganizationPhoneNumberResponse" } } } }, "404": { "description": "The phone number was not found" }, "409": { "description": "The phone number changed during the disable operation" }, "422": { "description": "Request validation failed" }, "502": { "description": "The Twilio provider request failed" }, "503": { "description": "The Twilio provider rate limit was reached" } }, "x-fern-sdk-group-name": "twilio", "x-fern-sdk-method-name": "disable_phone_number", "security": [ { "ApiKeyAuth": [] } ] } }, "/v1/agents/{workflow_permanent_id}/folder": { "put": { "tags": [ "Folders" ], "summary": "Update agent folder", "description": "Update a workflow's folder assignment for the latest version", "operationId": "update_workflow_folder_v1_workflows__workflow_permanent_id__folder_put", "parameters": [ { "name": "workflow_permanent_id", "in": "path", "required": true, "schema": { "type": "string", "description": "Workflow permanent ID", "examples": [ "wpid_123" ], "title": "Workflow Permanent Id" }, "description": "Workflow permanent ID" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateWorkflowFolderRequest" } } } }, "responses": { "200": { "description": "Successfully updated workflow folder", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Workflow" } } } }, "404": { "description": "Workflow not found" }, "400": { "description": "Folder not found" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-fern-sdk-method-name": "update_workflow_folder", "security": [ { "ApiKeyAuth": [] } ] } }, "/v1/agents/{workflow_permanent_id}/tags": { "post": { "tags": [ "Tags" ], "summary": "Apply agent tags", "description": "Atomically apply tag changes to a workflow. Sets and deletes happen in one transaction; same-key collisions resolve set-wins.", "operationId": "apply_workflow_tags_v1_workflows__workflow_permanent_id__tags_post", "parameters": [ { "name": "workflow_permanent_id", "in": "path", "required": true, "schema": { "type": "string", "description": "Workflow permanent ID", "examples": [ "wpid_123" ], "title": "Workflow Permanent Id" }, "description": "Workflow permanent ID" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TagApplyRequest" } } } }, "responses": { "200": { "description": "Successfully applied tag changes", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TagsResponse" } } } }, "404": { "description": "Workflow not found" }, "422": { "description": "Invalid tag key or value" } }, "x-hidden": true, "x-fern-sdk-method-name": "apply_workflow_tags", "security": [ { "ApiKeyAuth": [] } ] }, "get": { "tags": [ "Tags" ], "summary": "Get agent tags", "description": "Get the current tag state for a workflow.", "operationId": "get_workflow_tags_v1_workflows__workflow_permanent_id__tags_get", "parameters": [ { "name": "workflow_permanent_id", "in": "path", "required": true, "schema": { "type": "string", "description": "Workflow permanent ID", "examples": [ "wpid_123" ], "title": "Workflow Permanent Id" }, "description": "Workflow permanent ID" } ], "responses": { "200": { "description": "Successfully retrieved tags", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TagsResponse" } } } }, "404": { "description": "Workflow not found" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-hidden": true, "x-fern-sdk-method-name": "get_workflow_tags", "security": [ { "ApiKeyAuth": [] } ] } }, "/v1/agents/{workflow_permanent_id}/tags/{key}": { "delete": { "tags": [ "Tags" ], "summary": "Delete agent tag", "description": "Soft-delete a single tag from a workflow. Writes a DELETE event row.", "operationId": "delete_workflow_tag_v1_workflows__workflow_permanent_id__tags__key__delete", "parameters": [ { "name": "workflow_permanent_id", "in": "path", "required": true, "schema": { "type": "string", "description": "Workflow permanent ID", "examples": [ "wpid_123" ], "title": "Workflow Permanent Id" }, "description": "Workflow permanent ID" }, { "name": "key", "in": "path", "required": true, "schema": { "type": "string", "description": "Tag key to delete", "examples": [ "env" ], "title": "Key" }, "description": "Tag key to delete" } ], "responses": { "200": { "description": "Successfully deleted tag (or no-op if absent)", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TagsResponse" } } } }, "404": { "description": "Workflow not found" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-hidden": true, "x-fern-sdk-method-name": "delete_workflow_tag", "security": [ { "ApiKeyAuth": [] } ] } }, "/v1/agents/{workflow_permanent_id}/tags/history": { "get": { "tags": [ "Tags" ], "summary": "Get agent tag history", "description": "Chronological tag-event log for a workflow (newest first). Includes SET and DELETE events.", "operationId": "get_workflow_tag_history_v1_workflows__workflow_permanent_id__tags_history_get", "parameters": [ { "name": "workflow_permanent_id", "in": "path", "required": true, "schema": { "type": "string", "description": "Workflow permanent ID", "examples": [ "wpid_123" ], "title": "Workflow Permanent Id" }, "description": "Workflow permanent ID" }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "maximum": 500, "minimum": 1, "description": "Max events to return", "default": 100, "title": "Limit" }, "description": "Max events to return" }, { "name": "since", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "description": "Only return events at or after this timestamp", "title": "Since" }, "description": "Only return events at or after this timestamp" }, { "name": "key", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Filter to events for a single tag key", "title": "Key" }, "description": "Filter to events for a single tag key" } ], "responses": { "200": { "description": "Successfully retrieved tag history", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TagHistoryResponse" } } } }, "404": { "description": "Workflow not found" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-hidden": true, "x-fern-sdk-method-name": "get_workflow_tag_history", "security": [ { "ApiKeyAuth": [] } ] } }, "/v1/agents/runs/{workflow_run_id}/retry": { "post": { "tags": [ "Runs" ], "summary": "Retry a run", "description": "Retry a workflow run using the original run parameters.", "operationId": "retry_workflow_run_v1_workflows_runs__workflow_run_id__retry_post", "parameters": [ { "name": "workflow_run_id", "in": "path", "required": true, "schema": { "type": "string", "description": "The id of the workflow run to retry.", "examples": [ "wr_123" ], "title": "Workflow Run Id" }, "description": "The id of the workflow run to retry." }, { "name": "x-max-steps-override", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "X-Max-Steps-Override" } }, { "name": "x-user-agent", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-User-Agent" } } ], "responses": { "200": { "description": "Successfully retried workflow run", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WorkflowRunResponse" } } } }, "400": { "description": "Workflow run is not retryable" }, "404": { "description": "Workflow run not found" }, "503": { "description": "The server is busy dispatching other runs. No run was created; retry after Retry-After seconds.", "headers": { "Retry-After": { "description": "Seconds to wait before retrying", "schema": { "type": "integer" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-fern-sdk-method-name": "retry_workflow_run", "security": [ { "ApiKeyAuth": [] } ] } }, "/v1/agents/runs": { "get": { "tags": [ "Runs" ], "summary": "Get all runs", "description": "List workflow runs across all workflows for the current organization.\n\nResults are paginated and can be filtered by **status**, **search_key**, and **error_code**. All filters are combined with **AND** logic — a run must match every supplied filter to be returned.\n\n### search_key\n\nA case-insensitive substring search that matches against **any** of the following fields:\n\n| Searched field | Description |\n|---|---|\n| `workflow_run_id` | The unique run identifier (e.g. `wr_123…`) |\n| `workflow_permanent_id` | The permanent ID of the workflow that ran (e.g. `wpid_123…`) |\n| Workflow **title** | The title of the workflow that ran |\n| Parameter **key** | The `key` of any workflow parameter definition associated with the run |\n| Parameter **description** | The `description` of any workflow parameter definition |\n| Run parameter **value** | The actual value supplied for any parameter when the run was created |\n| `extra_http_headers` | Extra HTTP headers attached to the run (searched as raw JSON text) |\n| `webhook_callback_url` | The webhook URL the run posts its result to |\n\nSoft-deleted parameter definitions are excluded from key/description matching. A run is returned if **any** of the fields above contain the search term.\n\nA **complete** identifier also matches the run that used it, by exact equality:\n\n| Identifier | Description |\n|---|---|\n| `browser_profile_id` | The browser profile the run used (e.g. `bp_123…`) |\n| `browser_session_id` | The browser session the run used (e.g. `pbs_123…`) |\n| **Credential id** | A credential the run used (e.g. `cred_123…`) |\n| `workflow_run_id` | The run itself (e.g. `wr_123…`) |\n| **Task id** | The workflow run the task ran in, when that run is top-level (e.g. `tsk_123…`) |\n\nA complete browser profile, browser session, workflow run or task id is matched against those identifiers only, not the text fields above. A credential id matches a run when it is the run's sequential credential, the credential the run selected from a pool or fell back to, or the credential bound by a credential parameter on the run's workflow version when the run was created and the run recorded no selection for that parameter. Other pool and fallback members the run did not use do not match.\n\n### Default search window\n\nA `search_key` other than a complete browser profile, browser session, workflow run or task id is matched only against runs created in the **30 days before `created_at_end`** (or before now) unless the request supplies `created_at_start`. This includes complete credential ids. Supply `created_at_start` (and optionally `created_at_end`) to search a different range. Explicit bounds apply to every search, complete ids included. Listings without `search_key` are not windowed. To fetch one run by its id, use `GET /v1/runs/{run_id}`.\n\n### created_at_start / created_at_end\n\nOptional ISO 8601 bounds on the run's creation time: `created_at_start` is inclusive and `created_at_end` is exclusive. A timestamp without an offset is read as UTC.\n\n### error_code\n\nAn **exact-match** filter against the `error_code` field inside each task's `errors` JSON array. A run matches if **any** of its tasks contains an error object with a matching `error_code` value. Error codes are user-defined strings set during workflow execution (e.g. `INVALID_CREDENTIALS`, `LOGIN_FAILED`, `CAPTCHA_DETECTED`).\n\n### Combining filters\n\nAll query parameters use AND logic:\n- `?status=failed` — only failed runs\n- `?status=failed&error_code=LOGIN_FAILED` — failed runs **and** have a LOGIN_FAILED error\n- `?status=failed&error_code=LOGIN_FAILED&search_key=prod_credential` — all three conditions must match (searched over the last 30 days)\n- `?search_key=prod_credential&created_at_start=2026-01-01T00:00:00Z&created_at_end=2026-02-01T00:00:00Z` — search one explicit month", "operationId": "get_workflow_runs_v1_workflows_runs_get", "parameters": [ { "name": "page", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "description": "Page number for pagination.", "default": 1, "title": "Page" }, "description": "Page number for pagination." }, { "name": "page_size", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "description": "Number of runs to return per page.", "default": 10, "title": "Page Size" }, "description": "Number of runs to return per page." }, { "name": "status", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "array", "items": { "$ref": "#/components/schemas/WorkflowRunStatus" } }, { "type": "null" } ], "description": "Filter by one or more run statuses.", "title": "Status" }, "description": "Filter by one or more run statuses." }, { "name": "search_key", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "maxLength": 500 }, { "type": "null" } ], "description": "Case-insensitive substring search across: workflow run ID, parameter key, parameter description, run parameter value, extra HTTP headers and webhook callback URL. A run is returned if any of these fields match. Soft-deleted parameter definitions are excluded from key/description matching. A complete browser profile ID, browser session ID or credential ID matches the run that used it exactly (no substring match). A complete workflow run ID matches that run. A complete task ID matches the workflow run the task ran in, when this list includes that run, or the standalone task itself where standalone tasks are listed. A complete browser profile, browser session, workflow run or task ID is matched against those identifiers only, not the text fields. A credential ID matches when it is the run's sequential credential, the credential the run selected from a pool or fell back to, or the credential bound by a credential parameter on the run's workflow version when the run was created and the run recorded no selection for it. The workflow title and workflow permanent ID are matched as well. Without created_at_start, a search other than a complete browser profile, browser session, workflow run or task ID covers only runs created in the 30 days before created_at_end (or before now).", "examples": [ "login_url", "wr_abc123", "bp_123456789", "cred_123456789" ], "title": "Search Key" }, "description": "Case-insensitive substring search across: workflow run ID, parameter key, parameter description, run parameter value, extra HTTP headers and webhook callback URL. A run is returned if any of these fields match. Soft-deleted parameter definitions are excluded from key/description matching. A complete browser profile ID, browser session ID or credential ID matches the run that used it exactly (no substring match). A complete workflow run ID matches that run. A complete task ID matches the workflow run the task ran in, when this list includes that run, or the standalone task itself where standalone tasks are listed. A complete browser profile, browser session, workflow run or task ID is matched against those identifiers only, not the text fields. A credential ID matches when it is the run's sequential credential, the credential the run selected from a pool or fell back to, or the credential bound by a credential parameter on the run's workflow version when the run was created and the run recorded no selection for it. The workflow title and workflow permanent ID are matched as well. Without created_at_start, a search other than a complete browser profile, browser session, workflow run or task ID covers only runs created in the 30 days before created_at_end (or before now)." }, { "name": "error_code", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "maxLength": 500 }, { "type": "null" } ], "description": "Exact-match filter on the error_code field inside each task's errors JSON array. A run matches if any of its tasks contains an error with a matching error_code. Error codes are user-defined strings set during workflow execution.", "examples": [ "INVALID_CREDENTIALS", "LOGIN_FAILED", "CAPTCHA_DETECTED" ], "title": "Error Code" }, "description": "Exact-match filter on the error_code field inside each task's errors JSON array. A run matches if any of its tasks contains an error with a matching error_code. Error codes are user-defined strings set during workflow execution." }, { "name": "created_at_start", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "description": "Only include runs created at or after this timestamp (ISO 8601; a value without an offset is read as UTC). Supplying it replaces the 30-day default window of a free-text search_key.", "examples": [ "2026-01-01T00:00:00Z" ], "title": "Created At Start" }, "description": "Only include runs created at or after this timestamp (ISO 8601; a value without an offset is read as UTC). Supplying it replaces the 30-day default window of a free-text search_key." }, { "name": "created_at_end", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "description": "Only include runs created strictly before this timestamp (ISO 8601; a value without an offset is read as UTC). Without created_at_start, a free-text search_key covers the 30 days before this timestamp.", "examples": [ "2026-02-01T00:00:00Z" ], "title": "Created At End" }, "description": "Only include runs created strictly before this timestamp (ISO 8601; a value without an offset is read as UTC). Without created_at_start, a free-text search_key covers the 30 days before this timestamp." } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/WorkflowRun" }, "title": "Response Get Workflow Runs V1 Workflows Runs Get" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-fern-sdk-method-name": "get_workflow_runs", "security": [ { "ApiKeyAuth": [] } ] } }, "/v1/agents/{workflow_id}/runs": { "get": { "tags": [ "Runs" ], "summary": "Get all runs by agent", "description": "List runs for a specific workflow.\n\nSupports filtering by **status**, **search_key**, and **error_code**. All filters are combined with **AND** logic.\n\nUnindexed free-text searches can paginate only through the first 1,000 matching runs. Split larger exports into narrower `created_at_start`/`created_at_end` windows or use a complete run/task ID.\n\n### search_key\n\nCase-insensitive substring search across: workflow run ID, parameter key, parameter description, run parameter value, extra HTTP headers and webhook callback URL. A run is returned if any of these fields match. Soft-deleted parameter definitions are excluded from key/description matching. A complete browser profile ID, browser session ID or credential ID matches the run that used it exactly (no substring match). A complete workflow run ID matches that run. A complete task ID matches the workflow run the task ran in, when this list includes that run, or the standalone task itself where standalone tasks are listed. A complete browser profile, browser session, workflow run or task ID is matched against those identifiers only, not the text fields. A credential ID matches when it is the run's sequential credential, the credential the run selected from a pool or fell back to, or the credential bound by a credential parameter on the run's workflow version when the run was created and the run recorded no selection for it. The workflow title and workflow permanent ID are matched as well.\n\n### error_code\n\nExact-match filter on the `error_code` field inside each task's `errors` JSON array. A run matches if any of its tasks contains an error with a matching `error_code`.\n\n### include_child_runs\n\nChild runs — runs this workflow started from inside another workflow run — are **excluded by default**, so the history shows only top-level runs. Pass `include_child_runs=true` to list them as well; every run carries a `parent_workflow_run_id` that is `null` for top-level runs.", "operationId": "get_workflow_runs_by_id_v1_workflows__workflow_id__runs_get", "parameters": [ { "name": "workflow_id", "in": "path", "required": true, "schema": { "type": "string", "title": "Workflow Id" } }, { "name": "page", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "description": "Page number for pagination.", "default": 1, "title": "Page" }, "description": "Page number for pagination." }, { "name": "page_size", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "description": "Number of runs to return per page.", "default": 10, "title": "Page Size" }, "description": "Number of runs to return per page." }, { "name": "status", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "array", "items": { "$ref": "#/components/schemas/WorkflowRunStatus" } }, { "type": "null" } ], "description": "Filter by one or more run statuses.", "title": "Status" }, "description": "Filter by one or more run statuses." }, { "name": "search_key", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "maxLength": 500 }, { "type": "null" } ], "description": "Case-insensitive substring search across: workflow run ID, parameter key, parameter description, run parameter value, extra HTTP headers and webhook callback URL. A run is returned if any of these fields match. Soft-deleted parameter definitions are excluded from key/description matching. A complete browser profile ID, browser session ID or credential ID matches the run that used it exactly (no substring match). A complete workflow run ID matches that run. A complete task ID matches the workflow run the task ran in, when this list includes that run, or the standalone task itself where standalone tasks are listed. A complete browser profile, browser session, workflow run or task ID is matched against those identifiers only, not the text fields. A credential ID matches when it is the run's sequential credential, the credential the run selected from a pool or fell back to, or the credential bound by a credential parameter on the run's workflow version when the run was created and the run recorded no selection for it. The workflow title and workflow permanent ID are matched as well.", "examples": [ "login_url", "wr_abc123", "bp_123456789", "cred_123456789" ], "title": "Search Key" }, "description": "Case-insensitive substring search across: workflow run ID, parameter key, parameter description, run parameter value, extra HTTP headers and webhook callback URL. A run is returned if any of these fields match. Soft-deleted parameter definitions are excluded from key/description matching. A complete browser profile ID, browser session ID or credential ID matches the run that used it exactly (no substring match). A complete workflow run ID matches that run. A complete task ID matches the workflow run the task ran in, when this list includes that run, or the standalone task itself where standalone tasks are listed. A complete browser profile, browser session, workflow run or task ID is matched against those identifiers only, not the text fields. A credential ID matches when it is the run's sequential credential, the credential the run selected from a pool or fell back to, or the credential bound by a credential parameter on the run's workflow version when the run was created and the run recorded no selection for it. The workflow title and workflow permanent ID are matched as well." }, { "name": "error_code", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "maxLength": 500 }, { "type": "null" } ], "description": "Exact-match filter on the error_code field inside each task's errors JSON array. A run matches if any of its tasks contains an error with a matching error_code. Error codes are user-defined strings set during workflow execution.", "examples": [ "INVALID_CREDENTIALS", "LOGIN_FAILED", "CAPTCHA_DETECTED" ], "title": "Error Code" }, "description": "Exact-match filter on the error_code field inside each task's errors JSON array. A run matches if any of its tasks contains an error with a matching error_code. Error codes are user-defined strings set during workflow execution." }, { "name": "created_at_start", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "description": "Only include runs created at or after this UTC timestamp (ISO 8601).", "title": "Created At Start" }, "description": "Only include runs created at or after this UTC timestamp (ISO 8601)." }, { "name": "created_at_end", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "description": "Only include runs created strictly before this UTC timestamp (ISO 8601).", "title": "Created At End" }, "description": "Only include runs created strictly before this UTC timestamp (ISO 8601)." }, { "name": "tags", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "array", "items": { "type": "string" }, "maxItems": 20 }, { "type": "null" } ], "description": "Filter by run tags. Each term is a label (`production`), a group (`env:*`), or a group:label (`env:prod`). Repeat the param or comma-separate (`?tags=env:prod,env:staging`). AND across distinct terms, OR within a group's labels (`?tags=customer:acme,env:prod,env:staging` -> customer=acme AND env in (prod, staging)). A label term matches the value across any/no group. Matches current tag values only.", "examples": [ "env:prod", "production", "env:*", "customer:acme,env:prod" ], "title": "Tags" }, "description": "Filter by run tags. Each term is a label (`production`), a group (`env:*`), or a group:label (`env:prod`). Repeat the param or comma-separate (`?tags=env:prod,env:staging`). AND across distinct terms, OR within a group's labels (`?tags=customer:acme,env:prod,env:staging` -> customer=acme AND env in (prod, staging)). A label term matches the value across any/no group. Matches current tag values only." }, { "name": "include_child_runs", "in": "query", "required": false, "schema": { "type": "boolean", "description": "Include child workflow runs — runs started from inside another workflow run. Excluded by default so the history shows only top-level runs.", "default": false, "title": "Include Child Runs" }, "description": "Include child workflow runs — runs started from inside another workflow run. Excluded by default so the history shows only top-level runs." } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/WorkflowRun" }, "title": "Response Get Workflow Runs By Id V1 Workflows Workflow Id Runs Get" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-fern-sdk-method-name": "get_workflow_runs_by_id", "security": [ { "ApiKeyAuth": [] } ] } }, "/v1/agents/{workflow_permanent_id}": { "get": { "tags": [ "Agents" ], "summary": "Get an agent by id", "description": "Fetch a single agent definition by its permanent id, optionally pinned to a specific version. Returns the agent's blocks, parameters, and metadata.", "operationId": "get_workflow_v1_workflows__workflow_permanent_id__get", "parameters": [ { "name": "workflow_permanent_id", "in": "path", "required": true, "schema": { "type": "string", "title": "Workflow Permanent Id" } }, { "name": "version", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Version" } }, { "name": "template", "in": "query", "required": false, "schema": { "type": "boolean", "default": false, "title": "Template" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Workflow" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-fern-sdk-method-name": "get_workflow", "security": [ { "ApiKeyAuth": [] } ] } }, "/v1/agents/{workflow_permanent_id}/versions": { "get": { "tags": [ "Agents" ], "summary": "Get agent versions", "description": "Get all versions of a workflow by its permanent ID.", "operationId": "get_workflow_versions_v1_workflows__workflow_permanent_id__versions_get", "parameters": [ { "name": "workflow_permanent_id", "in": "path", "required": true, "schema": { "type": "string", "title": "Workflow Permanent Id" } }, { "name": "template", "in": "query", "required": false, "schema": { "type": "boolean", "default": false, "title": "Template" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Workflow" }, "title": "Response Get Workflow Versions V1 Workflows Workflow Permanent Id Versions Get" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-fern-sdk-method-name": "get_workflow_versions", "security": [ { "ApiKeyAuth": [] } ] } }, "/v1/agents/{workflow_permanent_id}/browser_session/reset_profile": { "post": { "tags": [ "Agents" ], "summary": "Reset persisted browser profile", "description": "Clear the persisted browser profile for a workflow that uses `Save & Reuse Session`. The next run will start from a fresh browser state. Use when a saved profile is corrupted.", "operationId": "reset_workflow_browser_profile", "parameters": [ { "name": "workflow_permanent_id", "in": "path", "required": true, "schema": { "type": "string", "description": "The permanent ID of the workflow. Starts with `wpid_`.", "examples": [ "wpid_123" ], "title": "Workflow Permanent Id" }, "description": "The permanent ID of the workflow. Starts with `wpid_`." } ], "responses": { "204": { "description": "Successfully cleared persisted browser profile" }, "404": { "description": "Workflow not found" }, "500": { "description": "Storage deletion failed; retry" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-hidden": true, "security": [ { "ApiKeyAuth": [] } ] } }, "/v1/agents/{workflow_permanent_id}/schedules": { "post": { "tags": [ "Schedules" ], "summary": "Create a schedule for an agent", "description": "Create a cron, fixed-interval or one-time schedule that runs the given agent automatically with a fixed set of parameters. An interval schedule first runs at first_fire_at, or one interval after creation. A one-time schedule runs once at run_at. Returns the stored schedule and its next upcoming run times.", "operationId": "schedules_create", "parameters": [ { "name": "workflow_permanent_id", "in": "path", "required": true, "schema": { "type": "string", "title": "Workflow Permanent Id" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WorkflowScheduleUpsertRequest" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WorkflowScheduleResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "security": [ { "ApiKeyAuth": [] } ] }, "get": { "tags": [ "Schedules" ], "summary": "List schedules for an agent", "description": "List all schedules attached to a single agent. Returns the schedules in creation order.", "operationId": "schedules_list", "parameters": [ { "name": "workflow_permanent_id", "in": "path", "required": true, "schema": { "type": "string", "title": "Workflow Permanent Id" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WorkflowScheduleListResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "security": [ { "ApiKeyAuth": [] } ] } }, "/v1/agents/{workflow_permanent_id}/schedules/{workflow_schedule_id}": { "get": { "tags": [ "Schedules" ], "summary": "Get an agent schedule by id", "description": "Fetch one schedule belonging to an agent. Returns the schedule's cron expression or interval, timezone, parameters, enabled state, and next upcoming run times.", "operationId": "schedules_get", "parameters": [ { "name": "workflow_permanent_id", "in": "path", "required": true, "schema": { "type": "string", "title": "Workflow Permanent Id" } }, { "name": "workflow_schedule_id", "in": "path", "required": true, "schema": { "type": "string", "title": "Workflow Schedule Id" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WorkflowScheduleResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "security": [ { "ApiKeyAuth": [] } ] }, "put": { "tags": [ "Schedules" ], "summary": "Update an agent schedule", "description": "Replace a schedule's cron expression, interval or one-time run_at, timezone, run parameters, and enabled state. A one-time schedule stays one-time and can change only until it fires; afterwards this returns 409. Returns the updated schedule and its next upcoming run times.", "operationId": "schedules_update", "parameters": [ { "name": "workflow_permanent_id", "in": "path", "required": true, "schema": { "type": "string", "title": "Workflow Permanent Id" } }, { "name": "workflow_schedule_id", "in": "path", "required": true, "schema": { "type": "string", "title": "Workflow Schedule Id" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WorkflowScheduleUpsertRequest" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WorkflowScheduleResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "security": [ { "ApiKeyAuth": [] } ] }, "delete": { "tags": [ "Schedules" ], "summary": "Delete an agent schedule", "description": "Permanently delete a schedule so it never triggers again. Returns an acknowledgement flag.", "operationId": "schedules_delete", "parameters": [ { "name": "workflow_permanent_id", "in": "path", "required": true, "schema": { "type": "string", "title": "Workflow Permanent Id" } }, { "name": "workflow_schedule_id", "in": "path", "required": true, "schema": { "type": "string", "title": "Workflow Schedule Id" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DeleteScheduleResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "security": [ { "ApiKeyAuth": [] } ] } }, "/v1/agents/{workflow_permanent_id}/schedules/{workflow_schedule_id}/cancel": { "post": { "tags": [ "Schedules" ], "summary": "Cancel a one-time agent schedule", "description": "Cancel a one-time schedule that has not fired yet. The schedule stays readable with dispatch_status canceled. Returns 409 once it has fired or was already canceled, and 422 for a recurring schedule.", "operationId": "schedules_cancel", "parameters": [ { "name": "workflow_permanent_id", "in": "path", "required": true, "schema": { "type": "string", "title": "Workflow Permanent Id" } }, { "name": "workflow_schedule_id", "in": "path", "required": true, "schema": { "type": "string", "title": "Workflow Schedule Id" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WorkflowScheduleResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "security": [ { "ApiKeyAuth": [] } ] } }, "/v1/agents/{workflow_permanent_id}/schedules/{workflow_schedule_id}/enable": { "post": { "tags": [ "Schedules" ], "summary": "Enable an agent schedule", "description": "Resume a paused schedule so it starts triggering runs again. Returns the updated schedule.", "operationId": "schedules_enable", "parameters": [ { "name": "workflow_permanent_id", "in": "path", "required": true, "schema": { "type": "string", "title": "Workflow Permanent Id" } }, { "name": "workflow_schedule_id", "in": "path", "required": true, "schema": { "type": "string", "title": "Workflow Schedule Id" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WorkflowScheduleResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "security": [ { "ApiKeyAuth": [] } ] } }, "/v1/agents/{workflow_permanent_id}/schedules/{workflow_schedule_id}/disable": { "post": { "tags": [ "Schedules" ], "summary": "Disable an agent schedule", "description": "Pause a schedule so it stops triggering runs, without deleting it. Returns the updated schedule.", "operationId": "schedules_disable", "parameters": [ { "name": "workflow_permanent_id", "in": "path", "required": true, "schema": { "type": "string", "title": "Workflow Permanent Id" } }, { "name": "workflow_schedule_id", "in": "path", "required": true, "schema": { "type": "string", "title": "Workflow Schedule Id" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WorkflowScheduleResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "security": [ { "ApiKeyAuth": [] } ] } }, "/v1/recipes/jobs/extract": { "post": { "tags": [ "Recipes" ], "summary": "Extract a job application posting", "description": "Start a workflow run that extracts structured details from a job posting.", "operationId": "extract_job_application_v1_recipes_jobs_extract_post", "requestBody": { "content": { "application/json": { "schema": { "properties": { "webhook_url": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "format": "uri", "title": "Webhook Url", "description": "After a run is finished, send an update to this URL. Refer to https://www.skyvern.com/docs/running-tasks/webhooks-faq for more details.", "examples": [ "https://my-site.com/webhook" ] }, "proxy_location": { "anyOf": [ { "$ref": "#/components/schemas/ProxyLocation" }, { "$ref": "#/components/schemas/GeoTarget" }, { "additionalProperties": true, "type": "object" }, { "type": "null" } ], "title": "Proxy Location", "description": "Geographic Proxy location to route the browser traffic through. This is only available in Skyvern Cloud.\n\nAvailable geotargeting options:\n- RESIDENTIAL: the default value. Skyvern Cloud uses a random US residential proxy.\n- RESIDENTIAL_ES: Spain\n- RESIDENTIAL_IE: Ireland\n- RESIDENTIAL_GB: United Kingdom\n- RESIDENTIAL_IN: India\n- RESIDENTIAL_JP: Japan\n- RESIDENTIAL_FR: France\n- RESIDENTIAL_DE: Germany\n- RESIDENTIAL_NZ: New Zealand\n- RESIDENTIAL_PH: Philippines\n- RESIDENTIAL_KR: South Korea\n- RESIDENTIAL_SA: Saudi Arabia\n- RESIDENTIAL_ZA: South Africa\n- RESIDENTIAL_AR: Argentina\n- RESIDENTIAL_AU: Australia\n- RESIDENTIAL_BR: Brazil\n- RESIDENTIAL_TR: Turkey\n- RESIDENTIAL_CA: Canada\n- RESIDENTIAL_MX: Mexico\n- RESIDENTIAL_IT: Italy\n- RESIDENTIAL_NL: Netherlands\n- RESIDENTIAL_ISP: ISP proxy\n- US-CA: California (deprecated, routes through RESIDENTIAL_ISP)\n- US-NY: New York (deprecated, routes through RESIDENTIAL_ISP)\n- US-TX: Texas (deprecated, routes through RESIDENTIAL_ISP)\n- US-FL: Florida (deprecated, routes through RESIDENTIAL_ISP)\n- US-WA: Washington (deprecated, routes through RESIDENTIAL_ISP)\n- NONE: No proxy\n\nFor self-hosted deployments, you can pass a custom proxy URL as a dict: {\"url\": \"http://user:password@proxy.example.com:8080\"}. This routes the browser through your own proxy server and takes precedence over any globally configured proxy pool. Can also be a GeoTarget object for granular city/state targeting: {\"country\": \"US\", \"subdivision\": \"CA\", \"city\": \"San Francisco\"}. Omit it or send null to use the default; Skyvern Cloud then uses RESIDENTIAL." }, "job_url": { "type": "string", "format": "uri", "title": "Job Url" } }, "additionalProperties": false, "type": "object", "required": [ "job_url" ], "title": "JobRecipeExtractRequest" } } }, "required": true }, "responses": { "200": { "description": "Successfully started job application extraction", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/JobRecipeRunResponse" } } } }, "402": { "description": "Insufficient credits or required billing state" }, "403": { "description": "Unauthorized or insufficient organization permission" }, "422": { "description": "Invalid extract request" }, "429": { "description": "Workflow submission rate limit exceeded" }, "500": { "description": "Workflow launch failed" } }, "security": [ { "ApiKeyAuth": [] } ], "x-fern-sdk-method-name": "extract_job_application" } }, "/v1/recipes/jobs/apply": { "post": { "tags": [ "Recipes" ], "summary": "Apply to a job", "description": "Start a workflow run that applies to a job with a résumé and optional credentials.", "operationId": "apply_to_job_v1_recipes_jobs_apply_post", "requestBody": { "content": { "application/json": { "schema": { "properties": { "webhook_url": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "format": "uri", "title": "Webhook Url", "description": "After a run is finished, send an update to this URL. Refer to https://www.skyvern.com/docs/running-tasks/webhooks-faq for more details.", "examples": [ "https://my-site.com/webhook" ] }, "proxy_location": { "anyOf": [ { "$ref": "#/components/schemas/ProxyLocation" }, { "$ref": "#/components/schemas/GeoTarget" }, { "additionalProperties": true, "type": "object" }, { "type": "null" } ], "title": "Proxy Location", "description": "Geographic Proxy location to route the browser traffic through. This is only available in Skyvern Cloud.\n\nAvailable geotargeting options:\n- RESIDENTIAL: the default value. Skyvern Cloud uses a random US residential proxy.\n- RESIDENTIAL_ES: Spain\n- RESIDENTIAL_IE: Ireland\n- RESIDENTIAL_GB: United Kingdom\n- RESIDENTIAL_IN: India\n- RESIDENTIAL_JP: Japan\n- RESIDENTIAL_FR: France\n- RESIDENTIAL_DE: Germany\n- RESIDENTIAL_NZ: New Zealand\n- RESIDENTIAL_PH: Philippines\n- RESIDENTIAL_KR: South Korea\n- RESIDENTIAL_SA: Saudi Arabia\n- RESIDENTIAL_ZA: South Africa\n- RESIDENTIAL_AR: Argentina\n- RESIDENTIAL_AU: Australia\n- RESIDENTIAL_BR: Brazil\n- RESIDENTIAL_TR: Turkey\n- RESIDENTIAL_CA: Canada\n- RESIDENTIAL_MX: Mexico\n- RESIDENTIAL_IT: Italy\n- RESIDENTIAL_NL: Netherlands\n- RESIDENTIAL_ISP: ISP proxy\n- US-CA: California (deprecated, routes through RESIDENTIAL_ISP)\n- US-NY: New York (deprecated, routes through RESIDENTIAL_ISP)\n- US-TX: Texas (deprecated, routes through RESIDENTIAL_ISP)\n- US-FL: Florida (deprecated, routes through RESIDENTIAL_ISP)\n- US-WA: Washington (deprecated, routes through RESIDENTIAL_ISP)\n- NONE: No proxy\n\nFor self-hosted deployments, you can pass a custom proxy URL as a dict: {\"url\": \"http://user:password@proxy.example.com:8080\"}. This routes the browser through your own proxy server and takes precedence over any globally configured proxy pool. Can also be a GeoTarget object for granular city/state targeting: {\"country\": \"US\", \"subdivision\": \"CA\", \"city\": \"San Francisco\"}. Omit it or send null to use the default; Skyvern Cloud then uses RESIDENTIAL." }, "job_url": { "type": "string", "format": "uri", "title": "Job Url" }, "custom_prompt": { "type": "string", "title": "Custom Prompt" }, "resume_url": { "type": "string", "format": "uri", "title": "Resume Url" }, "other_information": { "title": "Other Information" }, "terminate_criterion": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Terminate Criterion", "description": "Condition that stops Apply. Omit to use the recipe default; null or empty text disables it.", "default": "Terminate when the requested job posting explicitly states that it is expired, closed, filled, or no longer accepting applications. A missing Apply button or redirect alone is insufficient." }, "error_code_mapping": { "anyOf": [ { "additionalProperties": { "type": "string" }, "type": "object" }, { "type": "null" } ], "title": "Error Code Mapping", "description": "Error codes and descriptions. Omit for the recipe default; null or {} disables mapping. A supplied mapping replaces the default independently of terminate_criterion.", "default": { "job_expired": "The requested job posting explicitly states that it is expired, closed, filled, or no longer accepting applications." } }, "username": { "anyOf": [ { "type": "string", "minLength": 1 }, { "type": "null" } ], "title": "Username" }, "password": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Password" }, "persist_credentials": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "title": "Persist Credentials" }, "2fa_identifier": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "2Fa Identifier" } }, "additionalProperties": false, "type": "object", "required": [ "job_url", "custom_prompt", "resume_url" ], "title": "JobRecipeApplyJSONRequest" } }, "multipart/form-data": { "schema": { "properties": { "job_url": { "type": "string", "format": "uri", "title": "Job Url" }, "custom_prompt": { "type": "string", "title": "Custom Prompt" }, "resume_file": { "type": "string", "format": "binary", "title": "Resume File" }, "webhook_url": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "format": "uri", "title": "Webhook Url", "description": "After a run is finished, send an update to this URL. Refer to https://www.skyvern.com/docs/running-tasks/webhooks-faq for more details." }, "proxy_location": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Proxy Location", "description": "A ProxyLocation name such as RESIDENTIAL_GB, or JSON text for a GeoTarget or custom proxy object. Omit it or send blank text to use the default; Skyvern Cloud then uses RESIDENTIAL." }, "other_information": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Other Information" }, "terminate_criterion": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Terminate Criterion", "description": "Condition that stops Apply. Omit for the recipe default; empty text disables it.", "default": "Terminate when the requested job posting explicitly states that it is expired, closed, filled, or no longer accepting applications. A missing Apply button or redirect alone is insufficient." }, "error_code_mapping": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Error Code Mapping", "description": "JSON text containing an object of error codes and descriptions. Omit for the recipe default; JSON null or {} disables mapping. A supplied mapping replaces the default independently of terminate_criterion.", "default": "{\"job_expired\": \"The requested job posting explicitly states that it is expired, closed, filled, or no longer accepting applications.\"}" }, "username": { "anyOf": [ { "type": "string", "minLength": 1 }, { "type": "null" } ], "title": "Username" }, "password": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Password" }, "persist_credentials": { "anyOf": [ { "type": "string", "pattern": "^true$" }, { "type": "null" } ], "title": "Persist Credentials" }, "2fa_identifier": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "2Fa Identifier" } }, "additionalProperties": false, "type": "object", "required": [ "job_url", "custom_prompt", "resume_file" ], "title": "JobRecipeApplyMultipartRequest", "description": "OpenAPI representation of the text and file parts accepted by Apply." } } }, "required": true }, "responses": { "200": { "description": "Successfully started job application", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/JobRecipeRunResponse" } } } }, "400": { "description": "Invalid multipart structure" }, "402": { "description": "Insufficient credits or required billing state" }, "403": { "description": "Unauthorized or insufficient organization permission" }, "413": { "description": "Résumé file exceeds the upload limit" }, "422": { "description": "Invalid apply request" }, "429": { "description": "Workflow submission rate limit exceeded" }, "500": { "description": "Upload or workflow launch failed" }, "502": { "description": "Credential service failed" } }, "security": [ { "ApiKeyAuth": [] } ], "x-fern-sdk-method-name": "apply_to_job" } }, "/v1/recipes/jobs/runs": { "get": { "tags": [ "Recipes" ], "summary": "List job recipe runs", "description": "List workflow runs started by job recipe requests.", "operationId": "list_job_recipe_runs_v1_recipes_jobs_runs_get", "security": [ { "ApiKeyAuth": [] } ], "parameters": [ { "name": "page", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "description": "Page number.", "default": 1, "title": "Page" }, "description": "Page number." }, { "name": "page_size", "in": "query", "required": false, "schema": { "type": "integer", "maximum": 100, "minimum": 1, "description": "Number of runs per page.", "default": 25, "title": "Page Size" }, "description": "Number of runs per page." } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/JobRecipeRunListResponse" } } } }, "403": { "description": "Unauthorized or insufficient organization permission" }, "422": { "description": "Invalid pagination parameters" } }, "x-fern-sdk-method-name": "list_job_recipe_runs" } }, "/v1/audit-events/export": { "get": { "tags": [ "Server" ], "summary": "Export organization audit events", "description": "Export audit events for the authenticated organization as JSON or CSV. Only organization admins and full API keys may export. The default window is the last 90 days, with timezone-aware since/until bounds, newest-first keyset pagination, and a maximum page size of 500. CSV output uses fixed columns and is protected from spreadsheet formula execution.", "operationId": "export_audit_events_v1_audit_events_export_get", "parameters": [ { "name": "since", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Since" } }, { "name": "until", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Until" } }, { "name": "action", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Action" } }, { "name": "actor_user_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Actor User Id" } }, { "name": "resource_type", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Resource Type" } }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "maximum": 500, "minimum": 1, "default": 100, "title": "Limit" } }, { "name": "cursor", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Cursor" } }, { "name": "format", "in": "query", "required": false, "schema": { "enum": [ "json", "csv" ], "type": "string", "default": "json", "title": "Format" } } ], "responses": { "200": { "description": "A page of audit events as JSON, or a CSV download when format=csv.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AuditEventExportResponse" } }, "text/csv": { "schema": { "type": "string", "format": "binary" } } } }, "403": { "description": "The caller must be an organization admin or use a full API key.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AuditExportDenialResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-fern-sdk-method-name": "export_audit_events", "security": [ { "ApiKeyAuth": [] } ] } }, "/v1/audit-events/runs/export": { "get": { "tags": [ "Server" ], "summary": "Export workflow run activity", "description": "Export top-level workflow runs for the authenticated organization as JSON or CSV. Only organization admins and full API keys may export. The default window is the last 90 days, with timezone-aware since/until bounds, newest-first keyset pagination, and a maximum page size of 500. CSV output uses fixed columns and is protected from spreadsheet formula execution.", "operationId": "export_run_activity_v1_audit_events_runs_export_get", "parameters": [ { "name": "since", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Since" } }, { "name": "until", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Until" } }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "maximum": 500, "minimum": 1, "default": 100, "title": "Limit" } }, { "name": "cursor", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Cursor" } }, { "name": "format", "in": "query", "required": false, "schema": { "enum": [ "json", "csv" ], "type": "string", "default": "json", "title": "Format" } } ], "responses": { "200": { "description": "A page of workflow run activity as JSON, or a CSV download when format=csv.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RunActivityExportResponse" } }, "text/csv": { "schema": { "type": "string", "format": "binary" } } } }, "403": { "description": "The caller must be an organization admin or use a full API key.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AuditExportDenialResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-fern-sdk-method-name": "export_run_activity", "security": [ { "ApiKeyAuth": [] } ] } }, "/v1/sms-numbers": { "get": { "tags": [ "Credentials" ], "summary": "List managed SMS numbers", "description": "List the Skyvern-managed SMS numbers for the authenticated organization.", "operationId": "list_managed_numbers_v1_sms_numbers_get", "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/OrganizationPhoneNumberResponse" }, "title": "Response List Managed Numbers V1 Sms Numbers Get" } } } }, "403": { "description": "Managed SMS numbers are not enabled for the organization" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-fern-sdk-method-name": "list_managed_sms_numbers", "security": [ { "ApiKeyAuth": [] } ] }, "post": { "tags": [ "Credentials" ], "summary": "Provision managed SMS number", "description": "Purchase and configure a Skyvern-managed SMS number for the authenticated organization.", "operationId": "provision_managed_number_v1_sms_numbers_post", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProvisionManagedNumberRequest" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OrganizationPhoneNumberResponse" } } } }, "402": { "description": "Payment was declined or the billing account is ineligible or delinquent" }, "403": { "description": "Managed SMS numbers are not enabled, the plan is not entitled, or the number cap is reached" }, "409": { "description": "Another SMS number operation is in progress; retry later" }, "502": { "description": "The phone number provider request failed" }, "503": { "description": "Billing configuration or Stripe is unavailable, or the payment outcome could not be confirmed" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-fern-sdk-method-name": "provision_managed_sms_number", "security": [ { "ApiKeyAuth": [] } ] } }, "/v1/sms-numbers/available": { "get": { "tags": [ "Credentials" ], "summary": "Search available managed SMS numbers", "description": "Search for available US Skyvern-managed SMS numbers, optionally by area code.", "operationId": "search_available_numbers_v1_sms_numbers_available_get", "parameters": [ { "name": "area_code", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "minLength": 3, "maxLength": 3, "pattern": "^[2-9][0-9]{2}$" }, { "type": "null" } ], "title": "Area Code" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/AvailableManagedPhoneNumber" }, "title": "Response Search Available Numbers V1 Sms Numbers Available Get" } } } }, "403": { "description": "Managed SMS numbers are not enabled or the plan is not entitled" }, "502": { "description": "The phone number provider request failed" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-fern-sdk-method-name": "search_managed_sms_numbers", "security": [ { "ApiKeyAuth": [] } ] } }, "/v1/sms-numbers/{phone_number_id}/release": { "post": { "tags": [ "Credentials" ], "summary": "Release managed SMS number", "description": "For billing-exempt numbers, forwarding stops immediately. For numbers with a subscription, billing and forwarding continue until the current billing period ends. Skyvern then holds the number for 30 days before it can be reassigned.", "operationId": "release_managed_number_v1_sms_numbers__phone_number_id__release_post", "parameters": [ { "name": "phone_number_id", "in": "path", "required": true, "schema": { "type": "string", "title": "Phone Number Id" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OrganizationPhoneNumberResponse" } } } }, "403": { "description": "Managed SMS numbers are not enabled for the organization" }, "404": { "description": "The managed SMS number was not found" }, "409": { "description": "The managed SMS number cannot be released in its current state" }, "502": { "description": "The phone number provider cleanup request failed" }, "503": { "description": "Billing configuration, managed SMS configuration, or Stripe is unavailable" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-fern-sdk-method-name": "release_managed_sms_number", "security": [ { "ApiKeyAuth": [] } ] } } }, "components": { "schemas": { "AIFallbackMode": { "type": "string", "enum": [ "fallback", "proactive" ], "title": "AIFallbackMode", "description": "Controls how an action block uses a CSS/XPath selector relative to AI.\n\n- `fallback`: attempt the selector first; fall back to AI on failure.\n- `proactive`: always use AI; the selector (if any) is a hint only.\n\nWhen `selector` is None, both modes degrade to AI-only — the difference\nis purely semantic (whether the author expected to have a selector here)." }, "AWSSecretParameter": { "properties": { "parameter_type": { "type": "string", "const": "aws_secret", "title": "Parameter Type", "default": "aws_secret" }, "key": { "type": "string", "title": "Key" }, "description": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Description" }, "aws_secret_parameter_id": { "type": "string", "title": "Aws Secret Parameter Id" }, "workflow_id": { "type": "string", "title": "Workflow Id" }, "aws_key": { "type": "string", "title": "Aws Key" }, "created_at": { "type": "string", "format": "date-time", "title": "Created At" }, "modified_at": { "type": "string", "format": "date-time", "title": "Modified At" }, "deleted_at": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Deleted At" } }, "type": "object", "required": [ "key", "aws_secret_parameter_id", "workflow_id", "aws_key", "created_at", "modified_at" ], "title": "AWSSecretParameter" }, "AWSSecretParameterYAML": { "properties": { "parameter_type": { "type": "string", "const": "aws_secret", "title": "Parameter Type", "default": "aws_secret" }, "key": { "type": "string", "title": "Key" }, "description": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Description" }, "aws_key": { "type": "string", "title": "Aws Key" } }, "type": "object", "required": [ "key", "aws_key" ], "title": "AWSSecretParameterYAML" }, "ActAction": { "properties": { "type": { "type": "string", "const": "ai_act", "title": "Type", "default": "ai_act" }, "intention": { "type": "string", "title": "Intention", "description": "Natural language prompt for the action", "default": "" }, "data": { "anyOf": [ { "type": "string" }, { "additionalProperties": true, "type": "object" }, { "type": "null" } ], "title": "Data", "description": "Additional context data" } }, "type": "object", "title": "ActAction", "description": "AI act action parameters." }, "Action": { "properties": { "action_type": { "$ref": "#/components/schemas/ActionType" }, "status": { "$ref": "#/components/schemas/ActionStatus", "default": "pending" }, "action_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Action Id" }, "source_action_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Source Action Id" }, "organization_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Organization Id" }, "workflow_run_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Workflow Run Id" }, "task_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Task Id" }, "step_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Step Id" }, "step_order": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Step Order" }, "action_order": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Action Order" }, "confidence_float": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Confidence Float" }, "description": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Description" }, "reasoning": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Reasoning" }, "intention": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Intention" }, "response": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Response" }, "element_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Element Id" }, "skyvern_element_hash": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Skyvern Element Hash" }, "skyvern_element_data": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "null" } ], "title": "Skyvern Element Data" }, "screenshot_artifact_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Screenshot Artifact Id" }, "tool_call_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Tool Call Id" }, "xpath": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Xpath" }, "errors": { "anyOf": [ { "items": { "$ref": "#/components/schemas/UserDefinedError" }, "type": "array" }, { "type": "null" } ], "title": "Errors" }, "terminal_user_errors": { "type": "boolean", "title": "Terminal User Errors", "default": false }, "data_extraction_goal": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Data Extraction Goal" }, "output": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "items": {}, "type": "array" }, { "type": "string" }, { "type": "null" } ], "title": "Output" }, "file_name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "File Name" }, "file_url": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "File Url" }, "download_url": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Download Url", "description": "Origin URL recorded by a download action." }, "download": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "title": "Download" }, "download_triggered": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "title": "Download Triggered" }, "downloaded_files": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "title": "Downloaded Files" }, "is_upload_file_tag": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "title": "Is Upload File Tag" }, "text": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Text" }, "input_or_select_context": { "anyOf": [ { "$ref": "#/components/schemas/InputOrSelectContext" }, { "type": "null" } ] }, "option": { "anyOf": [ { "$ref": "#/components/schemas/SelectOption" }, { "type": "null" } ] }, "is_checked": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "title": "Is Checked" }, "verified": { "type": "boolean", "title": "Verified", "default": false }, "click_context": { "anyOf": [ { "$ref": "#/components/schemas/ClickContext" }, { "type": "null" } ] }, "totp_timing_info": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "null" } ], "title": "Totp Timing Info" }, "has_mini_agent": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "title": "Has Mini Agent" }, "skip_auto_complete_tab": { "type": "boolean", "title": "Skip Auto Complete Tab", "default": false }, "started_at": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Started At" }, "finished_at": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Finished At" }, "created_at": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Created At" }, "modified_at": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Modified At" }, "created_by": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Created By" } }, "type": "object", "required": [ "action_type" ], "title": "Action" }, "ActionBlock": { "properties": { "label": { "type": "string", "title": "Label", "description": "Author-facing identifier for a block; unique within a workflow." }, "next_block_label": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Next Block Label", "description": "Optional pointer to the next block label when constructing a DAG. Defaults to sequential order when omitted." }, "block_type": { "type": "string", "const": "action", "title": "Block Type", "default": "action" }, "output_parameter": { "$ref": "#/components/schemas/OutputParameter" }, "continue_on_failure": { "type": "boolean", "title": "Continue On Failure", "default": false }, "model": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "null" } ], "title": "Model" }, "disable_cache": { "type": "boolean", "title": "Disable Cache", "default": false }, "ignore_workflow_system_prompt": { "type": "boolean", "title": "Ignore Workflow System Prompt", "default": false }, "next_loop_on_failure": { "type": "boolean", "title": "Next Loop On Failure", "default": false }, "task_type": { "type": "string", "title": "Task Type", "default": "general" }, "url": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Url" }, "title": { "type": "string", "title": "Title", "default": "" }, "engine": { "anyOf": [ { "$ref": "#/components/schemas/RunEngine" }, { "type": "null" } ] }, "engine_pinned": { "type": "boolean", "title": "Engine Pinned", "default": false }, "complete_criterion": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Complete Criterion" }, "complete_criterion_is_untrusted": { "type": "boolean", "title": "Complete Criterion Is Untrusted", "default": false }, "terminate_criterion": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Terminate Criterion" }, "navigation_goal": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Navigation Goal" }, "data_extraction_goal": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Data Extraction Goal" }, "data_schema": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "items": {}, "type": "array" }, { "type": "string" }, { "type": "null" } ], "title": "Data Schema" }, "error_code_mapping": { "anyOf": [ { "additionalProperties": { "type": "string" }, "type": "object" }, { "type": "null" } ], "title": "Error Code Mapping" }, "max_retries": { "type": "integer", "title": "Max Retries", "default": 0 }, "max_steps_per_run": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Max Steps Per Run" }, "parameters": { "items": { "oneOf": [ { "$ref": "#/components/schemas/WorkflowParameter" }, { "$ref": "#/components/schemas/ContextParameter" }, { "$ref": "#/components/schemas/AWSSecretParameter" }, { "$ref": "#/components/schemas/AzureSecretParameter" }, { "$ref": "#/components/schemas/BitwardenLoginCredentialParameter" }, { "$ref": "#/components/schemas/BitwardenSensitiveInformationParameter" }, { "$ref": "#/components/schemas/BitwardenCreditCardDataParameter" }, { "$ref": "#/components/schemas/OnePasswordCredentialParameter" }, { "$ref": "#/components/schemas/AzureVaultCredentialParameter" }, { "$ref": "#/components/schemas/OutputParameter" }, { "$ref": "#/components/schemas/CredentialParameter" } ], "discriminator": { "propertyName": "parameter_type", "mapping": { "aws_secret": "#/components/schemas/AWSSecretParameter", "azure_secret": "#/components/schemas/AzureSecretParameter", "azure_vault_credential": "#/components/schemas/AzureVaultCredentialParameter", "bitwarden_credit_card_data": "#/components/schemas/BitwardenCreditCardDataParameter", "bitwarden_login_credential": "#/components/schemas/BitwardenLoginCredentialParameter", "bitwarden_sensitive_information": "#/components/schemas/BitwardenSensitiveInformationParameter", "context": "#/components/schemas/ContextParameter", "credential": "#/components/schemas/CredentialParameter", "onepassword": "#/components/schemas/OnePasswordCredentialParameter", "output": "#/components/schemas/OutputParameter", "workflow": "#/components/schemas/WorkflowParameter" } } }, "type": "array", "title": "Parameters", "default": [] }, "complete_on_download": { "type": "boolean", "title": "Complete On Download", "default": false }, "download_suffix": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Download Suffix" }, "totp_verification_url": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Totp Verification Url" }, "totp_identifier": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Totp Identifier" }, "complete_verification": { "type": "boolean", "title": "Complete Verification", "default": true }, "include_action_history_in_verification": { "type": "boolean", "title": "Include Action History In Verification", "default": false }, "download_timeout": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Download Timeout" }, "include_extracted_text": { "type": "boolean", "title": "Include Extracted Text", "default": true }, "selector": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Selector" }, "ai_fallback": { "$ref": "#/components/schemas/AIFallbackMode", "default": "fallback" } }, "type": "object", "required": [ "label", "output_parameter" ], "title": "ActionBlock" }, "ActionBlockYAML": { "properties": { "block_type": { "type": "string", "const": "action", "title": "Block Type", "default": "action" }, "label": { "type": "string", "title": "Label", "description": "Author-facing identifier; must be unique per workflow." }, "next_block_label": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Next Block Label", "description": "Optional pointer to the label of the next block. When omitted, it will default to sequential order. See [[s-4bnl]]." }, "continue_on_failure": { "type": "boolean", "title": "Continue On Failure", "default": false }, "model": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "null" } ], "title": "Model" }, "ignore_workflow_system_prompt": { "type": "boolean", "title": "Ignore Workflow System Prompt", "default": false }, "next_loop_on_failure": { "type": "boolean", "title": "Next Loop On Failure", "default": false }, "url": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Url" }, "title": { "type": "string", "title": "Title", "default": "" }, "engine": { "anyOf": [ { "$ref": "#/components/schemas/RunEngine" }, { "type": "null" } ] }, "engine_pinned": { "type": "boolean", "title": "Engine Pinned", "description": "Set to true only when skyvern-1.0 was explicitly chosen for this block; leave it unset otherwise.", "default": false }, "navigation_goal": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Navigation Goal" }, "selector": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Selector" }, "ai_fallback": { "$ref": "#/components/schemas/AIFallbackMode", "default": "fallback" }, "error_code_mapping": { "anyOf": [ { "additionalProperties": { "type": "string" }, "type": "object" }, { "type": "null" } ], "title": "Error Code Mapping" }, "max_retries": { "type": "integer", "title": "Max Retries", "default": 0 }, "max_steps_per_run": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Max Steps Per Run" }, "parameter_keys": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "title": "Parameter Keys" }, "complete_on_download": { "type": "boolean", "title": "Complete On Download", "default": false }, "download_suffix": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Download Suffix" }, "totp_verification_url": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Totp Verification Url" }, "totp_identifier": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Totp Identifier" }, "disable_cache": { "type": "boolean", "title": "Disable Cache", "default": false } }, "type": "object", "required": [ "label" ], "title": "ActionBlockYAML" }, "ActionStatus": { "type": "string", "enum": [ "pending", "skipped", "failed", "completed" ], "title": "ActionStatus" }, "ActionType": { "type": "string", "enum": [ "click", "input_text", "paste_text", "upload_file", "download_file", "select_option", "checkbox", "wait", "hover", "null_action", "solve_captcha", "terminate", "complete", "reload_page", "close_page", "new_tab", "switch_tab", "extract", "verification_code", "goto_url", "go_back", "go_forward", "scroll", "keypress", "move", "drag", "left_mouse", "execute_js" ], "title": "ActionType" }, "AgentStepBlock": { "properties": { "label": { "type": "string", "title": "Label", "description": "Author-facing identifier for a block; unique within a workflow." }, "next_block_label": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Next Block Label", "description": "Optional pointer to the next block label when constructing a DAG. Defaults to sequential order when omitted." }, "block_type": { "type": "string", "const": "agent_step", "title": "Block Type", "default": "agent_step" }, "output_parameter": { "$ref": "#/components/schemas/OutputParameter" }, "continue_on_failure": { "type": "boolean", "title": "Continue On Failure", "default": false }, "model": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "null" } ], "title": "Model" }, "disable_cache": { "type": "boolean", "title": "Disable Cache", "default": false }, "ignore_workflow_system_prompt": { "type": "boolean", "title": "Ignore Workflow System Prompt", "default": false }, "next_loop_on_failure": { "type": "boolean", "title": "Next Loop On Failure", "default": false }, "prompt": { "type": "string", "title": "Prompt" }, "data_schema": { "additionalProperties": true, "type": "object", "title": "Data Schema" }, "max_turns": { "type": "integer", "title": "Max Turns", "default": 25 }, "tools": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "title": "Tools" }, "parameters": { "items": { "oneOf": [ { "$ref": "#/components/schemas/WorkflowParameter" }, { "$ref": "#/components/schemas/ContextParameter" }, { "$ref": "#/components/schemas/AWSSecretParameter" }, { "$ref": "#/components/schemas/AzureSecretParameter" }, { "$ref": "#/components/schemas/BitwardenLoginCredentialParameter" }, { "$ref": "#/components/schemas/BitwardenSensitiveInformationParameter" }, { "$ref": "#/components/schemas/BitwardenCreditCardDataParameter" }, { "$ref": "#/components/schemas/OnePasswordCredentialParameter" }, { "$ref": "#/components/schemas/AzureVaultCredentialParameter" }, { "$ref": "#/components/schemas/OutputParameter" }, { "$ref": "#/components/schemas/CredentialParameter" } ], "discriminator": { "propertyName": "parameter_type", "mapping": { "aws_secret": "#/components/schemas/AWSSecretParameter", "azure_secret": "#/components/schemas/AzureSecretParameter", "azure_vault_credential": "#/components/schemas/AzureVaultCredentialParameter", "bitwarden_credit_card_data": "#/components/schemas/BitwardenCreditCardDataParameter", "bitwarden_login_credential": "#/components/schemas/BitwardenLoginCredentialParameter", "bitwarden_sensitive_information": "#/components/schemas/BitwardenSensitiveInformationParameter", "context": "#/components/schemas/ContextParameter", "credential": "#/components/schemas/CredentialParameter", "onepassword": "#/components/schemas/OnePasswordCredentialParameter", "output": "#/components/schemas/OutputParameter", "workflow": "#/components/schemas/WorkflowParameter" } } }, "type": "array", "title": "Parameters", "default": [] } }, "type": "object", "required": [ "label", "output_parameter", "prompt", "data_schema" ], "title": "AgentStepBlock" }, "AgentStepBlockYAML": { "properties": { "block_type": { "type": "string", "const": "agent_step", "title": "Block Type", "default": "agent_step" }, "label": { "type": "string", "title": "Label", "description": "Author-facing identifier; must be unique per workflow." }, "next_block_label": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Next Block Label", "description": "Optional pointer to the label of the next block. When omitted, it will default to sequential order. See [[s-4bnl]]." }, "continue_on_failure": { "type": "boolean", "title": "Continue On Failure", "default": false }, "model": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "null" } ], "title": "Model" }, "ignore_workflow_system_prompt": { "type": "boolean", "title": "Ignore Workflow System Prompt", "default": false }, "next_loop_on_failure": { "type": "boolean", "title": "Next Loop On Failure", "default": false }, "prompt": { "type": "string", "title": "Prompt", "description": "What the step must work out or get done. Rendered as a Jinja template against the run's parameters and earlier block outputs before the step starts." }, "data_schema": { "additionalProperties": true, "type": "object", "title": "Data Schema", "description": "JSON Schema (type object) of the answer the step returns through its finish tool. Later blocks read the answer as {{