- Overview
- Get started
- Concepts
- Using UiPath CLI
- How-to guides
- CI/CD recipes
- Command reference
- Overview
- Exit codes
- Global options
- uip codedagent
- uip coder
- uip context-grounding
- uip docsai
- uip function
- uip guardrails
- uip llm-configuration
- uip llm-gateway
- uip model-hub
- add-test-data-entity
- add-test-data-queue
- add-test-data-variation
- analyze
- build
- create-project
- diff
- find-activities
- get-analyzer-rules
- get-default-activity-xaml
- get-errors
- get-manual-test-cases
- get-manual-test-steps
- get-library-object-repository
- get-object-repository
- get-versions
- get-workflow-example
- indicate-application
- indicate-element
- inspect-package
- install-data-fabric-entities
- install-or-update-packages
- list-data-fabric-entities
- list-instances
- list-workflow-examples
- pack
- publish
- remote
- restore
- run, debug & execution
- run-file
- search-templates
- start-studio
- stop-execution
- tm
- uia
- uip tasks
- uip traces
- uip traces feedback
- Migration
- Reference & support
Syntax and options for `uip solution upload`, which bundles a local solution and sends it to Studio Web for browser-based editing.
uip solution upload uploads a local solution to UiPath Studio Web for browser-based editing. It bundles the solution into an internal .uis archive, sends it to Studio Web, and (on success) prints a URL you can open directly in the designer.
Unlike uip solution pack + uip solution publish, which produce a deployable .zip for Orchestrator, upload targets the interactive Studio Web authoring surface. Use this when you want to continue editing a solution collaboratively in the browser.
If the solution already exists on Studio Web (matched by the SolutionId inside its .uipx), upload overwrites the existing copy; otherwise it is imported as a new solution and the returned ID is written back into the local .uipx so subsequent uploads update in place.
Synopsis
uip solution upload <solutionPath> [--force] [--no-snapshot] [--login-validity <minutes>]
uip solution upload <solutionPath> [--force] [--no-snapshot] [--login-validity <minutes>]
The command honours the global options and returns the standard exit codes.
Arguments
<solutionPath>(required) — One of:- A solution directory containing a
.uipxmanifest (most common). - A
.uipxfile (the command resolves the directory containing it). - A
.uisfile (a pre-bundled solution archive; uploaded as-is for backward compatibility).
- A solution directory containing a
Options
--force— Skip the existence check and overwrite the Studio Web solution named by the bundledSolutionIddirectly. Not normally needed — an upload overwrites an existing cloud solution on its own. Fails if that solution does not exist. No effect when noSolutionIdis bundled (a.uisarchive without one): the upload imports as new.--no-snapshot— Do not record a restorable pre-overwrite version of the cloud solution before replacing its contents. Changes made in Studio Web since the last upload are lost; local files are unaffected. No effect when the upload imports a new solution.--login-validity <minutes>— Minimum minutes before token expiration to trigger a refresh. Defaults to10.
Examples
Minimal
uip solution upload ./my-solution
uip solution upload ./my-solution
Upload a specific .uipx
uip solution upload ./workspace/my-solution/my-solution.uipx
uip solution upload ./workspace/my-solution/my-solution.uipx
Overwrite without a restorable snapshot
uip solution upload ./my-solution --no-snapshot
uip solution upload ./my-solution --no-snapshot
Scripting — open the returned designer URL
URL=$(uip solution upload ./my-solution --output-filter "Data.DesignerUrl" --output plain)
open "$URL" # macOS
URL=$(uip solution upload ./my-solution --output-filter "Data.DesignerUrl" --output plain)
open "$URL" # macOS
Data shape (--output json)
Studio Web has no solution with the bundled SolutionId, so it's imported as new and the local .uipx is updated with the assigned id:
{
"Code": "SolutionUpload",
"Data": {
"Status": "Uploaded successfully",
"Action": "Imported",
"SolutionId": "a1b2c3d4-0000-0000-0000-000000000001",
"DesignerUrl": "https://cloud.uipath.com/myorg/mytenant/studio_/designer/p1?solutionId=a1b2c3d4-0000-0000-0000-000000000001",
"LocalSolutionIdUpdated": {
"Path": "/workspace/my-solution/my-solution.uipx",
"From": "00000000-0000-0000-0000-0000000000ff",
"To": "a1b2c3d4-0000-0000-0000-000000000001"
},
"Response": { }
}
}
{
"Code": "SolutionUpload",
"Data": {
"Status": "Uploaded successfully",
"Action": "Imported",
"SolutionId": "a1b2c3d4-0000-0000-0000-000000000001",
"DesignerUrl": "https://cloud.uipath.com/myorg/mytenant/studio_/designer/p1?solutionId=a1b2c3d4-0000-0000-0000-000000000001",
"LocalSolutionIdUpdated": {
"Path": "/workspace/my-solution/my-solution.uipx",
"From": "00000000-0000-0000-0000-0000000000ff",
"To": "a1b2c3d4-0000-0000-0000-000000000001"
},
"Response": { }
}
}
The solution already exists on Studio Web, so it's overwritten in place, with the replaced contents recorded first as a restorable version:
{
"Code": "SolutionUpload",
"Data": {
"Status": "Uploaded successfully",
"Action": "Overwritten",
"SolutionId": "a1b2c3d4-0000-0000-0000-000000000001",
"DesignerUrl": "https://cloud.uipath.com/myorg/mytenant/studio_/designer/p1?solutionId=a1b2c3d4-0000-0000-0000-000000000001",
"SnapshotCreated": true,
"Response": { }
}
}
{
"Code": "SolutionUpload",
"Data": {
"Status": "Uploaded successfully",
"Action": "Overwritten",
"SolutionId": "a1b2c3d4-0000-0000-0000-000000000001",
"DesignerUrl": "https://cloud.uipath.com/myorg/mytenant/studio_/designer/p1?solutionId=a1b2c3d4-0000-0000-0000-000000000001",
"SnapshotCreated": true,
"Response": { }
}
}
Action—"Imported"on a first upload,"Overwritten"when a solution with thatSolutionIdalready existed on Studio Web.SolutionId— the identity Studio Web assigned (on first upload) or matched (on overwrite). Also written back into the local.uipxso the nextuploadupdates the same solution.DesignerUrl— ready-to-open URL for the first project in the solution, pre-scoped to the solution.null/absent when Studio Web does not return a project ID.LocalSolutionIdUpdated— present only when a freshSolutionIdwas written back into the local.uipx(Path,From,To). Absent when overwriting in place, or when the upload source had no prior id to rewrite.SnapshotCreated— present andtrueonly on an overwrite that recorded a restorable pre-overwrite version (i.e. not passed--no-snapshot). Absent on a fresh import, since there's nothing to snapshot.Response— raw Studio Web response payload. Useful for debugging; not part of a stable contract.
Side effects
- Bindings sync. Before uploading,
uploadre-scans each project'sbindings_v2.jsonand reconciles the solution's resource declarations, equivalent to runninguip solution resources refresh. - Connection overwrites. After upload, any connection overwrites detected in the solution's
resources/solution_folder/connection/directory are patched onto Studio Web against the authenticated user's Personal Workspace folder. Failures here are logged as warnings and do not fail the command. - SolutionId write-back. On a fresh upload, the returned solution ID replaces (or populates) the
SolutionIdfield in the local.uipx.
Related commands
uip solution pack+uip solution publish— deployment pipeline alternative toupload.uip solution delete— remove a Studio Web solution by itsSolutionId.uip solution init— scaffold a solution before uploading.
See also
- Authentication —
uploadrequires an active session. uip solutionoverview.