# Upload File

Register an uploaded file so the Cloud Phone downloads it.
- **Preconditions**: the phone must be powered on and not held by another member, and **the object must already exist at the URL** — the service inspects it and rejects the request when it cannot be read. Live-stream uploads must be MP4 and target a device that supports streaming.
- **Completion**: **accepted, not complete.** The response returns `fileId` with an in-progress status. Poll the upload result endpoint until the status is success or failure.
- **Retry**: no deduplication; each call creates another `fileId`.
- **Surface note**: on the Local API this path is a different, older multipart flow. The equivalent of this endpoint on the Local API is `/api/cloudphone/upload/file`.

Documented business errors: `33401`, `33419`. See [Error Codes](../Getting%20Started/error-codes.md) for what each code means. Any operation can additionally return the common codes.

Endpoint: POST /cloudphone/uploadFile
Version: 2026-09-05
Security: Authorization

## Security:

  - `Authorization` (unknown)
    http bearer JWT

## Request fields (application/json):

  - `id` (string, required)
    Cloud phone ID
    Example: 1661515884160372

  - `url` (string, required)
    Object URL obtained from `presignedUrl` after the file bytes have been uploaded, or another publicly accessible download URL
    Example: https://storage.example.com/cloudphone/test.jpg

  - `uploadDest` (string, required)
    Upload destination directory
    Example: /Download

  - `uploadType` (integer)
    File type (`1` = regular file, `2` = MP4 live-streaming file)
    Enum: "1", "2"

## Response 200:

  - `200` (unknown)
    Success. `data` is an object with the fields `fileId`, `id` and `status`.

## Response 200 fields (application/json):

  - `code` (integer, required)

  - `msg` (string | null, required)

  - `data` (object, required)

  - `data.fileId` (string, required)
    Uploaded file ID

  - `data.id` (string, required)

  - `data.status` (integer, required)
    Upload status 0:uploading 1:success 2:failed

  - `requestId` (string, required)

