# Create One-Time RPA Schedule

Save cloud phone once scheduled task
templateParameter Parameter Specification
1. **Parameter Source**
Parameter keys must be extracted from the `parameter` field returned by the following APIs:

- Get market template pages
- Get Personal template pages

1. **Data Structure**

- Submit parameters in JSON object format: `{"key1": "value1", "key2": "value2"}`
- Final parameter values must be deserialized according to business logic before use

1. **Common Type Parameters**
For the following parameter types, pass values directly in the corresponding format:

- string: `{"name": "John"}`
- decimal / number: `{"amount": 100.50}`
- boolean: `{"enabled": true}`

1. **Media Type Parameters**
For media parameters such as image (pic) or video (video), in addition to basic information, a fixed key `"__Extra__"` must be included. Example format:


```json
{
    "__Extra__": {
        "pic": {
            "name": "pic_name",
            "size": 204800
        },
        "video": {
            "name": "video_name",
            "size": 204800000
        }
    },
    "pic": "https://get.morelogin.com/prod/cloudPhoneTaskVideo/1556061681934880/1c62314c7e2b4d298abe8d5452d7c050/test.png",
    "video": "morelogin://cloudfile?ids=1,2"
}
```
For files already uploaded to MoreLogin Cloud Storage, use the cloud file protocol as the media or file parameter value: `morelogin://cloudfile?ids=1,2`. The `ids` value is a comma-separated list of Cloud Storage file IDs.
5. **Parameter Configuration Example**
The following example demonstrates how to configure the `templateParameter` parameter when saving a plan using a market template:
- **Step 1: Retrieve Template Parameters**
Call the Market Template API:
`POST /cloudphone/rpa/template/market/page`
Extract the `parameter` field from the response, for example:


```json
"parameter": "{\"videoDownloadUrl\":{\"type\":\"video\",\"extra\":{\"name\":\"Select Video\",\"type\":\"video\",\"required\":true,\"defaultValue\":{\"enabled\":false},\"index\":1,\"sizeLimit\":{\"value\":200,\"unit\":\"MB\"},\"formatType\":[\"mp4\",\"mov\"]}},\"videoDescription\":{\"type\":\"string\",\"extra\":{\"name\":\"Video Caption\",\"type\":\"string\",\"required\":false,\"charValid\":{\"enabled\":true,\"value\":1000},\"multiline\":{\"enabled\":true,\"value\":3},\"defaultValue\":{\"enabled\":false},\"index\":2}},\"coverUrl\":{\"type\":\"image\",\"extra\":{\"name\":\"Cover Image\",\"type\":\"image\",\"required\":false,\"defaultValue\":{\"enabled\":false},\"index\":3,\"sizeLimit\":{\"value\":5,\"unit\":\"MB\"},\"formatType\":[\"jpg\",\"png\",\"jpeg\"]}},\"enableAIGC\":{\"type\":\"boolean\",\"extra\":{\"name\":\"AI Label\",\"type\":\"boolean\",\"required\":false,\"defaultValue\":{\"enabled\":false},\"index\":4}},\"productId\":{\"type\":\"string\",\"extra\":{\"name\":\"Product ID\",\"type\":\"string\",\"required\":false,\"charValid\":{\"enabled\":true,\"value\":50},\"placeholder\":\"Product ID only supports digits, with a maximum of 50 characters.\",\"defaultValue\":{\"enabled\":false},\"index\":5}},\"productTitle\":{\"type\":\"string\",\"extra\":{\"name\":\"Product Title\",\"type\":\"string\",\"required\":false,\"charValid\":{\"enabled\":true,\"value\":30},\"defaultValue\":{\"enabled\":false},\"index\":6}},\"getLeads\":{\"type\":\"boolean\",\"extra\":{\"name\":\"Get Leads\",\"type\":\"boolean\",\"required\":false,\"defaultValue\":{\"enabled\":false},\"index\":7}},\"comment\":{\"type\":\"string\",\"extra\":{\"name\":\"Comment\",\"type\":\"string\",\"required\":false,\"charValid\":{\"enabled\":true,\"value\":200},\"multiline\":{\"enabled\":true,\"value\":3},\"defaultValue\":{\"enabled\":false},\"index\":8}}}"
```
- **Step 2: Build the Parameter JSON**
Construct the JSON object according to the parameter requirements:


```json
{
  "__Extra__": {
    "videoDownloadUrl": {
      "name": "video_name.mp4",
      "size": 204800000
    }
  },
  "videoDownloadUrl": "morelogin://cloudfile?ids=1,2"
}
```
- **Step 3: Escape the JSON String**
Convert the JSON object into an escaped string format:


```json
"{\"__Extra__\": {\"videoDownloadUrl\": {\"name\": \"video_name.mp4\",\"size\": 204800000}},\"videoDownloadUrl\": \"morelogin://cloudfile?ids=1,2\"}"
```
- **Step 4: API Call**
Pass the escaped string as the value of the `templateParameter` parameter to the target API.

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

Endpoint: POST /cloudphone/rpa/onceTask/save
Version: 2026-09-05
Security: Authorization

## Security:

  - `Authorization` (unknown)
    http bearer JWT

## Request fields (application/json):

  - `cloudPhoneId` (string, required)
    Cloud phone ID

  - `scheduleName` (string, required)
    Schedule name

  - `templateId` (string, required)
    Template ID,  Personal template or market template ID

  - `templateParameter` (string)
    Template parameters are defined in personal templates or market templates. The parameters in the template are defined as:{"Test":{"extra":{"type":"string","required":true,"multiline":{"enabled":false},"name":"Test","index":1},"type":"string"}} When requesting parameters, the parameter passed is:{"Test":"xxxx"}

  - `description` (string)
    Schedule description

## Response 200:

  - `200` (unknown)
    Success. `data` is a single integer value.

## Response 200 fields (application/json):

  - `code` (integer, required)
    Response code, 0 indicates success,>0 indicates failure

  - `msg` (string | null, required)
    Error msg

  - `requestId` (string, required)
    Request trace id

  - `data` (integer, required)
    Schedules id

