{"info":{"_postman_id":"d7da7175-1801-46b9-8ee4-e5c9e3010da3","name":"Agora RESTful APIs","description":"<html><head></head><body><p>This is a collection of example requests for all of Agora's products that have RESTful APIs.</p>\n<p>This includes:</p>\n<ul>\n<li><p>RTC Channel Management</p>\n</li>\n<li><p>Console APIs</p>\n</li>\n<li><p>Cloud Recording</p>\n</li>\n<li><p>Signaling</p>\n</li>\n<li><p>Interactive Whiteboard</p>\n</li>\n<li><p>Flexible Classroom</p>\n</li>\n<li><p>Media Services</p>\n</li>\n<li><p>Paid Products</p>\n</li>\n<li><p>Beta Products</p>\n</li>\n</ul>\n<p>If you are looking for example requests for <strong>AgoraChat RESTful APIs</strong>, please see our <a href=\"https://documenter.getpostman.com/view/28179323/2s9YeN1817\">AgoraChat Postman Collection</a>.</p>\n<p>Have fun!</p>\n</body></html>","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[],"owner":"6319646","collectionId":"d7da7175-1801-46b9-8ee4-e5c9e3010da3","publishedId":"SVSLr9AM","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"099DFD"},"publishDate":"2024-08-09T06:20:58.000Z"},"item":[{"name":"Channel Management","item":[{"name":"Banning user privileges","item":[{"name":"Create","event":[{"listen":"test","script":{"id":"04f49423-cccb-482b-b1ff-4269cb0d5326","exec":["var jsonData = JSON.parse(responseBody);","var id = jsonData.id;","console.log(id);","pm.collectionVariables.set(\"id\", id);"],"type":"text/javascript","packages":{}}}],"id":"cb2fe3df-76be-4e1c-9297-09eceacd341a","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"appid\": \"{{APPID}}\",\n    \"cname\": \"{{AccessChannel}}\", //optional\n    \"uid\": {{cmUID}}, //optional\n    \"ip\": \"{{IP}}\", //optional\n    \"time\": {{time}},\n    \"time_in_seconds\": {{timeInSeconds}}, //choose time or time_in_seconds\n    \"privileges\": [\n        \"join_channel\",\n        \"publish_audio\",\n        \"publish_video\"\n    ]\n}","options":{"raw":{"language":"json"}}},"url":"https://api.agora.io/dev/v1/kicking-rule","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":true,"source":{"_postman_id":"1f1b290c-cc09-4952-b901-f4271390be64","id":"1f1b290c-cc09-4952-b901-f4271390be64","name":"Channel Management","type":"folder"}},"urlObject":{"protocol":"https","path":["dev","v1","kicking-rule"],"host":["api","agora","io"],"query":[],"variable":[]}},"response":[],"_postman_id":"cb2fe3df-76be-4e1c-9297-09eceacd341a"},{"name":"Get","event":[{"listen":"test","script":{"id":"04f49423-cccb-482b-b1ff-4269cb0d5326","exec":[""],"type":"text/javascript"}}],"id":"0640d215-02df-4185-abba-456fd233a7d8","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"body":{"mode":"raw","raw":"","options":{"raw":{"language":"json"}}},"url":"https://api.agora.io/dev/v1/kicking-rule?appid={{APPID}}","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":true,"source":{"_postman_id":"1f1b290c-cc09-4952-b901-f4271390be64","id":"1f1b290c-cc09-4952-b901-f4271390be64","name":"Channel Management","type":"folder"}},"urlObject":{"protocol":"https","path":["dev","v1","kicking-rule"],"host":["api","agora","io"],"query":[{"key":"appid","value":"{{APPID}}"}],"variable":[]}},"response":[],"_postman_id":"0640d215-02df-4185-abba-456fd233a7d8"},{"name":"Update","event":[{"listen":"test","script":{"id":"04f49423-cccb-482b-b1ff-4269cb0d5326","exec":["var jsonData = JSON.parse(responseBody);","var id = jsonData.id;","console.log(id);","pm.collectionVariables.set(\"id\", id);"],"type":"text/javascript","packages":{}}}],"id":"ed57bf68-671c-4a1d-93ed-e545d9901745","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\n    \"appid\": \"{{APPID}}\",\n    \"id\": {{id}},\n    \"time\": {{time}},\n    \"time_in_seconds\": {{timeInSeconds}} //choose time or time_in_seconds\n}","options":{"raw":{"language":"json"}}},"url":"https://api.agora.io/dev/v1/kicking-rule","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":true,"source":{"_postman_id":"1f1b290c-cc09-4952-b901-f4271390be64","id":"1f1b290c-cc09-4952-b901-f4271390be64","name":"Channel Management","type":"folder"}},"urlObject":{"protocol":"https","path":["dev","v1","kicking-rule"],"host":["api","agora","io"],"query":[],"variable":[]}},"response":[],"_postman_id":"ed57bf68-671c-4a1d-93ed-e545d9901745"},{"name":"Delete","event":[{"listen":"test","script":{"id":"04f49423-cccb-482b-b1ff-4269cb0d5326","exec":[""],"type":"text/javascript"}}],"id":"af1b1648-86b5-4d15-9fba-fcc1394e30e5","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[],"body":{"mode":"raw","raw":"{\n\t\"appid\":\"{{APPID}}\",\n    \"id\":{{id}}\n}","options":{"raw":{"language":"json"}}},"url":"https://api.agora.io/dev/v1/kicking-rule","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":true,"source":{"_postman_id":"1f1b290c-cc09-4952-b901-f4271390be64","id":"1f1b290c-cc09-4952-b901-f4271390be64","name":"Channel Management","type":"folder"}},"urlObject":{"protocol":"https","path":["dev","v1","kicking-rule"],"host":["api","agora","io"],"query":[],"variable":[]}},"response":[],"_postman_id":"af1b1648-86b5-4d15-9fba-fcc1394e30e5"}],"id":"cc9db95a-1412-485f-97fe-36e4b3163ac6","_postman_id":"cc9db95a-1412-485f-97fe-36e4b3163ac6","description":"","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":true,"source":{"_postman_id":"1f1b290c-cc09-4952-b901-f4271390be64","id":"1f1b290c-cc09-4952-b901-f4271390be64","name":"Channel Management","type":"folder"}}},{"name":"Online Channel Statistics","item":[{"name":"Get channel list","event":[{"listen":"test","script":{"id":"04f49423-cccb-482b-b1ff-4269cb0d5326","exec":[""],"type":"text/javascript"}}],"id":"080ffa91-0c31-42ab-9177-7942f8691ea2","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"body":{"mode":"raw","raw":"","options":{"raw":{"language":"json"}}},"url":"https://api.agora.io/dev/v1/channel/{{APPID}}/","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":true,"source":{"_postman_id":"1f1b290c-cc09-4952-b901-f4271390be64","id":"1f1b290c-cc09-4952-b901-f4271390be64","name":"Channel Management","type":"folder"}},"urlObject":{"protocol":"https","path":["dev","v1","channel","{{APPID}}",""],"host":["api","agora","io"],"query":[],"variable":[]}},"response":[],"_postman_id":"080ffa91-0c31-42ab-9177-7942f8691ea2"},{"name":"Get user list","event":[{"listen":"test","script":{"id":"04f49423-cccb-482b-b1ff-4269cb0d5326","exec":["var jsonData = JSON.parse(responseBody);","var id = jsonData.id;","console.log(id);","pm.collectionVariables.set(\"id\", id);"],"type":"text/javascript","packages":{}}}],"id":"85067b69-dbde-4dca-bd54-2413221844cf","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"body":{"mode":"raw","raw":"","options":{"raw":{"language":"json"}}},"url":"https://api.agora.io/dev/v1/channel/user/{{APPID}}/{channelName}","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":true,"source":{"_postman_id":"1f1b290c-cc09-4952-b901-f4271390be64","id":"1f1b290c-cc09-4952-b901-f4271390be64","name":"Channel Management","type":"folder"}},"urlObject":{"protocol":"https","path":["dev","v1","channel","user","{{APPID}}","{channelName}"],"host":["api","agora","io"],"query":[],"variable":[]}},"response":[],"_postman_id":"85067b69-dbde-4dca-bd54-2413221844cf"},{"name":"Get user status","event":[{"listen":"test","script":{"id":"04f49423-cccb-482b-b1ff-4269cb0d5326","exec":[""],"type":"text/javascript"}}],"id":"6d8e52b7-3273-4dd5-94ee-389448429d96","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"body":{"mode":"raw","raw":"","options":{"raw":{"language":"json"}}},"url":"https://api.agora.io/dev/v1/channel/user/property/{{APPID}}/{{cmUID}}/{{AccessChannel}}","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":true,"source":{"_postman_id":"1f1b290c-cc09-4952-b901-f4271390be64","id":"1f1b290c-cc09-4952-b901-f4271390be64","name":"Channel Management","type":"folder"}},"urlObject":{"protocol":"https","path":["dev","v1","channel","user","property","{{APPID}}","{{cmUID}}","{{AccessChannel}}"],"host":["api","agora","io"],"query":[],"variable":[]}},"response":[],"_postman_id":"6d8e52b7-3273-4dd5-94ee-389448429d96"}],"id":"d766c86f-2b18-4ca3-880d-53d56429f08b","_postman_id":"d766c86f-2b18-4ca3-880d-53d56429f08b","description":"","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":true,"source":{"_postman_id":"1f1b290c-cc09-4952-b901-f4271390be64","id":"1f1b290c-cc09-4952-b901-f4271390be64","name":"Channel Management","type":"folder"}}}],"id":"1f1b290c-cc09-4952-b901-f4271390be64","description":"<h1 id=\"documentation\"><strong>Documentation</strong></h1>\n<p>In addition to the Voice/Video SDK integrated into the app client, Agora provides RESTful APIs for channel management, with which you can manage users in the channel and query channel statistics at the app server.</p>\n<p>This page provides detailed help for the Agora Channel Management RESTful APIs.</p>\n<h2 id=\"basic-information\"><a href=\"https://docs.agora.io/en/video-calling/reference/channel-management-rest-api?platform=web#basic-information\">Basic information​</a></h2>\n<p>This section provides basic information about the Agora Channel Management RESTful APIs.</p>\n<h3 id=\"domain\"><a href=\"https://docs.agora.io/en/video-calling/reference/channel-management-rest-api?platform=web#domain\">Domain​</a></h3>\n<p>All requests are sent to the domain name: <code>api.agora.io</code>.</p>\n<h3 id=\"data-format\"><a href=\"https://docs.agora.io/en/video-calling/reference/channel-management-rest-api?platform=web#data-format\">Data format​</a></h3>\n<p>The <code>Content-Type</code> field in all HTTP request headers is <code>application/json</code>. All requests and responses are in JSON format. All request URLs and request bodies are case-sensitive.</p>\n<h3 id=\"authentication\"><a href=\"https://docs.agora.io/en/video-calling/reference/channel-management-rest-api?platform=web#authentication\">Authentication​</a></h3>\n<p>The Agora Channel Management RESTful APIs only support HTTPS. Before sending HTTP requests, you must generate a Base64-encoded credential with the <strong>Customer ID</strong> and <strong>Customer Secret</strong> provided by Agora, and pass the credential to the <code>Authorization</code> field in the HTTP request header. See <a href=\"https://docs.agora.io/en/video-calling/reference/restful-authentication\">HTTP authentication</a>.</p>\n<h3 id=\"call-frequency-limit\"><a href=\"https://docs.agora.io/en/video-calling/reference/channel-management-rest-api?platform=web#call-frequency-limit\">Call frequency limit​</a></h3>\n<p>For each Agora account (not each App ID), the call frequency of each <a href=\"https://docs.agora.io/en/video-calling/reference/channel-management-rest-api?platform=web#channelinfo\">online channel statistics query</a> API is no more than 20 queries per second, and the call frequency of each other API is no more than 10 queries per second. If you are frequency limited when calling the APIs, please see <a href=\"https://docs.agora.io/en/help/integration-issues/restful_api_call_frequency/\">How can I avoid being frequency limited when calling Agora Server RESTful APIs</a> to optimize API call frequency.</p>\n<h2 id=\"banning-user-privileges\"><a href=\"https://docs.agora.io/en/video-calling/reference/channel-management-rest-api?platform=web#banning-user-privileges\">Banning user privileges​</a></h2>\n<h3 id=\"creates-a-rule\"><a href=\"https://docs.agora.io/en/video-calling/reference/channel-management-rest-api?platform=web#creates-a-rule\">Creates a rule​</a></h3>\n<p>Creates a rule of banning specified user privileges.</p>\n<p>The user privileges (<code>privileges</code>) that can be banned include the following:</p>\n<ul>\n<li><code>join_channel</code>: Joining a channel.</li>\n<li><code>publish_audio</code>: Publishing audio.</li>\n<li><code>publish_video</code>: Publishing video.</li>\n</ul>\n<p>The banning rule works based on the following three fields: <code>cname</code>, <code>uid</code>, and <code>ip</code>.</p>\n<p>When you set <code>privileges</code> as <code>join_channel</code>, the rule works as follows:</p>\n<ul>\n<li>If you set <code>ip</code>, but not <code>cname</code> or <code>uid</code>, then all users with this <code>ip</code> cannot join any channel in the app.Using <code>ip</code> as a filter field may incorrectly block users who should not be blocked, for example, in a scenario where multiple users share an IP address.</li>\n<li>If you set <code>cname</code>, but not <code>uid</code> or <code>ip</code>, then no one can join the channel specified by the <code>cname</code> field.Using <code>cname</code> as a filter field directly blocks the channel with the <code>cname</code>.</li>\n<li>If you set <code>uid</code>, but not <code>cname</code> or <code>ip</code>, then the user with the user ID cannot join any channel in the app.</li>\n<li>If you set <code>cname</code> and <code>uid</code>, but not <code>ip</code>, then the user with the user ID cannot join the channel specified by the <code>cname</code> field.</li>\n</ul>\n<p>When you set <code>privileges</code> as <code>publish_audio</code> or <code>publish_video</code>, the rule works as follows:</p>\n<ul>\n<li>If you set <code>ip</code>, but not <code>cname</code> or <code>uid</code>, then the users with this <code>ip</code> cannot publish audio or video in any channel of the app.</li>\n<li>If you set <code>cname</code>, but not <code>uid</code> or <code>ip</code>, then no one can publish audio or video in the channel specified bythe <code>cname</code> field.</li>\n<li>If you set <code>uid</code>, but not <code>cname</code> or <code>ip</code>, then the user with the user ID cannot publish audio or video inany channel of the app.</li>\n<li>If you set <code>cname</code> and <code>uid</code>, but not <code>ip</code>, then the user with the user ID cannot publish audio or video inthe channel specified by the <code>cname</code> field.</li>\n</ul>\n<p>A user who is kicked out of a channel (that is when you set <code>privileges</code> as <code>join_channel</code>) receives one of the following callbacks based on their platform:</p>\n<ul>\n<li>Android: The <code>onConnectionStateChanged</code> callback reports <code>CONNECTION_CHANGED_BANNED_BY_SERVER(3)</code>.</li>\n<li>iOS/macOS: The <code>connectionChangedToState</code> callback reports <code>AgoraConnectionChangedBannedByServer(3)</code>.</li>\n<li>Web (3.x): The <code>Client.on(\"client-banned\")</code> callback.</li>\n<li>Web (4.x): The <code>Client.on(\"connection-state-change\")</code> callback.</li>\n<li>Windows:The <code>onConnectionStateChanged</code> callback reports <code>CONNECTION_CHANGED_BANNED_BY_SERVER(3)</code>.</li>\n<li>Electron: The <code>AgoraRtcEngine.on(\"connectionStateChanged\")</code> callback reports <code>3</code>.</li>\n<li>Unity: The <code>OnConnectionStateChangedHandler</code> callback reports <code>CONNECTION_CHANGED_BANNED_BY_SERVER(3)</code>.</li>\n<li>React Native: The <code>ConnectionStateChanged</code> callback reports <code>BannedByServer(3)</code>.</li>\n<li>Flutter: The <code>ConnectionStateChanged</code> callback reports <code>BannedByServer(3)</code>.</li>\n<li>Cocos Creator: The <code>onConnectionStateChanged</code> callback reports <code>CONNECTION_CHANGED_BANNED_BY_SERVER(3)</code>.</li>\n</ul>\n<h4 id=\"prototype\"><a href=\"https://docs.agora.io/en/video-calling/reference/channel-management-rest-api?platform=web#prototype\">Prototype​</a></h4>\n<ul>\n<li>Method: <code>POST</code></li>\n<li>Endpoint: <code>https://api.agora.io/dev/v1/kicking-rule</code></li>\n</ul>\n<h4 id=\"request-parameters\"><a href=\"https://docs.agora.io/en/video-calling/reference/channel-management-rest-api?platform=web#request-parameters\">Request parameters​</a></h4>\n<p><strong>Request body parameters</strong></p>\n<p>Pass in the following parameters in the request body:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Data type</th>\n<th>Required/Optional</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>appid</code></td>\n<td>String</td>\n<td>Required</td>\n<td>The App ID of the project. You can get it through one of the following methods:  <br />  <br />- Copy from the <a href=\"https://console.agora.io/\">Agora Console</a>  <br />- Call the <a href=\"https://docs.agora.io/en/interactive-live-streaming/reference/agora-console-rest-api#get-all-projects\">Get all projects</a> API, and read the value of the <code>vendor_key</code> field in the response body.</td>\n</tr>\n<tr>\n<td><code>cname</code></td>\n<td>String</td>\n<td>Optional</td>\n<td>The channel name.</td>\n</tr>\n<tr>\n<td><code>uid</code></td>\n<td>Number</td>\n<td>Optional</td>\n<td>The user ID. Do not set it as <code>0</code>.</td>\n</tr>\n<tr>\n<td><code>ip</code></td>\n<td>String</td>\n<td>Optional</td>\n<td>The IP address of the user. Do not set it as <code>0</code>.</td>\n</tr>\n<tr>\n<td><code>time</code></td>\n<td>Number</td>\n<td>Required</td>\n<td>The time duration (in minutes) to ban the user. The value range is [1,1440].  <br />  <br /><strong>Note:</strong>  <br />  <br />- If the set value is between <code>0</code> and <code>1</code>, Agora automatically sets the value to <code>1</code>.  <br />- If the set value is greater than <code>1440</code>, Agora automatically sets the value to <code>1440</code>.  <br />- If the set value is <code>0</code>, the banning rule does not take effect. The server sets all users that conform to the rule offline, and users can log in again to rejoin the channel.  <br />- Use either <code>time</code> or <code>time_in_seconds</code>. If you set both parameters, the <code>time_in_seconds</code> parameter takes effect; if you set neither of these parameters, the Agora server automatically sets the banning time duration to 60 minutes, that is, 3600 seconds.</td>\n</tr>\n<tr>\n<td><code>time_in_seconds</code></td>\n<td>Number</td>\n<td>Required</td>\n<td>The time duration (in seconds) to ban the user. The value range is [10,86430].  <br />  <br /><strong>Note:</strong>  <br />  <br />- If the set value is between <code>0</code> and <code>10</code>, Agora automatically sets the value to <code>10</code>.  <br />- If the set value is greater than <code>86430</code>, Agora automatically sets the value to <code>86430</code>.  <br />- If the set value is <code>0</code>, the banning rule does not take effect. The server sets all users that conform to the rule offline, and users can log in again to rejoin the channel.  <br />- Use either <code>time</code> or <code>time_in_seconds</code>. If you set both parameters, the <code>time_in_seconds</code> parameter takes effect; if you set neither of these parameters, the Agora server automatically sets the banning time duration to 60 minutes, that is, 3600 seconds.</td>\n</tr>\n<tr>\n<td><code>privileges</code></td>\n<td>Array</td>\n<td>Required</td>\n<td>The user privileges you want to block. You can choose the following values:  <br />  <br />- <code>join_channel</code>: String. Bans a user from joining a channel or kicks a user out of a channel.  <br />- <code>publish_audio</code>: String. Bans a user from publishing audio. You can pass in both <code>publish_audio</code> and <code>publish_video</code> to ban a user from publishing audio and video.  <br />- <code>publish_video</code>: Bans a user from publishing video. You can pass in both <code>publish_audio</code> and <code>publish_video</code> to ban a user from publishing audio and video.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"response-parameters\"><a href=\"https://docs.agora.io/en/video-calling/reference/channel-management-rest-api?platform=web#response-parameters\">Response parameters​</a></h4>\n<p>For details about possible response status codes, see the <a href=\"https://docs.agora.io/en/video-calling/reference/channel-management-rest-api?platform=web#responsecode\">Response status codes</a> table.</p>\n<p>If the status code is not <code>200</code>, the request fails. See the <code>message</code> field in the response body for the reason for this failure.</p>\n<p>If the status code is <code>200</code>, the request succeeds, and the response body includes the following parameters:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>status</code></td>\n<td>String</td>\n<td>The status of this request. <code>success</code> means the request succeeds.</td>\n</tr>\n<tr>\n<td><code>id</code></td>\n<td>Number</td>\n<td>The rule ID. If you want to update or delete the rule, you need the rule ID to specify the rule.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"response-example\"><a href=\"https://docs.agora.io/en/video-calling/reference/channel-management-rest-api?platform=web#response-example\">Response example​</a></h4>\n<p>The following is a response example for a successful request:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"status\": \"success\",\n  \"id\": 1953\n}\n\n</code></pre>\n<h3 id=\"gets-the-rule-list\"><a href=\"https://docs.agora.io/en/video-calling/reference/channel-management-rest-api?platform=web#gets-the-rule-list\">Gets the rule list​</a></h3>\n<p>Gets the list of all banning rules.</p>\n<h4 id=\"prototype-1\"><a href=\"https://docs.agora.io/en/video-calling/reference/channel-management-rest-api?platform=web#prototype-1\">Prototype​</a></h4>\n<ul>\n<li>Method: <code>GET</code></li>\n<li>Endpoint: <code>https://api.agora.io/dev/v1/kicking-rule</code></li>\n</ul>\n<h4 id=\"request-parameters-1\"><a href=\"https://docs.agora.io/en/video-calling/reference/channel-management-rest-api?platform=web#request-parameters-1\">Request parameters​</a></h4>\n<p><strong>Query parameters</strong></p>\n<p>Pass the following query parameters in the request URL:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required/Optional</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>appid</code></td>\n<td>String</td>\n<td>Required</td>\n<td>The App ID of the project. You can get it through one of the following methods:  <br />  <br />- Copy from the <a href=\"https://console.agora.io/\">Agora Console</a>.  <br />- Call the <a href=\"https://docs.agora.io/en/interactive-live-streaming/reference/agora-console-rest-api#get-all-projects\">Get all projects</a> API, and read the value of the <code>vendor_key</code> field in the response body.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"response-parameters-1\"><a href=\"https://docs.agora.io/en/video-calling/reference/channel-management-rest-api?platform=web#response-parameters-1\">Response parameters​</a></h4>\n<p>For details about possible response status codes, see the <a href=\"https://docs.agora.io/en/video-calling/reference/channel-management-rest-api?platform=web#responsecode\">Response status codes</a> table.</p>\n<p>If the status code is not <code>200</code>, the request fails. See the <code>message</code> field in the response body for the reason for this failure.</p>\n<p>If the status code is <code>200</code>, the request succeeds, and the response body includes the following parameters:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>status</code></td>\n<td>String</td>\n<td>The status of this request. <code>success</code> means the request succeeds.</td>\n</tr>\n<tr>\n<td><code>rules</code></td>\n<td>Array</td>\n<td>The list of banning rules. This array consists of multiple objects. Each object contains the information on one banning rule and includes the following fields:  <br />  <br />- <code>id</code>: Number. The rule ID. If you want to update or delete the rule, you need the rule ID to specify the rule.  <br />- <code>appid</code>: String. The App ID of the project.  <br />- <code>uid</code>: Number. The user ID.  <br />- <code>opid</code>: Number. The operation ID, which can be used to track operation records when troubleshooting.  <br />- <code>cname</code>: String. The channel name.  <br />- <code>ip</code>: String. The IP address of the user.  <br />- <code>ts</code>: String. The UTC time when this rule expires.  <br />- <code>privileges</code>: Array. User privileges, including the following values:  <br />- <code>join_channel</code>: String. Bans a user from joining a channel or kicks a user out of a channel.  <br />- <code>publish_audio</code>: String. Bans a user from publishing audio.  <br />- <code>publish_video</code>: String. Bans a user from publishing video.</td>\n</tr>\n<tr>\n<td><code>createAt</code></td>\n<td>String</td>\n<td>The UTC time when this rule is created.</td>\n</tr>\n<tr>\n<td><code>updateAt</code></td>\n<td>String</td>\n<td>The UTC time when this rule is updated.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"response-example-1\"><a href=\"https://docs.agora.io/en/video-calling/reference/channel-management-rest-api?platform=web#response-example-1\">Response example​</a></h4>\n<p>The following is a response example for a successful request:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"status\": \"success\",\n  \"rules\": [\n    {\n      \"id\": 1953,\n      \"appid\": \"4855xxxxxxxxxxxxxxxxxxxxxxxxeae2\",\n      \"uid\": 589517928,\n      \"opid\": 1406,\n      \"cname\": \"11\",\n      \"ip\": \"192.168.0.1\",\n      \"ts\": \"2018-01-09T07:23:06.000Z\",\n      \"privileges\": [\n        \"join_channel\"\n      ],\n      \"createAt\": \"2018-01-09T06:23:06.000Z\",\n      \"updateAt\": \"2018-01-09T14:23:06.000Z\"\n    }\n  ]\n}\n\n</code></pre>\n<h3 id=\"updates-a-rule\"><a href=\"https://docs.agora.io/en/video-calling/reference/channel-management-rest-api?platform=web#updates-a-rule\">Updates a rule​</a></h3>\n<p>Updates the expiration time of a specified banning rule.</p>\n<h4 id=\"prototype-2\"><a href=\"https://docs.agora.io/en/video-calling/reference/channel-management-rest-api?platform=web#prototype-2\">Prototype​</a></h4>\n<ul>\n<li>Method: <code>PUT</code></li>\n<li>Endpoint: <code>https://api.agora.io/dev/v1/kicking-rule</code></li>\n</ul>\n<h4 id=\"request-parameters-2\"><a href=\"https://docs.agora.io/en/video-calling/reference/channel-management-rest-api?platform=web#request-parameters-2\">Request parameters​</a></h4>\n<p><strong>Request body parameters</strong></p>\n<p>Pass in the following parameters in the request body:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required/Optional</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>appid</code></td>\n<td>String</td>\n<td>Required</td>\n<td>The App ID of the project. You can get it through one of the following methods:  <br />  <br />- Copy from the <a href=\"https://console.agora.io/\">Agora Console</a>.  <br />- Call the <a href=\"https://docs.agora.io/en/interactive-live-streaming/reference/agora-console-rest-api#get-all-projects\">Get all projects</a> API, and read the value of the <code>vendor_key</code> field in the response body.</td>\n</tr>\n<tr>\n<td><code>id</code></td>\n<td>Number</td>\n<td>Required</td>\n<td>The ID of the rule that you want to update.</td>\n</tr>\n<tr>\n<td><code>time</code></td>\n<td>Number</td>\n<td>Required</td>\n<td>The time duration (in minutes) to ban the user. The value range is [1,1440].  <br />  <br /><strong>Note:</strong>  <br />  <br />- If the set value is between <code>0</code> and <code>1</code>, Agora automatically sets the value to <code>1</code>.  <br />- If the set value is greater than <code>1440</code>, Agora automatically sets the value to <code>1440</code>.  <br />- If the set value is <code>0</code>, the banning rule does not take effect. The server sets all users that conform to the rule offline, and users can log in again to rejoin the channel.  <br />- Use either <code>time</code> or <code>time_in_seconds</code>. If you set both parameters, the <code>time_in_seconds</code> parameter takes effect; if you set neither of these parameters, the Agora server automatically sets the banning time duration to 60 minutes, that is, 3600 seconds.</td>\n</tr>\n<tr>\n<td><code>time_in_seconds</code></td>\n<td>Number</td>\n<td>Required</td>\n<td>The time duration (in seconds) to ban the user. The value range is [10,86430].  <br />  <br /><strong>Note:</strong>  <br />  <br />- If the set value is between <code>0</code> and <code>10</code>, Agora automatically sets the value to <code>10</code>.  <br />- If the set value is greater than <code>86430</code>, Agora automatically sets the value to <code>86430</code>.  <br />- If the set value is <code>0</code>, the banning rule does not take effect. The server sets all users that conform to the rule offline, and users can log in again to rejoin the channel.  <br />- Use either <code>time</code> or <code>time_in_seconds</code>. If you set both parameters, the <code>time_in_seconds</code> parameter takes effect; if you set neither of these parameters, the Agora server automatically sets the banning time duration to 60 minutes, that is, 3600 seconds.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"response-parameters-2\"><a href=\"https://docs.agora.io/en/video-calling/reference/channel-management-rest-api?platform=web#response-parameters-2\">Response parameters​</a></h4>\n<p>For details about possible response status codes, see the <a href=\"https://docs.agora.io/en/video-calling/reference/channel-management-rest-api?platform=web#responsecode\">Response status codes</a> table.</p>\n<p>If the status code is not <code>200</code>, the request fails. See the <code>message</code> field in the response body for the reason for this failure.</p>\n<p>If the status code is <code>200</code>, the request succeeds, and the response body includes the following parameters:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>status</code></td>\n<td>String</td>\n<td>The status of this request. <code>success</code> means the request succeeds.</td>\n</tr>\n<tr>\n<td><code>result</code></td>\n<td>Object</td>\n<td>The result of the update:  <br />  <br />- <code>id</code>: String. The rule ID.  <br />- <code>ts</code>: String. The UTC time when the rule expires.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"response-example-2\"><a href=\"https://docs.agora.io/en/video-calling/reference/channel-management-rest-api?platform=web#response-example-2\">Response example​</a></h4>\n<p>The following is a response example for a successful request:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"status\": \"success\",\n  \"result\": {\n    \"id\": 1953,\n    \"ts\": \"2018-01-09T08:45:54.545Z\"\n  }\n}\n\n</code></pre>\n<h3 id=\"deletes-a-rule\"><a href=\"https://docs.agora.io/en/video-calling/reference/channel-management-rest-api?platform=web#deletes-a-rule\">Deletes a rule​</a></h3>\n<p>Deletes a specified banning rule.</p>\n<h4 id=\"prototype-3\"><a href=\"https://docs.agora.io/en/video-calling/reference/channel-management-rest-api?platform=web#prototype-3\">Prototype​</a></h4>\n<ul>\n<li>Method: <code>DELETE</code></li>\n<li>Endpoint: <code>https://api.agora.io/dev/v1/kicking-rule</code></li>\n</ul>\n<p><strong>Request body parameters</strong></p>\n<p>The following parameters are required in the request body:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required/Optional</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>appid</code></td>\n<td>String</td>\n<td>Required</td>\n<td>The App ID of the project. You can get it through one of the following methods:  <br />  <br />- Copy from the <a href=\"https://console.agora.io/\">Agora Console</a>.  <br />- Call the <a href=\"https://docs.agora.io/en/interactive-live-streaming/reference/agora-console-rest-api#get-all-projects\">Get all projects</a> API, and read the value of the <code>vendor_key</code> field in the response body.</td>\n</tr>\n<tr>\n<td><code>id</code></td>\n<td>Number</td>\n<td>Required</td>\n<td>The ID of the rule that you want to delete.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"response-parameters-3\"><a href=\"https://docs.agora.io/en/video-calling/reference/channel-management-rest-api?platform=web#response-parameters-3\">Response parameters​</a></h4>\n<p>For details about possible response status codes, see the <a href=\"https://docs.agora.io/en/video-calling/reference/channel-management-rest-api?platform=web#responsecode\">Response status codes</a> table.</p>\n<p>If the status code is not <code>200</code>, the request fails. See the <code>message</code> field in the response body for the reason for this failure.</p>\n<p>If the status code is <code>200</code>, the request succeeds, and the response body includes the following parameters:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>status</code></td>\n<td>String</td>\n<td>The status of this request. <code>success</code> means the request succeeds.</td>\n</tr>\n<tr>\n<td><code>id</code></td>\n<td>String</td>\n<td>The ID of the rule that you want to delete.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"response-example-3\"><a href=\"https://docs.agora.io/en/video-calling/reference/channel-management-rest-api?platform=web#response-example-3\">Response example​</a></h4>\n<p>The following is a response example for a successful request:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"status\": \"success\",\n  \"id\": 1953\n}\n\n</code></pre>\n<h2 id=\"online-channel-statistics-query\"><a href=\"https://docs.agora.io/en/video-calling/reference/channel-management-rest-api?platform=web#online-channel-statistics-query\">Online channel statistics query​</a></h2>\n<h3 id=\"gets-the-user-status\"><a href=\"https://docs.agora.io/en/video-calling/reference/channel-management-rest-api?platform=web#gets-the-user-status\">Gets the user status​</a></h3>\n<p>Gets the status of a specified user.</p>\n<p>This method checks if a specified user is in a specified channel, and if yes, the role of this user in the channel.</p>\n<h4 id=\"prototype-4\"><a href=\"https://docs.agora.io/en/video-calling/reference/channel-management-rest-api?platform=web#prototype-4\">Prototype​</a></h4>\n<ul>\n<li>Method: <code>GET</code></li>\n<li>Endpoint: <code>https://api.agora.io/dev/v1/channel/user/property/{appid}/{uid}/{channelName}</code></li>\n</ul>\n<h4 id=\"request-parameters-3\"><a href=\"https://docs.agora.io/en/video-calling/reference/channel-management-rest-api?platform=web#request-parameters-3\">Request parameters​</a></h4>\n<p><strong>Path parameters</strong></p>\n<p>Pass the following path parameters in the request URL:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required/Optional</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>appid</code></td>\n<td>String</td>\n<td>Required</td>\n<td>The App ID of the project. You can get it through one of the following methods:  <br />  <br />- Copy from the <a href=\"https://console.agora.io/\">Agora Console</a>.  <br />- Call the <a href=\"https://docs.agora.io/en/interactive-live-streaming/reference/agora-console-rest-api#get-all-projects\">Get all projects</a> API, and read the value of the <code>vendor_key</code> field in the response body.</td>\n</tr>\n<tr>\n<td><code>uid</code></td>\n<td>Number</td>\n<td>Required</td>\n<td>The user ID.  <br />  <br /><strong>Note</strong>: This parameter does not support string user accounts. Ensure that you use the integer user ID.</td>\n</tr>\n<tr>\n<td><code>channelName</code></td>\n<td>String</td>\n<td>Required</td>\n<td>The channel name.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"request-example\"><a href=\"https://docs.agora.io/en/video-calling/reference/channel-management-rest-api?platform=web#request-example-3\">Request example​</a></h4>\n<p><strong>Request URL</strong></p>\n<p><code>1https://api.agora.io/dev/v1/channel/user/property/12sfegxxxxxxxxxxxx365/2845863044/test</code></p>\n<h4 id=\"response-parameters-4\"><a href=\"https://docs.agora.io/en/video-calling/reference/channel-management-rest-api?platform=web#response-parameters-4\">Response parameters​</a></h4>\n<p>For details about possible response status codes, see the <a href=\"https://docs.agora.io/en/video-calling/reference/channel-management-rest-api?platform=web#responsecode\">Response status codes</a> table.</p>\n<p>If the status code is not <code>200</code>, the request fails. See the <code>message</code> field in the response body for the reason for this failure.</p>\n<p>If the status code is <code>200</code>, the request succeeds, and the response body includes the following parameters:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>success</code></td>\n<td>Boolean</td>\n<td>The state of this request:  <br />  <br />- <code>true</code>: Success.  <br />- <code>false</code>: Reserved for future use.</td>\n</tr>\n<tr>\n<td><code>data</code></td>\n<td>Object</td>\n<td>User statistics, including the following fields:  <br />  <br />- <code>in_channel</code>: Boolean. Whether the user is in the channel. When the value of <code>in_channel</code> is <code>false</code>, all other fields are not returned .</td>\n</tr>\n</tbody>\n</table>\n</div><ul>\n<li><code>join</code>: Number. The Unix timestamp in seconds of when the user joins the channel.</li>\n<li><code>role</code>: Number. The role of the user in the channel:<ul>\n<li><code>0</code>: Unknown user role.</li>\n<li><code>1</code>: User, in a communication channel.</li>\n<li><code>2</code>: Host, in an interactive live streaming channel.</li>\n<li><code>3</code>: Audience, in an interactive live streaming channel.</li>\n</ul>\n</li>\n<li><code>platform</code>: Number. The platform of the user's device. Common return values include:<ul>\n<li><code>1</code>: Android</li>\n<li><code>2</code>：iOS</li>\n<li><code>5</code>: Windows</li>\n<li><code>6</code>: Linux</li>\n<li><code>7</code>: Web</li>\n<li><code>8</code>: macOS</li>\n<li><code>0</code>: Others</li>\n</ul>\n</li>\n</ul>\n<h4 id=\"response-example-4\"><a href=\"https://docs.agora.io/en/video-calling/reference/channel-management-rest-api?platform=web#response-example-4\">Response example​</a></h4>\n<p>The following is a response example for a successful request:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"success\": true,\n    \"data\": {\n        \"join\": 1640330382,\n        \"uid\": 2845863044,\n        \"in_channel\": true,\n        \"platform\": 7,\n        \"role\": 2\n    }\n}\n\n</code></pre>\n<h3 id=\"gets-the-user-list\"><a href=\"https://docs.agora.io/en/video-calling/reference/channel-management-rest-api?platform=web#gets-the-user-list\">Gets the user list​</a></h3>\n<p>Gets the list of all users in a specified channel.</p>\n<p>The return list differs with the channel profile as follows:</p>\n<ul>\n<li>In <code>COMMUNICATION</code> profile, this API returns the list of all users in the channel.</li>\n<li>In <code>LIVE_BROADCASTING</code> profile, this API returns the list of all hosts and audience members in the channel.</li>\n<li>Users in a channel must use the same channel profile; otherwise, the query results may be inaccurate.</li>\n<li>You can synchronize the online channel statistics either by calling this API or by calling the <a href=\"https://docs.agora.io/en/video-calling/reference/channel-management-rest-api?platform=web#userstatus\">Gets the user status</a> API. Compared with the <a href=\"https://docs.agora.io/en/video-calling/reference/channel-management-rest-api?platform=web#userstatus\">Gets the user status</a> API, this API requires a lower call frequency and has a higher query efficiency. Therefore, Agora recommends using this API to query online channel statistics.</li>\n</ul>\n<h4 id=\"prototype-5\"><a href=\"https://docs.agora.io/en/video-calling/reference/channel-management-rest-api?platform=web#prototype-5\">Prototype​</a></h4>\n<ul>\n<li>Method: <code>GET</code></li>\n<li>Endpoint: <code>https://api.agora.io/dev/v1/channel/user/{appid}/{channelName}</code></li>\n</ul>\n<h4 id=\"request-parameters-4\"><a href=\"https://docs.agora.io/en/video-calling/reference/channel-management-rest-api?platform=web#request-parameters-4\">Request parameters​</a></h4>\n<p><strong>Path parameters</strong></p>\n<p>Pass the following path parameters in the request URL:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required/Optional</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>appid</code></td>\n<td>String</td>\n<td>Required</td>\n<td>The App ID of the project. You can get it through one of the following methods:  <br />  <br />- Copy from the <a href=\"https://console.agora.io/\">Agora Console</a>.  <br />- Call the <a href=\"https://docs.agora.io/en/interactive-live-streaming/reference/agora-console-rest-api#get-all-projects\">Get all projects</a> API, and read the value of the <code>vendor_key</code> field in the response body.</td>\n</tr>\n<tr>\n<td><code>channelName</code></td>\n<td>String</td>\n<td>Required</td>\n<td>The channel name.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"response-parameters-5\"><a href=\"https://docs.agora.io/en/video-calling/reference/channel-management-rest-api?platform=web#response-parameters-5\">Response parameters​</a></h4>\n<p>For details about possible response status codes, see the <a href=\"https://docs.agora.io/en/video-calling/reference/channel-management-rest-api?platform=web#responsecode\">Response status codes</a> table.</p>\n<p>If the status code is not <code>200</code>, the request fails. See the <code>message</code> field in the response body for the reason for this failure.</p>\n<p>If the status code is <code>200</code>, the request succeeds, and the response body includes the following parameters:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>success</code></td>\n<td>Boolean</td>\n<td>The state of this request:  <br />  <br />- <code>true</code>: Success.  <br />- <code>false</code>: Reserved for future use.</td>\n</tr>\n<tr>\n<td><code>data</code></td>\n<td>Object</td>\n<td>User information, including the following fields:  <br />  <br />- <code>channel_exist</code>: Boolean. Whether the specified channel exists:  <br />  <br />- <code>true</code>: The channel exists.  <br />- <code>false</code>: The channel does not exist.  <br />  <br /><strong>Note</strong>: All other fields are not returned when the value of <code>channel_exist</code> is <code>false</code>.  <br />- <code>mode</code>: Number. The channel profile:  <br />- <code>1</code>：The <code>COMMUNICATION</code> profile.  <br />- <code>2</code>: The <code>LIVE_BROADCASTING</code> profile.  <br />- <code>total</code>: Number. The total number of the users in the channel. This field is returned only when <code>mode</code> is <code>1</code>.  <br />- <code>users</code>: Array. User IDs of all users in the channel. This field is returned only when <code>mode</code> is <code>1</code>.  <br />- <code>broadcasters</code>：Array. User IDs of all hosts in the channel. This field is returned only when <code>mode</code> is <code>2</code>.  <br />- <code>audience</code>: Array. User IDs of the first 10,000 audience members in the channel. This field is returned only when <code>mode</code> is <code>2</code>.  <br />- <code>audience_total</code>: Number. The total number of audience members in the channel. This field is returned only when <code>mode</code> is <code>2</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"response-example-5\"><a href=\"https://docs.agora.io/en/video-calling/reference/channel-management-rest-api?platform=web#response-example-5\">Response example​</a></h4>\n<p>The following is a response example for a successful request:</p>\n<p><strong>In</strong> <strong><code>COMMUNICATION</code></strong> <strong>profile</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"success\": true,\n  \"data\": {\n    \"channel_exist\": true,\n    \"mode\": 1,\n    \"total\": 1,\n    \"users\": [\n      906218805\n    ]\n  }\n}\n\n</code></pre>\n<p><strong>In</strong> <strong><code>LIVE_BROADCASTING</code></strong> <strong>profile</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"success\": true,\n    \"data\": {\n        \"channel_exist\": true,\n        \"mode\": 2,\n        \"broadcasters\": [\n            2206227541,\n            2845863044\n        ],\n        \"audience\": [\n            906219905\n        ],\n        \"audience_total\": 1\n    }\n}\n\n</code></pre>\n<h3 id=\"gets-the-channel-list\"><a href=\"https://docs.agora.io/en/video-calling/reference/channel-management-rest-api?platform=web#gets-the-channel-list\">Gets the channel list​</a></h3>\n<p>Gets the list of all channels under a specified project.</p>\n<p>This API gets the channel list by page. In the request URL, you can specify the page number and the number of channels shown on the page. A successful request returns the channel list of the specified page according to the set <code>page_size</code>.</p>\n<p>If the number of users in a channel changes frequently, the query results may be inaccurate. The following situations may occur:</p>\n<ul>\n<li>A channel appears repeatedly in different pages.</li>\n<li>A channel does not appear in any page.</li>\n</ul>\n<h4 id=\"prototype-6\"><a href=\"https://docs.agora.io/en/video-calling/reference/channel-management-rest-api?platform=web#prototype-6\">Prototype​</a></h4>\n<ul>\n<li>Method: <code>GET</code></li>\n<li>Endpoint: <code>https://api.agora.io/dev/v1/channel/{appid}</code></li>\n</ul>\n<h4 id=\"request-parameters-5\"><a href=\"https://docs.agora.io/en/video-calling/reference/channel-management-rest-api?platform=web#request-parameters-5\">Request parameters​</a></h4>\n<p><strong>Path parameters</strong></p>\n<p>Pass the following path parameters in the request URL:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required/Optional</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>appid</code></td>\n<td>String</td>\n<td>Required</td>\n<td>The App ID of the project. You can get it through one of the following methods:  <br />  <br />- Copy from the <a href=\"https://console.agora.io/\">Agora Console</a>.  <br />- Call the <a href=\"https://docs.agora.io/en/interactive-live-streaming/reference/agora-console-rest-api#get-all-projects\">Get all projects</a> API, and read the value of the <code>vendor_key</code> field in the response body.</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Query parameters</strong></p>\n<p>Pass the following query parameters in the request URL:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required/Optional</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>page_no</code></td>\n<td>Number</td>\n<td>Optional</td>\n<td>The page number that you want to query. The default value is 0, that is, the first page.  <br />  <br /><strong>Note</strong>: The value of <code>page_no</code> cannot exceed (the total number of channels/the value of <code>page_size</code> - 1); otherwise, the specified page does not contain any channel.</td>\n</tr>\n<tr>\n<td><code>page_size</code></td>\n<td>Number</td>\n<td>Optional</td>\n<td>The number of channels on a page. The value range is [1,500], and the default value is 100.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"response-parameters-6\"><a href=\"https://docs.agora.io/en/video-calling/reference/channel-management-rest-api?platform=web#response-parameters-6\">Response parameters​</a></h4>\n<p>For details about possible response status codes, see the <a href=\"https://docs.agora.io/en/video-calling/reference/channel-management-rest-api?platform=web#responsecode\">Response status codes</a> table.</p>\n<p>If the status code is not <code>200</code>, the request fails. See the <code>message</code> field in the response body for the reason for this failure.</p>\n<p>If the status code is <code>200</code>, the request succeeds, and the response body includes the following parameters:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>success</code></td>\n<td>Boolean</td>\n<td>The state of this request:  <br />  <br />- <code>true</code>: Success.  <br />- <code>false</code>: Reserved for future use.</td>\n</tr>\n<tr>\n<td><code>data</code></td>\n<td>Object</td>\n<td>Channel statistics, including the following fields:  <br />  <br />- <code>channels</code>: Array. The list of channels. This array contains multiple objects. Each object shows the information on a channel and includes the following fields:  <br />  <br />- <code>channel_name</code>: String. The channel name.  <br />- <code>user_count</code>: Number. The total number of users in the channel.  <br />  <br /><strong>Note</strong>: If the specified page does not contain any channel, this field is empty.  <br />- <code>total_size</code>: Number. The total number of channels under the specified project.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"response-example-6\"><a href=\"https://docs.agora.io/en/video-calling/reference/channel-management-rest-api?platform=web#response-example-6\">Response example​</a></h4>\n<p>The following is a response example for a successful request:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"success\": true,\n  \"data\": {\n    \"channels\": [\n      {\n        \"channel_name\": \"lkj144\",\n        \"user_count\": 3\n      }\n    ],\n    \"total_size\": 1\n  }\n}\n\n</code></pre>\n<h2 id=\"response-status-codes\"><a href=\"https://docs.agora.io/en/video-calling/reference/channel-management-rest-api?platform=web#response-status-codes\">Response status codes​</a></h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Response status code</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>200</td>\n<td>The operation is successful.</td>\n</tr>\n<tr>\n<td>400</td>\n<td>Bad request.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Unauthorized (incorrect App ID/Customer Certificate).</td>\n</tr>\n<tr>\n<td>403</td>\n<td>Forbidden.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>The requested resource could not be found.</td>\n</tr>\n<tr>\n<td>415</td>\n<td>Unsupported media type. Make sure that you set <code>Content-Type</code>in <code>Headers</code> as <code>application/json</code>.</td>\n</tr>\n<tr>\n<td>429</td>\n<td>Too many requests.</td>\n</tr>\n<tr>\n<td>500</td>\n<td>Internal error of the Agora RESTful API service.</td>\n</tr>\n</tbody>\n</table>\n</div><p><a href=\"https://docs.agora.io/en/video-calling/reference/channel-management-rest-api?platform=android\">https://docs.agora.io/en/video-calling/reference/channel-management-rest-api?platform=android</a></p>\n","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":false},"event":[{"listen":"prerequest","script":{"id":"d3dc6308-2370-4d19-907a-bccaa6fff287","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"d49bc5ab-a1af-4545-8dbf-bdc2c05fc7b5","type":"text/javascript","exec":[""]}}],"_postman_id":"1f1b290c-cc09-4952-b901-f4271390be64"},{"name":"Console API","item":[{"name":"Create","id":"a9b72b7f-311e-4a4a-bb0e-eae772679bda","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"name\": \"enterProjectName\",\n    \"enable_sign_key\": true\n}","options":{"raw":{"language":"json"}}},"url":"https://api.agora.io/dev/v1/project","description":"<p>Pass in the following parameters in the request body:</p>\n<p>View More</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>name</code></td>\n<td>String</td>\n<td>(Required) The project name, which is between 1 to 255 characters in length.</td>\n</tr>\n<tr>\n<td><code>enable_sign_key</code></td>\n<td>Boolean</td>\n<td><br />  <br />(Required) Whether to enable the primary app certificate:  <br />  <br />- true: Enable the primary app certificate.  <br />- false: (Default) Do not enable the primary app certificate.  <br />  <br />  <br /><strong>Note</strong>: After creating a project, you can send a request to <code>https://api.agora.io/dev/v1/signkey</code> to enable or disable the primary app certificate, or send a request to <code>https://api.agora.io/dev/v1/reset_signkey</code> to reset the primary app certificate.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerCertificate}}"}]},"isInherited":true,"source":{"_postman_id":"17e4196c-5e11-4bb0-a447-bdf1b3896799","id":"17e4196c-5e11-4bb0-a447-bdf1b3896799","name":"Console API","type":"folder"}},"urlObject":{"protocol":"https","path":["dev","v1","project"],"host":["api","agora","io"],"query":[],"variable":[]}},"response":[],"_postman_id":"a9b72b7f-311e-4a4a-bb0e-eae772679bda"},{"name":"Usage","id":"00717fd9-473e-4a7e-8ef3-c5a195c9abcb","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerCertificate}}"}]},"isInherited":false},"method":"GET","header":[],"url":"https://api.agora.io/dev/v3/usage?from_date={{fromDate}}&to_date={{toDate}}&project_id={{projectId}}&business={{business}}","urlObject":{"protocol":"https","path":["dev","v3","usage"],"host":["api","agora","io"],"query":[{"key":"from_date","value":"{{fromDate}}"},{"key":"to_date","value":"{{toDate}}"},{"key":"project_id","value":"{{projectId}}"},{"key":"business","value":"{{business}}"}],"variable":[]}},"response":[],"_postman_id":"00717fd9-473e-4a7e-8ef3-c5a195c9abcb"},{"name":"Projects","event":[{"listen":"test","script":{"id":"ffdedd69-3ad6-4729-9f57-4741db4740cc","exec":["var jsonData = JSON.parse(responseBody).projects[0];","//grabs the first project in the array to send for Project Details. Change projects[0] to number for specific app id","var id = jsonData.id;","console.log(id);","pm.collectionVariables.set(\"id\", id);","var name = jsonData.name;","console.log(name);","pm.collectionVariables.set(\"name\", name);"],"type":"text/javascript","packages":{}}}],"id":"9286cac4-9f5f-4c0b-b28b-8ea2ef50186c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://api.agora.io/dev/v1/projects/","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerCertificate}}"}]},"isInherited":true,"source":{"_postman_id":"17e4196c-5e11-4bb0-a447-bdf1b3896799","id":"17e4196c-5e11-4bb0-a447-bdf1b3896799","name":"Console API","type":"folder"}},"urlObject":{"protocol":"https","path":["dev","v1","projects",""],"host":["api","agora","io"],"query":[],"variable":[]}},"response":[],"_postman_id":"9286cac4-9f5f-4c0b-b28b-8ea2ef50186c"},{"name":"Project Details","event":[{"listen":"test","script":{"exec":[""],"type":"text/javascript","id":"f4b4a008-78d6-4fd7-bc44-a8be9f0b6c9a"}}],"id":"aa683527-4dba-479c-a371-3555d8c5ad67","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"body":{"mode":"raw","raw":""},"url":"https://api.agora.io/dev/v1/project?id={{id}}&name={{name}}","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerCertificate}}"}]},"isInherited":true,"source":{"_postman_id":"17e4196c-5e11-4bb0-a447-bdf1b3896799","id":"17e4196c-5e11-4bb0-a447-bdf1b3896799","name":"Console API","type":"folder"}},"urlObject":{"protocol":"https","path":["dev","v1","project"],"host":["api","agora","io"],"query":[{"key":"id","value":"{{id}}"},{"key":"name","value":"{{name}}"}],"variable":[]}},"response":[],"_postman_id":"aa683527-4dba-479c-a371-3555d8c5ad67"},{"name":"ChannelList","id":"cd43186e-bef8-4f74-8ec4-ccabaa8f2101","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerCertificate}}"}]},"isInherited":false},"method":"GET","header":[],"url":"https://api.agora.io/dev/v1/channel/{{APPID}}","urlObject":{"protocol":"https","path":["dev","v1","channel","{{APPID}}"],"host":["api","agora","io"],"query":[],"variable":[]}},"response":[],"_postman_id":"cd43186e-bef8-4f74-8ec4-ccabaa8f2101"}],"id":"17e4196c-5e11-4bb0-a447-bdf1b3896799","description":"<h1 id=\"documentation\"><strong>Documentation</strong></h1>\n<p>When you need to <a href=\"https://docs.agora.io/en/video-calling/reference/agora-console-rest-api?platform=web#create-a-project\">create and manage Agora projects</a> or <a href=\"https://docs.agora.io/en/video-calling/reference/agora-console-rest-api?platform=web#get-project-usage\">check usage</a>, besides using the graphic user interface at Agora Console, you can also call the Agora Console RESTful API.</p>\n<p>This page provides detailed help for the Agora Console RESTful APIs.</p>\n<h2 id=\"basic-information\"><a href=\"https://docs.agora.io/en/video-calling/reference/agora-console-rest-api?platform=web#basic-information\">Basic information​</a></h2>\n<p>This section provides basic information about the Agora Console RESTful APIs.</p>\n<h4 id=\"domain\"><a href=\"https://docs.agora.io/en/video-calling/reference/agora-console-rest-api?platform=web#domain\">Domain​</a></h4>\n<p>All requests are sent to the host: <code>api.agora.io</code>.</p>\n<h4 id=\"data-format\"><a href=\"https://docs.agora.io/en/video-calling/reference/agora-console-rest-api?platform=web#data-format\">Data format​</a></h4>\n<p>The <code>Content-Type</code> field in all HTTP request headers is <code>application/json</code>. All requests and responses are in JSON format. All request URLs and request bodies are case-sensitive.</p>\n<h4 id=\"authentication\"><a href=\"https://docs.agora.io/en/video-calling/reference/agora-console-rest-api?platform=web#authentication\">Authentication​</a></h4>\n<p>The Agora Console RESTful APIs only support HTTPS. Before sending HTTP requests, you must generate a Base64-encoded credential with the <strong>Customer ID</strong> and <strong>Customer Secret</strong> provided by Agora, and pass the credential to the <code>Authorization</code> field in the HTTP request header.</p>\n<h4 id=\"call-frequency-limit\"><a href=\"https://docs.agora.io/en/video-calling/reference/agora-console-rest-api?platform=web#call-frequency-limit\">Call frequency limit​</a></h4>\n<p>For each Agora account (not each App ID), the call frequency of each API on this page is no more than 10 queries per second.</p>\n<h2 id=\"create-a-project\"><a href=\"https://docs.agora.io/en/video-calling/reference/agora-console-rest-api?platform=web#create-a-project\">Create a project​</a></h2>\n<p>Creates an Agora project.</p>\n<h4 id=\"prototype\"><a href=\"https://docs.agora.io/en/video-calling/reference/agora-console-rest-api?platform=web#prototype\">Prototype​</a></h4>\n<ul>\n<li>Method: <code>POST</code></li>\n<li>Endpoint: <code>https://api.agora.io/dev/v1/project</code></li>\n</ul>\n<h4 id=\"request-parameters\"><a href=\"https://docs.agora.io/en/video-calling/reference/agora-console-rest-api?platform=web#request-parameters\">Request parameters​</a></h4>\n<p><strong>Request body parameters</strong></p>\n<p>Pass in the following parameters in the request body:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>name</code></td>\n<td>String</td>\n<td>(Required) The project name, which is between 1 to 255 characters in length.</td>\n</tr>\n<tr>\n<td><code>enable_sign_key</code></td>\n<td>Boolean</td>\n<td><br />  <br />(Required) Whether to enable the primary app certificate:  <br />  <br />- true: Enable the primary app certificate.  <br />- false: (Default) Do not enable the primary app certificate.  <br />  <br />  <br /><strong>Note</strong>: After creating a project, you can send a request to <code>https://api.agora.io/dev/v1/signkey</code> to enable or disable the primary app certificate, or send a request to <code>https://api.agora.io/dev/v1/reset_signkey</code> to reset the primary app certificate.  <br />  <br /></td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"response-parameters\"><a href=\"https://docs.agora.io/en/video-calling/reference/agora-console-rest-api?platform=web#response-parameters\">Response parameters​</a></h4>\n<p>For details about possible response status codes, see the <a href=\"https://docs.agora.io/en/video-calling/reference/agora-console-rest-api?platform=web#response-status-codes\">Response status codes</a> table.</p>\n<p>If the status code is not <code>201</code>, the request fails. See the <code>message</code> field in the response body for the reason for this failure.</p>\n<p>If the status code is <code>201</code>, the request succeeds, and the response body includes the following parameters:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>project</code></td>\n<td>Object</td>\n<td>The information on the project, including the following fields:  <br />  <br />- <code>id</code>: String. The project ID  <br />- <code>name</code>: String. The project name.  <br />- <code>vendor_key</code>: String. The App ID of the project.  <br />- <code>sign_key</code>: String. The primary app certificate of the project.  <br />- <code>recording_server</code>: String. The IP address of the recording server.  <br />  <br />- Pay attention to this field if you use v1.9.0 and earlier versions of the Agora On-Premise Recording SDK.  <br />- Ignore this field if you use v1.11.0 and later versions of the Agora On-Premise Recording SDK.  <br />  <br />- <code>status</code>: Number. The status of the project:  <br />  <br />- <code>1</code>: The project is enabled.  <br />- <code>0</code>: The project is disabled.  <br />  <br />- <code>created</code>: Number. The Unix timestamp (in seconds) of when the project is created.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"response-example\"><a href=\"https://docs.agora.io/en/video-calling/reference/agora-console-rest-api?platform=web#response-example\">Response example​</a></h4>\n<p>The following is a response example for a successful request:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"project\": {\n      \"id\": \"xxxx\",\n      \"name\": \"project1\",\n      \"vendor_key\": \"4855xxxxxxxxxxxxxxxxxxxxxxxxeae2\",\n      \"sign_key\": \"4855xxxxxxxxxxxxxxxxxxxxxxxxeae2\",\n      \"recording_server\": null,\n      \"status\": 1,\n      \"created\": 1464165672\n    }\n}\n\n</code></pre>\n<h2 id=\"get-a-specified-project\"><a href=\"https://docs.agora.io/en/video-calling/reference/agora-console-rest-api?platform=web#get-a-specified-project\">Get a specified project​</a></h2>\n<p>Gets the information on a specified project.</p>\n<h4 id=\"prototype-1\"><a href=\"https://docs.agora.io/en/video-calling/reference/agora-console-rest-api?platform=web#prototype-1\">Prototype​</a></h4>\n<ul>\n<li>Method: <code>GET</code></li>\n<li>Endpoint: <code>https://api.agora.io/dev/v1/project</code></li>\n</ul>\n<h4 id=\"request-parameters-1\"><a href=\"https://docs.agora.io/en/video-calling/reference/agora-console-rest-api?platform=web#request-parameters-1\">Request Parameters​</a></h4>\n<p><strong>Query parameters</strong></p>\n<p>Pass in the following query parameters in the request URL:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>String</td>\n<td>(Required) The project ID, which can be obtained by calling the <a href=\"https://docs.agora.io/en/video-calling/reference/agora-console-rest-api?platform=web#get-all-projects\">Get all projects</a> API.</td>\n</tr>\n<tr>\n<td><code>name</code></td>\n<td>String</td>\n<td>(Required) The project name.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"request-example\"><a href=\"https://docs.agora.io/en/video-calling/reference/agora-console-rest-api?platform=web#request-example-1\">Request example​</a></h4>\n<p><strong>Request URL</strong></p>\n<p><code>https://api.agora.io/dev/v1/project?id=7sdnf3xRH&amp;name=project1</code></p>\n<h4 id=\"response-parameters-1\"><a href=\"https://docs.agora.io/en/video-calling/reference/agora-console-rest-api?platform=web#response-parameters-1\">Response parameters​</a></h4>\n<p>For details about possible response status codes, see the <a href=\"https://docs.agora.io/en/video-calling/reference/agora-console-rest-api?platform=web#response-status-codes\">Response status codes</a> table.</p>\n<p>If the status code is not <code>201</code>, the request fails. See the <code>message</code> field in the response body for the reason for this failure.</p>\n<p>If the status code is <code>201</code>, the request succeeds, and the response body includes the following parameters:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>projects</code></td>\n<td>Array</td>\n<td>The information on the projects. This Array consists of multiple Objects. Each Object shows the information on one project and includes the following fields:  <br />  <br />- <code>id</code>: String. The project ID.  <br />- <code>name</code>: String. The project name.  <br />- <code>vendor_key</code>: String. The App ID of the project.  <br />- <code>sign_key</code>: String. The primary App Certificate of the project.  <br />- <code>recording_server</code>: String. The IP of the recording server.  <br />  <br />- Pay attention to this field if you use v1.9.0 and earlier versions of the Agora On-Premise Recording SDK.  <br />- Ignore this field if you use v1.11.0 and later versions of the Agora On-Premise Recording SDK.  <br />  <br />- <code>status</code>: Number. The status of the project:  <br />  <br />- <code>1</code>: The project is enabled.  <br />- <code>0</code>: The project is disabled.  <br />  <br />- <code>created</code>: Number. The Unix timestamp (in seconds) of when the project is created.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"response-example-1\"><a href=\"https://docs.agora.io/en/video-calling/reference/agora-console-rest-api?platform=web#response-example-1\">Response example​</a></h4>\n<p>The following is a response example for a successful request:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"projects\": [\n        {\n            \"id\": \"xxxx\",\n            \"name\": \"project1\",\n            \"sign_key\": \"4855xxxxxxxxxxxxxxxxxxxxxxxxeae2\",\n            \"vendor_key\": \"4855xxxxxxxxxxxxxxxxxxxxxxxxeae2\",\n            \"recording_server\": null,\n            \"status\": 1,\n            \"created\": 1464165672\n        }\n    ]\n}\n\n</code></pre>\n<h2 id=\"get-all-projects\"><a href=\"https://docs.agora.io/en/video-calling/reference/agora-console-rest-api?platform=web#get-all-projects\">Get all projects​</a></h2>\n<p>Gets the information on all your Agora projects.</p>\n<h4 id=\"prototype-2\"><a href=\"https://docs.agora.io/en/video-calling/reference/agora-console-rest-api?platform=web#prototype-2\">Prototype​</a></h4>\n<ul>\n<li>Method: <code>GET</code></li>\n<li>Endpoint: <code>https://api.agora.io/dev/v1/projects</code></li>\n</ul>\n<h4 id=\"request-example-1\"><a href=\"https://docs.agora.io/en/video-calling/reference/agora-console-rest-api?platform=web#request-example-2\">Request example​</a></h4>\n<p><strong>Request URL</strong></p>\n<p><code>https://api.agora.io/dev/v1/projects</code></p>\n<h4 id=\"response-parameters-2\"><a href=\"https://docs.agora.io/en/video-calling/reference/agora-console-rest-api?platform=web#response-parameters-2\">Response parameters​</a></h4>\n<p>For details about possible response status codes, see the <a href=\"https://docs.agora.io/en/video-calling/reference/agora-console-rest-api?platform=web#response-status-codes\">Response status codes</a> table.</p>\n<p>If the status code is not <code>201</code>, the request fails. See the <code>message</code> field in the response body for the reason for this failure.</p>\n<p>If the status code is <code>201</code>, the request succeeds, and the response body includes the following parameters:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>projects</code></td>\n<td>Array</td>\n<td>The information on the projects. This Array consists of multiple Objects. Each Object shows the information on one project and includes the following fields:  <br />  <br />- <code>id</code>: String. The project ID.  <br />- <code>name</code>: String. The project name.  <br />- <code>vendor_key</code>: String. The App ID of the project.  <br />- <code>sign_key</code>: String. The primary App Certificate of the project.  <br />- <code>recording_server</code>: String. The IP of the recording server.  <br />  <br />- Pay attention to this field if you use v1.9.0 and earlier versions of the Agora On-Premise Recording SDK.  <br />- Ignore this field if you use v1.11.0 and later versions of the Agora On-Premise Recording SDK.  <br />  <br />- <code>status</code>: Number. The status of the project:  <br />  <br />- <code>1</code>: The project is enabled.  <br />- <code>0</code>: The project is disabled.  <br />- <code>created</code>: Number. The Unix timestamp (in seconds) of when the project is created.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"response-example-2\"><a href=\"https://docs.agora.io/en/video-calling/reference/agora-console-rest-api?platform=web#response-example-2\">Response example​</a></h4>\n<p>The following is a response example for a successful request:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"projects\": [\n        {\n            \"id\": \"xxxx\",\n            \"name\": \"project1\",\n            \"sign_key\": \"4855xxxxxxxxxxxxxxxxxxxxxxxxeae2\",\n            \"vendor_key\": \"4855xxxxxxxxxxxxxxxxxxxxxxxxeae2\",\n            \"recording_server\": null,\n            \"status\": 1,\n            \"created\": 1464165672\n        },\n        {\n            \"id\": \"xxxx\",\n            \"name\": \"project1\",\n            \"sign_key\": \"2c01da6d6f6741df88ec47005f08572b\",\n            \"vendor_key\": \"eb00cd2b222a4eeaa24fc6046d90b227\",\n            \"recording_server\": null,\n            \"status\": 1,\n            \"created\": 1637153755\n        }\n    ]\n}\n\n</code></pre>\n<h2 id=\"disable-or-enable-a-project\"><a href=\"https://docs.agora.io/en/video-calling/reference/agora-console-rest-api?platform=web#disable-or-enable-a-project\">Disable or enable a project​</a></h2>\n<p>Disables or enables a specified Agora project.</p>\n<h4 id=\"prototype-3\"><a href=\"https://docs.agora.io/en/video-calling/reference/agora-console-rest-api?platform=web#prototype-3\">Prototype​</a></h4>\n<ul>\n<li>Method: <code>POST</code></li>\n<li>Endpoint: <code>https://api.agora.io/dev/v1/project_status</code></li>\n</ul>\n<h4 id=\"request-parameters-2\"><a href=\"https://docs.agora.io/en/video-calling/reference/agora-console-rest-api?platform=web#request-parameters-2\">Request parameters​</a></h4>\n<p><strong>Request body parameters</strong></p>\n<p>Pass in the following parameters in the request body:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>String</td>\n<td>(Required) The project ID, which can be obtained by calling the <a href=\"https://docs.agora.io/en/video-calling/reference/agora-console-rest-api?platform=web#get-all-projects\">Get all projects</a> API.</td>\n</tr>\n<tr>\n<td><code>status</code></td>\n<td>Number</td>\n<td>(Required) Whether to enable or disable the project:  <br />  <br />- <code>0</code>: Disable the project.  <br />- <code>1</code>: Enable the project.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"response-parameters-3\"><a href=\"https://docs.agora.io/en/video-calling/reference/agora-console-rest-api?platform=web#response-parameters-3\">Response parameters​</a></h4>\n<p>For details about possible response status codes, see the <a href=\"https://docs.agora.io/en/video-calling/reference/agora-console-rest-api?platform=web#response-status-codes\">Response status codes</a> table.</p>\n<p>If the status code is not <code>201</code>, the request fails. See the <code>message</code> field in the response body for the reason for this failure.</p>\n<p>If the status code is <code>201</code>, the request succeeds, and the response body includes the following parameters:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>project</code></td>\n<td>Object</td>\n<td>The information on the project, including the following fields:  <br />  <br />- <code>id</code>: String. The project ID.  <br />- <code>name</code>: String. The project name.  <br />- <code>vendor_key</code>: String. The App ID of the project.  <br />- <code>sign_key</code>: String. The primary app certificate of the project.  <br />- <code>recording_server</code>: String. The IP address of the recording server.  <br />  <br />- Pay attention to this field if you use v1.9.0 and earlier versions of the Agora On-Premise Recording SDK.  <br />- Ignore this field if you use v1.11.0 and later versions of the Agora On-Premise Recording SDK.  <br />  <br />- <code>status</code>: Number. The status of the project:  <br />  <br />- <code>1</code>: The project is enabled.  <br />- <code>0</code>: The project is disabled.  <br />  <br />- <code>created</code>: Number. The Unix timestamp (in seconds) of when the project is created.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"response-example-3\"><a href=\"https://docs.agora.io/en/video-calling/reference/agora-console-rest-api?platform=web#response-example-3\">Response example​</a></h4>\n<p>The following is a response example for a successful request:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"project\": {\n      \"id\": \"xxxx\",\n      \"name\": \"project1\",\n      \"vendor_key\": \"4855xxxxxxxxxxxxxxxxxxxxxxxxeae2\",\n      \"sign_key\": \"4855xxxxxxxxxxxxxxxxxxxxxxxxeae2\",\n      \"recording_server\": null,\n      \"status\": 1,\n      \"created\": 1464165672\n    }\n}\n\n</code></pre>\n<h2 id=\"set-the-ip-address-of-the-recording-server\"><a href=\"https://docs.agora.io/en/video-calling/reference/agora-console-rest-api?platform=web#set-the-ip-address-of-the-recording-server\">Set the IP address of the recording server​</a></h2>\n<p>Sets the IP of the recording server for a specified project.</p>\n<h4 id=\"prototype-4\"><a href=\"https://docs.agora.io/en/video-calling/reference/agora-console-rest-api?platform=web#prototype-4\">Prototype​</a></h4>\n<ul>\n<li>Method: <code>POST</code></li>\n<li>Endpoint: <code>https://api.agora.io/dev/v1/recording_config</code></li>\n</ul>\n<h4 id=\"request-parameters-3\"><a href=\"https://docs.agora.io/en/video-calling/reference/agora-console-rest-api?platform=web#request-parameters-3\">Request parameters​</a></h4>\n<p><strong>Request body parameters</strong></p>\n<p>Pass in the following parameters in the request body:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>String</td>\n<td>(Required) The project ID, which can be obtained by calling the <a href=\"https://docs.agora.io/en/video-calling/reference/agora-console-rest-api?platform=web#get-all-projects\">Get all projects</a> API.</td>\n</tr>\n<tr>\n<td><code>recording_server</code></td>\n<td>String</td>\n<td>(Required) The IP address of the recording server. This field takes effect only when you use v1.9.0 or earlier versions of Agora On-Premise Recording SDK.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"response-parameters-4\"><a href=\"https://docs.agora.io/en/video-calling/reference/agora-console-rest-api?platform=web#response-parameters-4\">Response parameters​</a></h4>\n<p>For details about possible response status codes, see the <a href=\"https://docs.agora.io/en/video-calling/reference/agora-console-rest-api?platform=web#response-status-codes\">Response status codes</a> table.</p>\n<p>If the status code is not <code>201</code>, the request fails. See the <code>message</code> field in the response body for the reason for this failure.</p>\n<p>If the status code is <code>201</code>, the request succeeds, and the response body includes the following parameters:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>project</code></td>\n<td>Object</td>\n<td>The information on the project, including the following fields:  <br />  <br />- <code>id</code>: String. The project ID.  <br />- <code>name</code>: String. The project name.  <br />- <code>vendor_key</code>: String. The App ID of the project.  <br />- <code>sign_key</code>: String. The primary app certificate of the project.  <br />- <code>recording_server</code>: String. The IP address of the recording server.  <br />  <br />- Pay attention to this field if you use v1.9.0 and earlier versions of the Agora On-Premise Recording SDK.  <br />- Ignore this field if you use v1.11.0 and later versions of the Agora On-Premise Recording SDK.  <br />  <br />- <code>status</code>: Number. The status of the project:  <br />  <br />- <code>1</code>: The project is enabled.  <br />- <code>0</code>: The project is disabled.  <br />  <br />- <code>created</code>: Number. The Unix timestamp (in seconds) of when the project is created.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"response-example-4\"><a href=\"https://docs.agora.io/en/video-calling/reference/agora-console-rest-api?platform=web#response-example-4\">Response example​</a></h4>\n<p>The following is a response example for a successful request:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"project\": {\n      \"id\": \"xxxx\",\n      \"name\": \"project1\",\n      \"vendor_key\": \"4855xxxxxxxxxxxxxxxxxxxxxxxxeae2\",\n      \"sign_key\": \"4855xxxxxxxxxxxxxxxxxxxxxxxxeae2\",\n      \"recording_server\": null,\n      \"status\": 1,\n      \"created\": 1464165672\n    }\n}\n\n</code></pre>\n<h2 id=\"enable-or-disable-the-primary-app-certificate\"><a href=\"https://docs.agora.io/en/video-calling/reference/agora-console-rest-api?platform=web#enable-or-disable-the-primary-app-certificate\">Enable or disable the primary app certificate​</a></h2>\n<p>Enables or disables the primary app certificate for a specified project.</p>\n<h4 id=\"prototype-5\"><a href=\"https://docs.agora.io/en/video-calling/reference/agora-console-rest-api?platform=web#prototype-5\">Prototype​</a></h4>\n<ul>\n<li>Method: <code>POST</code></li>\n<li>Endpoint: <code>https://api.agora.io/dev/v1/signkey</code></li>\n</ul>\n<h4 id=\"request-parameters-4\"><a href=\"https://docs.agora.io/en/video-calling/reference/agora-console-rest-api?platform=web#request-parameters-4\">Request parameters​</a></h4>\n<p><strong>Request body parameters</strong></p>\n<p>The following parameters are required in the request body:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>String</td>\n<td>(Required) The project ID, which can be obtained by calling the <a href=\"https://docs.agora.io/en/video-calling/reference/agora-console-rest-api?platform=web#get-all-projects\">Get all projects</a> API.</td>\n</tr>\n<tr>\n<td><code>enable</code></td>\n<td>Boolean a</td>\n<td>(Required) Whether to enable or disable the primary app certificate for the project:  <br />  <br />- true: (Default) Enable the primary app certificate.  <br />- false: Do not enable the primary app certificate.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"response-parameters-5\"><a href=\"https://docs.agora.io/en/video-calling/reference/agora-console-rest-api?platform=web#response-parameters-5\">Response parameters​</a></h4>\n<p>For details about possible response status codes, see the <a href=\"https://docs.agora.io/en/video-calling/reference/agora-console-rest-api?platform=web#response-status-codes\">Response status codes</a> table.</p>\n<p>If the status code is not <code>201</code>, the request fails. See the <code>message</code> field in the response body for the reason for this failure.</p>\n<p>If the status code is <code>201</code>, the request succeeds, and the response body includes the following parameters:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>project</code></td>\n<td>Object</td>\n<td>The information on the project, including the following fields:  <br />  <br />- <code>id</code>: String. The project ID.  <br />- <code>name</code>: String. The project name.  <br />- <code>vendor_key</code>: String. The App ID of the project.  <br />- <code>sign_key</code>: String. The primary app certificate of the project.  <br />- <code>recording_server</code>: String. The IP address of the recording server.  <br />  <br />- Pay attention to this field if you use v1.9.0 and earlier versions of the Agora On-Premise Recording SDK.  <br />- Ignore this field if you use v1.11.0 and later versions of the Agora On-Premise Recording SDK.  <br />  <br />- <code>status</code>: Number. The status of the project:  <br />  <br />- <code>1</code>: The project is enabled.  <br />- <code>0</code>: The project is disabled.  <br />  <br />- <code>created</code>: Number. The Unix timestamp (in seconds) of when the project is created.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"response-example-5\"><a href=\"https://docs.agora.io/en/video-calling/reference/agora-console-rest-api?platform=web#response-example-5\">Response example​</a></h4>\n<p>The following is a response example for a successful request:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"project\": {\n      \"id\": \"xxxx\",\n      \"name\": \"project1\",\n      \"vendor_key\": \"4855xxxxxxxxxxxxxxxxxxxxxxxxeae2\",\n      \"sign_key\": \"4855xxxxxxxxxxxxxxxxxxxxxxxxeae2\",\n      \"recording_server\": null,\n      \"status\": 1,\n      \"created\": 1464165672\n    }\n}\n\n</code></pre>\n<h2 id=\"reset-the-primary-app-certificate\"><a href=\"https://docs.agora.io/en/video-calling/reference/agora-console-rest-api?platform=web#reset-the-primary-app-certificate\">Reset the primary app certificate​</a></h2>\n<p>Resets the primary app certificate for a specified project.</p>\n<h4 id=\"prototype-6\"><a href=\"https://docs.agora.io/en/video-calling/reference/agora-console-rest-api?platform=web#prototype-6\">Prototype​</a></h4>\n<ul>\n<li>Method: <code>POST</code></li>\n<li>Endpoint: <code>https://api.agora.io/dev/v1/reset_signkey</code></li>\n</ul>\n<h4 id=\"request-parameter\"><a href=\"https://docs.agora.io/en/video-calling/reference/agora-console-rest-api?platform=web#request-parameter\">Request parameter​</a></h4>\n<p><strong>Request body parameter</strong></p>\n<p>Pass in the following parameter in the request body:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>String</td>\n<td>(Required) The project ID, which can be obtained by calling the <a href=\"https://docs.agora.io/en/video-calling/reference/agora-console-rest-api?platform=web#get-all-projects\">Get all projects</a> API.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"response-parameters-6\"><a href=\"https://docs.agora.io/en/video-calling/reference/agora-console-rest-api?platform=web#response-parameters-6\">Response parameters​</a></h4>\n<p>For details about possible response status codes, see the <a href=\"https://docs.agora.io/en/video-calling/reference/agora-console-rest-api?platform=web#response-status-codes\">Response status codes</a> table.</p>\n<p>If the status code is not <code>201</code>, the request fails. See the <code>message</code> field in the response body for the reason for this failure.</p>\n<p>If the status code is <code>201</code>, the request succeeds, and the response body includes the following parameters:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>project</code></td>\n<td>Object</td>\n<td>The information on the project, including the following fields:  <br />  <br />- <code>id</code>: String. The project ID.  <br />- <code>name</code>: String. The project name.  <br />- <code>vendor_key</code>: String. The App ID of the project.  <br />- <code>sign_key</code>: String. The primary app certificate of the project.  <br />- <code>recording_server</code>: String. The IP address of the recording server.  <br />  <br />- Pay attention to this field if you use v1.9.0 and earlier versions of the Agora On-Premise Recording SDK.  <br />- Ignore this field if you use v1.11.0 and later versions of the Agora On-Premise Recording SDK.  <br />  <br />- <code>status</code>: Number. The status of the project:  <br />  <br />- <code>1</code>: The project is enabled.  <br />- <code>0</code>: The project is disabled.  <br />  <br />- <code>created</code>: Number. The Unix timestamp (in seconds) of when the project is created.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"response-example-6\"><a href=\"https://docs.agora.io/en/video-calling/reference/agora-console-rest-api?platform=web#response-example-6\">Response example​</a></h4>\n<p>The following is a response example for a successful request:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"project\": {\n      \"id\": \"xxxx\",\n      \"name\": \"project1\",\n      \"vendor_key\": \"4855xxxxxxxxxxxxxxxxxxxxxxxxeae2\",\n      \"sign_key\": \"4855xxxxxxxxxxxxxxxxxxxxxxxxeae2\",\n      \"recording_server\": null,\n      \"status\": 1,\n      \"created\": 1464165672\n    }\n}\n\n</code></pre>\n<h2 id=\"get-project-usage\"><a href=\"https://docs.agora.io/en/video-calling/reference/agora-console-rest-api?platform=web#get-project-usage\">Get project usage​</a></h2>\n<p>Gets the usage data of a specified project.</p>\n<h4 id=\"prototype-7\"><a href=\"https://docs.agora.io/en/video-calling/reference/agora-console-rest-api?platform=web#prototype-7\">Prototype​</a></h4>\n<ul>\n<li>Method: <code>GET</code></li>\n<li>Endpoint: <code>https://api.agora.io/dev/v3/usage</code></li>\n</ul>\n<h4 id=\"request-parameters-5\"><a href=\"https://docs.agora.io/en/video-calling/reference/agora-console-rest-api?platform=web#request-parameters-5\">Request parameters​</a></h4>\n<p><strong>Query parameters</strong></p>\n<p>Pass the following query parameters in the request path:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>project_id</code></td>\n<td>String</td>\n<td>(Required) The project ID, which can be obtained by calling the <a href=\"https://docs.agora.io/en/video-calling/reference/agora-console-rest-api?platform=web#get-all-projects\">Get all projects</a> API.</td>\n</tr>\n<tr>\n<td><code>from_date</code></td>\n<td>String</td>\n<td>(Required) The start date of the query, UTC time. For example, 2020-01-01.</td>\n</tr>\n<tr>\n<td><code>to_date</code></td>\n<td>String</td>\n<td>(Required) The end date of the query, UTC time. For example, 2020-01-31.</td>\n</tr>\n<tr>\n<td><code>business</code></td>\n<td>String a</td>\n<td>(Required) The business type. You can choose one of the following values:  <br />  <br />- <code>default</code>: Audio and video. The usage on Miniapp is not included.  <br />- <code>transcodeDuration</code>: Transcoding.  <br />- <code>recording</code>: On-premise recording.  <br />- <code>cloudRecording</code>: Cloud recording.  <br />- <code>miniapp</code>: Miniapp.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"request-example-2\"><a href=\"https://docs.agora.io/en/video-calling/reference/agora-console-rest-api?platform=web#request-example-7\">Request example​</a></h4>\n<p><strong>Request path</strong></p>\n<p><code>https://api.agora.io/dev/v3/usage?project_id=rxxxxxxj5u&amp;from_date=2021-10-12&amp;to_date=2021-12-14&amp;business=default</code></p>\n<h4 id=\"response-parameters-7\"><a href=\"https://docs.agora.io/en/video-calling/reference/agora-console-rest-api?platform=web#response-parameters-7\">Response parameters​</a></h4>\n<p>For details about possible response status codes, see the <a href=\"https://docs.agora.io/en/video-calling/reference/agora-console-rest-api?platform=web#response-status-codes\">Response status codes</a> table.</p>\n<p>If the status code is not <code>200</code>, the request fails. See the <code>message</code> field in the response body for the reason for this failure.</p>\n<p>If the status code is <code>200</code>, the request succeeds, and the response body includes the following parameters:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>meta</code></td>\n<td>Object</td>\n<td>Metadata, which describes the meaning of <code>durationAudioAll</code>, <code>durationVideo1080P</code>, <code>durationVideo2K</code>, <code>durationVideo4K</code>, <code>durationVideoHd</code> and <code>durationVideoHdp</code> in the <code>usage</code> parameter.  <br />  <br />- <code>durationAudioAll</code>: Object. Total audio duration.  <br />  <br />- <code>en</code>: String . <code>durationAudioAll</code> in English, that is, \"Total Audio Duration\".  <br />- <code>unit</code>: String. The unit of audio duration, in seconds.  <br />  <br />- <code>durationVideo1080P</code>: Object. Total Full HD video duration.  <br />  <br />- <code>en</code>: String . <code>durationVideo1080P</code> in English, that is, \"Full HD Video Duration (including Recording)\".  <br />- <code>unit</code>: String . The unit of Full HD video duration, in seconds.  <br />  <br />- <code>durationVideo2K</code>: Object. Total duration of 2K video.  <br />  <br />- <code>en</code>: String. <code>durationVideo2K</code> in English, that is, \"2K Video Duration（including Recording)\".  <br />- <code>unit</code>: String . The unit of 2K video duration, in seconds.  <br />  <br />- <code>durationVideo4K</code>: Object. Total duration of 2K+ video.  <br />  <br />- <code>en</code>: String. <code>durationVideo4K</code> in English, that is, \"2K+ Video Duration（including Recording)\".  <br />- <code>unit</code>: String. The unit of 2K+ video duration, in seconds.  <br />  <br />- <code>durationVideoHd</code>: Total duration of HD video.  <br />  <br />- <code>en</code>: String. <code>durationVideoHd</code> in English, that is, \"HD Video Duration (including On premise Recording)\".  <br />- <code>unit</code>: String. The unit of HD video duration, in seconds.  <br />  <br />- <code>durationVideoHdp</code>: Total duration of Hdp video.  <br />  <br />- <code>en</code>: String. <code>durationVideoHdp</code> in English, that is, \"HDP Video Duration（including Recording)\".  <br />- <code>unit</code>: String. The unit of HDP video duration, in seconds.</td>\n</tr>\n<tr>\n<td><code>usages</code></td>\n<td>Array</td>\n<td>Usage of the specified project. This array consists of multiple objects. Each object shows the usage of a specific day and includes the following fields:  <br />  <br />- <code>date</code>: Number. The query date, using UTC time and Unix timestamp.  <br />- <code>usage</code>: Object. The usage of the query date.  <br />- <code>durationAudioAll</code>: Number. Total duration of the audio, in seconds.  <br />- <code>durationVideo1080P</code>: Number. Total duration of Full HD video, in seconds.  <br />- <code>durationVideo2K</code>: Number. Total duration of 2K video, in seconds.  <br />- <code>durationVideo4K</code>: Number. Total duration of 2K+ video, in seconds.  <br />- <code>durationVideoHd</code>: Number. Total duration of HD video, in seconds.  <br />- <code>durationVideoHdp</code>: Number. Total duration of HDP video, in seconds.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"response-example-7\"><a href=\"https://docs.agora.io/en/video-calling/reference/agora-console-rest-api?platform=web#response-example-7\">Response example​</a></h4>\n<p>The following is a response example for a successful request:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"meta\": {\n        \"durationAudioAll\": {\n            \"en\": \"Total Audio Duration\",\n            \"unit\": \"second\"\n        },\n        \"durationVideo1080P\": {\n            \"en\": \"Full HD Video Duration（including Recording)\",\n            \"unit\": \"second\"\n        },\n        \"durationVideo2K\": {\n            \"en\": \"2K Video Duration（including Recording)\",\n            \"unit\": \"second\"\n        },\n        \"durationVideo4K\": {\n            \"en\": \"4K Video Duration（including Recording)\",\n            \"unit\": \"second\"\n        },\n        \"durationVideoHd\": {\n            \"en\": \"HD Video Duration（including Recording）\",\n            \"unit\": \"second\"\n        },\n        \"durationVideoHdp\": {\n            \"en\": \"HDP Video Duration（including Recording)\",\n            \"unit\": \"second\"\n        }\n    },\n    \"usages\": [\n        {\n            \"date\": \"2021-10-12T00:00:00.000Z\",\n            \"usage\": {\n                \"durationAudioAll\": 0,\n                \"durationVideo1080P\": 0,\n                \"durationVideo2K\": 0,\n                \"durationVideo4K\": 0,\n                \"durationVideoHd\": 0,\n                \"durationVideoHdp\": 0\n            }\n        },\n        {\n            \"date\": \"2021-10-13T00:00:00.000Z\",\n            \"usage\": {\n                \"durationAudioAll\": 779,\n                \"durationVideo1080P\": 0,\n                \"durationVideo2K\": 0,\n                \"durationVideo4K\": 0,\n                \"durationVideoHd\": 60,\n                \"durationVideoHdp\": 0\n            }\n        },\n        {\n            \"date\": \"2021-10-14T00:00:00.000Z\",\n            \"usage\": {\n                \"durationAudioAll\": 0,\n                \"durationVideo1080P\": 0,\n                \"durationVideo2K\": 0,\n                \"durationVideo4K\": 0,\n                \"durationVideoHd\": 0,\n                \"durationVideoHdp\": 0\n            }\n        }\n    ]\n}\n\n</code></pre>\n<h2 id=\"response-status-codes\"><a href=\"https://docs.agora.io/en/video-calling/reference/agora-console-rest-api?platform=web#response-status-codes\">Response status codes​</a></h2>\n<p>The following table shows the possible response status codes.</p>\n<ul>\n<li>If the status code is <code>200</code> or <code>201</code>, the request succeeds.</li>\n<li>If the status code is neither <code>200</code> nor <code>201</code>, the request fails. See the <code>message</code> field in the response body for the reason for this failure.</li>\n</ul>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Response status code</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>200</td>\n<td>The request is successful.</td>\n</tr>\n<tr>\n<td>201</td>\n<td>The request has been fulfilled, resulting in the creation of a new resource.</td>\n</tr>\n<tr>\n<td>400</td>\n<td>Bad request. Possible reasons:  <br />  <br />- Duplicate project name.  <br />- Vendor is blocked.  <br />- The number of projects exceeds the maximum limit.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Unauthorized (incorrect App ID/Customer Certificate).</td>\n</tr>\n<tr>\n<td>403</td>\n<td>Forbidden.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>The requested resource could not be found.</td>\n</tr>\n<tr>\n<td>415</td>\n<td>Unsupported media type. Make sure that you set <code>Content-Type</code>in <code>Headers</code> as <code>application/json</code>.</td>\n</tr>\n<tr>\n<td>429</td>\n<td>Too many requests.</td>\n</tr>\n<tr>\n<td>500</td>\n<td>Internal error of the Agora RESTful API service.</td>\n</tr>\n</tbody>\n</table>\n</div><p><a href=\"https://docs.agora.io/en/video-calling/reference/agora-console-rest-api?platform=android\">https://docs.agora.io/en/video-calling/reference/agora-console-rest-api?platform=android</a></p>\n","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerCertificate}}"}]},"isInherited":false},"_postman_id":"17e4196c-5e11-4bb0-a447-bdf1b3896799"},{"name":"Cloud Recording Composite","item":[{"name":"acquire","event":[{"listen":"test","script":{"id":"36757890-b6a6-4e8e-9e65-b3b7607547a3","exec":["var jsonData = JSON.parse(responseBody);","var resourceId = jsonData.resourceId;","console.log(resourceId);","pm.collectionVariables.set(\"resourceId\", resourceId);"],"type":"text/javascript","packages":{}}},{"listen":"prerequest","script":{"id":"2f94744a-4cfe-409c-bf25-a4a2965a7dd2","exec":[""],"type":"text/javascript","packages":{}}}],"id":"6e47859b-5ab5-47b0-8095-5a3ec3dba54c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":false},"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"cname\": \"{{AccessChannel}}\",\n    \"uid\": \"{{RecordingUID}}\",\n    \"clientRequest\": {}\n}"},"url":"https://api.agora.io/v1/apps/{{APPID}}/cloud_recording/acquire","description":"<p>The RESTful API requires basic HTTP authentication. You need to set the Authorization parameter in every HTTP request header. </p>\n<blockquote>\n<p>Authorization header is not visible in Postman Web View, use <strong>Run In Postman</strong> button above to view full example snippet</p>\n</blockquote>\n<p>Use the Acquire endpoint to receive the reqwuired token (<code>resourceId</code>) needed for use with each of the other Agora.io Cloud Recording endpoints. </p>\n<p>If this method call succeeds, you will receive a <em>resource ID</em> (<code>resourceId</code>) from the HTTP response body. The <em>resource ID</em> is valid for five minutes, so you need to start recording with this <em>resource ID</em> within five minutes.</p>\n","urlObject":{"protocol":"https","path":["v1","apps","{{APPID}}","cloud_recording","acquire"],"host":["api","agora","io"],"query":[],"variable":[]}},"response":[],"_postman_id":"6e47859b-5ab5-47b0-8095-5a3ec3dba54c"},{"name":"start","event":[{"listen":"test","script":{"id":"2b9215dc-54f3-43c5-8b98-d44d471d7097","exec":["var jsonData = JSON.parse(responseBody);","var sid = jsonData.sid;","console.log(sid);","pm.collectionVariables.set(\"sid\", sid);"],"type":"text/javascript","packages":{}}}],"id":"18a8b41e-5f28-4bc7-b179-1ca9713c4dee","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":false},"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"cname\": \"{{AccessChannel}}\",\n    \"uid\": \"{{RecordingUID}}\",\n    \"clientRequest\": {\n        \"token\": \"\",\n        \"recordingConfig\": {\n            \"channelType\": 0,\n            \"streamTypes\": 2,\n            \"audioProfile\": 1,\n            \"videoStreamType\": 0,\n            \"maxIdleTime\": 120,\n            \"transcodingConfig\": {\n                \"width\": 360,\n                \"height\": 640,\n                \"fps\": 30,\n                \"bitrate\": 600,\n                \"maxResolutionUid\": \"1\",\n                \"mixedVideoLayout\": 1\n            }\n        },\n        \"recordingFileConfig\": {\n                \"avFileType\": [\n                    \"hls\",\n                    \"mp4\"\n                ]\n            },\n        \"storageConfig\": {\n            \"vendor\": {{StorageVendor}},\n            \"region\": {{StorageRegion}},\n            \"bucket\": \"{{Bucket}}\",\n            \"accessKey\": \"{{AccessKey}}\",\n            \"secretKey\": \"{{SecretKey}}\"\n        }\n    }\n}"},"url":"https://api.agora.io/v1/apps/{{APPID}}/cloud_recording/resourceid//mode/{{mode-type}}/start","description":"<p>Call the start method within five minutes after getting the <em>resource ID</em> to join a channel and start the recording.</p>\n<p>If this method call succeeds, you get a <em>recording ID</em> (<code>sid</code>) from the HTTP response body.</p>\n<blockquote>\n<p>Note: Agora Cloud Recording does not support string usernames (User Accounts). Ensure that every user in the channel has an integer UID. When you call the start method, ensure that the UID in the quotation marks is an integer UID, too.</p>\n</blockquote>\n","urlObject":{"protocol":"https","path":["v1","apps","{{APPID}}","cloud_recording","resourceid","","mode","{{mode-type}}","start"],"host":["api","agora","io"],"query":[],"variable":[]}},"response":[],"_postman_id":"18a8b41e-5f28-4bc7-b179-1ca9713c4dee"},{"name":"stop","event":[{"listen":"test","script":{"id":"1b095f44-a58f-4e02-b8f8-d96007cc1c12","exec":["// var jsonData = JSON.parse(responseBody);","// var serverResponse = jsonData.serverResponse","// console.log(serverResponse);","// postman.setEnvironmentVariable(\"uploadingStatus\", serverResponse.uploadingStatus);"],"type":"text/javascript"}}],"id":"a3b4129a-61e0-4d84-ae24-0a889c37dda4","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":false},"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=utf-8","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"cname\": \"{{AccessChannel}}\",\n    \"uid\": \"{{RecordingUID}}\",\n    \"clientRequest\": {}\n}"},"url":"https://api.agora.io/v1/apps/{{APPID}}/cloud_recording/resourceid//sid/{{sid}}/mode/{{mode-type}}/stop","description":"<p>Call the stop method to stop the recording.</p>\n<p>If this method call succeeds, you get the M3U8 filename and the current uploading status from the HTTP response body.</p>\n<blockquote>\n<p>Agora Cloud Recording automatically leaves the channel and stops recording when no user is in the channel for more than 30 seconds by default.</p>\n</blockquote>\n","urlObject":{"protocol":"https","path":["v1","apps","{{APPID}}","cloud_recording","resourceid","","sid","{{sid}}","mode","{{mode-type}}","stop"],"host":["api","agora","io"],"query":[],"variable":[]}},"response":[],"_postman_id":"a3b4129a-61e0-4d84-ae24-0a889c37dda4"},{"name":"updateLayout","event":[{"listen":"test","script":{"id":"2446ecc8-23de-4bad-9045-17a5cc4f6fa1","exec":[""],"type":"text/javascript"}}],"id":"b210ff9b-a378-4c98-8593-7d02b8456436","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":false},"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","type":"text","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"cname\": \"{{AccessChannel}}\",\n    \"uid\": \"{{RecordingUID}}\",\n    \"clientRequest\": {\n        \"mixedVideoLayout\": 3,\n        \"backgroundColor\": \"#FF0000\",\n        \"layoutConfig\": [\n            {\n                \"uid\": \"1\",\n                \"x_axis\": 0.1,\n                \"y_axis\": 0.1,\n                \"width\": 0.1,\n                \"height\": 0.1,\n                \"alpha\": 1.0,\n                \"render_mode\": 1\n            },\n            {\n                \"uid\": \"2\",\n                \"x_axis\": 0.2,\n                \"y_axis\": 0.2,\n                \"width\": 0.1,\n                \"height\": 0.1,\n                \"alpha\": 1.0,\n                \"render_mode\": 1\n            }\n        ]\n    }\n}"},"url":"https://api.agora.io/v1/apps/{{APPID}}/cloud_recording/resourceid//sid/{{sid}}/mode/{{mode-type}}/updateLayout","description":"<p>During a recording, you can call this method to update the video mixing layout multiple times.</p>\n<p>This method call overrides the existing layout configurations. </p>\n<p>For example, if you set the backgroundColor parameter as \"#FF0000\" (red) when starting a recording and call this method to update the layout without setting the backgroundColor parameter, the background color changes back to black (the default value).</p>\n<p>The following parameters are required in the URL.</p>\n<ul>\n<li><code>appid</code> <em>String</em> The App ID used in the channel to be recorded.</li>\n<li><code>resourceid</code> <em>String</em> The resource ID requested by the acquire method.</li>\n<li><code>sid</code> <em>String</em> The recording ID created by the start method.</li>\n<li><code>mode</code> <em>String</em> The recording mode. Supports individual mode (<code>individual</code>) and composite mode (<code>mix</code>).</li>\n</ul>\n<p>The following parameters are required in the request <code>body</code>.</p>\n<ul>\n<li><code>cname</code> <em>String</em> Name of the channel to be recorded.</li>\n<li><code>uid</code> <em>String</em> The UID of the recording client. A 32-bit unsigned integer ranging from 1 to (232-1) that is unique in the channel, for example \"527841\". <em>Do not set it as \"0\"</em></li>\n<li><code>clientRequest</code>  <em>JSON Object</em> A specific client request. See full details below.</li>\n</ul>\n<p><code>clientRequest</code> requires the following parameters:</p>\n<ul>\n<li><code>maxResolutionUid</code> (Optional) String. When the layoutType parameter is set as 2 (vertical layout), you can specify the UID of the large video window by this parameter.</li>\n<li><code>mixedVideoLayout</code> (Optional) Number. Sets the video mixing layout. 0, 1, and 2 are the predefined layouts. If you set this parameter as 3, you need to set the layout by the layoutConfig parameter.</li>\n<li><code>0</code> (Default) Floating layout: The first user in the channel occupies the full canvas. The other users occupy the small regions on top of the canvas, starting from the bottom left corner. The small regions are arranged in the order of the users joining the channel. This layout supports one full-size region and up to four rows of small regions on top with four regions per row, comprising 17 users.</li>\n<li><code>1</code> Best fit layout: This is a grid layout. The number of columns and rows and the grid size vary depending on the number of users in the channel. This layout supports up to 17 users.</li>\n<li><code>2</code> Vertical layout: One large region is displayed on the left edge of the canvas, and several smaller regions are displayed along the right edge of the canvas. The space on the right supports up to 2 columns of small regions with 8 regions per column. This layout supports up to 17 users.</li>\n<li><code>3</code> Customized layout: Set the layoutConfig parameter to customize the layout.</li>\n<li><code>backgroundColor</code> (Optional) String. The background color of the canvas (the display window or screen) in RGB hex value. The string starts with a \"#\". The default value is \"#000000\", the black color.</li>\n<li><code>layoutConfig</code> (Optional) JSONArray. An array of the configuration of each user's region. Supports 17 users at most. Each user's region configuration is a JSON object with the following parameters:</li>\n<li><code>uid</code> (Optional) String. The string contains the UID of the user displaying the video in the region. If this parameter is not specified, the configurations apply in the order of the users joining the channel.</li>\n<li><code>x_axis</code> (Mandatory) Float. Relative horizontal position of the top-left corner of the region. The value is between 0.0 (leftmost) and 1.0 (rightmost). x_axis can also be an integer 0 or 1.</li>\n<li><code>y_axis</code> (Mandatory) Float. Relative vertical position of the top-left corner of the region. The value is between 0.0 (top) and 1.0 (bottom). y_axis can also be an integer 0 or 1.</li>\n<li><code>width</code> (Mandatory) Float. Relative width of the region. The value is between 0.0 and 1.0. width can also be an integer 0 or 1.</li>\n<li><code>height</code> (Mandatory) Float. Relative height of the region. The value is between 0.0 and 1.0. height can also be an integer 0 or 1.</li>\n<li><code>alpha</code> (Optional) Float. The transparency of the image. The value is between 0.0 (transparent) and 1.0 (opaque). The default value is 1.0.</li>\n<li><code>render_mode</code> (Optional) Number. The video display mode:</li>\n<li><code>0</code> (Default) Cropped mode: Uniformly scales the video until it fills the visible boundaries (cropped). One dimension of the video may have clipped contents.</li>\n<li><code>1</code> Fit mode: Uniformly scales the video until one of its dimension fits the boundary (zoomed to fit). Areas that are not filled due to the disparity in the aspect ratio will be filled with black.</li>\n</ul>\n","urlObject":{"protocol":"https","path":["v1","apps","{{APPID}}","cloud_recording","resourceid","","sid","{{sid}}","mode","{{mode-type}}","updateLayout"],"host":["api","agora","io"],"query":[],"variable":[]}},"response":[],"_postman_id":"b210ff9b-a378-4c98-8593-7d02b8456436"},{"name":"query","event":[{"listen":"test","script":{"exec":["// var jsonData = JSON.parse(responseBody);","// var serverResponse = jsonData.serverResponse","// console.log(serverResponse);","// postman.setEnvironmentVariable(\"serverResponseFileList\", serverResponse.fileList);","// postman.setEnvironmentVariable(\"serverResponseStatus\", serverResponse.status);"],"type":"text/javascript","id":"d6e2ee1c-034e-4174-aaf1-93ca248b810c"}}],"id":"b7ff0d1e-d641-4311-8e24-55b4d579502b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"}],"url":"https://api.agora.io/v1/apps/{{APPID}}/cloud_recording/resourceid//sid/{{sid}}/mode/{{mode-type}}/query","description":"<p>During the recording, you can call the query method to check the recording status multiple times.</p>\n<p>If this method call succeeds, you get the M3U8 filename and the current recording status from the HTTP response body.</p>\n","urlObject":{"protocol":"https","path":["v1","apps","{{APPID}}","cloud_recording","resourceid","","sid","{{sid}}","mode","{{mode-type}}","query"],"host":["api","agora","io"],"query":[],"variable":[]}},"response":[],"_postman_id":"b7ff0d1e-d641-4311-8e24-55b4d579502b"},{"name":"get-ncs-ip","id":"767310bf-efdb-46cf-bb7d-1583eb041aca","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":"https://api.agora.io/v1/ncs/ip","urlObject":{"protocol":"https","path":["v1","ncs","ip"],"host":["api","agora","io"],"query":[],"variable":[]}},"response":[],"_postman_id":"767310bf-efdb-46cf-bb7d-1583eb041aca"}],"id":"f1e01a23-d164-47b0-b155-eb1bd78fcde7","description":"<p>A collection of the Cloud Recording API requests. With the Agora Cloud Recording RESTful API, you can send requests to do the following things:</p>\n<ul>\n<li>Start/Stop cloud recording</li>\n<li>Query the recording status</li>\n</ul>\n<p>Agora Cloud Recording API - <a href=\"https://docs.agora.io/en/cloud-recording/cloud_recording_rest?platform=All%20Platforms\">official documentation</a></p>\n<blockquote>\n<p><strong>Note</strong>: due to limitation with the Web view of this collection, certain elements are not visibile within the web version of this documentation use the <strong>Run In Postman</strong> button above to view full examples of each snippet </p>\n</blockquote>\n<h2 id=\"demo-variables\">Demo Variables</h2>\n<p>The variables below are used throughout this documentation. Use the <em>Run In Postman</em> button above to open the collection within Postman and set up an environment with the variables below.</p>\n<ul>\n<li>APPID</li>\n<li>CustomerID</li>\n<li>CustomerSecret</li>\n<li>resourceId</li>\n<li>AccessChannel</li>\n<li>RecordingUID</li>\n<li>StorageVendor</li>\n<li>StorageRegion</li>\n<li>Bucket</li>\n<li>AccessKey</li>\n<li>SecretKey</li>\n<li>sid</li>\n</ul>\n<img src=\"https://miro.medium.com/max/3200/1\\\\\\*ok4R5IgAfVKtkcRomdbZlA.png\" />\n\n<blockquote>\n<p>Agora Cloud Recording does not support string usernames (User Accounts). Ensure that every user in the channel has an integer UID. When you call the start method, ensure that the UID in the quotation marks is an integer UID, too. </p>\n</blockquote>\n<h2 id=\"recording-id\">Recording ID</h2>\n<p>The <em>recording ID</em> is the unique identification of a recording. Each cloud recording session has a unique <em>recording ID</em>.</p>\n<p>After starting the recording with the start request, you can get the <em>recording ID</em> from its response. You can also get the recording ID from any of the callbacks.</p>\n<blockquote>\n<p>One resource ID can only be used for one recording session. </p>\n</blockquote>\n<h2 id=\"playlist-of-the-recorded-files\">Playlist of the recorded files</h2>\n<p>In individual recording mode, if you choose to record audio or video only, each recording session generates one M3U8 file; if you record both audio and video, each recording session generates two M3U8 files. The M3U8 file is a playlist pointing to all the split TS/WebM files of the recording. You can use the M3U8 file to play and manage the recorded files. For detailed information about the naming conventions of the M3U8 and TS/WebM files in individual recording mode, see Manage Recorded Files.</p>\n<p>In composite recording mode, each recording session generates one M3U8 file. The name of the M3U8 file is <code>sid_cname.m3u8</code>, which consists of the recording ID and the channel name.</p>\n<p>If you want to receive the M3U8, the ts files, and a mp4, please add this config to your start request.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">        \"recordingFileConfig\": {\n            \"avFileType\": [\n                \"hls\",\n                \"mp4\"\n            ]\n        }\n\n</code></pre>\n<h2 id=\"server-events-and-callbacks\">Server Events and Callbacks</h2>\n<p>The Agora Cloud Recording RESTful API provides a callback service. After enabling the callback service, you can receive notifications about cloud recording events.</p>\n<blockquote>\n<p>The Agora server automatically uploads the recorded files. Pay attention to the following callbacks. </p>\n</blockquote>\n<p>During the recording, the SDK triggers the following callback once every minute:</p>\n<ul>\n<li><code>uploading_progress</code> Reports the upload progress (%) of the recorded files.<br />  After the recording stops, the SDK triggers one of the following callbacks:</li>\n<li><code>uploaded</code> Occurs when all the recorded files are uploaded to the third-party cloud storage.</li>\n<li><code>backuped</code> Occurs when some of the recorded files fail to upload to the third-party cloud storage and upload to Agora Cloud Backup instead. Agora Cloud Backup automatically uploads these files to your cloud storage.</li>\n</ul>\n<blockquote>\n<p>If you cannot play the recorded files after five minutes, contact Agora technical support. </p>\n</blockquote>\n<blockquote>\n<p>If uploading takes a long time, the stop response returns the <code>HTTP 206</code> status code, indicating that the recording stops but the uploading status is <code>unknown</code>. You need to get the uploading status from the callback events. </p>\n</blockquote>\n<h2 id=\"errors-and-other-considerations\">Errors and Other Considerations</h2>\n<blockquote>\n<p>The Agora.io Cloud Recording automatically leaves the channel and stops recording when no user is in the channel for more than 30 seconds by default. </p>\n</blockquote>\n<ul>\n<li>Call <code>acquire</code> to get a <em>resource ID</em> before calling <code>start</code></li>\n<li>Use one <em>resource ID</em> for only one start request</li>\n<li>Do not call <code>query</code> after calling <code>stop</code></li>\n</ul>\n<p><em>The following are some common errors:</em></p>\n<ul>\n<li>calling enpoints with sequence: <code>acquire</code> ➡ <code>start</code> ➡ <code>start</code><ul>\n<li>Repeating the start request with the same resource ID returns the <code>HTTP 201</code> status code and error <code>code: 7</code></li>\n</ul>\n</li>\n<li>calling enpoints with sequence: <code>acquire</code> ➡ <code>start</code> ➡ <code>acquire</code> ➡ <code>start</code><ul>\n<li>Repeating the <code>acquire</code> and <code>start</code> requests with the same parameters returns the <code>HTTP 400</code> status code and error <code>code: 53</code></li>\n</ul>\n</li>\n<li>calling enpoints with sequence: <code>acquire</code> ➡ <code>start</code> ➡ Recording stops ➡ <code>query</code><ul>\n<li>Calling <code>query</code> after the recording stops returns the <code>HTTP 404</code> status code and error <code>code: 404</code></li>\n</ul>\n</li>\n<li>The recording stops in the following situations:<ul>\n<li>When you call <code>stop</code>.</li>\n<li>When no user is in the channel for the idle time (30 seconds by default).</li>\n<li>When the asynchronous parameter check finds errors. This means that some parameters of <code>transcodingConfig</code> or <code>storageConfig</code> in the <code>start</code> request are invalid.</li>\n</ul>\n</li>\n<li>calling enpoints with sequence: <code>acquire</code> ➡ <code>start</code> ➡ <code>stop &amp; query</code><ul>\n<li>Calling <code>stop</code> together with <code>query</code> affects the response of <code>stop</code>: The <code>HTTP 206</code> status code and the response does not have the fileList field.</li>\n</ul>\n</li>\n</ul>\n","event":[{"listen":"prerequest","script":{"id":"f2c31263-c087-4638-8ed4-92f8fc9e2ebc","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"e86900c8-032b-430a-b8c2-c4b3acb0a008","type":"text/javascript","exec":[""]}}],"_postman_id":"f1e01a23-d164-47b0-b155-eb1bd78fcde7","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":true,"source":{"_postman_id":"d7da7175-1801-46b9-8ee4-e5c9e3010da3","id":"d7da7175-1801-46b9-8ee4-e5c9e3010da3","name":"Agora RESTful APIs","type":"collection"}}},{"name":"Cloud Recording Individual","item":[{"name":"acquire","event":[{"listen":"test","script":{"id":"54de2a4c-39f3-4525-89ba-9f36e0f0d095","exec":["var jsonData = JSON.parse(responseBody);","var resourceId = jsonData.resourceId;","console.log(resourceId);","pm.collectionVariables.set(\"resourceId\", resourceId);"],"type":"text/javascript","packages":{}}},{"listen":"prerequest","script":{"id":"5a07f181-a904-4816-b397-98b739bbe357","exec":[""],"type":"text/javascript","packages":{}}}],"id":"132b19d1-0691-4f02-b25e-098384632594","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":false},"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"cname\": \"{{AccessChannel}}\",\n    \"uid\": \"{{RecordingUID}}\",\n    \"clientRequest\": {}\n}"},"url":"https://api.agora.io/v1/apps/{{APPID}}/cloud_recording/acquire","description":"<p>The RESTful API requires basic HTTP authentication. You need to set the Authorization parameter in every HTTP request header.</p>\n<blockquote>\n<p>Authorization header is not visible in Postman Web View, use <strong>Run In Postman</strong> button above to view full example snippet </p>\n</blockquote>\n<p>Use the Acquire endpoint to receive the reqwuired token (<code>resourceId</code>) needed for use with each of the other Agora.io Cloud Recording endpoints.</p>\n<p>If this method call succeeds, you will receive a <em>resource ID</em> (<code>resourceId</code>) from the HTTP response body. The <em>resource ID</em> is valid for five minutes, so you need to start recording with this <em>resource ID</em> within five minutes.</p>\n","urlObject":{"protocol":"https","path":["v1","apps","{{APPID}}","cloud_recording","acquire"],"host":["api","agora","io"],"query":[],"variable":[]}},"response":[],"_postman_id":"132b19d1-0691-4f02-b25e-098384632594"},{"name":"start","event":[{"listen":"test","script":{"id":"c4a29651-b9d6-49a3-8b80-4ebddb250d3d","exec":["var jsonData = JSON.parse(responseBody);","var sid = jsonData.sid;","console.log(sid);","pm.collectionVariables.set(\"sid\", sid);"],"type":"text/javascript","packages":{}}}],"id":"4825854b-b3c3-4501-899b-4a4993e4bb87","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":false},"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"cname\": \"{{AccessChannel}}\",\n    \"uid\": \"{{RecordingUID}}\",\n    \"clientRequest\": {\n        \"token\": \"\",\n        \"recordingConfig\": {\n            \"channelType\": 0,\n            \"streamTypes\": 2,\n            \"videoStreamType\": 0,\n            \"streamMode\": \"standard\", //remove before running or it won't work. Standard mode creates a MPD with WebM, removing steamMode creates M3U8 with TS\n            \"maxIdleTime\": 120,\n            \"subscribeVideoUids\": [\n                \"#allstream#\"\n            ],\n            \"subscribeAudioUids\": [\n                \"#allstream#\"\n            ],\n            \"subscribeUidGroup\": 0\n        },\n        \"storageConfig\": {\n            \"vendor\": {{StorageVendor}},\n            \"region\": {{StorageRegion}},\n            \"bucket\": \"{{Bucket}}\",\n            \"accessKey\": \"{{AccessKey}}\",\n            \"secretKey\": \"{{SecretKey}}\"\n        }\n    }\n}"},"url":"https://api.agora.io/v1/apps/{{APPID}}/cloud_recording/resourceid//mode/{{mode-type}}/start","description":"<p>Call the start method within five minutes after getting the <em>resource ID</em> to join a channel and start the recording.</p>\n<p>If this method call succeeds, you get a <em>recording ID</em> (<code>sid</code>) from the HTTP response body.</p>\n<blockquote>\n<p>Note: Agora Cloud Recording does not support string usernames (User Accounts). Ensure that every user in the channel has an integer UID. When you call the start method, ensure that the UID in the quotation marks is an integer UID, too.</p>\n</blockquote>\n","urlObject":{"protocol":"https","path":["v1","apps","{{APPID}}","cloud_recording","resourceid","","mode","{{mode-type}}","start"],"host":["api","agora","io"],"query":[],"variable":[]}},"response":[],"_postman_id":"4825854b-b3c3-4501-899b-4a4993e4bb87"},{"name":"stop","event":[{"listen":"test","script":{"id":"1313a971-41b3-4b4a-a466-97e451a3b13d","exec":["// var jsonData = JSON.parse(responseBody);","// var serverResponse = jsonData.serverResponse","// console.log(serverResponse);","// postman.setEnvironmentVariable(\"uploadingStatus\", serverResponse.uploadingStatus);"],"type":"text/javascript"}}],"id":"3d965878-cc1e-4351-b4d1-d82e6ea764de","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":false},"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=utf-8","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"cname\": \"{{AccessChannel}}\",\n    \"uid\": \"{{RecordingUID}}\",\n    \"clientRequest\": {}\n}"},"url":"https://api.agora.io/v1/apps/{{APPID}}/cloud_recording/resourceid//sid/{{sid}}/mode/{{mode-type}}/stop","description":"<p>Call the stop method to stop the recording.</p>\n<p>If this method call succeeds, you get the M3U8 filename and the current uploading status from the HTTP response body.</p>\n<blockquote>\n<p>Agora Cloud Recording automatically leaves the channel and stops recording when no user is in the channel for more than 30 seconds by default.</p>\n</blockquote>\n","urlObject":{"protocol":"https","path":["v1","apps","{{APPID}}","cloud_recording","resourceid","","sid","{{sid}}","mode","{{mode-type}}","stop"],"host":["api","agora","io"],"query":[],"variable":[]}},"response":[],"_postman_id":"3d965878-cc1e-4351-b4d1-d82e6ea764de"},{"name":"query","event":[{"listen":"test","script":{"exec":["// var jsonData = JSON.parse(responseBody);","// var serverResponse = jsonData.serverResponse","// console.log(serverResponse);","// postman.setEnvironmentVariable(\"serverResponseFileList\", serverResponse.fileList);","// postman.setEnvironmentVariable(\"serverResponseStatus\", serverResponse.status);"],"type":"text/javascript","id":"d9074bf0-d534-42d6-a55c-71297c690ad0"}}],"id":"439967bc-95a9-41b8-a7db-d07a5e694615","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"}],"url":"https://api.agora.io/v1/apps/{{APPID}}/cloud_recording/resourceid//sid/{{sid}}/mode/{{mode-type}}/query","description":"<p>During the recording, you can call the query method to check the recording status multiple times.</p>\n<p>If this method call succeeds, you get the M3U8 filename and the current recording status from the HTTP response body.</p>\n","urlObject":{"protocol":"https","path":["v1","apps","{{APPID}}","cloud_recording","resourceid","","sid","{{sid}}","mode","{{mode-type}}","query"],"host":["api","agora","io"],"query":[],"variable":[]}},"response":[],"_postman_id":"439967bc-95a9-41b8-a7db-d07a5e694615"}],"id":"d3952ff0-9cd7-4a82-abec-29b63735cb4f","description":"<p>A collection of the Cloud Recording API requests. With the Agora.io Cloud Recording RESTful API, you can send requests to do the following things:</p>\n<ul>\n<li>Start/Stop cloud recording</li>\n<li>Query the recording status</li>\n</ul>\n<p>Agora.io Cloud Recording API - <a href=\"https://docs.agora.io/en/cloud-recording/cloud_recording_rest?platform=All%20Platforms\">official documentation</a></p>\n<blockquote>\n<p><strong>Note</strong>: due to limitation with the Web view of this collection, certain elements are not visibile within the web version of this documentation use the <strong>Run In Postman</strong> button above to view full examples of each snippet </p>\n</blockquote>\n<h2 id=\"demo-variables\">Demo Variables</h2>\n<p>The variables below are used throughout this documentation. Use the <em>Run In Postman</em> button above to open the collection within Postman and set up an environment with the variables below.</p>\n<ul>\n<li><p>APPID</p>\n</li>\n<li><p>CustomerID</p>\n</li>\n<li><p>CustomerSecret</p>\n</li>\n<li><p>resourceId</p>\n</li>\n<li><p>AccessChannel</p>\n</li>\n<li><p>RecordingUID</p>\n</li>\n<li><p>StorageVendor</p>\n</li>\n<li><p>StorageRegion</p>\n</li>\n<li><p>Bucket</p>\n</li>\n<li><p>AccessKey</p>\n</li>\n<li><p>SecretKey</p>\n</li>\n<li><p>sid</p>\n</li>\n</ul>\n<img src=\"https://miro.medium.com/max/3200/1\\*ok4R5IgAfVKtkcRomdbZlA.png\" />\n\n<blockquote>\n<p>Agora Cloud Recording does not support string usernames (User Accounts). Ensure that every user in the channel has an integer UID. When you call the start method, ensure that the UID in the quotation marks is an integer UID, too. </p>\n</blockquote>\n<h2 id=\"recording-id\">Recording ID</h2>\n<p>The <em>recording ID</em> is the unique identification of a recording. Each cloud recording session has a unique <em>recording ID</em>.</p>\n<p>After starting the recording with the start request, you can get the <em>recording ID</em> from its response. You can also get the recording ID from any of the callbacks.</p>\n<blockquote>\n<p>One resource ID can only be used for one recording session. </p>\n</blockquote>\n<h2 id=\"playlist-of-the-recorded-files\">Playlist of the recorded files</h2>\n<p>In individual recording mode, if you choose to record audio or video only, each recording session generates one M3U8 file; if you record both audio and video, each recording session generates two M3U8 files. The M3U8 file is a playlist pointing to all the split TS/WebM files of the recording. You can use the M3U8 file to play and manage the recorded files. For detailed information about the naming conventions of the M3U8 and TS/WebM files in individual recording mode, see Manage Recorded Files.</p>\n<p>In composite recording mode, each recording session generates one M3U8 file. The name of the M3U8 file is <code>sid_cname.m3u8</code>, which consists of the recording ID and the channel name.</p>\n<h2 id=\"server-events-and-callbacks\">Server Events and Callbacks</h2>\n<p>The Agora Cloud Recording RESTful API provides a callback service. After enabling the callback service, you can receive notifications about cloud recording events.</p>\n<blockquote>\n<p>The Agora server automatically uploads the recorded files. Pay attention to the following callbacks. </p>\n</blockquote>\n<p>During the recording, the SDK triggers the following callback once every minute:</p>\n<ul>\n<li><code>uploading_progress</code> Reports the upload progress (%) of the recorded files.<br />  After the recording stops, the SDK triggers one of the following callbacks:</li>\n<li><code>uploaded</code> Occurs when all the recorded files are uploaded to the third-party cloud storage.</li>\n<li><code>backuped</code> Occurs when some of the recorded files fail to upload to the third-party cloud storage and upload to Agora Cloud Backup instead. Agora Cloud Backup automatically uploads these files to your cloud storage.</li>\n</ul>\n<blockquote>\n<p>If you cannot play the recorded files after five minutes, contact Agora technical support. </p>\n</blockquote>\n<blockquote>\n<p>If uploading takes a long time, the stop response returns the <code>HTTP 206</code> status code, indicating that the recording stops but the uploading status is <code>unknown</code>. You need to get the uploading status from the callback events. </p>\n</blockquote>\n<h2 id=\"errors-and-other-considerations\">Errors and Other Considerations</h2>\n<blockquote>\n<p>The Agora.io Cloud Recording automatically leaves the channel and stops recording when no user is in the channel for more than 30 seconds by default. </p>\n</blockquote>\n<ul>\n<li>Call <code>acquire</code> to get a <em>resource ID</em> before calling <code>start</code></li>\n<li>Use one <em>resource ID</em> for only one start request</li>\n<li>Do not call <code>query</code> after calling <code>stop</code></li>\n</ul>\n<p><em>The following are some common errors:</em></p>\n<ul>\n<li>calling enpoints with sequence: <code>acquire</code> ➡ <code>start</code> ➡ <code>start</code><ul>\n<li>Repeating the start request with the same resource ID returns the <code>HTTP 201</code> status code and error <code>code: 7</code></li>\n</ul>\n</li>\n<li>calling enpoints with sequence: <code>acquire</code> ➡ <code>start</code> ➡ <code>acquire</code> ➡ <code>start</code><ul>\n<li>Repeating the <code>acquire</code> and <code>start</code> requests with the same parameters returns the <code>HTTP 400</code> status code and error <code>code: 53</code></li>\n</ul>\n</li>\n<li>calling enpoints with sequence: <code>acquire</code> ➡ <code>start</code> ➡ Recording stops ➡ <code>query</code><ul>\n<li>Calling <code>query</code> after the recording stops returns the <code>HTTP 404</code> status code and error <code>code: 404</code></li>\n</ul>\n</li>\n<li>The recording stops in the following situations:<ul>\n<li>When you call <code>stop</code>.</li>\n<li>When no user is in the channel for the idle time (30 seconds by default).</li>\n<li>When the asynchronous parameter check finds errors. This means that some parameters of <code>transcodingConfig</code> or <code>storageConfig</code> in the <code>start</code> request are invalid.</li>\n</ul>\n</li>\n<li>calling enpoints with sequence: <code>acquire</code> ➡ <code>start</code> ➡ <code>stop &amp; query</code><ul>\n<li>Calling <code>stop</code> together with <code>query</code> affects the response of <code>stop</code>: The <code>HTTP 206</code> status code and the response does not have the fileList field.</li>\n</ul>\n</li>\n</ul>\n","event":[{"listen":"prerequest","script":{"id":"a0ab5bbf-8781-4340-bdd1-c14cb9bef0c3","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"decf707f-5629-4112-abda-706a41c5783c","type":"text/javascript","exec":[""]}}],"_postman_id":"d3952ff0-9cd7-4a82-abec-29b63735cb4f","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":true,"source":{"_postman_id":"d7da7175-1801-46b9-8ee4-e5c9e3010da3","id":"d7da7175-1801-46b9-8ee4-e5c9e3010da3","name":"Agora RESTful APIs","type":"collection"}}},{"name":"Cloud Recording Web","item":[{"name":"acquire","event":[{"listen":"test","script":{"id":"23e15e5c-aea9-448c-8b99-f0e8bb4a7dcd","exec":["var jsonData = JSON.parse(responseBody);","var resourceId = jsonData.resourceId;","console.log(resourceId);","pm.collectionVariables.set(\"resourceId\", resourceId);"],"type":"text/javascript","packages":{}}},{"listen":"prerequest","script":{"id":"aeaa7a2d-ecb3-41ff-bc0f-60a36e90194a","exec":[""],"type":"text/javascript","packages":{}}}],"id":"d369a6df-64f7-4475-ab7e-80e9b62cd6f2","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":false},"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"cname\": \"{{AccessChannel}}\",\n    \"uid\": \"{{RecordingUID}}\",\n    \"clientRequest\": {\n        \"resourceExpiredHour\": 24,\n        \"scene\": 1\n    }\n}"},"url":"https://api.agora.io/v1/apps/{{APPID}}/cloud_recording/acquire","description":"<p>The RESTful API requires basic HTTP authentication. You need to set the Authorization parameter in every HTTP request header. </p>\n<blockquote>\n<p>Authorization header is not visible in Postman Web View, use <strong>Run In Postman</strong> button above to view full example snippet</p>\n</blockquote>\n<p>Use the Acquire endpoint to receive the reqwuired token (<code>resourceId</code>) needed for use with each of the other Agora.io Cloud Recording endpoints. </p>\n<p>If this method call succeeds, you will receive a <em>resource ID</em> (<code>resourceId</code>) from the HTTP response body. The <em>resource ID</em> is valid for five minutes, so you need to start recording with this <em>resource ID</em> within five minutes.</p>\n","urlObject":{"protocol":"https","path":["v1","apps","{{APPID}}","cloud_recording","acquire"],"host":["api","agora","io"],"query":[],"variable":[]}},"response":[],"_postman_id":"d369a6df-64f7-4475-ab7e-80e9b62cd6f2"},{"name":"start","event":[{"listen":"test","script":{"id":"d87334ac-611b-4228-82ff-17144c97b1ca","exec":["var jsonData = JSON.parse(responseBody);","var sid = jsonData.sid;","console.log(sid);","pm.collectionVariables.set(\"sid\", sid);"],"type":"text/javascript","packages":{}}}],"id":"9743f8ce-ef00-412e-9f37-3c61689f973f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":false},"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"cname\": \"{{AccessChannel}}\",\n    \"uid\": \"{{RecordingUID}}\",\n    \"clientRequest\": {\n        \"token\": \"\",\n        \"extensionServiceConfig\": {\n            \"errorHandlePolicy\": \"error_abort\",\n            \"extensionServices\": [\n                {\n                    \"serviceName\": \"web_recorder_service\",\n                    \"errorHandlePolicy\": \"error_abort\",\n                    \"serviceParam\": {\n                        \"url\": \"https://google.com\",\n                        \"audioProfile\": 0,\n                        \"videoWidth\": 1280,\n                        \"videoHeight\": 720,\n                        \"maxRecordingHour\": 72\n                    }\n                }\n            ]\n        },\n        \"recordingFileConfig\": {\n            \"avFileType\": [\n                \"hls\",\n                \"mp4\"\n            ]\n        },\n        \"storageConfig\": {\n            \"vendor\": {{StorageVendor}},\n            \"region\": {{StorageRegion}},\n            \"bucket\": \"{{Bucket}}\",\n            \"accessKey\": \"{{AccessKey}}\",\n            \"secretKey\": \"{{SecretKey}}\"\n        }\n    }\n}"},"url":"https://api.agora.io/v1/apps/{{APPID}}/cloud_recording/resourceid//mode/{{mode-type}}/start","description":"<p>Call the start method within five minutes after getting the <em>resource ID</em> to join a channel and start the recording.</p>\n<p>If this method call succeeds, you get a <em>recording ID</em> (<code>sid</code>) from the HTTP response body.</p>\n<blockquote>\n<p>Note: Agora Cloud Recording does not support string usernames (User Accounts). Ensure that every user in the channel has an integer UID. When you call the start method, ensure that the UID in the quotation marks is an integer UID, too.</p>\n</blockquote>\n","urlObject":{"protocol":"https","path":["v1","apps","{{APPID}}","cloud_recording","resourceid","","mode","{{mode-type}}","start"],"host":["api","agora","io"],"query":[],"variable":[]}},"response":[],"_postman_id":"9743f8ce-ef00-412e-9f37-3c61689f973f"},{"name":"stop","event":[{"listen":"test","script":{"id":"203914fc-36af-4b74-ad72-3dbb0526a637","exec":["// var jsonData = JSON.parse(responseBody);","// var serverResponse = jsonData.serverResponse","// console.log(serverResponse);","// postman.setEnvironmentVariable(\"uploadingStatus\", serverResponse.uploadingStatus);"],"type":"text/javascript"}}],"id":"bb6d6e58-e437-4b97-859e-0c9218cf1f40","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":false},"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=utf-8","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"cname\": \"{{AccessChannel}}\",\n    \"uid\": \"{{RecordingUID}}\",\n    \"clientRequest\": {}\n}"},"url":"https://api.agora.io/v1/apps/{{APPID}}/cloud_recording/resourceid//sid/{{sid}}/mode/{{mode-type}}/stop","description":"<p>Call the stop method to stop the recording.</p>\n<p>If this method call succeeds, you get the M3U8 filename and the current uploading status from the HTTP response body.</p>\n<blockquote>\n<p>Agora Cloud Recording automatically leaves the channel and stops recording when no user is in the channel for more than 30 seconds by default.</p>\n</blockquote>\n","urlObject":{"protocol":"https","path":["v1","apps","{{APPID}}","cloud_recording","resourceid","","sid","{{sid}}","mode","{{mode-type}}","stop"],"host":["api","agora","io"],"query":[],"variable":[]}},"response":[],"_postman_id":"bb6d6e58-e437-4b97-859e-0c9218cf1f40"},{"name":"updateLayout","event":[{"listen":"test","script":{"id":"06272db7-4f34-44a3-87ea-f34f89ee84a7","exec":[""],"type":"text/javascript"}}],"id":"6365c7c0-ce61-49e6-9b6e-e60dfdb4b912","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":false},"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","type":"text","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"cname\": \"{{AccessChannel}}\",\n    \"uid\": \"{{RecordingUID}}\",\n    \"clientRequest\": {\n        \"mixedVideoLayout\": 3,\n        \"backgroundColor\": \"#FF0000\",\n        \"layoutConfig\": [\n            {\n                \"uid\": \"1\",\n                \"x_axis\": 0.1,\n                \"y_axis\": 0.1,\n                \"width\": 0.1,\n                \"height\": 0.1,\n                \"alpha\": 1.0,\n                \"render_mode\": 1\n            },\n            {\n                \"uid\": \"2\",\n                \"x_axis\": 0.2,\n                \"y_axis\": 0.2,\n                \"width\": 0.1,\n                \"height\": 0.1,\n                \"alpha\": 1.0,\n                \"render_mode\": 1\n            }\n        ]\n    }\n}"},"url":"https://api.agora.io/v1/apps/{{APPID}}/cloud_recording/resourceid//sid/{{sid}}/mode/{{mode-type}}/updateLayout","description":"<p>During a recording, you can call this method to update the video mixing layout multiple times.</p>\n<p>This method call overrides the existing layout configurations. </p>\n<p>For example, if you set the backgroundColor parameter as \"#FF0000\" (red) when starting a recording and call this method to update the layout without setting the backgroundColor parameter, the background color changes back to black (the default value).</p>\n<p>The following parameters are required in the URL.</p>\n<ul>\n<li><code>appid</code> <em>String</em> The App ID used in the channel to be recorded.</li>\n<li><code>resourceid</code> <em>String</em> The resource ID requested by the acquire method.</li>\n<li><code>sid</code> <em>String</em> The recording ID created by the start method.</li>\n<li><code>mode</code> <em>String</em> The recording mode. Supports individual mode (<code>individual</code>) and composite mode (<code>mix</code>).</li>\n</ul>\n<p>The following parameters are required in the request <code>body</code>.</p>\n<ul>\n<li><code>cname</code> <em>String</em> Name of the channel to be recorded.</li>\n<li><code>uid</code> <em>String</em> The UID of the recording client. A 32-bit unsigned integer ranging from 1 to (232-1) that is unique in the channel, for example \"527841\". <em>Do not set it as \"0\"</em></li>\n<li><code>clientRequest</code>  <em>JSON Object</em> A specific client request. See full details below.</li>\n</ul>\n<p><code>clientRequest</code> requires the following parameters:</p>\n<ul>\n<li><code>maxResolutionUid</code> (Optional) String. When the layoutType parameter is set as 2 (vertical layout), you can specify the UID of the large video window by this parameter.</li>\n<li><code>mixedVideoLayout</code> (Optional) Number. Sets the video mixing layout. 0, 1, and 2 are the predefined layouts. If you set this parameter as 3, you need to set the layout by the layoutConfig parameter.</li>\n<li><code>0</code> (Default) Floating layout: The first user in the channel occupies the full canvas. The other users occupy the small regions on top of the canvas, starting from the bottom left corner. The small regions are arranged in the order of the users joining the channel. This layout supports one full-size region and up to four rows of small regions on top with four regions per row, comprising 17 users.</li>\n<li><code>1</code> Best fit layout: This is a grid layout. The number of columns and rows and the grid size vary depending on the number of users in the channel. This layout supports up to 17 users.</li>\n<li><code>2</code> Vertical layout: One large region is displayed on the left edge of the canvas, and several smaller regions are displayed along the right edge of the canvas. The space on the right supports up to 2 columns of small regions with 8 regions per column. This layout supports up to 17 users.</li>\n<li><code>3</code> Customized layout: Set the layoutConfig parameter to customize the layout.</li>\n<li><code>backgroundColor</code> (Optional) String. The background color of the canvas (the display window or screen) in RGB hex value. The string starts with a \"#\". The default value is \"#000000\", the black color.</li>\n<li><code>layoutConfig</code> (Optional) JSONArray. An array of the configuration of each user's region. Supports 17 users at most. Each user's region configuration is a JSON object with the following parameters:</li>\n<li><code>uid</code> (Optional) String. The string contains the UID of the user displaying the video in the region. If this parameter is not specified, the configurations apply in the order of the users joining the channel.</li>\n<li><code>x_axis</code> (Mandatory) Float. Relative horizontal position of the top-left corner of the region. The value is between 0.0 (leftmost) and 1.0 (rightmost). x_axis can also be an integer 0 or 1.</li>\n<li><code>y_axis</code> (Mandatory) Float. Relative vertical position of the top-left corner of the region. The value is between 0.0 (top) and 1.0 (bottom). y_axis can also be an integer 0 or 1.</li>\n<li><code>width</code> (Mandatory) Float. Relative width of the region. The value is between 0.0 and 1.0. width can also be an integer 0 or 1.</li>\n<li><code>height</code> (Mandatory) Float. Relative height of the region. The value is between 0.0 and 1.0. height can also be an integer 0 or 1.</li>\n<li><code>alpha</code> (Optional) Float. The transparency of the image. The value is between 0.0 (transparent) and 1.0 (opaque). The default value is 1.0.</li>\n<li><code>render_mode</code> (Optional) Number. The video display mode:</li>\n<li><code>0</code> (Default) Cropped mode: Uniformly scales the video until it fills the visible boundaries (cropped). One dimension of the video may have clipped contents.</li>\n<li><code>1</code> Fit mode: Uniformly scales the video until one of its dimension fits the boundary (zoomed to fit). Areas that are not filled due to the disparity in the aspect ratio will be filled with black.</li>\n</ul>\n","urlObject":{"protocol":"https","path":["v1","apps","{{APPID}}","cloud_recording","resourceid","","sid","{{sid}}","mode","{{mode-type}}","updateLayout"],"host":["api","agora","io"],"query":[],"variable":[]}},"response":[],"_postman_id":"6365c7c0-ce61-49e6-9b6e-e60dfdb4b912"},{"name":"query","event":[{"listen":"test","script":{"exec":["// var jsonData = JSON.parse(responseBody);","// var serverResponse = jsonData.serverResponse","// console.log(serverResponse);","// postman.setEnvironmentVariable(\"serverResponseFileList\", serverResponse.fileList);","// postman.setEnvironmentVariable(\"serverResponseStatus\", serverResponse.status);"],"type":"text/javascript","id":"5e653778-6499-4520-8cc4-501d437e9769"}}],"id":"2b46cb22-7a72-446c-ac46-fa069bc0abc9","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"}],"url":"https://api.agora.io/v1/apps/{{APPID}}/cloud_recording/resourceid//sid/{{sid}}/mode/{{mode-type}}/query","description":"<p>During the recording, you can call the query method to check the recording status multiple times.</p>\n<p>If this method call succeeds, you get the M3U8 filename and the current recording status from the HTTP response body.</p>\n","urlObject":{"protocol":"https","path":["v1","apps","{{APPID}}","cloud_recording","resourceid","","sid","{{sid}}","mode","{{mode-type}}","query"],"host":["api","agora","io"],"query":[],"variable":[]}},"response":[],"_postman_id":"2b46cb22-7a72-446c-ac46-fa069bc0abc9"}],"id":"7a040ae7-9e29-4f4e-9f45-ccbf5082a2ae","description":"<p>A collection of the Cloud Recording API requests. With the Agora.io Cloud Recording RESTful API, you can send requests to do the following things:</p>\n<ul>\n<li>Start/Stop cloud recording</li>\n<li>Query the recording status</li>\n</ul>\n<p>Agora.io Cloud Recording API - <a href=\"https://docs.agora.io/en/cloud-recording/cloud_recording_rest?platform=All%20Platforms\">official documentation</a></p>\n<blockquote>\n<p><strong>Note</strong>: due to limitation with the Web view of this collection, certain elements are not visibile within the web version of this documentation use the <strong>Run In Postman</strong> button above to view full examples of each snippet </p>\n</blockquote>\n<h2 id=\"demo-variables\">Demo Variables</h2>\n<p>The variables below are used throughout this documentation. Use the <em>Run In Postman</em> button above to open the collection within Postman and set up an environment with the variables below.</p>\n<ul>\n<li><p>APPID</p>\n</li>\n<li><p>CustomerID</p>\n</li>\n<li><p>CustomerSecret</p>\n</li>\n<li><p>resourceId</p>\n</li>\n<li><p>AccessChannel</p>\n</li>\n<li><p>RecordingUID</p>\n</li>\n<li><p>StorageVendor</p>\n</li>\n<li><p>StorageRegion</p>\n</li>\n<li><p>Bucket</p>\n</li>\n<li><p>AccessKey</p>\n</li>\n<li><p>SecretKey</p>\n</li>\n<li><p>sid</p>\n</li>\n</ul>\n<img src=\"https://miro.medium.com/max/3200/1\\*ok4R5IgAfVKtkcRomdbZlA.png\" />\n\n<blockquote>\n<p>Agora Cloud Recording does not support string usernames (User Accounts). Ensure that every user in the channel has an integer UID. When you call the start method, ensure that the UID in the quotation marks is an integer UID, too. </p>\n</blockquote>\n<h2 id=\"recording-id\">Recording ID</h2>\n<p>The <em>recording ID</em> is the unique identification of a recording. Each cloud recording session has a unique <em>recording ID</em>.</p>\n<p>After starting the recording with the start request, you can get the <em>recording ID</em> from its response. You can also get the recording ID from any of the callbacks.</p>\n<blockquote>\n<p>One resource ID can only be used for one recording session. </p>\n</blockquote>\n<h2 id=\"playlist-of-the-recorded-files\">Playlist of the recorded files</h2>\n<p>In individual recording mode, if you choose to record audio or video only, each recording session generates one M3U8 file; if you record both audio and video, each recording session generates two M3U8 files. The M3U8 file is a playlist pointing to all the split TS/WebM files of the recording. You can use the M3U8 file to play and manage the recorded files. For detailed information about the naming conventions of the M3U8 and TS/WebM files in individual recording mode, see Manage Recorded Files.</p>\n<p>In composite recording mode, each recording session generates one M3U8 file. The name of the M3U8 file is <code>sid_cname.m3u8</code>, which consists of the recording ID and the channel name.</p>\n<h2 id=\"server-events-and-callbacks\">Server Events and Callbacks</h2>\n<p>The Agora Cloud Recording RESTful API provides a callback service. After enabling the callback service, you can receive notifications about cloud recording events.</p>\n<blockquote>\n<p>The Agora server automatically uploads the recorded files. Pay attention to the following callbacks. </p>\n</blockquote>\n<p>During the recording, the SDK triggers the following callback once every minute:</p>\n<ul>\n<li><code>uploading_progress</code> Reports the upload progress (%) of the recorded files.<br />  After the recording stops, the SDK triggers one of the following callbacks:</li>\n<li><code>uploaded</code> Occurs when all the recorded files are uploaded to the third-party cloud storage.</li>\n<li><code>backuped</code> Occurs when some of the recorded files fail to upload to the third-party cloud storage and upload to Agora Cloud Backup instead. Agora Cloud Backup automatically uploads these files to your cloud storage.</li>\n</ul>\n<blockquote>\n<p>If you cannot play the recorded files after five minutes, contact Agora technical support. </p>\n</blockquote>\n<blockquote>\n<p>If uploading takes a long time, the stop response returns the <code>HTTP 206</code> status code, indicating that the recording stops but the uploading status is <code>unknown</code>. You need to get the uploading status from the callback events. </p>\n</blockquote>\n<h2 id=\"errors-and-other-considerations\">Errors and Other Considerations</h2>\n<blockquote>\n<p>The Agora.io Cloud Recording automatically leaves the channel and stops recording when no user is in the channel for more than 30 seconds by default. </p>\n</blockquote>\n<ul>\n<li>Call <code>acquire</code> to get a <em>resource ID</em> before calling <code>start</code></li>\n<li>Use one <em>resource ID</em> for only one start request</li>\n<li>Do not call <code>query</code> after calling <code>stop</code></li>\n</ul>\n<p><em>The following are some common errors:</em></p>\n<ul>\n<li>calling enpoints with sequence: <code>acquire</code> ➡ <code>start</code> ➡ <code>start</code><ul>\n<li>Repeating the start request with the same resource ID returns the <code>HTTP 201</code> status code and error <code>code: 7</code></li>\n</ul>\n</li>\n<li>calling enpoints with sequence: <code>acquire</code> ➡ <code>start</code> ➡ <code>acquire</code> ➡ <code>start</code><ul>\n<li>Repeating the <code>acquire</code> and <code>start</code> requests with the same parameters returns the <code>HTTP 400</code> status code and error <code>code: 53</code></li>\n</ul>\n</li>\n<li>calling enpoints with sequence: <code>acquire</code> ➡ <code>start</code> ➡ Recording stops ➡ <code>query</code><ul>\n<li>Calling <code>query</code> after the recording stops returns the <code>HTTP 404</code> status code and error <code>code: 404</code></li>\n</ul>\n</li>\n<li>The recording stops in the following situations:<ul>\n<li>When you call <code>stop</code>.</li>\n<li>When no user is in the channel for the idle time (30 seconds by default).</li>\n<li>When the asynchronous parameter check finds errors. This means that some parameters of <code>transcodingConfig</code> or <code>storageConfig</code> in the <code>start</code> request are invalid.</li>\n</ul>\n</li>\n<li>calling enpoints with sequence: <code>acquire</code> ➡ <code>start</code> ➡ <code>stop &amp; query</code><ul>\n<li>Calling <code>stop</code> together with <code>query</code> affects the response of <code>stop</code>: The <code>HTTP 206</code> status code and the response does not have the fileList field.</li>\n</ul>\n</li>\n</ul>\n","event":[{"listen":"prerequest","script":{"id":"0488597b-2de8-4c32-ae2c-ff3b2d199cea","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"6b653b9e-32c2-4811-ac16-7f37e5d3b153","type":"text/javascript","exec":[""]}}],"_postman_id":"7a040ae7-9e29-4f4e-9f45-ccbf5082a2ae","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":true,"source":{"_postman_id":"d7da7175-1801-46b9-8ee4-e5c9e3010da3","id":"d7da7175-1801-46b9-8ee4-e5c9e3010da3","name":"Agora RESTful APIs","type":"collection"}}},{"name":"Cloud Recording Screenshot","item":[{"name":"acquire","event":[{"listen":"test","script":{"id":"922a9385-704b-4f21-82d1-6f149ab306f1","exec":["var jsonData = JSON.parse(responseBody);","var resourceId = jsonData.resourceId;","console.log(resourceId);","pm.collectionVariables.set(\"resourceId\", resourceId);"],"type":"text/javascript","packages":{}}},{"listen":"prerequest","script":{"id":"21ef4f04-2d1b-4437-a0ae-b67aee3f703f","exec":[""],"type":"text/javascript","packages":{}}}],"id":"ae9dfaeb-6b56-4439-b07e-43d250909fb7","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":false},"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"cname\": \"{{AccessChannel}}\",\n    \"uid\": \"{{RecordingUID}}\",\n    \"clientRequest\": {\n        \"resourceExpiredHour\": 24,\n        \"scene\": 0\n    }\n}"},"url":"https://api.agora.io/v1/apps/{{APPID}}/cloud_recording/acquire","description":"<p>The RESTful API requires basic HTTP authentication. You need to set the Authorization parameter in every HTTP request header. </p>\n<blockquote>\n<p>Authorization header is not visible in Postman Web View, use <strong>Run In Postman</strong> button above to view full example snippet</p>\n</blockquote>\n<p>Use the Acquire endpoint to receive the reqwuired token (<code>resourceId</code>) needed for use with each of the other Agora.io Cloud Recording endpoints. </p>\n<p>If this method call succeeds, you will receive a <em>resource ID</em> (<code>resourceId</code>) from the HTTP response body. The <em>resource ID</em> is valid for five minutes, so you need to start recording with this <em>resource ID</em> within five minutes.</p>\n","urlObject":{"protocol":"https","path":["v1","apps","{{APPID}}","cloud_recording","acquire"],"host":["api","agora","io"],"query":[],"variable":[]}},"response":[],"_postman_id":"ae9dfaeb-6b56-4439-b07e-43d250909fb7"},{"name":"start","event":[{"listen":"test","script":{"id":"a820f4fd-bdde-4307-8831-e0f21ae84f08","exec":["var jsonData = JSON.parse(responseBody);","var sid = jsonData.sid;","console.log(sid);","pm.collectionVariables.set(\"sid\", sid);"],"type":"text/javascript","packages":{}}}],"id":"551e9154-656f-4bb7-8d11-48241d1f598a","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":false},"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"cname\": \"{{AccessChannel}}\",\n    \"uid\": \"{{RecordingUID}}\",\n    \"clientRequest\": {\n        \"recordingConfig\": {\n            \"channelType\": 1,\n            \"subscribeUidGroup\": 0\n        },\n        \"snapshotConfig\": {\n            \"captureInterval\": 2,\n            \"fileType\": [\n                \"jpg\"\n            ]\n        },\n        \"storageConfig\": {\n            \"vendor\": {{StorageVendor}},\n            \"region\": {{StorageRegion}},\n            \"bucket\": \"{{Bucket}}\",\n            \"accessKey\": \"{{AccessKey}}\",\n            \"secretKey\": \"{{SecretKey}}\",\n            \"fileNamePrefix\": [\n                \"screenshot\"\n            ]\n        }\n    }\n}"},"url":"https://api.agora.io/v1/apps/{{APPID}}/cloud_recording/resourceid//mode/{{mode-type}}/start","description":"<p>Call the start method within five minutes after getting the <em>resource ID</em> to join a channel and start the recording.</p>\n<p>If this method call succeeds, you get a <em>recording ID</em> (<code>sid</code>) from the HTTP response body.</p>\n<blockquote>\n<p>Note: Agora Cloud Recording does not support string usernames (User Accounts). Ensure that every user in the channel has an integer UID. When you call the start method, ensure that the UID in the quotation marks is an integer UID, too.</p>\n</blockquote>\n","urlObject":{"protocol":"https","path":["v1","apps","{{APPID}}","cloud_recording","resourceid","","mode","{{mode-type}}","start"],"host":["api","agora","io"],"query":[],"variable":[]}},"response":[],"_postman_id":"551e9154-656f-4bb7-8d11-48241d1f598a"},{"name":"stop","event":[{"listen":"test","script":{"exec":["// var jsonData = JSON.parse(responseBody);","// var serverResponse = jsonData.serverResponse","// console.log(serverResponse);","// postman.setEnvironmentVariable(\"uploadingStatus\", serverResponse.uploadingStatus);"],"type":"text/javascript","id":"d227a545-464c-4ced-b8e8-0450cd47a059"}}],"id":"5d9cbe8f-99a7-4dd4-8646-323ff2d23938","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":false},"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json;charset=utf-8","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"cname\": \"{{AccessChannel}}\",\n    \"uid\": \"{{RecordingUID}}\",\n    \"clientRequest\": {}\n}"},"url":"https://api.agora.io/v1/apps/{{APPID}}/cloud_recording/resourceid//sid/{{sid}}/mode/{{mode-type}}/stop","description":"<p>Call the stop method to stop the recording.</p>\n<p>If this method call succeeds, you get the M3U8 filename and the current uploading status from the HTTP response body.</p>\n<blockquote>\n<p>Agora Cloud Recording automatically leaves the channel and stops recording when no user is in the channel for more than 30 seconds by default.</p>\n</blockquote>\n","urlObject":{"protocol":"https","path":["v1","apps","{{APPID}}","cloud_recording","resourceid","","sid","{{sid}}","mode","{{mode-type}}","stop"],"host":["api","agora","io"],"query":[],"variable":[]}},"response":[],"_postman_id":"5d9cbe8f-99a7-4dd4-8646-323ff2d23938"},{"name":"query","event":[{"listen":"test","script":{"exec":["// var jsonData = JSON.parse(responseBody);","// var serverResponse = jsonData.serverResponse","// console.log(serverResponse);","// postman.setEnvironmentVariable(\"serverResponseFileList\", serverResponse.fileList);","// postman.setEnvironmentVariable(\"serverResponseStatus\", serverResponse.status);"],"type":"text/javascript","id":"cb25ea15-342e-4d41-a3ad-4819479f084d"}}],"id":"fae90db7-5ea3-47d9-b9ab-55462cbbcab3","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"}],"url":"https://api.agora.io/v1/apps/{{APPID}}/cloud_recording/resourceid//sid/{{sid}}/mode/{{mode-type}}/query","description":"<p>During the recording, you can call the query method to check the recording status multiple times.</p>\n<p>If this method call succeeds, you get the M3U8 filename and the current recording status from the HTTP response body.</p>\n","urlObject":{"protocol":"https","path":["v1","apps","{{APPID}}","cloud_recording","resourceid","","sid","{{sid}}","mode","{{mode-type}}","query"],"host":["api","agora","io"],"query":[],"variable":[]}},"response":[],"_postman_id":"fae90db7-5ea3-47d9-b9ab-55462cbbcab3"}],"id":"598a61b6-bc97-4c7f-9ff8-1d61616c82ff","description":"<p>A collection of the Cloud Recording API requests. With the Agora.io Cloud Recording RESTful API, you can send requests to do the following things:</p>\n<ul>\n<li>Start/Stop cloud recording</li>\n<li>Query the recording status</li>\n</ul>\n<p>Agora.io Cloud Recording API - <a href=\"https://docs.agora.io/en/cloud-recording/cloud_recording_rest?platform=All%20Platforms\">official documentation</a></p>\n<blockquote>\n<p><strong>Note</strong>: due to limitation with the Web view of this collection, certain elements are not visibile within the web version of this documentation use the <strong>Run In Postman</strong> button above to view full examples of each snippet</p>\n</blockquote>\n<h2 id=\"demo-variables\">Demo Variables</h2>\n<p>The variables below are used throughout this documentation. Use the <em>Run In Postman</em> button above to open the collection within Postman and set up an environment with the variables below.</p>\n<ul>\n<li>APPID</li>\n<li>CustomerID</li>\n<li>CustomerCertificate</li>\n<li>resourceId</li>\n<li>AccessChannel</li>\n<li>RecordingUID</li>\n<li>StorageVendor</li>\n<li>StorageRegion</li>\n<li>Bucket</li>\n<li>AccessKey</li>\n<li>SecretKey</li>\n<li>sid</li>\n</ul>\n<p><img src=\"https://miro.medium.com/max/3200/1*ok4R5IgAfVKtkcRomdbZlA.png\" alt /></p>\n<blockquote>\n<p>Agora Cloud Recording does not support string usernames (User Accounts). Ensure that every user in the channel has an integer UID. When you call the start method, ensure that the UID in the quotation marks is an integer UID, too.</p>\n</blockquote>\n<h2 id=\"recording-id\">Recording ID</h2>\n<p>The <em>recording ID</em> is the unique identification of a recording. Each cloud recording session has a unique <em>recording ID</em>.</p>\n<p>After starting the recording with the start request, you can get the <em>recording ID</em> from its response. You can also get the recording ID from any of the callbacks.</p>\n<blockquote>\n<p>One resource ID can only be used for one recording session.</p>\n</blockquote>\n<h2 id=\"playlist-of-the-recorded-files\">Playlist of the recorded files</h2>\n<p>In individual recording mode, if you choose to record audio or video only, each recording session generates one M3U8 file; if you record both audio and video, each recording session generates two M3U8 files. The M3U8 file is a playlist pointing to all the split TS/WebM files of the recording. You can use the M3U8 file to play and manage the recorded files. For detailed information about the naming conventions of the M3U8 and TS/WebM files in individual recording mode, see Manage Recorded Files.</p>\n<p>In composite recording mode, each recording session generates one M3U8 file. The name of the M3U8 file is <code>sid_cname.m3u8</code>, which consists of the recording ID and the channel name.</p>\n<h2 id=\"server-events-and-callbacks\">Server Events and Callbacks</h2>\n<p>The Agora Cloud Recording RESTful API provides a callback service. After enabling the callback service, you can receive notifications about cloud recording events. </p>\n<blockquote>\n<p>The Agora server automatically uploads the recorded files. Pay attention to the following callbacks.</p>\n</blockquote>\n<p>During the recording, the SDK triggers the following callback once every minute:</p>\n<ul>\n<li><code>uploading_progress</code> Reports the upload progress (%) of the recorded files.\nAfter the recording stops, the SDK triggers one of the following callbacks:</li>\n<li><code>uploaded</code> Occurs when all the recorded files are uploaded to the third-party cloud storage.</li>\n<li><code>backuped</code> Occurs when some of the recorded files fail to upload to the third-party cloud storage and upload to Agora Cloud Backup instead. Agora Cloud Backup automatically uploads these files to your cloud storage.</li>\n</ul>\n<blockquote>\n<p>If you cannot play the recorded files after five minutes, contact Agora technical support.</p>\n</blockquote>\n<blockquote>\n<p>If uploading takes a long time, the stop response returns the <code>HTTP 206</code> status code, indicating that the recording stops but the uploading status is <code>unknown</code>. You need to get the uploading status from the callback events.</p>\n</blockquote>\n<h2 id=\"errors-and-other-considerations\">Errors and Other Considerations</h2>\n<blockquote>\n<p>The Agora.io Cloud Recording automatically leaves the channel and stops recording when no user is in the channel for more than 30 seconds by default.</p>\n</blockquote>\n<ul>\n<li>Call <code>acquire</code> to get a <em>resource ID</em> before calling <code>start</code></li>\n<li>Use one <em>resource ID</em> for only one start request</li>\n<li>Do not call <code>query</code> after calling <code>stop</code></li>\n</ul>\n<p><em>The following are some common errors:</em></p>\n<ul>\n<li><p>calling enpoints with sequence: <code>acquire</code> ➡ <code>start</code> ➡ <code>start</code></p>\n</li>\n<li><p>Repeating the start request with the same resource ID returns the <code>HTTP 201</code> status code and error <code>code: 7</code></p>\n</li>\n<li><p>calling enpoints with sequence: <code>acquire</code> ➡ <code>start</code> ➡ <code>acquire</code> ➡ <code>start</code></p>\n</li>\n<li><p>Repeating the <code>acquire</code> and <code>start</code> requests with the same parameters returns the <code>HTTP 400</code> status code and error <code>code: 53</code></p>\n</li>\n<li><p>calling enpoints with sequence: <code>acquire</code> ➡ <code>start</code> ➡ Recording stops ➡ <code>query</code></p>\n</li>\n<li><p>Calling <code>query</code> after the recording stops returns the <code>HTTP 404</code> status code and error <code>code: 404</code></p>\n</li>\n<li><p>The recording stops in the following situations:</p>\n</li>\n<li><p>When you call <code>stop</code>.</p>\n</li>\n<li><p>When no user is in the channel for the idle time (30 seconds by default).</p>\n</li>\n<li><p>When the asynchronous parameter check finds errors. This means that some parameters of <code>transcodingConfig</code> or <code>storageConfig</code> in the <code>start</code> request are invalid.</p>\n</li>\n<li><p>calling enpoints with sequence: <code>acquire</code> ➡ <code>start</code> ➡ <code>stop &amp; query</code></p>\n</li>\n<li><p>Calling <code>stop</code> together with <code>query</code> affects the response of <code>stop</code>: The <code>HTTP 206</code> status code and the response does not have the fileList field.</p>\n</li>\n</ul>\n","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":false},"event":[{"listen":"prerequest","script":{"type":"text/javascript","exec":[""],"id":"5f2cb68d-7eb2-45a5-a2cf-0ea167dcb8ff"}},{"listen":"test","script":{"type":"text/javascript","exec":[""],"id":"9844821f-8499-45b1-bd47-a99eda288bbf"}}],"_postman_id":"598a61b6-bc97-4c7f-9ff8-1d61616c82ff"},{"name":"Signaling (previously RTM)","item":[{"name":"Get user events","id":"f3084c88-1113-4a79-a270-788d8d6e77d0","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"GET","header":[{"key":"Authorization","value":"agora token={{signalToken}}","type":"text"},{"key":"x-agora-uid","value":"{{signalUid}}","type":"text"}],"url":"https://api.agora.io/dev/v2/project/{{APPID}}/rtm/vendor/user_events\n","urlObject":{"protocol":"https","path":["dev","v2","project","{{APPID}}","rtm","vendor","user_events\n"],"host":["api","agora","io"],"query":[],"variable":[]}},"response":[],"_postman_id":"f3084c88-1113-4a79-a270-788d8d6e77d0"},{"name":"Get channel events","id":"cebc5c56-7669-4380-a7a0-0210dc9547bb","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"GET","header":[{"key":"Authorization","value":"agora token={{signalToken}}","type":"text"},{"key":"x-agora-uid","value":"{{signalUid}}","type":"text"}],"url":"https://api.agora.io/dev/v2/project/{{APPID}}/rtm/vendor/channel_events","urlObject":{"protocol":"https","path":["dev","v2","project","{{APPID}}","rtm","vendor","channel_events"],"host":["api","agora","io"],"query":[],"variable":[]}},"response":[],"_postman_id":"cebc5c56-7669-4380-a7a0-0210dc9547bb"},{"name":"Send peer-to-peer message","id":"90af1dea-e897-4f82-a153-41296d4f7d97","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"POST","header":[{"key":"Authorization","value":"agora token={{signalToken}}","type":"text"},{"key":"x-agora-uid","value":"{{signalUid}}","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"destination\": \"{{remoteUser}}\",\n    \"enable_offline_messaging\": false,\n    \"enable_historical_messaging\": false,\n    \"payload\": \"Hello\"\n}","options":{"raw":{"language":"json"}}},"url":"https://api.agora.io/dev/v2/project/{{APPID}}/rtm/users/{{signalUid}}/peer_messages","urlObject":{"protocol":"https","path":["dev","v2","project","{{APPID}}","rtm","users","{{signalUid}}","peer_messages"],"host":["api","agora","io"],"query":[],"variable":[]}},"response":[],"_postman_id":"90af1dea-e897-4f82-a153-41296d4f7d97"},{"name":"Send channel message","id":"9d249aaa-4a39-4809-9e9f-4655f527036b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"POST","header":[{"key":"Authorization","value":"agora token={{signalToken}}","type":"text"},{"key":"x-agora-uid","value":"{{signalUid}}","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"channel_name\": \"{{AccessChannel}}\",\n    \"enable_historical_messaging\": false,\n    \"payload\": \"Hello\"\n}","options":{"raw":{"language":"json"}}},"url":"https://api.agora.io/dev/v2/project/{{APPID}}/rtm/users/{{signalUid}}/channel_messages","urlObject":{"protocol":"https","path":["dev","v2","project","{{APPID}}","rtm","users","{{signalUid}}","channel_messages"],"host":["api","agora","io"],"query":[],"variable":[]}},"response":[],"_postman_id":"9d249aaa-4a39-4809-9e9f-4655f527036b"}],"id":"096a65fd-46ea-42cb-861b-d6804bfca207","description":"<h1 id=\"documentation\"><strong>Documentation</strong></h1>\n<h1 id=\"user-and-channel-events-rest-api\">User and channel events REST API</h1>\n<p>For the user events and channel events RESTful API, the number of requests per second for each App ID must not exceed 10.</p>\n<h2 id=\"authentication\">Authentication​</h2>\n<p>The Signaling RESTful API only supports HTTPS. You can use either of the following methods to authenticate your HTTP request:</p>\n<ul>\n<li><a href=\"https://docs.agora.io/en/signaling/reference/user-channel-events?platform=web#basicauth\">Basic authentication</a></li>\n<li><a href=\"https://docs.agora.io/en/signaling/reference/user-channel-events?platform=web#tokenauth\">Token authentication</a></li>\n</ul>\n<h3 id=\"basic-authentication\">Basic authentication​</h3>\n<p>For basic HTTP authentication, you need to put <code>api_key:api_secret</code> in the <code>Authorization</code> field of the HTTP header. For more information on how to generate the <code>Authorization</code> filed, see <a href=\"https://docs.agora.io/en/signaling/reference/restful-authentication\">RESTful API authentication</a>.</p>\n<h3 id=\"token-authentication\">Token authentication​</h3>\n<p>For token authentication, you need to put the following information to the <code>x-agora-token</code> field and the <code>x-agora-uid</code> field when sending your HTTP request:</p>\n<ul>\n<li>The Signaling Token generated at your server.</li>\n<li>The uid you use to generate the Signaling Token.</li>\n</ul>\n<p>For more information on how to generate the <code>x-agora-token</code> field and the <code>x-agora-uid</code> field, see <a href=\"https://docs.agora.io/en/signaling/reference/restful-authentication\">RESTful API authentication</a>.</p>\n<h2 id=\"api-sequence\"><a href=\"https://docs.agora.io/en/signaling/reference/user-channel-events?platform=web#api-sequence\">API sequence​</a></h2>\n<ul>\n<li>Get user events: Call the <a href=\"https://docs.agora.io/en/signaling/reference/user-channel-events?platform=web#get_user\">Gets user events API</a>.</li>\n<li>Get channel events: Call the <a href=\"https://docs.agora.io/en/signaling/reference/user-channel-events?platform=web#get_channel\">Gets channel events API</a>.</li>\n</ul>\n<h2 id=\"data-format\"><a href=\"https://docs.agora.io/en/signaling/reference/user-channel-events?platform=web#data-format\">Data format​</a></h2>\n<p>All requests are sent to the host: <code>api.agora.io</code>.</p>\n<ul>\n<li>Request: See the examples in the following APIs.</li>\n<li>Response: The response content is in JSON format.</li>\n<li>Base URL: <code>https://api.agora.io/dev/v2/project/</code></li>\n</ul>\n<blockquote>\n<p>Note: is the <a href=\"https://docs.agora.io/en/signaling/reference/manage-agora-account\">App ID</a> used by your project. All the request URLs and request bodies are case-sensitive.</p>\n</blockquote>\n<h2 id=\"gets-user-events-get\">Gets user events (GET)​</h2>\n<p>This method gets the user events from the address specified by the Agora Signaling server. Events you acquired from this API are removed from the Agora Signaling server. You cannot get the same event twice.</p>\n<blockquote>\n<ul>\n<li>The number of requests per second for each App ID must not exceed 10.</li>\n<li>The Signaling backend stores a maximum of 2,000 events. If the number of events exceeds 2,000, the latest event replaces the oldest event.</li>\n<li>The backend returns a maximum of 1,000 events each time.</li>\n<li>Agora does not guarantee the time sequence of events across geographical regions (countries or continents), because Agora stores events by geographical regions.</li>\n<li>If you have pulled events from one geographical region, you may get the same events when you pull from a different geographical region. This is because Agora only synchronize events within a geographical region and does not synchronize events across geographical regions.</li>\n</ul>\n</blockquote>\n<h3 id=\"request-example\"><a href=\"https://docs.agora.io/en/signaling/reference/user-channel-events?platform=web#request-example\">Request example​</a></h3>\n<ul>\n<li>Method: GET</li>\n<li>Endpoint: /rtm/vendor/user_events</li>\n<li>Request URL：</li>\n</ul>\n<p><code>https://api.agora.io/dev/v2/project/876922cbca0098dff4323566daa89675/rtm/vendor/user_events</code></p>\n<h3 id=\"response-example\"><a href=\"https://docs.agora.io/en/signaling/reference/user-channel-events?platform=web#response-example\">Response example​</a></h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"result\": \"success\",\n    \"request_id\" : \"10116762670167749259\",\n    \"events\" : [event]\n}\n\n</code></pre>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>result</code></td>\n<td>string</td>\n<td>The result of this request.</td>\n</tr>\n<tr>\n<td><code>request_id</code></td>\n<td>string</td>\n<td>The unique ID of this request.</td>\n</tr>\n<tr>\n<td><code>events</code></td>\n<td>JSON</td>\n<td>A login or logout event.</td>\n</tr>\n</tbody>\n</table>\n</div><p><code>[event]</code> contains the following content:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"user_id\": \"rtmtest_RTM_4852_4857w7%\",\n    \"type\" : \"Login\",\n    \"ms\" : 1578027420761\n}\n\n</code></pre>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>user_id</code></td>\n<td>string</td>\n<td>The user ID involved.</td>\n</tr>\n<tr>\n<td><code>type</code></td>\n<td>string</td>\n<td>Event type:  <br />  <br />- <code>Login</code>: A user has logged in the Agora Signaling system.  <br />- <code>Logout</code>: A user has logged out of the Agora Signaling system.</td>\n</tr>\n<tr>\n<td><code>ms</code></td>\n<td>int</td>\n<td>Number of seconds starting from January 1, 1970 (UTC) to the UTC time when the server receives the message.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"gets-channel-events-get\">Gets channel events (GET)​</h2>\n<p>This method gets the channel events from the address specified by the Agora Signaling server. Events you acquired from this API are removed from the Agora Signaling server. You cannot get the same event twice.</p>\n<blockquote>\n<ul>\n<li>The number of requests per second for each App ID must not exceed 10.</li>\n<li>The Signaling server stores a maximum of 2,000 events. If the number of events exceeds 2,000, the latest event replaces the oldest event.</li>\n<li>The backend returns a maximum of 1,000 events each time.</li>\n<li>Agora does not guarantee the time sequence of events across geographical regions (countries or continents), because Agora stores events by geographical regions.</li>\n<li>If you have pulled events from one geographical region, you may get the same events when you pull from a different geographical region. This is because Agora only synchronize events within a geographical region and does not synchronize events across geographical regions.</li>\n</ul>\n</blockquote>\n<h3 id=\"request-example-1\"><a href=\"https://docs.agora.io/en/signaling/reference/user-channel-events?platform=web#request-example-1\">Request example​</a></h3>\n<ul>\n<li>Method: GET</li>\n<li>Endpoint: /rtm/vendor/channel_events</li>\n<li>Request URL:</li>\n</ul>\n<p><code>https://api.agora.io/dev/v2/project/876922cbca0098dff4323566daa89675/rtm/vendor/channel_events</code></p>\n<h3 id=\"response-example-1\"><a href=\"https://docs.agora.io/en/signaling/reference/user-channel-events?platform=web#response-example-1\">Response example​</a></h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"result\": \"success\",\n    \"request_id\" : \"10116762670167749259\",\n    \"events\" : [event]\n}\n\n</code></pre>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>result</code></td>\n<td>string</td>\n<td>The result of this request.</td>\n</tr>\n<tr>\n<td><code>request_id</code></td>\n<td>string</td>\n<td>The unique ID of this request.</td>\n</tr>\n<tr>\n<td><code>events</code></td>\n<td>JSON</td>\n<td>A join or leave event.</td>\n</tr>\n</tbody>\n</table>\n</div><p><code>[event]</code> contains the following content:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"group_id\": \"example_channel_id\",\n    \"user_id\": \"rtmtest_RTM_4852_4857w7%\",\n    \"type\" : \"Join\",\n    \"ms\" : 1578027418981\n}\n\n</code></pre>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>group_id</code></td>\n<td>string</td>\n<td>The channel ID involved.</td>\n</tr>\n<tr>\n<td><code>user_id</code></td>\n<td>string</td>\n<td>The user ID involved.</td>\n</tr>\n<tr>\n<td><code>type</code></td>\n<td>string</td>\n<td>The event type:  <br />  <br />- <code>Join</code>: A user has joined the channel.  <br />- <code>Leave</code>: A user has left the channel.</td>\n</tr>\n<tr>\n<td><code>ms</code></td>\n<td>int</td>\n<td>Number of seconds starting from January 1, 1970 (UTC) to the UTC time when the server receives the message.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"status-code\"><a href=\"https://docs.agora.io/en/signaling/reference/user-channel-events?platform=web#status-code\">Status code​</a></h2>\n<p>The following table contains the most common HTTP status codes for Signaling.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status code</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>200</td>\n<td>The request succeeds.</td>\n</tr>\n<tr>\n<td>400</td>\n<td>Incorrect request syntax.</td>\n</tr>\n<tr>\n<td>408</td>\n<td>The server request times out or the server fails to respond.</td>\n</tr>\n<tr>\n<td>429</td>\n<td>Too many requests.</td>\n</tr>\n</tbody>\n</table>\n</div><h1 id=\"messaging-rest-api\">Messaging REST API</h1>\n<p>You use this API to send messages to a user or a channel.</p>\n<h2 id=\"authentication-1\"><a href=\"https://docs.agora.io/en/signaling/reference/restful-messaging?platform=web#authentication\">Authentication​</a></h2>\n<p>For basic HTTP authentication, you can send peer-to-peer or channel messages with any user ID. For token authentication, you send peer-to-peer or channel messages with only the user ID used to generate the Signaling token.</p>\n<p>If the messaging time delay from the server to the client must be less than 200 ms, Agora recommends that you use the Signaling SDK for Linux C++ or the Signaling SDK for Linux Java to send messages from the server to the client.</p>\n<h3 id=\"basic-authentication-1\"><a href=\"https://docs.agora.io/en/signaling/reference/restful-messaging?platform=web#basic-authentication\">Basic authentication​</a></h3>\n<p>You need to pass the basic HTTP authentication and put <code>api_key:api_secret</code> in the <code>Authorization</code> field of the HTTP header. For more information on how to generate the <code>Authorization</code> field, see <a href=\"https://docs.agora.io/en/signaling/develop/authentication-workflow\">Secure authentication with tokens</a>.</p>\n<h3 id=\"token-authentication-1\"><a href=\"https://docs.agora.io/en/signaling/reference/restful-messaging?platform=web#token-authentication\">Token authentication​</a></h3>\n<p>If you have already generated an Signaling Token on your server, you can use token authentication. You need to put the following information to the <code>x-agora-token</code> field and the <code>x-agora-uid</code> field when sending your HTTP request:</p>\n<ul>\n<li>The Signaling Token generated at your server.</li>\n<li>The uid you used to generate the Signaling Token.</li>\n</ul>\n<h4 id=\"sample-code\"><a href=\"https://docs.agora.io/en/signaling/reference/restful-messaging?platform=web#sample-code\">Sample code​</a></h4>\n<p>The following sample code shows how to implement token authentication in Java:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-java\">Request request = new Request.Builder()\n...\n// Puts your Signaling Token to the `x-agora-token` field of the HTTP request.\n.addHeader(\"x-agora-token\", \"\")\n// Puts the uid, which generates the Signaling token, to the `x-agora-uid` field of the HTTP request.\n.addHeader(\"x-agora-uid\", \"\")\n...\n\n</code></pre>\n<p>For more information about how to generate an Signaling Token, see <a href=\"https://docs.agora.io/en/signaling/develop/authentication-workflow\">Secure authentication with tokens</a>.</p>\n<h2 id=\"data-format-1\"><a href=\"https://docs.agora.io/en/signaling/reference/restful-messaging?platform=web#data-format\">Data format​</a></h2>\n<p>All requests are sent to the host: <code>api.agora.io</code>.</p>\n<ul>\n<li>Request: See the examples in the following APIs.</li>\n<li>Response: The response content is in JSON format.</li>\n<li>Base URL: <code>https://api.agora.io/dev/v2/project/</code></li>\n</ul>\n<p>'appid' is the <a href=\"https://docs.agora.io/en/signaling/reference/glossary#app-id\">App ID</a> used by your project. All the request URLs and request bodies are case-sensitive.</p>\n<h2 id=\"sends-peer-to-peer-message-api-post\"><a href=\"https://docs.agora.io/en/signaling/reference/restful-messaging?platform=web#sends-peer-to-peer-message-api-post\">Sends peer-to-peer message API (POST)​</a></h2>\n<ul>\n<li>Method: POST</li>\n<li>Access point: <code>/rtm/users//peer_messages</code></li>\n</ul>\n<p>Sends a peer-to-peer message from the server. The user who sends the message does not have to log into Signaling.</p>\n<h3 id=\"call-limit\"><a href=\"https://docs.agora.io/en/signaling/reference/restful-messaging?platform=web#call-limit\">Call limit​</a></h3>\n<p>For each app ID, the maximum combined frequency of the <strong>Sends peer-to-peer message API</strong> and the <strong>Sends channel message API</strong> is 500 calls per second.</p>\n<h3 id=\"call-sequence\"><a href=\"https://docs.agora.io/en/signaling/reference/restful-messaging?platform=web#call-sequence\">Call sequence​</a></h3>\n<p>The following figure shows the process in which the server sends a peer-to-peer message to the Signaling SDK.</p>\n<ul>\n<li><p>The receiver is online and <code>wait_for_ack</code> is <code>true</code></p>\n  <img src=\"https://web-cdn.agora.io/docs-files/1594349559808\" />\n  </li>\n<li><p><code>wait_for_ack</code> is <code>false</code></p>\n  <img src=\"https://web-cdn.agora.io/docs-files/1594349568673\" /></li>\n</ul>\n<h3 id=\"parameters\"><a href=\"https://docs.agora.io/en/signaling/reference/restful-messaging?platform=web#parameters\">Parameters​</a></h3>\n<h4 id=\"url-parameters\"><a href=\"https://docs.agora.io/en/signaling/reference/restful-messaging?platform=web#url-parameters\">URL parameters​</a></h4>\n<p>This API has the following URL parameters:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>user_id</code></td>\n<td>String</td>\n<td>Signaling user ID to send a peer-to-peer message. Must not exceed 64 characters in length and not be an empty string. This parameter supports the following characters:  <br />  <br />- All lowercase English letters: a to z.  <br />- All uppercase English letters: A to Z.  <br />- All numeric characters: 0 to 9.  <br />- The space character. (Not recommended: If the user ID contains a space, then the user ID cannot communicate with the Signaling SDK)  <br />- Punctuation characters and other symbols, including: \"!\", \"#\", \"$\", \"%\", \"&amp;\", \"(\", \")\", \"+\", \"-\", \":\", \";\", \"&lt;\", \"=\", \".\", \"&gt;\", \"?\", \"@\", \"[\", \"]\", \"^\", \"_\", \" , \", \"</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"query-parameters\"><a href=\"https://docs.agora.io/en/signaling/reference/restful-messaging?platform=web#query-parameters\">Query parameters​</a></h4>\n<p>This API has the following query parameters:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>wait_for_ack</code></td>\n<td>Boolean</td>\n<td>(Optional) Whether the API returns the HTTP response after the Signaling receives the ack response from the receiver to indicate that the message is received. The default is <code>false</code>.  <br />  <br />- <code>true</code>: The API returns the HTTP response after Signaling receives the ack response from the receiver to indicate that the message is received. The HTTP response contains <code>\"message delivered\"</code> if successful.  <br />- <code>false</code>: The API returns the HTTP response immediately after Signaling receives the message. The HTTP response contains <code>\"message sent\"</code> if successful.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"request-body-parameters\"><a href=\"https://docs.agora.io/en/signaling/reference/restful-messaging?platform=web#request-body-parameters\">Request body parameters​</a></h4>\n<p>This API has the following request body parameters:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>destination</code></td>\n<td>String</td>\n<td>Signaling user ID to receive a peer-to-peer message. Must not exceed 64 characters in length and not be an empty string. This parameter supports the following characters:  <br />  <br />- All lowercase English letters: a to z.  <br />- All uppercase English letters: A to Z.  <br />- All numeric characters: 0 to 9.  <br />- The space character. (Not recommended: If the user ID contains a space, then the user ID cannot communicate with the Signaling SDK)  <br />- Punctuation characters and other symbols, including: \"!\", \"#\", \"$\", \"%\", \"&amp;\", \"(\", \")\", \"+\", \"-\", \":\", \";\", \"&lt;\", \"=\", \".\", \"&gt;\", \"?\", \"@\", \"[\", \"]\", \"^\", \"_\", \" , \", \"</td>\n</tr>\n<tr>\n<td><code>enable_offline_messaging</code></td>\n<td>Boolean</td>\n<td>The offline message feature will be deprecated. Agora recommends that you do not use it.(Optional) Whether to enable offline messages. The default is <code>false</code>.  <br />  <br />- <code>true</code>: Enable offline messages. If the receiver is offline when you send a peer-to-peer message, Signaling saves the message. The receiver will receive the message when online.Signaling saves a maximum of 200 offline messages for each receiver. When the number of saved offline messages exceeds the maximum limit, the latest message replaces the earliest message.  <br />- <code>false</code>: Disable offline messages.</td>\n</tr>\n<tr>\n<td><code>enable_historical_messaging</code></td>\n<td>Boolean</td>\n<td>Whether to save as a historical message. The default value is <code>false</code>.  <br />  <br />- <code>true</code>: Save as historical messages. You can use the historical message RESTful API to query historical messages.  <br />- <code>false</code>:Do not save as historical messages.</td>\n</tr>\n<tr>\n<td><code>payload</code></td>\n<td>String</td>\n<td>Content of the peer-to-peer message. Must not be an empty string and not exceed 32 KB in length.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"response-body-parameters\"><a href=\"https://docs.agora.io/en/signaling/reference/restful-messaging?platform=web#response-body-parameters\">Response body parameters​</a></h4>\n<p>This API has the following response body parameters:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>result</code></td>\n<td>String</td>\n<td><br />  <br />Request result.  <br />  <br />- <code>\"success\"</code>: The request succeeds.  <br />- <code>\"failed\"</code>: The request fails.  <br />  <br /></td>\n</tr>\n<tr>\n<td><code>request_id</code></td>\n<td>String</td>\n<td>Unique ID to identify this request.</td>\n</tr>\n<tr>\n<td><code>code</code></td>\n<td>String</td>\n<td><br />  <br />Message status.  <br />  <br />- <code>\"message_sent\"</code>: The message is sent.  <br />- <code>\"message_delivered\"</code>: The message is received.  <br />- <code>\"message_offline\"</code>: The receiver is offline.  <br />  <br /></td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"request-example-2\"><a href=\"https://docs.agora.io/en/signaling/reference/restful-messaging?platform=web#request-example\">Request example​</a></h3>\n<ul>\n<li>Request URL:<code>https://api.agora.io/dev/v2/project/876922cbca0098dff4323566daa89675/rtm/users/userA/peer_messages?wait_for_ack=true</code></li>\n<li><code>Content-type</code> is <code>application/json;charset=utf-8</code></li>\n<li><code>Authorization</code> is basic HTTP or token. See <a href=\"https://docs.agora.io/en/faq/restful_authentication\">RESTful API Authentication</a>.</li>\n</ul>\n<h3 id=\"response-example-2\"><a href=\"https://docs.agora.io/en/signaling/reference/restful-messaging?platform=web#response-example\">Response example​</a></h3>\n<p>The message has been sent:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"result\": \"success\",\n    \"request_id\": \"123\",\n    \"code\": \"message_sent\"\n}\n\n</code></pre>\n<p>The message has been received:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"result\": \"success\",\n    \"request_id\": \"123\",\n    \"code\": \"message_delivered\"\n}\n\n</code></pre>\n<p>The receiver is offline:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"request_id\": \"123\",\n    \"code\": \"message_offline\"\n}\n\n</code></pre>\n<h2 id=\"sends-channel-message-api-post\"><a href=\"https://docs.agora.io/en/signaling/reference/restful-messaging?platform=web#sends-channel-message-api-post\">Sends channel message API (POST)​</a></h2>\n<ul>\n<li>Method: POST</li>\n<li>Access point: <code>/rtm/users//channel_messages</code></li>\n</ul>\n<p>Sends a channel message from the server. You can send a message to a channel without having to join it first.</p>\n<h3 id=\"call-limit-1\"><a href=\"https://docs.agora.io/en/signaling/reference/restful-messaging?platform=web#call-limit-1\">Call limit​</a></h3>\n<p>For each app ID, the maximum combined frequency of the <strong>Sends peer-to-peer message API</strong> and the <strong>Sends channel message API</strong> is 500 calls per second.</p>\n<h3 id=\"parameters-1\"><a href=\"https://docs.agora.io/en/signaling/reference/restful-messaging?platform=web#parameters-1\">Parameters​</a></h3>\n<h4 id=\"url-parameters-1\"><a href=\"https://docs.agora.io/en/signaling/reference/restful-messaging?platform=web#url-parameters-1\">URL parameters​</a></h4>\n<p>This API has the following URL parameters:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>user_id</code></td>\n<td>String</td>\n<td>Signaling user ID to send a channel message. Must not exceed 64 characters in length and not be an empty string. This parameter supports the following characters:  <br />  <br />- All lowercase English letters: a to z.  <br />- All uppercase English letters: A to Z.  <br />- All numeric characters: 0 to 9.  <br />- The space character. (Not recommended: If the user ID contains a space, then the user ID cannot communicate with the Signaling SDK)  <br />- Punctuation characters and other symbols, including: \"!\", \"#\", \"$\", \"%\", \"&amp;\", \"(\", \")\", \"+\", \"-\", \":\", \";\", \"&lt;\", \"=\", \".\", \"&gt;\", \"?\", \"@\", \"[\", \"]\", \"^\", \"_\", \" , \", \"</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"request-body-parameters-1\"><a href=\"https://docs.agora.io/en/signaling/reference/restful-messaging?platform=web#request-body-parameters-1\">Request body parameters​</a></h4>\n<p>This API has the following request body parameters:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>channel_name</code></td>\n<td>String</td>\n<td>Signaling channel name to receive a channel message. Must not exceed 64 characters in length and not be an empty string. This parameter supports the following characters:  <br />  <br />- All lowercase English letters: a to z.  <br />- All uppercase English letters: A to Z.  <br />- All numeric characters: 0 to 9.  <br />- The space character. (Not recommended: If the channel name contains a space, then the API cannot communicate with the Signaling SDK)  <br />- Punctuation characters and other symbols, including: \"!\", \"#\", \"$\", \"%\", \"&amp;\", \"(\", \")\", \"+\", \"-\", \":\", \";\", \"&lt;\", \"=\", \".\", \"&gt;\", \"?\", \"@\", \"[\", \"]\", \"^\", \"_\", \" , \", \"</td>\n</tr>\n<tr>\n<td><code>payload</code></td>\n<td>String</td>\n<td>Content of the channel message. Must not be an empty string and not exceed 32 KB in length.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"response-body-parameters-1\"><a href=\"https://docs.agora.io/en/signaling/reference/restful-messaging?platform=web#response-body-parameters-1\">Response body parameters​</a></h4>\n<p>This API has the following response body parameters:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>code</code></td>\n<td>String</td>\n<td>Message status.  <br />  <br />- <code>\"message_sent\"</code>: The message is sent.</td>\n</tr>\n<tr>\n<td><code>request_id</code></td>\n<td>String</td>\n<td>Unique ID to identify this request.</td>\n</tr>\n<tr>\n<td><code>result</code></td>\n<td>String</td>\n<td>Request result.  <br />  <br />- <code>\"success\"</code>: The request succeeds.  <br />- <code>\"failed\"</code>: The request fails.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"request-example-3\"><a href=\"https://docs.agora.io/en/signaling/reference/restful-messaging?platform=web#request-example-1\">Request example​</a></h3>\n<ul>\n<li>Request URL<code>https://api.agora.io/dev/v2/project/876922cbca0098dff4323566daa89675/rtm/users/userA/channel_messages</code></li>\n<li><code>Content-type</code> is <code>application/json;charset=utf-8</code></li>\n<li><code>Authorization</code> is basic HTTP or token. See <a href=\"https://docs.agora.io/en/signaling/develop/authentication-workflow\">Secure authentication with tokens</a>.</li>\n</ul>\n<h3 id=\"response-example-3\"><a href=\"https://docs.agora.io/en/signaling/reference/restful-messaging?platform=web#response-example-1\">Response example​</a></h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"code\": \"message_sent\",\n    \"request_id\": \"123\",\n    \"result\": \"success\"\n}\n\n</code></pre>\n<h2 id=\"status-code-1\"><a href=\"https://docs.agora.io/en/signaling/reference/restful-messaging?platform=web#status-code\">Status code​</a></h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status code</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>200</td>\n<td>The request is successful.</td>\n</tr>\n<tr>\n<td>400</td>\n<td>The request parameters are incorrect. Please check the parameters per the error message.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>User authentication error.</td>\n</tr>\n<tr>\n<td>408</td>\n<td>No response from the server or the request times out. Please try again later.</td>\n</tr>\n<tr>\n<td>429</td>\n<td>Too many requests.</td>\n</tr>\n<tr>\n<td>500</td>\n<td>Internal server error.</td>\n</tr>\n</tbody>\n</table>\n</div><p><a href=\"https://docs.agora.io/en/signaling/reference/restful-messaging?platform=android\">https://docs.agora.io/en/signaling/reference/restful-messaging?platform=android</a></p>\n","auth":{"type":"noauth","isInherited":false},"event":[{"listen":"prerequest","script":{"id":"77050d9d-8e7a-4329-a395-4b8388a0249d","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"0424b20b-a066-4ae2-88e0-e0774238423e","type":"text/javascript","exec":[""]}}],"_postman_id":"096a65fd-46ea-42cb-861b-d6804bfca207"},{"name":"Real-Time STT 7.x","item":[{"name":"start","event":[{"listen":"prerequest","script":{"id":"46a42dee-317d-4063-a460-0696e2f0ef49","exec":[""],"type":"text/javascript","packages":{}}},{"listen":"test","script":{"id":"991b2365-3e62-41d7-8876-d3b87d4b15da","exec":["var jsonData = JSON.parse(responseBody);\r","pm.collectionVariables.set(\"agentId\", jsonData.agent_id);\r","pm.test(\"Status code is 200\", function () {\r","    pm.response.to.have.status(200);\r","});"],"type":"text/javascript","packages":{}}}],"id":"905e6096-42b9-46a1-9741-ff354a01fd43","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"languages\": [\r\n        \"en-US\"\r\n    ],\r\n    \"name\": \"{{channelName}}\",\r\n    \"maxIdleTime\": 60,\r\n    \"rtcConfig\": {\r\n        \"channelName\": \"{{channelName}}\",\r\n        \"subBotUid\": \"{{audioUID}}\",\r\n        \"subBotToken\": \"{{subBotToken}}\",\r\n        \"pubBotUid\": \"{{textUID}}\",\r\n        \"pubBotToken\": \"{{pubBotToken}}\",\r\n        \"subscribeAudioUids\": [\r\n            \"{{rtcUserUid}}\"\r\n        ]\r\n    },\r\n    \"captionConfig\": {\r\n        \"sliceDuration\": 60,\r\n        \"storage\": {\r\n            \"accessKey\":\"{{AccessKey}}\",\r\n            \"secretKey\":\"{{SecretKey}}\",\r\n            \"bucket\":\"{{Bucket}}\",\r\n            \"vendor\": {{StorageVendor}},\r\n            \"region\": {{StorageRegion}},\r\n            \"fileNamePrefix\":[\r\n                \"directory\",\r\n                \"subDirectory\"\r\n            ]\r\n        }\r\n    }\r\n}","options":{"raw":{"language":"json"}}},"url":"https://api.agora.io/api/speech-to-text/v1/projects/:appId/join","description":"<h4 id=\"start-a-real-time-stt-task\">Start a Real-Time STT task</h4>\n<p>Use this request to configure and start a real-time transcription task.</p>\n<p><strong>Request body parameters</strong><br />The following parameters need to be passed in the request body:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Key</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>languages</code></td>\n<td>Array (String)</td>\n<td>Required, The current version supports at most two, separated by commas. For specific supported languages, see the list of <a href=\"https://docs.agora.io/en/real-time-stt/develop/supported-languages\">supported languages</a></td>\n</tr>\n<tr>\n<td><code>maxIdleTime</code></td>\n<td>Number</td>\n<td>If there is no audio stream in the channel for more than this time, the task will stop automatically. The default is 30 seconds. The unit is seconds, Range 5 seconds - 2592000 seconds (30 days).</td>\n</tr>\n<tr>\n<td><code>rtcConfig</code></td>\n<td>JSON Object</td>\n<td>Required</td>\n</tr>\n<tr>\n<td><code>rtcConfig.channelName</code></td>\n<td>String</td>\n<td>Required, the name of the channel for which you want to start the RTT service</td>\n</tr>\n<tr>\n<td><code>rtcConfig.subBotUid</code></td>\n<td>String</td>\n<td>Required, The UID of the bot subscribing to the audio. See notes section.</td>\n</tr>\n<tr>\n<td><code>rtcConfig.subBotToken</code></td>\n<td>String</td>\n<td>The token for the bot subscribing to the audio. If your project has enabled token authentication, you must fill in this item.</td>\n</tr>\n<tr>\n<td><code>rtcConfig.pubBotUid</code></td>\n<td>String</td>\n<td>Required, The UID of the bot publishing the text to the channel. See notes section.</td>\n</tr>\n<tr>\n<td><code>rtcConfig.pubBotToken</code></td>\n<td>Number</td>\n<td>The token for the publisher bot publishing the text to the channel. If your project has enabled token authentication, you must fill in this item.</td>\n</tr>\n<tr>\n<td><code>rtcConfig.subscribeAudioConfig</code></td>\n<td>JSON Object</td>\n<td>Optional, <a href=\"https://docs.agora.io/en/real-time-stt/develop/transcribe-individual-host\">UIDs of RTC users that you want to subscribe to</a></td>\n</tr>\n<tr>\n<td><code>captionConfig</code></td>\n<td>JSON Object</td>\n<td>Cloud recording settings (Optional, Only needed to record subtitle files to an S3 bucket)</td>\n</tr>\n<tr>\n<td><code>captionConfig.storage</code></td>\n<td>Object</td>\n<td>Required, the current version is fixed to <code>[\"RECOGNIZE\"]</code></td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>captionConfig.storage</strong><br />Please refer to <a href=\"https://docs.agora.io/en/cloud-recording/reference/restful-api#properties-2\">storage config</a> of Cloud Recording</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Key</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>accessKey</code></td>\n<td>String</td>\n<td>Required, access key of oss</td>\n</tr>\n<tr>\n<td><code>secretKey</code></td>\n<td>String</td>\n<td>Required, oss secret key</td>\n</tr>\n<tr>\n<td><code>bucket</code></td>\n<td>String</td>\n<td>Required, oss bucket</td>\n</tr>\n<tr>\n<td><code>vendor</code></td>\n<td>Number</td>\n<td>Required, <a href=\"https://docs.agora.io/en/cloud-recording/reference/region-vendor\">vendor</a> of oss</td>\n</tr>\n<tr>\n<td><code>region</code></td>\n<td>Number</td>\n<td>Required, the region of oss</td>\n</tr>\n<tr>\n<td><code>fileNamePrefix</code></td>\n<td>Array String</td>\n<td>Optional, an array of directory strings to append to store files</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>rtcConfig</strong><br />These are optional parameters that you can add to the rtcConfig mentioned above. <a href=\"https://docs.agora.io/en/real-time-stt/develop/encrypt-captions\">Encryption</a> may be needed if you encrypt your RTC calls.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Key</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>cryptionMode</td>\n<td>String</td>\n<td>Optional, The encryption mode, configure when the app needs encryption for the audio and caption text</td>\n</tr>\n<tr>\n<td>secret</td>\n<td>String</td>\n<td>Encryption secret</td>\n</tr>\n<tr>\n<td>salt</td>\n<td>String</td>\n<td>Encryption salt (if used in RTC)</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>translateConfig</strong><br />Translation is in beta currently. If you want to test translation, you can add this parameter to your start request and it will translate as well. There is a cost with translation added to transcription so please consult your Agora sales team prior to doing so as to not incur unintended charges.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Key</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>translateConfig.languages</code></td>\n<td>Array (Object)</td>\n<td>The source transcription languages and the target translated languages</td>\n</tr>\n<tr>\n<td><code>translateConfig.languages.source</code></td>\n<td>String</td>\n<td>The transcription language that you are setting for the initial language</td>\n</tr>\n<tr>\n<td><code>translateConfig.languages.target</code></td>\n<td>Array (String)</td>\n<td>The language that should be translated into, we support up to 5 translated languages</td>\n</tr>\n</tbody>\n</table>\n</div><p>Example for multi-language with translation</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">\"translateConfig\": {\n        \"languages\": [\n            {\n                \"source\": \"en-US\", \n                \"target\": [\n                    \"language-1\", \n                    \"language-2\", \n                    \"language-3\"\n                ]\n            },\n            {\n                \"source\": \"es-ES\", \n                \"target\": [\n                    \"language-4\",\n                    \"language-5\"\n                ]\n            }\n        ]\n    }\n\n</code></pre>\n<p>Note:</p>\n<ul>\n<li><p><code>rtcConfig.subBotUid</code> and <code>rtcConfig.pubBotUid</code> must be different, and only int uid can be used, and the tokens used by the two are also different.</p>\n</li>\n<li><p><code>rtcConfig.subBotUid</code> and <code>rtcConfig.pubBotUid</code> must be different from the multiple uids in the channel</p>\n</li>\n<li><p>If you need to <a href=\"https://docs.agora.io/en/real-time-stt/develop/record-captions\">synchronize the subtitle file</a> with the audio and video files recorded in the cloud, you need to add the following settings in the start request body of the <strong>cloud recording</strong> when the cloud recording starts</p>\n</li>\n</ul>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"privateParams\": \"{\\\"enableNTPtimestamp\\\": true}\",\n    ...\n}\n\n</code></pre>\n<h5 id=\"http-response\">HTTP response​</h5>\n<p><strong>Response body</strong></p>\n<p>If the status code is 2XX, the request is successful. The response body contains the following fields:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>taskId</code></td>\n<td>String</td>\n<td>The task ID, a UUID (Universal Unique Identifier) generated by the Agora server to identify the real-time transcription task that has been created.</td>\n</tr>\n<tr>\n<td><code>createTs</code></td>\n<td>Number</td>\n<td>The Unix timestamp (seconds) when the task was created.</td>\n</tr>\n<tr>\n<td><code>status</code></td>\n<td>String</td>\n<td>The running status of the task:  <br />  <br />- <code>IDLE</code>: The task has not started or has ended.  <br />- <code>PREPARING</code>: The task has received a start request.  <br />- <code>STARTED</code>: The task has started.  <br />- <code>IN_PROGRESS</code>: The task is in progress.  <br />- <code>STOPPING</code>: The task is stopping.  <br />- <code>STOPPED</code>: The task has been stopped.  <br />- <code>RECONNECTING</code>: The task is being reestablished.</td>\n</tr>\n</tbody>\n</table>\n</div><p>If the status code is not <code>2XX</code>, the request has failed. In this case, the response body contains the message field reporting the reason.</p>\n","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":true,"source":{"_postman_id":"69bd200a-7543-4104-8ccc-415741abbeb7","id":"69bd200a-7543-4104-8ccc-415741abbeb7","name":"Real-Time STT 7.x","type":"folder"}},"urlObject":{"protocol":"https","path":["api","speech-to-text","v1","projects",":appId","join"],"host":["api","agora","io"],"query":[],"variable":[{"type":"any","value":"{{appID}}","key":"appId"}]}},"response":[{"id":"1f511eb1-93a1-45b7-8b9a-49963c77f4b3","name":"start","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"languages\": [\r\n        \"en-US\"\r\n    ],\r\n    \"name\": \"{{channelName}}\",\r\n    \"maxIdleTime\": 60,\r\n    \"rtcConfig\": {\r\n        \"channelName\": \"XXXX\",\r\n        \"subBotUid\": \"666\",\r\n        \"subBotToken\":\"007lnoquitehr98ter89hdfnvfdvdfvdf\",\r\n        \"pubBotUid\": \"666666\",\r\n        \"pubBotToken\":\"007lnoquitehr98ter89hdfnvfdvdfvdf\",\r\n        \"subscribeAudioUids\": [\r\n            \"1234\",\r\n            \"5678\"\r\n        ]\r\n    },\r\n    \"captionConfig\": {\r\n        \"sliceDuration\": 60,\r\n        \"storage\": {\r\n            \"accessKey\":\"3tergregdgdfdfbf3tergregdgdfdfbf3tergregdgdfdfbf\",\r\n            \"secretKey\":\"dsfgsfgdsfg34grdsfgsfgdsfg34grdsfgsfgdsfg34gr\",\r\n            \"bucket\":\"agoraTranscriptions\",\r\n            \"vendor\": 1,\r\n            \"region\": 1,\r\n            \"fileNamePrefix\":[\r\n                \"directory\",\r\n                \"subDirectory\"\r\n            ]\r\n        }\r\n    }\r\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://api.agora.io/api/speech-to-text/v1/projects/:appId/join","protocol":"https","host":["api","agora","io"],"path":["api","speech-to-text","v1","projects",":appId","join"],"variable":[{"key":"appId","value":"{{appId}}"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Sat, 11 Mar 2023 03:37:32 GMT"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"87"},{"key":"Connection","value":"keep-alive"},{"key":"X-Capacity-RateLimit-Remaining-second","value":"10"},{"key":"X-Capacity-RateLimit","value":"active"},{"key":"X-Capacity-RateLimit-Limit-second","value":"10"},{"key":"RateLimit-Remaining","value":"9"},{"key":"X-RateLimit-Remaining-Second","value":"9"},{"key":"X-RateLimit-Limit-Second","value":"10"},{"key":"RateLimit-Limit","value":"10"},{"key":"RateLimit-Reset","value":"1"},{"key":"Accept-Ranges","value":"bytes"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"X-Request-ID","value":"ce5bdb3422e0400d801bbbf9966fc782"}],"cookie":[],"responseTime":null,"body":"{\n    \"createTs\": 1678505852,\n    \"status\": \"STARTED\",\n    \"agent_id\": \"13696ee5864e9f0df5979a8eda4545b8\"\n}"}],"_postman_id":"905e6096-42b9-46a1-9741-ff354a01fd43"},{"name":"update","event":[{"listen":"prerequest","script":{"id":"46a42dee-317d-4063-a460-0696e2f0ef49","exec":[""],"type":"text/javascript","packages":{}}},{"listen":"test","script":{"id":"991b2365-3e62-41d7-8876-d3b87d4b15da","exec":[""],"type":"text/javascript","packages":{}}}],"id":"3a42b30c-2f0e-48a1-8ffd-1a016c0f9542","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"languages\": [\r\n        \"en-US\",\r\n        \"ru-RU\"    // Max can configure 4 languages. If set 2 languages, STT service will automaticly enable Language Detection feature with an addtional cost.\r\n    ],\r\n    \"rtcConfig\": {\r\n        \"subscribeAudioUids\": [\r\n            \"{{rtcUserUid1}}\", \r\n            \"{{rtcUserUid2}}\"\r\n            ]   // [\"all\"] or [\"uid1\", \"uid2\", \"uid3\"], \"all\" means service channel.\r\n    }\r\n}","options":{"raw":{"language":"json"}}},"url":"https://api.agora.io/api/speech-to-text/v1/projects/:appId/agents/:agentId/update?sequenceId=1&updateMask=languages,rtcConfig,subscribeAudioUids","description":"<h4 id=\"start-a-real-time-stt-task\">Start a Real-Time STT task</h4>\n<p>Use this request to configure and start a real-time transcription task.</p>\n<p><strong>Request body parameters</strong><br />The following parameters need to be passed in the request body:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Key</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>languages</code></td>\n<td>Array (String)</td>\n<td>Required, The current version supports at most two, separated by commas. For specific supported languages, see the list of <a href=\"https://docs.agora.io/en/real-time-stt/develop/supported-languages\">supported languages</a></td>\n</tr>\n<tr>\n<td><code>maxIdleTime</code></td>\n<td>Number</td>\n<td>If there is no audio stream in the channel for more than this time, the task will stop automatically. The default is 30 seconds. The unit is seconds, Range 5 seconds - 2592000 seconds (30 days).</td>\n</tr>\n<tr>\n<td><code>rtcConfig</code></td>\n<td>JSON Object</td>\n<td>Required</td>\n</tr>\n<tr>\n<td><code>rtcConfig.channelName</code></td>\n<td>String</td>\n<td>Required, the name of the channel for which you want to start the RTT service</td>\n</tr>\n<tr>\n<td><code>rtcConfig.subBotUid</code></td>\n<td>String</td>\n<td>Required, The UID of the bot subscribing to the audio. See notes section.</td>\n</tr>\n<tr>\n<td><code>rtcConfig.subBotToken</code></td>\n<td>String</td>\n<td>The token for the bot subscribing to the audio. If your project has enabled token authentication, you must fill in this item.</td>\n</tr>\n<tr>\n<td><code>rtcConfig.pubBotUid</code></td>\n<td>String</td>\n<td>Required, The UID of the bot publishing the text to the channel. See notes section.</td>\n</tr>\n<tr>\n<td><code>rtcConfig.pubBotToken</code></td>\n<td>Number</td>\n<td>The token for the publisher bot publishing the text to the channel. If your project has enabled token authentication, you must fill in this item.</td>\n</tr>\n<tr>\n<td><code>rtcConfig.subscribeAudioConfig</code></td>\n<td>JSON Object</td>\n<td>Optional, <a href=\"https://docs.agora.io/en/real-time-stt/develop/transcribe-individual-host\">UIDs of RTC users that you want to subscribe to</a></td>\n</tr>\n<tr>\n<td><code>captionConfig</code></td>\n<td>JSON Object</td>\n<td>Cloud recording settings (Optional, Only needed to record subtitle files to an S3 bucket)</td>\n</tr>\n<tr>\n<td><code>captionConfig.storage</code></td>\n<td>Object</td>\n<td>Required, the current version is fixed to <code>[\"RECOGNIZE\"]</code></td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>captionConfig.storage</strong><br />Please refer to <a href=\"https://docs.agora.io/en/cloud-recording/reference/restful-api#properties-2\">storage config</a> of Cloud Recording</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Key</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>accessKey</code></td>\n<td>String</td>\n<td>Required, access key of oss</td>\n</tr>\n<tr>\n<td><code>secretKey</code></td>\n<td>String</td>\n<td>Required, oss secret key</td>\n</tr>\n<tr>\n<td><code>bucket</code></td>\n<td>String</td>\n<td>Required, oss bucket</td>\n</tr>\n<tr>\n<td><code>vendor</code></td>\n<td>Number</td>\n<td>Required, <a href=\"https://docs.agora.io/en/cloud-recording/reference/region-vendor\">vendor</a> of oss</td>\n</tr>\n<tr>\n<td><code>region</code></td>\n<td>Number</td>\n<td>Required, the region of oss</td>\n</tr>\n<tr>\n<td><code>fileNamePrefix</code></td>\n<td>Array String</td>\n<td>Optional, an array of directory strings to append to store files</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>rtcConfig</strong><br />These are optional parameters that you can add to the rtcConfig mentioned above. <a href=\"https://docs.agora.io/en/real-time-stt/develop/encrypt-captions\">Encryption</a> may be needed if you encrypt your RTC calls.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Key</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>cryptionMode</td>\n<td>String</td>\n<td>Optional, The encryption mode, configure when the app needs encryption for the audio and caption text</td>\n</tr>\n<tr>\n<td>secret</td>\n<td>String</td>\n<td>Encryption secret</td>\n</tr>\n<tr>\n<td>salt</td>\n<td>String</td>\n<td>Encryption salt (if used in RTC)</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>translateConfig</strong><br />Translation is in beta currently. If you want to test translation, you can add this parameter to your start request and it will translate as well. There is a cost with translation added to transcription so please consult your Agora sales team prior to doing so as to not incur unintended charges.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Key</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>translateConfig.languages</code></td>\n<td>Array (Object)</td>\n<td>The source transcription languages and the target translated languages</td>\n</tr>\n<tr>\n<td><code>translateConfig.languages.source</code></td>\n<td>String</td>\n<td>The transcription language that you are setting for the initial language</td>\n</tr>\n<tr>\n<td><code>translateConfig.languages.target</code></td>\n<td>Array (String)</td>\n<td>The language that should be translated into, we support up to 5 translated languages</td>\n</tr>\n</tbody>\n</table>\n</div><p>Example for multi-language with translation</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">\"translateConfig\": {\n        \"languages\": [\n            {\n                \"source\": \"en-US\", \n                \"target\": [\n                    \"language-1\", \n                    \"language-2\", \n                    \"language-3\"\n                ]\n            },\n            {\n                \"source\": \"es-ES\", \n                \"target\": [\n                    \"language-4\",\n                    \"language-5\"\n                ]\n            }\n        ]\n    }\n\n</code></pre>\n<p>Note:</p>\n<ul>\n<li><p><code>rtcConfig.subBotUid</code> and <code>rtcConfig.pubBotUid</code> must be different, and only int uid can be used, and the tokens used by the two are also different.</p>\n</li>\n<li><p><code>rtcConfig.subBotUid</code> and <code>rtcConfig.pubBotUid</code> must be different from the multiple uids in the channel</p>\n</li>\n<li><p>If you need to <a href=\"https://docs.agora.io/en/real-time-stt/develop/record-captions\">synchronize the subtitle file</a> with the audio and video files recorded in the cloud, you need to add the following settings in the start request body of the <strong>cloud recording</strong> when the cloud recording starts</p>\n</li>\n</ul>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"privateParams\": \"{\\\"enableNTPtimestamp\\\": true}\",\n    ...\n}\n\n</code></pre>\n<h5 id=\"http-response\">HTTP response​</h5>\n<p><strong>Response body</strong></p>\n<p>If the status code is 2XX, the request is successful. The response body contains the following fields:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>taskId</code></td>\n<td>String</td>\n<td>The task ID, a UUID (Universal Unique Identifier) generated by the Agora server to identify the real-time transcription task that has been created.</td>\n</tr>\n<tr>\n<td><code>createTs</code></td>\n<td>Number</td>\n<td>The Unix timestamp (seconds) when the task was created.</td>\n</tr>\n<tr>\n<td><code>status</code></td>\n<td>String</td>\n<td>The running status of the task:  <br />  <br />- <code>IDLE</code>: The task has not started or has ended.  <br />- <code>PREPARING</code>: The task has received a start request.  <br />- <code>STARTED</code>: The task has started.  <br />- <code>IN_PROGRESS</code>: The task is in progress.  <br />- <code>STOPPING</code>: The task is stopping.  <br />- <code>STOPPED</code>: The task has been stopped.  <br />- <code>RECONNECTING</code>: The task is being reestablished.</td>\n</tr>\n</tbody>\n</table>\n</div><p>If the status code is not <code>2XX</code>, the request has failed. In this case, the response body contains the message field reporting the reason.</p>\n","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":true,"source":{"_postman_id":"69bd200a-7543-4104-8ccc-415741abbeb7","id":"69bd200a-7543-4104-8ccc-415741abbeb7","name":"Real-Time STT 7.x","type":"folder"}},"urlObject":{"protocol":"https","path":["api","speech-to-text","v1","projects",":appId","agents",":agentId","update"],"host":["api","agora","io"],"query":[{"key":"sequenceId","value":"1"},{"key":"updateMask","value":"languages,rtcConfig,subscribeAudioUids"}],"variable":[{"type":"any","value":"{{appID}}","key":"appId"},{"type":"any","value":"{{agentId}}","key":"agentId"}]}},"response":[{"id":"19991947-dc2f-4ed2-92a0-62256fcabe7a","name":"update","originalRequest":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"languages\": [\r\n        \"en-US\",\r\n        \"ru-RU\"\r\n    ],\r\n    \"rtcConfig\": {\r\n        \"subscribeAudioUids\": [\r\n            \"9876\", \r\n            \"5432\"\r\n            ]\r\n    }\r\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://api.agora.io/v1/projects/:appId/rtsc/speech-to-text/tasks?builderToken=&sequenceId=1&updateMask=languages,rtcConfig.subscribeAudioUids","protocol":"https","host":["api","agora","io"],"path":["v1","projects",":appId","rtsc","speech-to-text","tasks"],"query":[{"key":"builderToken","value":""},{"key":"sequenceId","value":"1"},{"key":"updateMask","value":"languages,rtcConfig.subscribeAudioUids"}],"variable":[{"key":"appId","value":"{{appId}}"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Sat, 11 Mar 2023 03:37:32 GMT"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"87"},{"key":"Connection","value":"keep-alive"},{"key":"X-Capacity-RateLimit-Remaining-second","value":"10"},{"key":"X-Capacity-RateLimit","value":"active"},{"key":"X-Capacity-RateLimit-Limit-second","value":"10"},{"key":"RateLimit-Remaining","value":"9"},{"key":"X-RateLimit-Remaining-Second","value":"9"},{"key":"X-RateLimit-Limit-Second","value":"10"},{"key":"RateLimit-Limit","value":"10"},{"key":"RateLimit-Reset","value":"1"},{"key":"Accept-Ranges","value":"bytes"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"X-Request-ID","value":"ce5bdb3422e0400d801bbbf9966fc782"}],"cookie":[],"responseTime":null,"body":"{\n    \"createTs\": 1678505852,\n    \"status\": \"IN_PROGRESS\",\n    \"taskId\": \"13696ee5864e9f0df5979a8eda4545b8\"\n}\n"}],"_postman_id":"3a42b30c-2f0e-48a1-8ffd-1a016c0f9542"},{"name":"query","event":[{"listen":"test","script":{"id":"98b33f53-7ec9-4edc-a1f4-82d20b28efe1","exec":["pm.test(\"Status code is 200\", function () {\r","    pm.response.to.have.status(200);\r","});"],"type":"text/javascript","packages":{}}}],"id":"071b715b-8e5a-46ef-a088-edaa21bb4a68","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":"https://api.agora.io/api/speech-to-text/v1/projects/:appId/agents/:agentId","description":"<h4 id=\"query-the-status-of-real-time-transcription\">Query the status of real-time transcription</h4>\n<p>Use this request to get information about the status of a real-time transcription task.</p>\n<h5 id=\"http-response\">HTTP response​</h5>\n<p><strong>Response body</strong></p>\n<p>If the response status code is <code>2XX</code>, the request is successful. The response body contains the following fields:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>taskId</code></td>\n<td>String</td>\n<td>The task ID, a UUID identifying the real-time transcription task.</td>\n</tr>\n<tr>\n<td><code>createTs</code></td>\n<td>Number</td>\n<td>The Unix timestamp (seconds) when the task was created.</td>\n</tr>\n<tr>\n<td><code>status</code></td>\n<td>Number</td>\n<td>The running status of tasks:  <br />  <br />- <code>IDLE</code>: The task has not started or has ended.  <br />- <code>PREPARING</code>: The task has received a start request.  <br />- <code>IN_PROGRESS</code>: The task is in progress.  <br />- <code>STOPPING</code>: The task is stopping.  <br />- <code>STOPPED</code>: The task has been stopped.  <br />- <code>RECONNECTING</code>: The task is being reestablished.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":true,"source":{"_postman_id":"69bd200a-7543-4104-8ccc-415741abbeb7","id":"69bd200a-7543-4104-8ccc-415741abbeb7","name":"Real-Time STT 7.x","type":"folder"}},"urlObject":{"protocol":"https","path":["api","speech-to-text","v1","projects",":appId","agents",":agentId"],"host":["api","agora","io"],"query":[],"variable":[{"description":{"content":"<p>The App ID provided by Agora</p>\n","type":"text/plain"},"type":"any","value":"{{appID}}","key":"appId"},{"type":"any","value":"{{agentId}}","key":"agentId"}]}},"response":[{"id":"2a625251-8500-42e3-a331-de099b1f4845","name":"query","originalRequest":{"method":"GET","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":{"raw":"https://api.agora.io/api/speech-to-text/v1/projects/:appId/agents/:agentId","protocol":"https","host":["api","agora","io"],"path":["api","speech-to-text","v1","projects",":appId","agents",":agentId"],"variable":[{"key":"appId","value":"{{appId}}"},{"key":"agentId","value":""}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Sat, 11 Mar 2023 03:38:04 GMT"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"91"},{"key":"Connection","value":"keep-alive"},{"key":"X-Capacity-RateLimit","value":"active"},{"key":"X-Capacity-RateLimit-Remaining-second","value":"10"},{"key":"X-Capacity-RateLimit-Limit-second","value":"10"},{"key":"X-RateLimit-Remaining-Second","value":"9"},{"key":"X-RateLimit-Limit-Second","value":"10"},{"key":"RateLimit-Limit","value":"10"},{"key":"RateLimit-Remaining","value":"9"},{"key":"RateLimit-Reset","value":"1"},{"key":"Accept-Ranges","value":"bytes"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"X-Request-ID","value":"b6522b456ba04552bd30549764cc6a37"}],"cookie":[],"responseTime":null,"body":"{\n    \"createTs\": 1678505852,\n    \"status\": \"RUNNING\",\n    \"agent_id\": \"13696ee5864e9f0df5979a8eda4545b8\",\n    \"message\": \"Details of the request result\"\n}"}],"_postman_id":"071b715b-8e5a-46ef-a088-edaa21bb4a68"},{"name":"stop","event":[{"listen":"test","script":{"id":"da41d89c-4c09-4760-acd4-a7259436292a","exec":["pm.test(\"Status code is 200\", function () {\r","    pm.response.to.have.status(200);\r","});"],"type":"text/javascript","packages":{}}}],"id":"3ecab444-c4b1-4204-a867-322785a16a29","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":"https://api.agora.io/api/speech-to-text/v1/projects/:appId/agents/:agentId/leave","description":"<h4 id=\"stop-real-time-transcription\">Stop real-time transcription</h4>\n<p>If the response status code is <code>2XX</code>, the request is successful.</p>\n","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":true,"source":{"_postman_id":"69bd200a-7543-4104-8ccc-415741abbeb7","id":"69bd200a-7543-4104-8ccc-415741abbeb7","name":"Real-Time STT 7.x","type":"folder"}},"urlObject":{"protocol":"https","path":["api","speech-to-text","v1","projects",":appId","agents",":agentId","leave"],"host":["api","agora","io"],"query":[{"disabled":true,"key":"","value":null}],"variable":[{"type":"any","value":"{{appID}}","key":"appId"},{"type":"any","value":"{{agentId}}","key":"agentId"}]}},"response":[],"_postman_id":"3ecab444-c4b1-4204-a867-322785a16a29"}],"id":"69bd200a-7543-4104-8ccc-415741abbeb7","description":"<p>All HTTP requests in this folder require basic authentication. Use <code>customerID</code> as the Username, and <code>customerSecret</code> as the password. You can obtain these parameters from <a href=\"https://console.agora.io/\">Agora Console</a> by clicking on your user name and then selecting <strong>RESTful API</strong> fom the menu.</p>\n<p><a href=\"https://docs.agora.io/en/real-time-stt/overview/product-overview\">https://docs.agora.io/en/real-time-stt/overview/product-overview</a></p>\n","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":false},"event":[{"listen":"prerequest","script":{"id":"a8856065-b1d9-458d-acdd-2c374cfac845","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"03bcab53-df27-4330-92a6-773ed6eac0b3","type":"text/javascript","exec":[""]}}],"_postman_id":"69bd200a-7543-4104-8ccc-415741abbeb7"},{"name":"Real-Time STT 6.x","item":[{"name":"acquire","event":[{"listen":"test","script":{"id":"323d9872-b82c-4bcf-9e69-c602015fb789","exec":["var jsonData = JSON.parse(responseBody);\r","postman.setEnvironmentVariable(\"builderToken\", jsonData.tokenName);\r","pm.test(\"Status code is 200\", function () {\r","    pm.response.to.have.status(200);\r","});"],"type":"text/javascript"}}],"id":"aaf6a513-e8ff-4c5b-866e-8b34879fb12b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"instanceId\": \"demo\"\r\n}\r\n","options":{"raw":{"language":"json"}}},"url":"https://api.agora.io/v1/projects/:appId/rtsc/speech-to-text/builderTokens","description":"<h4 id=\"acquire-a-buildertoken\">Acquire a <code>builderToken</code>​</h4>\n<p>Use this request to generate a <code>builderToken</code> before starting a real-time transcription task. You use the <code>builderToken</code> to securely start, query, and stop your real-time transcription tasks.</p>\n<p>Use this <code>builderToken</code> to send a start request within 5 minutes. After this time, you need to generate a new <code>builderToken</code>.</p>\n<p><strong>Request body parameters</strong></p>\n<p>The following parameters need to be passed in the request body:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Key</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>instanceId</code></td>\n<td>String</td>\n<td>(Required) The instance ID set by the developer. The maximum length is 64 characters. The following character sets are supported:  <br />  <br />- All lowercase and uppercase English letters (a-z, A-Z)  <br />- All numeric characters: 0-9  <br />- \"-\", \"_\"  <br />Best practice is to use the channel name as the <code>instanceId</code>.  <br />One <code>instanceId</code> can be used to generate multiple <code>builderTokens</code>, but only one <code>builderToken</code> can be used to send a request in a task.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"http-response\">HTTP response​</h5>\n<p>If the status code is <code>2XX</code>, the request is successful. The response body contains the following fields:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Key</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>tokenName</code></td>\n<td>String</td>\n<td>The value of the dynamic key <code>builderToken</code>. This value needs to be passed in when calling other methods.</td>\n</tr>\n<tr>\n<td><code>createTs</code></td>\n<td>Number</td>\n<td>The Unix timestamp (seconds) when the <code>builderToken</code> was generated.</td>\n</tr>\n<tr>\n<td><code>instanceId</code></td>\n<td>Number</td>\n<td>The instance ID set in the request body.</td>\n</tr>\n</tbody>\n</table>\n</div><p>If the status code is not <code>2XX</code>, the request has failed. In this case, the response body contains the <code>message</code> field, reporting the reason for the failure.</p>\n","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":true,"source":{"_postman_id":"9353d85b-73e9-4f87-a273-2a1180f554ca","id":"9353d85b-73e9-4f87-a273-2a1180f554ca","name":"Real-Time STT 6.x","type":"folder"}},"urlObject":{"protocol":"https","path":["v1","projects",":appId","rtsc","speech-to-text","builderTokens"],"host":["api","agora","io"],"query":[],"variable":[{"id":"9b84d08d-a8dd-4012-9a82-885a936a3139","description":{"content":"<p>The App ID provided by Agora.</p>\n","type":"text/plain"},"type":"any","value":"{{appID}}","key":"appId"}]}},"response":[{"id":"8b61e9b2-7e6a-4007-ae54-c9289b02dbf8","name":"acquire","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"instanceId\": \"XXXX\"\r\n}\r\n","options":{"raw":{"language":"json"}}},"url":{"raw":"https://api.agora.io/v1/projects/:appId/rtsc/speech-to-text/builderTokens","protocol":"https","host":["api","agora","io"],"path":["v1","projects",":appId","rtsc","speech-to-text","builderTokens"],"variable":[{"key":"appId","value":"{{appId}}","description":"The App ID provided by Agora."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Sat, 11 Mar 2023 03:36:31 GMT"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"443"},{"key":"Connection","value":"keep-alive"},{"key":"X-Capacity-RateLimit","value":"active"},{"key":"X-Capacity-RateLimit-Limit-second","value":"10"},{"key":"X-Capacity-RateLimit-Remaining-second","value":"10"},{"key":"X-RateLimit-Remaining-Second","value":"9"},{"key":"X-RateLimit-Limit-Second","value":"10"},{"key":"RateLimit-Limit","value":"10"},{"key":"RateLimit-Remaining","value":"9"},{"key":"RateLimit-Reset","value":"1"},{"key":"Accept-Ranges","value":"bytes"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"X-Request-ID","value":"8e18846a17d4477aa95557e762366a87"}],"cookie":[],"responseTime":null,"body":"{\n    \"createTs\": 1678505791,\n    \"instanceId\": \"XXXX\",\n    \"tokenName\": \"nUwUbQf9Zg6tsgtLslGnDg0lk8RYaUE09pqOuSIgwfy1uJa4K6lWCzLqJNDen8tHgNjbAcOGIWpgWQEllEvR86LKWnExC9WFhPSQo0Eim0W2guETD_yO4hsHLKNpKvcTivXo5PNOYqLEANOdsLbU8pQ5fRgwcxplOVI_GT5MR6YhPT-2O4h64xTS3qpMZv1qtV8dLpcaxTKDwK5zckGk6PKjRycZ_BClZTTKlKXKkfPztQNwyKa00UJDJK5uyZqzExx-Q_PGQEB2r-u4oWriMaqmSo1M8ShsI4TX-920jE0MoB_JBb5GHQUpmHcZOJCTMO2SiKwZLzMK0F-jAaWYBbhRAu3hnQ_LjtcWvDJEDWkEJZonYjTfENjvwOsjFPvp\"\n}"}],"_postman_id":"aaf6a513-e8ff-4c5b-866e-8b34879fb12b"},{"name":"start","event":[{"listen":"prerequest","script":{"id":"46a42dee-317d-4063-a460-0696e2f0ef49","exec":[""],"type":"text/javascript","packages":{}}},{"listen":"test","script":{"id":"991b2365-3e62-41d7-8876-d3b87d4b15da","exec":["var jsonData = JSON.parse(responseBody);\r","postman.setEnvironmentVariable(\"taskId\", jsonData.taskId);\r","pm.test(\"Status code is 200\", function () {\r","    pm.response.to.have.status(200);\r","});"],"type":"text/javascript","packages":{}}}],"id":"a78a60f9-2100-413a-8382-7867502b2d31","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"languages\": [\r\n        \"en-US\"\r\n    ],\r\n    \"maxIdleTime\": 60,\r\n    \"rtcConfig\": {\r\n        \"channelName\": \"{{channelName}}\",\r\n        \"subBotUid\": \"{{audioUID}}\",\r\n        \"subBotToken\": \"{{subBotToken}}\",\r\n        \"pubBotUid\": \"{{textUID}}\",\r\n        \"pubBotToken\": \"{{pubBotToken}}\",\r\n        \"subscribeAudioUids\": [\r\n            \"{{rtcUserUid}}\"\r\n        ]\r\n    },\r\n    \"captionConfig\": {\r\n        \"storage\": {\r\n            \"accessKey\":\"{{AccessKey}}\",\r\n            \"secretKey\":\"{{SecretKey}}\",\r\n            \"bucket\":\"{{Bucket}}\",\r\n            \"vendor\": {{StorageVendor}},\r\n            \"region\": {{StorageRegion}},\r\n            \"fileNamePrefix\":[\r\n                \"directory\",\r\n                \"subDirectory\"\r\n            ]\r\n        }\r\n    }\r\n}","options":{"raw":{"language":"json"}}},"url":"https://api.agora.io/v1/projects/:appId/rtsc/speech-to-text/tasks?builderToken=","description":"<h4 id=\"start-a-real-time-stt-task\">Start a Real-Time STT task</h4>\n<p>Use this request to configure and start a real-time transcription task.</p>\n<p><strong>Request body parameters</strong><br />The following parameters need to be passed in the request body:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Key</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>languages</code></td>\n<td>Array (String)</td>\n<td>Required, The current version supports at most two, separated by commas. For specific supported languages, see the list of <a href=\"https://docs.agora.io/en/real-time-stt/develop/supported-languages\">supported languages</a></td>\n</tr>\n<tr>\n<td><code>maxIdleTime</code></td>\n<td>Number</td>\n<td>If there is no audio stream in the channel for more than this time, the task will stop automatically. The default is 30 seconds. The unit is seconds, Range 5 seconds - 2592000 seconds (30 days).</td>\n</tr>\n<tr>\n<td><code>rtcConfig</code></td>\n<td>JSON Object</td>\n<td>Required</td>\n</tr>\n<tr>\n<td><code>rtcConfig.channelName</code></td>\n<td>String</td>\n<td>Required, the name of the channel for which you want to start the RTT service</td>\n</tr>\n<tr>\n<td><code>rtcConfig.subBotUid</code></td>\n<td>String</td>\n<td>Required, The UID of the bot subscribing to the audio. See notes section.</td>\n</tr>\n<tr>\n<td><code>rtcConfig.subBotToken</code></td>\n<td>String</td>\n<td>The token for the bot subscribing to the audio. If your project has enabled token authentication, you must fill in this item.</td>\n</tr>\n<tr>\n<td><code>rtcConfig.pubBotUid</code></td>\n<td>String</td>\n<td>Required, The UID of the bot publishing the text to the channel. See notes section.</td>\n</tr>\n<tr>\n<td><code>rtcConfig.pubBotToken</code></td>\n<td>Number</td>\n<td>The token for the publisher bot publishing the text to the channel. If your project has enabled token authentication, you must fill in this item.</td>\n</tr>\n<tr>\n<td><code>rtcConfig.subscribeAudioConfig</code></td>\n<td>JSON Object</td>\n<td>Optional, <a href=\"https://docs.agora.io/en/real-time-stt/develop/transcribe-individual-host\">UIDs of RTC users that you want to subscribe to</a></td>\n</tr>\n<tr>\n<td><code>captionConfig</code></td>\n<td>JSON Object</td>\n<td>Cloud recording settings (Optional, Only needed to record subtitle files to an S3 bucket)</td>\n</tr>\n<tr>\n<td><code>captionConfig.storage</code></td>\n<td>Object</td>\n<td>Required, the current version is fixed to <code>[\"RECOGNIZE\"]</code></td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>captionConfig.storage</strong><br />Please refer to <a href=\"https://docs.agora.io/en/cloud-recording/reference/restful-api#properties-2\">storage config</a> of Cloud Recording</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Key</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>accessKey</code></td>\n<td>String</td>\n<td>Required, access key of oss</td>\n</tr>\n<tr>\n<td><code>secretKey</code></td>\n<td>String</td>\n<td>Required, oss secret key</td>\n</tr>\n<tr>\n<td><code>bucket</code></td>\n<td>String</td>\n<td>Required, oss bucket</td>\n</tr>\n<tr>\n<td><code>vendor</code></td>\n<td>Number</td>\n<td>Required, <a href=\"https://docs.agora.io/en/cloud-recording/reference/region-vendor\">vendor</a> of oss</td>\n</tr>\n<tr>\n<td><code>region</code></td>\n<td>Number</td>\n<td>Required, the region of oss</td>\n</tr>\n<tr>\n<td><code>fileNamePrefix</code></td>\n<td>Array String</td>\n<td>Optional, an array of directory strings to append to store files</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>rtcConfig</strong><br />These are optional parameters that you can add to the rtcConfig mentioned above. <a href=\"https://docs.agora.io/en/real-time-stt/develop/encrypt-captions\">Encryption</a> may be needed if you encrypt your RTC calls.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Key</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>decryptionMode</td>\n<td>String</td>\n<td>Optional, The encryption mode, configure when the app needs encryption for the audio and caption text</td>\n</tr>\n<tr>\n<td>secret</td>\n<td>String</td>\n<td>Encryption secret</td>\n</tr>\n<tr>\n<td>salt</td>\n<td>String</td>\n<td>Encryption salt (if used in RTC)</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>translateConfig</strong><br />Translation is in beta currently. If you want to test translation, you can add this parameter to your start request and it will translate as well. There is a cost with translation added to transcription so please consult your Agora sales team prior to doing so as to not incur unintended charges.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Key</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>translateConfig.languages</code></td>\n<td>Array (Object)</td>\n<td>The source transcription languages and the target translated languages</td>\n</tr>\n<tr>\n<td><code>translateConfig.languages.source</code></td>\n<td>String</td>\n<td>The transcription language that you are setting for the initial language</td>\n</tr>\n<tr>\n<td><code>translateConfig.languages.target</code></td>\n<td>Array (String)</td>\n<td>The language that should be translated into, we support up to 5 translated languages</td>\n</tr>\n</tbody>\n</table>\n</div><p>Example for multi-language with translation</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">\"translateConfig\": {\n        \"languages\": [\n            {\n                \"source\": \"en-US\", \n                \"target\": [\n                    \"language-1\", \n                    \"language-2\", \n                    \"language-3\"\n                ]\n            },\n            {\n                \"source\": \"es-ES\", \n                \"target\": [\n                    \"language-4\",\n                    \"language-5\"\n                ]\n            }\n        ]\n    }\n\n</code></pre>\n<p>Note:</p>\n<ul>\n<li><p><code>rtcConfig.subBotUid</code> and <code>rtcConfig.pubBotUid</code> must be different, and only int uid can be used, and the tokens used by the two are also different.</p>\n</li>\n<li><p><code>rtcConfig.subBotUid</code> and <code>rtcConfig.pubBotUid</code> must be different from the multiple uids in the channel</p>\n</li>\n<li><p>If you need to <a href=\"https://docs.agora.io/en/real-time-stt/develop/record-captions\">synchronize the subtitle file</a> with the audio and video files recorded in the cloud, you need to add the following settings in the start request body of the <strong>cloud recording</strong> when the cloud recording starts</p>\n</li>\n</ul>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"privateParams\": \"{\\\"enableNTPtimestamp\\\": true}\",\n    ...\n}\n\n</code></pre>\n<h5 id=\"http-response\">HTTP response​</h5>\n<p><strong>Response body</strong></p>\n<p>If the status code is 2XX, the request is successful. The response body contains the following fields:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>taskId</code></td>\n<td>String</td>\n<td>The task ID, a UUID (Universal Unique Identifier) generated by the Agora server to identify the real-time transcription task that has been created.</td>\n</tr>\n<tr>\n<td><code>createTs</code></td>\n<td>Number</td>\n<td>The Unix timestamp (seconds) when the task was created.</td>\n</tr>\n<tr>\n<td><code>status</code></td>\n<td>String</td>\n<td>The running status of the task:  <br />  <br />- <code>IDLE</code>: The task has not started or has ended.  <br />- <code>PREPARING</code>: The task has received a start request.  <br />- <code>STARTED</code>: The task has started.  <br />- <code>IN_PROGRESS</code>: The task is in progress.  <br />- <code>STOPPING</code>: The task is stopping.  <br />- <code>STOPPED</code>: The task has been stopped.  <br />- <code>RECONNECTING</code>: The task is being reestablished.</td>\n</tr>\n</tbody>\n</table>\n</div><p>If the status code is not <code>2XX</code>, the request has failed. In this case, the response body contains the message field reporting the reason.</p>\n","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":true,"source":{"_postman_id":"9353d85b-73e9-4f87-a273-2a1180f554ca","id":"9353d85b-73e9-4f87-a273-2a1180f554ca","name":"Real-Time STT 6.x","type":"folder"}},"urlObject":{"protocol":"https","path":["v1","projects",":appId","rtsc","speech-to-text","tasks"],"host":["api","agora","io"],"query":[{"description":{"content":"<p>The <code>builderToken</code> you obtained using the acquire request</p>\n","type":"text/plain"},"key":"builderToken","value":""}],"variable":[{"id":"d38eaf59-3da1-4ee0-982a-9db8c8d9fb3e","description":{"content":"<p>The App ID provided by Agora.</p>\n","type":"text/plain"},"type":"any","value":"{{appID}}","key":"appId"}]}},"response":[{"id":"0a3f3ec0-1916-453d-bf2e-9812dc1daead","name":"start","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"languages\": [\r\n        \"en-US\"\r\n    ],\r\n    \"maxIdleTime\": 60,\r\n    \"rtcConfig\": {\r\n        \"channelName\": \"XXXX\",\r\n        \"subBotUid\": \"666\",\r\n        \"subBotToken\":\"007lnoquitehr98ter89hdfnvfdvdfvdf\",\r\n        \"pubBotUid\": \"666666\",\r\n        \"pubBotToken\":\"007lnoquitehr98ter89hdfnvfdvdfvdf\",\r\n        \"subscribeAudioUids\": [\r\n            \"1234\",\r\n            \"5678\"\r\n        ]\r\n    },\r\n    \"captionConfig\": {\r\n        \"storage\": {\r\n            \"accessKey\":\"3tergregdgdfdfbf3tergregdgdfdfbf3tergregdgdfdfbf\",\r\n            \"secretKey\":\"dsfgsfgdsfg34grdsfgsfgdsfg34grdsfgsfgdsfg34gr\",\r\n            \"bucket\":\"agoraTranscriptions\",\r\n            \"vendor\": 1,\r\n            \"region\": 1,\r\n            \"fileNamePrefix\":[\r\n                \"directory\",\r\n                \"subDirectory\"\r\n            ]\r\n        }\r\n    }\r\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://api.agora.io/v1/projects/:appId/rtsc/speech-to-text/tasks?builderToken={{builderToken}","protocol":"https","host":["api","agora","io"],"path":["v1","projects",":appId","rtsc","speech-to-text","tasks"],"query":[{"key":"builderToken","value":"{{builderToken}"}],"variable":[{"key":"appId","value":"{{appId}}"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Sat, 11 Mar 2023 03:37:32 GMT"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"87"},{"key":"Connection","value":"keep-alive"},{"key":"X-Capacity-RateLimit-Remaining-second","value":"10"},{"key":"X-Capacity-RateLimit","value":"active"},{"key":"X-Capacity-RateLimit-Limit-second","value":"10"},{"key":"RateLimit-Remaining","value":"9"},{"key":"X-RateLimit-Remaining-Second","value":"9"},{"key":"X-RateLimit-Limit-Second","value":"10"},{"key":"RateLimit-Limit","value":"10"},{"key":"RateLimit-Reset","value":"1"},{"key":"Accept-Ranges","value":"bytes"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"X-Request-ID","value":"ce5bdb3422e0400d801bbbf9966fc782"}],"cookie":[],"responseTime":null,"body":"{\n    \"createTs\": 1678505852,\n    \"status\": \"STARTED\",\n    \"taskId\": \"13696ee5864e9f0df5979a8eda4545b8\"\n}"}],"_postman_id":"a78a60f9-2100-413a-8382-7867502b2d31"},{"name":"query","event":[{"listen":"test","script":{"id":"98b33f53-7ec9-4edc-a1f4-82d20b28efe1","exec":["pm.test(\"Status code is 200\", function () {\r","    pm.response.to.have.status(200);\r","});"],"type":"text/javascript"}}],"id":"80131858-4c76-4746-bc73-e69330dc53d2","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":"https://api.agora.io/v1/projects/:appId/rtsc/speech-to-text/tasks/:taskId?builderToken=","description":"<h4 id=\"query-the-status-of-real-time-transcription\">Query the status of real-time transcription</h4>\n<p>Use this request to get information about the status of a real-time transcription task.</p>\n<h5 id=\"http-response\">HTTP response​</h5>\n<p><strong>Response body</strong></p>\n<p>If the response status code is <code>2XX</code>, the request is successful. The response body contains the following fields:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>taskId</code></td>\n<td>String</td>\n<td>The task ID, a UUID identifying the real-time transcription task.</td>\n</tr>\n<tr>\n<td><code>createTs</code></td>\n<td>Number</td>\n<td>The Unix timestamp (seconds) when the task was created.</td>\n</tr>\n<tr>\n<td><code>status</code></td>\n<td>Number</td>\n<td>The running status of tasks:  <br />  <br />- <code>IDLE</code>: The task has not started or has ended.  <br />- <code>PREPARING</code>: The task has received a start request.  <br />- <code>IN_PROGRESS</code>: The task is in progress.  <br />- <code>STOPPING</code>: The task is stopping.  <br />- <code>STOPPED</code>: The task has been stopped.  <br />- <code>RECONNECTING</code>: The task is being reestablished.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":true,"source":{"_postman_id":"9353d85b-73e9-4f87-a273-2a1180f554ca","id":"9353d85b-73e9-4f87-a273-2a1180f554ca","name":"Real-Time STT 6.x","type":"folder"}},"urlObject":{"protocol":"https","path":["v1","projects",":appId","rtsc","speech-to-text","tasks",":taskId"],"host":["api","agora","io"],"query":[{"description":{"content":"<p>The <code>builderToken</code> you obtained using the acquire request</p>\n","type":"text/plain"},"key":"builderToken","value":""}],"variable":[{"id":"b103c41f-5798-404d-bfce-814bb9d1d599","description":{"content":"<p>The App ID provided by Agora</p>\n","type":"text/plain"},"type":"any","value":"{{appID}}","key":"appId"},{"id":"900117e1-faf0-48c1-8cd1-cfec92cc082a","description":{"content":"<p>The <code>taskId</code> returned by the start request</p>\n","type":"text/plain"},"type":"any","value":"","key":"taskId"}]}},"response":[{"id":"5fe7a6d6-63a6-4e09-a150-8984004b4a53","name":"query","originalRequest":{"method":"GET","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":{"raw":"https://api.agora.io/v1/projects/:appId/rtsc/speech-to-text/tasks/:taskId?builderToken=","protocol":"https","host":["api","agora","io"],"path":["v1","projects",":appId","rtsc","speech-to-text","tasks",":taskId"],"query":[{"key":"builderToken","value":""}],"variable":[{"key":"appId","value":"{{appId}}"},{"key":"taskId","value":""}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Sat, 11 Mar 2023 03:38:04 GMT"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"91"},{"key":"Connection","value":"keep-alive"},{"key":"X-Capacity-RateLimit","value":"active"},{"key":"X-Capacity-RateLimit-Remaining-second","value":"10"},{"key":"X-Capacity-RateLimit-Limit-second","value":"10"},{"key":"X-RateLimit-Remaining-Second","value":"9"},{"key":"X-RateLimit-Limit-Second","value":"10"},{"key":"RateLimit-Limit","value":"10"},{"key":"RateLimit-Remaining","value":"9"},{"key":"RateLimit-Reset","value":"1"},{"key":"Accept-Ranges","value":"bytes"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"X-Request-ID","value":"b6522b456ba04552bd30549764cc6a37"}],"cookie":[],"responseTime":null,"body":"{\n    \"createTs\": 1678505852,\n    \"status\": \"IN_PROGRESS\",\n    \"taskId\": \"13696ee5864e9f0df5979a8eda4545b8\"\n}"}],"_postman_id":"80131858-4c76-4746-bc73-e69330dc53d2"},{"name":"stop","event":[{"listen":"test","script":{"id":"da41d89c-4c09-4760-acd4-a7259436292a","exec":["pm.test(\"Status code is 200\", function () {\r","    pm.response.to.have.status(200);\r","});"],"type":"text/javascript"}}],"id":"93ffe9db-d861-41ac-b7e9-92b80a7401d7","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":"https://api.agora.io/v1/projects/:appId/rtsc/speech-to-text/tasks/:taskId?builderToken=","description":"<h4 id=\"stop-real-time-transcription\">Stop real-time transcription</h4>\n<p>If the response status code is <code>2XX</code>, the request is successful.</p>\n","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":true,"source":{"_postman_id":"9353d85b-73e9-4f87-a273-2a1180f554ca","id":"9353d85b-73e9-4f87-a273-2a1180f554ca","name":"Real-Time STT 6.x","type":"folder"}},"urlObject":{"protocol":"https","path":["v1","projects",":appId","rtsc","speech-to-text","tasks",":taskId"],"host":["api","agora","io"],"query":[{"description":{"content":"<p>The <code>builderToken</code> you obtained using the acquire request</p>\n","type":"text/plain"},"key":"builderToken","value":""}],"variable":[{"id":"9dcc88b1-2ec8-42b2-b5c0-63865148de63","description":{"content":"<p>The App ID provided by Agora</p>\n","type":"text/plain"},"type":"any","value":"{{appID}}","key":"appId"},{"id":"1522725c-7272-4f40-a4c0-1abfdebf8687","description":{"content":"<p>The <code>taskId</code> returned by the start request</p>\n","type":"text/plain"},"type":"any","value":"","key":"taskId"}]}},"response":[],"_postman_id":"93ffe9db-d861-41ac-b7e9-92b80a7401d7"}],"id":"9353d85b-73e9-4f87-a273-2a1180f554ca","description":"<p>All HTTP requests in this folder require basic authentication. Use <code>customerID</code> as the Username, and <code>customerSecret</code> as the password. You can obtain these parameters from <a href=\"https://console.agora.io/\">Agora Console</a> by clicking on your user name and then selecting <strong>RESTful API</strong> fom the menu.</p>\n<p><a href=\"https://docs.agora.io/en/real-time-stt/overview/product-overview\">https://docs.agora.io/en/real-time-stt/overview/product-overview</a></p>\n","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":false},"event":[{"listen":"prerequest","script":{"id":"793d19d4-26ec-4530-92f6-a13704acc772","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"0313545e-df0d-4471-97c3-5497fd08aa4d","type":"text/javascript","exec":[""]}}],"_postman_id":"9353d85b-73e9-4f87-a273-2a1180f554ca"},{"name":"Interactive Whiteboard","item":[{"name":"Token Generation","item":[{"name":"Generate SDK Token","event":[{"listen":"test","script":{"id":"dee59499-a851-4973-a94d-ff8e76d06814","exec":["var wbToken = responseBody.replace(/\"/g,'');","console.log(wbToken);","pm.collectionVariables.set(\"wbToken\", wbToken);"],"type":"text/javascript","packages":{}}}],"id":"4c4fe4b0-521e-4f53-81c1-bfd8a7be9ac4","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"region","value":"{{region}}","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"accessKey\": \"{{accessKey}}\",\n    \"secretAccessKey\": \"{{secretAccessKey}}\",\n    \"lifespan\": {{lifespan}},\n    \"role\": \"{{role}}\"\n}","options":{"raw":{"language":"json"}}},"url":"https://api.netless.link/v5/tokens/teams","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerCertificate}}"}]},"isInherited":true,"source":{"_postman_id":"e678f990-8026-4d78-b1bb-4763a6b6ac75","id":"e678f990-8026-4d78-b1bb-4763a6b6ac75","name":"Interactive Whiteboard","type":"folder"}},"urlObject":{"protocol":"https","path":["v5","tokens","teams"],"host":["api","netless","link"],"query":[],"variable":[]}},"response":[],"_postman_id":"4c4fe4b0-521e-4f53-81c1-bfd8a7be9ac4"},{"name":"Generate Room Token","event":[{"listen":"test","script":{"id":"dee59499-a851-4973-a94d-ff8e76d06814","exec":["var wbRoomToken = responseBody.replace(/\"/g,'');","console.log(wbRoomToken);","pm.collectionVariables.set(\"wbRoomToken\", wbRoomToken);"],"type":"text/javascript","packages":{}}}],"id":"8dd5c0c9-b76e-4039-80ad-27c3963b631f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"region","value":"{{region}}","type":"text"},{"key":"token","value":"{{wbToken}}","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"ak\": \"{{accessKey}}\",\n    \"lifespan\": {{lifespan}},\n    \"role\": \"{{role}}\"\n}","options":{"raw":{"language":"json"}}},"url":"https://api.netless.link/v5/tokens/rooms/{{uuid}}","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerCertificate}}"}]},"isInherited":true,"source":{"_postman_id":"e678f990-8026-4d78-b1bb-4763a6b6ac75","id":"e678f990-8026-4d78-b1bb-4763a6b6ac75","name":"Interactive Whiteboard","type":"folder"}},"urlObject":{"protocol":"https","path":["v5","tokens","rooms","{{uuid}}"],"host":["api","netless","link"],"query":[],"variable":[]}},"response":[],"_postman_id":"8dd5c0c9-b76e-4039-80ad-27c3963b631f"},{"name":"Generate Task Token","event":[{"listen":"test","script":{"id":"dee59499-a851-4973-a94d-ff8e76d06814","exec":["var wbTaskToken = responseBody.replace(/\"/g,'');","console.log(wbTaskToken);","pm.collectionVariables.set(\"wbTaskToken\", wbTaskToken);"],"type":"text/javascript","packages":{}}}],"id":"d89260e1-175b-4571-8423-65a4a9ac7d98","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"region","value":"{{region}}","type":"text"},{"key":"token","value":"{{wbToken}}","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"ak\": \"{{accessKey}}\", //optional\n    \"lifespan\": {{lifespan}},\n    \"role\": \"{{role}}\"\n}","options":{"raw":{"language":"json"}}},"url":"https://api.netless.link/v5/tokens/tasks/{{uuid}}","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerCertificate}}"}]},"isInherited":true,"source":{"_postman_id":"e678f990-8026-4d78-b1bb-4763a6b6ac75","id":"e678f990-8026-4d78-b1bb-4763a6b6ac75","name":"Interactive Whiteboard","type":"folder"}},"urlObject":{"protocol":"https","path":["v5","tokens","tasks","{{uuid}}"],"host":["api","netless","link"],"query":[],"variable":[]}},"response":[],"_postman_id":"d89260e1-175b-4571-8423-65a4a9ac7d98"}],"id":"e06ec0b7-bd05-4baa-9555-b2ddb87d99f2","_postman_id":"e06ec0b7-bd05-4baa-9555-b2ddb87d99f2","description":"","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerCertificate}}"}]},"isInherited":true,"source":{"_postman_id":"e678f990-8026-4d78-b1bb-4763a6b6ac75","id":"e678f990-8026-4d78-b1bb-4763a6b6ac75","name":"Interactive Whiteboard","type":"folder"}}},{"name":"Room Management","item":[{"name":"Create","event":[{"listen":"test","script":{"id":"99351823-b5ef-480b-82ee-aa6f6b02ec3f","exec":["var response = `{${responseBody}}`;","var jsonData = JSON.parse(response);","var uuid = jsonData.uuid;","console.log(uuid);","pm.collectionVariables.set(\"uuid\", uuid);"],"type":"text/javascript","packages":{}}}],"id":"c400c937-860e-4bf2-98cd-8b0a1167206b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"token","value":"{{wbToken}}","type":"text"},{"key":"region","value":"{{region}}","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"isRecord\": false, //not supported yet\n    \"limit\": 0 //optional\n}","options":{"raw":{"language":"json"}}},"url":"https://api.netless.link/v5/rooms","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerCertificate}}"}]},"isInherited":true,"source":{"_postman_id":"e678f990-8026-4d78-b1bb-4763a6b6ac75","id":"e678f990-8026-4d78-b1bb-4763a6b6ac75","name":"Interactive Whiteboard","type":"folder"}},"urlObject":{"protocol":"https","path":["v5","rooms"],"host":["api","netless","link"],"query":[],"variable":[]}},"response":[],"_postman_id":"c400c937-860e-4bf2-98cd-8b0a1167206b"},{"name":"Get room info","event":[{"listen":"test","script":{"id":"99351823-b5ef-480b-82ee-aa6f6b02ec3f","exec":[""],"type":"text/javascript"}}],"id":"11943048-3a6f-4057-8273-73304fd3d24e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"token","value":"{{wbToken}}","type":"text"},{"key":"region","value":"{{region}}","type":"text"}],"body":{"mode":"raw","raw":"","options":{"raw":{"language":"json"}}},"url":"https://api.netless.link/v5/rooms/{{uuid}}","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerCertificate}}"}]},"isInherited":true,"source":{"_postman_id":"e678f990-8026-4d78-b1bb-4763a6b6ac75","id":"e678f990-8026-4d78-b1bb-4763a6b6ac75","name":"Interactive Whiteboard","type":"folder"}},"urlObject":{"protocol":"https","path":["v5","rooms","{{uuid}}"],"host":["api","netless","link"],"query":[],"variable":[]}},"response":[],"_postman_id":"11943048-3a6f-4057-8273-73304fd3d24e"},{"name":"Get room list","event":[{"listen":"test","script":{"id":"99351823-b5ef-480b-82ee-aa6f6b02ec3f","exec":[""],"type":"text/javascript"}}],"id":"f894e54f-6039-4f66-a7a8-4a6e548b2ff5","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"token","value":"{{wbToken}}","type":"text"},{"key":"region","value":"{{region}}","type":"text"}],"body":{"mode":"raw","raw":"","options":{"raw":{"language":"json"}}},"url":"https://api.netless.link/v5/rooms/{{uuid}}","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerCertificate}}"}]},"isInherited":true,"source":{"_postman_id":"e678f990-8026-4d78-b1bb-4763a6b6ac75","id":"e678f990-8026-4d78-b1bb-4763a6b6ac75","name":"Interactive Whiteboard","type":"folder"}},"urlObject":{"protocol":"https","path":["v5","rooms","{{uuid}}"],"host":["api","netless","link"],"query":[],"variable":[]}},"response":[],"_postman_id":"f894e54f-6039-4f66-a7a8-4a6e548b2ff5"},{"name":"Disable","event":[{"listen":"test","script":{"id":"99351823-b5ef-480b-82ee-aa6f6b02ec3f","exec":[""],"type":"text/javascript"}}],"id":"8efda8fc-a991-403d-a5ad-ea2c4f9cdce2","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PATCH","header":[{"key":"token","value":"{{wbToken}}","type":"text"},{"key":"region","value":"{{region}}","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"isBan\": false\n}","options":{"raw":{"language":"json"}}},"url":"https://api.netless.link/v5/rooms/{{uuid}}","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerCertificate}}"}]},"isInherited":true,"source":{"_postman_id":"e678f990-8026-4d78-b1bb-4763a6b6ac75","id":"e678f990-8026-4d78-b1bb-4763a6b6ac75","name":"Interactive Whiteboard","type":"folder"}},"urlObject":{"protocol":"https","path":["v5","rooms","{{uuid}}"],"host":["api","netless","link"],"query":[],"variable":[]}},"response":[],"_postman_id":"8efda8fc-a991-403d-a5ad-ea2c4f9cdce2"}],"id":"07c16d56-2d3a-42e3-b5aa-87ab02212646","_postman_id":"07c16d56-2d3a-42e3-b5aa-87ab02212646","description":"","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerCertificate}}"}]},"isInherited":true,"source":{"_postman_id":"e678f990-8026-4d78-b1bb-4763a6b6ac75","id":"e678f990-8026-4d78-b1bb-4763a6b6ac75","name":"Interactive Whiteboard","type":"folder"}}},{"name":"Scene Management","item":[{"name":"Get scene path list","event":[{"listen":"test","script":{"id":"99351823-b5ef-480b-82ee-aa6f6b02ec3f","exec":["var response = `{\"paths\": ${responseBody}}`;","var jsonData = JSON.parse(response);","var path = jsonData.paths[0];","var path1 = jsonData.paths[1];","console.log(path);","pm.collectionVariables.set(\"path\", path);"],"type":"text/javascript","packages":{}}}],"id":"dda755bf-5489-4163-8278-e250ce66e0de","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"token","value":"{{wbToken}}","type":"text"},{"key":"region","value":"{{region}}","type":"text"}],"body":{"mode":"raw","raw":"","options":{"raw":{"language":"json"}}},"url":"https://api.netless.link/v5/rooms/{{uuid}}/scenes","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerCertificate}}"}]},"isInherited":true,"source":{"_postman_id":"e678f990-8026-4d78-b1bb-4763a6b6ac75","id":"e678f990-8026-4d78-b1bb-4763a6b6ac75","name":"Interactive Whiteboard","type":"folder"}},"urlObject":{"protocol":"https","path":["v5","rooms","{{uuid}}","scenes"],"host":["api","netless","link"],"query":[],"variable":[]}},"response":[],"_postman_id":"dda755bf-5489-4163-8278-e250ce66e0de"},{"name":"Add","event":[{"listen":"test","script":{"id":"99351823-b5ef-480b-82ee-aa6f6b02ec3f","exec":[""],"type":"text/javascript"}}],"id":"52aaa544-8c48-4531-a7df-4207c7d12579","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"token","value":"{{wbToken}}","type":"text"},{"key":"region","value":"{{region}}","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"scenes\": [\n        {\n            \"name\": \"{{name}}\",\n            \"ppt\": \"{{ppt}}\", //optional\n            \"src\": \"{{src}}\",\n            \"width\": \"{{width}}\",\n            \"height\": \"{{height}}\"\n        }\n    ],\n    \"path\": \"{{path}}\"\n}","options":{"raw":{"language":"json"}}},"url":"https://api.netless.link/v5/rooms/{{uuid}}/scenes","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerCertificate}}"}]},"isInherited":true,"source":{"_postman_id":"e678f990-8026-4d78-b1bb-4763a6b6ac75","id":"e678f990-8026-4d78-b1bb-4763a6b6ac75","name":"Interactive Whiteboard","type":"folder"}},"urlObject":{"protocol":"https","path":["v5","rooms","{{uuid}}","scenes"],"host":["api","netless","link"],"query":[],"variable":[]}},"response":[],"_postman_id":"52aaa544-8c48-4531-a7df-4207c7d12579"},{"name":"Switch a scene","event":[{"listen":"test","script":{"id":"99351823-b5ef-480b-82ee-aa6f6b02ec3f","exec":[""],"type":"text/javascript"}}],"id":"ec34dcff-6a18-4371-9e26-78da36ba5a81","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PATCH","header":[{"key":"token","value":"{{wbToken}}","type":"text"},{"key":"region","value":"{{region}}","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"scenePath\": \"{{path1}}\"\n}","options":{"raw":{"language":"json"}}},"url":"https://api.netless.link/v5/rooms/{{uuid}}/scene-state","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerCertificate}}"}]},"isInherited":true,"source":{"_postman_id":"e678f990-8026-4d78-b1bb-4763a6b6ac75","id":"e678f990-8026-4d78-b1bb-4763a6b6ac75","name":"Interactive Whiteboard","type":"folder"}},"urlObject":{"protocol":"https","path":["v5","rooms","{{uuid}}","scene-state"],"host":["api","netless","link"],"query":[],"variable":[]}},"response":[],"_postman_id":"ec34dcff-6a18-4371-9e26-78da36ba5a81"}],"id":"31f787ca-017a-4509-812a-76678fedb4ed","_postman_id":"31f787ca-017a-4509-812a-76678fedb4ed","description":"","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerCertificate}}"}]},"isInherited":true,"source":{"_postman_id":"e678f990-8026-4d78-b1bb-4763a6b6ac75","id":"e678f990-8026-4d78-b1bb-4763a6b6ac75","name":"Interactive Whiteboard","type":"folder"}}},{"name":"Screenshot Management","item":[{"name":"Screenshot a scene","event":[{"listen":"test","script":{"id":"99351823-b5ef-480b-82ee-aa6f6b02ec3f","exec":[""],"type":"text/javascript"}}],"id":"c50af60a-967e-461f-b484-d41a482cd025","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"token","value":"{{wbToken}}","type":"text"},{"key":"region","value":"{{region}}","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"width\": \"{{width}}\",\n    \"height\": \"{{height}}\",\n    \"path\": \"{{path}}\"\n}","options":{"raw":{"language":"json"}}},"url":"https://api.netless.link/v5/rooms/{{uuid}}/screenshots","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerCertificate}}"}]},"isInherited":true,"source":{"_postman_id":"e678f990-8026-4d78-b1bb-4763a6b6ac75","id":"e678f990-8026-4d78-b1bb-4763a6b6ac75","name":"Interactive Whiteboard","type":"folder"}},"urlObject":{"protocol":"https","path":["v5","rooms","{{uuid}}","screenshots"],"host":["api","netless","link"],"query":[],"variable":[]}},"response":[],"_postman_id":"c50af60a-967e-461f-b484-d41a482cd025"},{"name":"Screenshot a scene directory","event":[{"listen":"test","script":{"id":"99351823-b5ef-480b-82ee-aa6f6b02ec3f","exec":[""],"type":"text/javascript"}}],"id":"6ffa08e3-9252-47d0-811f-c1ce0350732d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"token","value":"{{wbToken}}","type":"text"},{"key":"region","value":"{{region}}","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"width\": \"{{width}}\",\n    \"height\": \"{{height}}\",\n    \"path\": \"{{path}}\"\n}","options":{"raw":{"language":"json"}}},"url":"https://api.netless.link/v5/rooms/{{uuid}}/screenshot-list","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerCertificate}}"}]},"isInherited":true,"source":{"_postman_id":"e678f990-8026-4d78-b1bb-4763a6b6ac75","id":"e678f990-8026-4d78-b1bb-4763a6b6ac75","name":"Interactive Whiteboard","type":"folder"}},"urlObject":{"protocol":"https","path":["v5","rooms","{{uuid}}","screenshot-list"],"host":["api","netless","link"],"query":[],"variable":[]}},"response":[],"_postman_id":"6ffa08e3-9252-47d0-811f-c1ce0350732d"}],"id":"cd91dc0f-79bf-4fd1-828f-61d0e2101cdc","_postman_id":"cd91dc0f-79bf-4fd1-828f-61d0e2101cdc","description":"","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerCertificate}}"}]},"isInherited":true,"source":{"_postman_id":"e678f990-8026-4d78-b1bb-4763a6b6ac75","id":"e678f990-8026-4d78-b1bb-4763a6b6ac75","name":"Interactive Whiteboard","type":"folder"}}},{"name":"File Conversion","item":[{"name":"Start file conversion","event":[{"listen":"test","script":{"id":"99351823-b5ef-480b-82ee-aa6f6b02ec3f","exec":["var response = `{${responseBody}}`;","var jsonData = JSON.parse(response);","var uuid = jsonData.uuid;","console.log(uuid);","pm.collectionVariables.set(\"uuid\", uuid);"],"type":"text/javascript","packages":{}}}],"id":"b8ab6558-8723-45b0-9470-2e87bac27ce6","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"token","value":"{{wbToken}}","type":"text"},{"key":"region","value":"{{region}}","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"resource\": \"{{resource}}\",\n    \"type\": \"{{type}}\",\n    \"preview\": true, //optional\n    \"scale\": 1.0, //optional\n    \"outputFormat\": \"{{outputFormat}}\", //optional\n    \"webhookEndpoint\": \"{{webhookEndpoint}}\",\n    \"webhookRetry\": 3\n}","options":{"raw":{"language":"json"}}},"url":"https://api.netless.link/v5/projector/tasks","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerCertificate}}"}]},"isInherited":true,"source":{"_postman_id":"e678f990-8026-4d78-b1bb-4763a6b6ac75","id":"e678f990-8026-4d78-b1bb-4763a6b6ac75","name":"Interactive Whiteboard","type":"folder"}},"urlObject":{"protocol":"https","path":["v5","projector","tasks"],"host":["api","netless","link"],"query":[],"variable":[]}},"response":[],"_postman_id":"b8ab6558-8723-45b0-9470-2e87bac27ce6"},{"name":"Query progress file-conversion task","event":[{"listen":"test","script":{"id":"99351823-b5ef-480b-82ee-aa6f6b02ec3f","exec":[""],"type":"text/javascript"}}],"id":"e3cef1b3-b990-4196-9811-e5e1e2197c5f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"token","value":"{{wbToken}}","type":"text"},{"key":"region","value":"{{region}}","type":"text"}],"body":{"mode":"raw","raw":"","options":{"raw":{"language":"json"}}},"url":"https://api.netless.link/v5/projector/tasks/{{uuid}}","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerCertificate}}"}]},"isInherited":true,"source":{"_postman_id":"e678f990-8026-4d78-b1bb-4763a6b6ac75","id":"e678f990-8026-4d78-b1bb-4763a6b6ac75","name":"Interactive Whiteboard","type":"folder"}},"urlObject":{"protocol":"https","path":["v5","projector","tasks","{{uuid}}"],"host":["api","netless","link"],"query":[],"variable":[]}},"response":[],"_postman_id":"e3cef1b3-b990-4196-9811-e5e1e2197c5f"},{"name":"Query to-be-converted task","event":[{"listen":"test","script":{"id":"99351823-b5ef-480b-82ee-aa6f6b02ec3f","exec":[""],"type":"text/javascript"}}],"id":"e6eb16f6-3577-4056-bf56-2e9c6b53ecdd","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"token","value":"{{wbToken}}","type":"text"},{"key":"region","value":"{{region}}","type":"text"}],"body":{"mode":"raw","raw":"","options":{"raw":{"language":"json"}}},"url":"https://api.netless.link/v5/projector/tasks","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerCertificate}}"}]},"isInherited":true,"source":{"_postman_id":"e678f990-8026-4d78-b1bb-4763a6b6ac75","id":"e678f990-8026-4d78-b1bb-4763a6b6ac75","name":"Interactive Whiteboard","type":"folder"}},"urlObject":{"protocol":"https","path":["v5","projector","tasks"],"host":["api","netless","link"],"query":[],"variable":[]}},"response":[],"_postman_id":"e6eb16f6-3577-4056-bf56-2e9c6b53ecdd"},{"name":"Cancel","event":[{"listen":"test","script":{"id":"99351823-b5ef-480b-82ee-aa6f6b02ec3f","exec":[""],"type":"text/javascript"}}],"id":"1f1cdf75-c64a-40a5-ad01-f4be402c9d24","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[{"key":"token","value":"{{wbToken}}","type":"text"},{"key":"region","value":"{{region}}","type":"text"}],"body":{"mode":"raw","raw":"","options":{"raw":{"language":"json"}}},"url":"https://api.netless.link/v5/projector/tasks/{{uuid}}","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerCertificate}}"}]},"isInherited":true,"source":{"_postman_id":"e678f990-8026-4d78-b1bb-4763a6b6ac75","id":"e678f990-8026-4d78-b1bb-4763a6b6ac75","name":"Interactive Whiteboard","type":"folder"}},"urlObject":{"protocol":"https","path":["v5","projector","tasks","{{uuid}}"],"host":["api","netless","link"],"query":[],"variable":[]}},"response":[],"_postman_id":"1f1cdf75-c64a-40a5-ad01-f4be402c9d24"},{"name":"Set task priority","event":[{"listen":"test","script":{"id":"99351823-b5ef-480b-82ee-aa6f6b02ec3f","exec":[""],"type":"text/javascript"}}],"id":"5ea01c31-8bbb-4e6f-8ac8-e38081e4a6f4","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PUT","header":[{"key":"token","value":"{{wbToken}}","type":"text"},{"key":"region","value":"{{region}}","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"priority\": \"highest\"\n}","options":{"raw":{"language":"json"}}},"url":"https://api.netless.link/v5/projector/tasks/{{uuid}}","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerCertificate}}"}]},"isInherited":true,"source":{"_postman_id":"e678f990-8026-4d78-b1bb-4763a6b6ac75","id":"e678f990-8026-4d78-b1bb-4763a6b6ac75","name":"Interactive Whiteboard","type":"folder"}},"urlObject":{"protocol":"https","path":["v5","projector","tasks","{{uuid}}"],"host":["api","netless","link"],"query":[],"variable":[]}},"response":[],"_postman_id":"5ea01c31-8bbb-4e6f-8ac8-e38081e4a6f4"}],"id":"c76b0449-989e-46ad-92eb-6e0a268dd749","_postman_id":"c76b0449-989e-46ad-92eb-6e0a268dd749","description":"","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerCertificate}}"}]},"isInherited":true,"source":{"_postman_id":"e678f990-8026-4d78-b1bb-4763a6b6ac75","id":"e678f990-8026-4d78-b1bb-4763a6b6ac75","name":"Interactive Whiteboard","type":"folder"}}}],"id":"e678f990-8026-4d78-b1bb-4763a6b6ac75","description":"<h1 id=\"documentation\"><strong>Documentation</strong></h1>\n<p>This collection is the Agora Whiteboard RESTful API collection.</p>\n<p><a href=\"https://docs.agora.io/en/interactive-whiteboard/reference/whiteboard-api/overview?platform=android\">https://docs.agora.io/en/interactive-whiteboard/reference/whiteboard-api/overview?platform=android</a></p>\n","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerCertificate}}"}]},"isInherited":false},"event":[{"listen":"prerequest","script":{"id":"e742e57f-fe1c-4792-a8ff-f20d266aaf00","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"96c9ec3c-170b-4e72-b326-28b7f783ec1c","type":"text/javascript","exec":[""]}}],"_postman_id":"e678f990-8026-4d78-b1bb-4763a6b6ac75"},{"name":"Flexible Classroom","item":[{"name":"Create Classroom","id":"a0917a83-7db0-401e-bc10-498c17cf2d42","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Authorization","value":"agora token={{signalToken}}"}],"body":{"mode":"raw","raw":"{\n    \"roomName\": \"{{AccessChannel}}\",\n    \"roomType\": {{roomType}},\n    \"roomProperties\": { // Optional\n        \"schedule\": {\n            \"startTime\": 1655452800000, //Change this\n            \"duration\": 600,\n            \"closeDelay\": 300\n        },\n        \"processes\": {\n            \"handsUp\": {\n                \"maxAccept\": 10\n            }\n        },\n        \"hostingScene\": {\n            \"videoURL\": \"https://url\",\n            \"finishType\": 1\n        }\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.agora.io/{{region}}/edu/apps/{{APPID}}/v2/rooms/{{roomUuid}}","auth":{"type":"noauth","isInherited":true,"source":{"_postman_id":"141a0bd6-d95e-4138-b1d3-2230745545ea","id":"141a0bd6-d95e-4138-b1d3-2230745545ea","name":"Flexible Classroom","type":"folder"}},"urlObject":{"protocol":"https","path":["{{region}}","edu","apps","{{APPID}}","v2","rooms","{{roomUuid}}"],"host":["api","agora","io"],"query":[],"variable":[]}},"response":[],"_postman_id":"a0917a83-7db0-401e-bc10-498c17cf2d42"},{"name":"Kick user","id":"93288c04-c79d-4eb3-9ef6-aa4d21d77292","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Authorization","value":"agora token={{signalToken}}"}],"body":{"mode":"raw","raw":"{\n    \"dirty\": {\n        \"state\": 1,\n        \"duration\": 600\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.agora.io/{{region}}/edu/apps/{{APPID}}/v2/rooms/{{roomUuid}}/users/{{userUuid}}/exit","auth":{"type":"noauth","isInherited":true,"source":{"_postman_id":"141a0bd6-d95e-4138-b1d3-2230745545ea","id":"141a0bd6-d95e-4138-b1d3-2230745545ea","name":"Flexible Classroom","type":"folder"}},"urlObject":{"protocol":"https","path":["{{region}}","edu","apps","{{APPID}}","v2","rooms","{{roomUuid}}","users","{{userUuid}}","exit"],"host":["api","agora","io"],"query":[],"variable":[]}},"response":[],"_postman_id":"93288c04-c79d-4eb3-9ef6-aa4d21d77292"},{"name":"Set classroom state","id":"f56e3084-c55a-4aa1-9ba3-81d88a2403e5","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PUT","header":[{"key":"Authorization","value":"agora token={{signalToken}}"}],"body":{"mode":"raw","raw":"","options":{"raw":{"language":"json"}}},"url":"https://api.agora.io/{{region}}/edu/apps/{{APPID}}/v2/rooms/{{roomUuid}}/states/{{state}}","auth":{"type":"noauth","isInherited":true,"source":{"_postman_id":"141a0bd6-d95e-4138-b1d3-2230745545ea","id":"141a0bd6-d95e-4138-b1d3-2230745545ea","name":"Flexible Classroom","type":"folder"}},"urlObject":{"protocol":"https","path":["{{region}}","edu","apps","{{APPID}}","v2","rooms","{{roomUuid}}","states","{{state}}"],"host":["api","agora","io"],"query":[],"variable":[]}},"response":[],"_postman_id":"f56e3084-c55a-4aa1-9ba3-81d88a2403e5"},{"name":"Set recording state","id":"13b710e0-8459-4620-a0d8-cfd5d06aaf4e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PUT","header":[{"key":"Authorization","value":"agora token={{signalToken}}"}],"body":{"mode":"raw","raw":"{\n    \"mode\": \"web\",\n    \"webRecordConfig\": {\n        \"url\": \"https://webdemo.agora.io/xxxxx/?userUuid={{userUuid}}&roomUuid={{roomUuid}}&roleType=0&roomType={{roomType}}&pretest=false&rtmToken={{signalToken}}&language=en&appId={{APPID}}\",\n        \"rootUrl\": \"https://xxx.yyy.zzz\"\n    },\n    \"retryTimeout\": 60\n}","options":{"raw":{"language":"json"}}},"url":"https://api.agora.io/{{region}}/edu/apps/{{APPID}}/v2/rooms/{{roomUuid}}/records/states/{{state}}","auth":{"type":"noauth","isInherited":true,"source":{"_postman_id":"141a0bd6-d95e-4138-b1d3-2230745545ea","id":"141a0bd6-d95e-4138-b1d3-2230745545ea","name":"Flexible Classroom","type":"folder"}},"urlObject":{"protocol":"https","path":["{{region}}","edu","apps","{{APPID}}","v2","rooms","{{roomUuid}}","records","states","{{state}}"],"host":["api","agora","io"],"query":[],"variable":[]}},"response":[],"_postman_id":"13b710e0-8459-4620-a0d8-cfd5d06aaf4e"},{"name":"Update recording config","id":"965e29fa-99e5-4310-9c20-75ecd130aad2","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PUT","header":[{"key":"Authorization","value":"agora token={{signalToken}}"}],"body":{"mode":"raw","raw":"{\n    \"webRecordConfig\": {\n        \"onhold\": false\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.agora.io/{{region}}/edu/apps/{{APPID}}/v2/rooms/{{roomUuid}}/records/states/{{state}}","auth":{"type":"noauth","isInherited":true,"source":{"_postman_id":"141a0bd6-d95e-4138-b1d3-2230745545ea","id":"141a0bd6-d95e-4138-b1d3-2230745545ea","name":"Flexible Classroom","type":"folder"}},"urlObject":{"protocol":"https","path":["{{region}}","edu","apps","{{APPID}}","v2","rooms","{{roomUuid}}","records","states","{{state}}"],"host":["api","agora","io"],"query":[],"variable":[]}},"response":[],"_postman_id":"965e29fa-99e5-4310-9c20-75ecd130aad2"},{"name":"Get recording list","id":"7270a360-1ecd-4908-a7cc-83c675d0f23a","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Authorization","value":"agora token={{signalToken}}"}],"body":{"mode":"raw","raw":"","options":{"raw":{"language":"json"}}},"url":"https://api.agora.io/{{region}}/edu/apps/{{APPID}}/v2/rooms/{{roomUuid}}/records","auth":{"type":"noauth","isInherited":true,"source":{"_postman_id":"141a0bd6-d95e-4138-b1d3-2230745545ea","id":"141a0bd6-d95e-4138-b1d3-2230745545ea","name":"Flexible Classroom","type":"folder"}},"urlObject":{"protocol":"https","path":["{{region}}","edu","apps","{{APPID}}","v2","rooms","{{roomUuid}}","records"],"host":["api","agora","io"],"query":[],"variable":[]}},"response":[],"_postman_id":"7270a360-1ecd-4908-a7cc-83c675d0f23a"},{"name":"Get classroom events","id":"fb112fe0-c9c6-4c3d-8d21-c2f0fbefa110","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Authorization","value":"agora token={{signalToken}}"}],"body":{"mode":"raw","raw":"","options":{"raw":{"language":"json"}}},"url":"https://api.agora.io/{{region}}/edu/polling/apps/{{APPID}}/v2/rooms/sequences","auth":{"type":"noauth","isInherited":true,"source":{"_postman_id":"141a0bd6-d95e-4138-b1d3-2230745545ea","id":"141a0bd6-d95e-4138-b1d3-2230745545ea","name":"Flexible Classroom","type":"folder"}},"urlObject":{"protocol":"https","path":["{{region}}","edu","polling","apps","{{APPID}}","v2","rooms","sequences"],"host":["api","agora","io"],"query":[],"variable":[]}},"response":[],"_postman_id":"fb112fe0-c9c6-4c3d-8d21-c2f0fbefa110"},{"name":"Update custom classroom properties","id":"877af324-c223-4f96-807e-9c32afbfbd95","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PUT","header":[{"key":"Authorization","value":"agora token={{signalToken}}"}],"body":{"mode":"raw","raw":"{\n    \"properties\": {\n        \"key1\": \"value1\",\n        \"key2\": \"value2\"\n    },\n    \"cause\": {}\n}","options":{"raw":{"language":"json"}}},"url":"https://api.agora.io/{{region}}/edu/apps/{{APPID}}/v2/rooms/{{roomUuid}}/properties","auth":{"type":"noauth","isInherited":true,"source":{"_postman_id":"141a0bd6-d95e-4138-b1d3-2230745545ea","id":"141a0bd6-d95e-4138-b1d3-2230745545ea","name":"Flexible Classroom","type":"folder"}},"urlObject":{"protocol":"https","path":["{{region}}","edu","apps","{{APPID}}","v2","rooms","{{roomUuid}}","properties"],"host":["api","agora","io"],"query":[],"variable":[]}},"response":[],"_postman_id":"877af324-c223-4f96-807e-9c32afbfbd95"},{"name":"Delete custom classroom properties","id":"785b62b6-4b0c-4364-92cf-d3e6317df439","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[{"key":"Authorization","value":"agora token={{signalToken}}"}],"body":{"mode":"raw","raw":"{\n    \"properties\": {\n        \"key1\": \"value1\",\n        \"key2\": \"value2\"\n    },\n    \"cause\": {}\n}","options":{"raw":{"language":"json"}}},"url":"https://api.agora.io/{{region}}/edu/apps/{{APPID}}/v2/rooms/{{roomUuid}}/properties","auth":{"type":"noauth","isInherited":true,"source":{"_postman_id":"141a0bd6-d95e-4138-b1d3-2230745545ea","id":"141a0bd6-d95e-4138-b1d3-2230745545ea","name":"Flexible Classroom","type":"folder"}},"urlObject":{"protocol":"https","path":["{{region}}","edu","apps","{{APPID}}","v2","rooms","{{roomUuid}}","properties"],"host":["api","agora","io"],"query":[],"variable":[]}},"response":[],"_postman_id":"785b62b6-4b0c-4364-92cf-d3e6317df439"},{"name":"Update custom user properties","id":"a9f66419-0b0a-4fdb-a54b-6f2a31a7af20","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PUT","header":[{"key":"Authorization","value":"agora token={{signalToken}}"}],"body":{"mode":"raw","raw":"{\n    \"properties\": {\n        \"key1\": \"value1\",\n        \"key2\": \"value2\"\n    },\n    \"cause\": {}\n}","options":{"raw":{"language":"json"}}},"url":"https://api.agora.io/{{region}}/edu/apps/{{APPID}}/v2/rooms/{{roomUuid}}/users/{{userUuid}}/properties","auth":{"type":"noauth","isInherited":true,"source":{"_postman_id":"141a0bd6-d95e-4138-b1d3-2230745545ea","id":"141a0bd6-d95e-4138-b1d3-2230745545ea","name":"Flexible Classroom","type":"folder"}},"urlObject":{"protocol":"https","path":["{{region}}","edu","apps","{{APPID}}","v2","rooms","{{roomUuid}}","users","{{userUuid}}","properties"],"host":["api","agora","io"],"query":[],"variable":[]}},"response":[],"_postman_id":"a9f66419-0b0a-4fdb-a54b-6f2a31a7af20"},{"name":"Delete custom user properties","id":"663afa12-ff50-41ad-b33a-cad14ffab6fd","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[{"key":"Authorization","value":"agora token={{signalToken}}"}],"body":{"mode":"raw","raw":"{\n    \"properties\": {\n        \"key1\": \"value1\",\n        \"key2\": \"value2\"\n    },\n    \"cause\": {}\n}","options":{"raw":{"language":"json"}}},"url":"https://api.agora.io/{{region}}/edu/apps/{{APPID}}/v2/rooms/{{roomUuid}}/users/{{userUuid}}/properties","auth":{"type":"noauth","isInherited":true,"source":{"_postman_id":"141a0bd6-d95e-4138-b1d3-2230745545ea","id":"141a0bd6-d95e-4138-b1d3-2230745545ea","name":"Flexible Classroom","type":"folder"}},"urlObject":{"protocol":"https","path":["{{region}}","edu","apps","{{APPID}}","v2","rooms","{{roomUuid}}","users","{{userUuid}}","properties"],"host":["api","agora","io"],"query":[],"variable":[]}},"response":[],"_postman_id":"663afa12-ff50-41ad-b33a-cad14ffab6fd"},{"name":"Set extApp properties","id":"24fd25a6-f146-4c48-b49a-16e0112ae622","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PUT","header":[{"key":"Authorization","value":"agora token={{signalToken}}"}],"body":{"mode":"raw","raw":"{\n    \"properties\": {},\n    \"common\": {\n        \"state\": 0\n    },\n    \"cause\": {}\n}","options":{"raw":{"language":"json"}}},"url":"https://api.agora.io/{{region}}/edu/apps/{{APPID}}/v2/rooms/{{roomUuid}}/extApps/{{extAppUuid}}/properties","auth":{"type":"noauth","isInherited":true,"source":{"_postman_id":"141a0bd6-d95e-4138-b1d3-2230745545ea","id":"141a0bd6-d95e-4138-b1d3-2230745545ea","name":"Flexible Classroom","type":"folder"}},"urlObject":{"protocol":"https","path":["{{region}}","edu","apps","{{APPID}}","v2","rooms","{{roomUuid}}","extApps","{{extAppUuid}}","properties"],"host":["api","agora","io"],"query":[],"variable":[]}},"response":[],"_postman_id":"24fd25a6-f146-4c48-b49a-16e0112ae622"},{"name":"Delete extApp properties","id":"633d37fb-d91b-471c-9415-62e7ee78b99a","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[{"key":"Authorization","value":"agora token={{signalToken}}"}],"body":{"mode":"raw","raw":"{\n    \"properties\" :[\n        \"key-path1\",\n        \"key-path2\"\n    ],\n    \"cause\":{}\n}","options":{"raw":{"language":"json"}}},"url":"https://api.agora.io/{{region}}/edu/apps/{{APPID}}/v2/rooms/{{roomUuid}}/extApps/{{extAppUuid}}/properties","auth":{"type":"noauth","isInherited":true,"source":{"_postman_id":"141a0bd6-d95e-4138-b1d3-2230745545ea","id":"141a0bd6-d95e-4138-b1d3-2230745545ea","name":"Flexible Classroom","type":"folder"}},"urlObject":{"protocol":"https","path":["{{region}}","edu","apps","{{APPID}}","v2","rooms","{{roomUuid}}","extApps","{{extAppUuid}}","properties"],"host":["api","agora","io"],"query":[],"variable":[]}},"response":[],"_postman_id":"633d37fb-d91b-471c-9415-62e7ee78b99a"},{"name":"Get data for pop-up quizzes","id":"7d5c8608-b918-46e7-bc80-a4b0cb579e4d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Authorization","value":"agora token={{signalToken}}"}],"body":{"mode":"raw","raw":"","options":{"raw":{"language":"json"}}},"url":"https://api.agora.io/{{region}}/edu/apps/{{APPID}}/v2/rooms/{{roomUuid}}/widgets/popupQuiz/sequences","auth":{"type":"noauth","isInherited":true,"source":{"_postman_id":"141a0bd6-d95e-4138-b1d3-2230745545ea","id":"141a0bd6-d95e-4138-b1d3-2230745545ea","name":"Flexible Classroom","type":"folder"}},"urlObject":{"protocol":"https","path":["{{region}}","edu","apps","{{APPID}}","v2","rooms","{{roomUuid}}","widgets","popupQuiz","sequences"],"host":["api","agora","io"],"query":[],"variable":[]}},"response":[],"_postman_id":"7d5c8608-b918-46e7-bc80-a4b0cb579e4d"},{"name":"Get data for polls","id":"0e38240d-32ef-46a2-b4c5-fe98605ea801","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Authorization","value":"agora token={{signalToken}}"}],"body":{"mode":"raw","raw":"","options":{"raw":{"language":"json"}}},"url":"https://api.agora.io/{{region}}/edu/apps/{{APPID}}/v2/rooms/{{roomUuid}}/widgets/poll/sequences","auth":{"type":"noauth","isInherited":true,"source":{"_postman_id":"141a0bd6-d95e-4138-b1d3-2230745545ea","id":"141a0bd6-d95e-4138-b1d3-2230745545ea","name":"Flexible Classroom","type":"folder"}},"urlObject":{"protocol":"https","path":["{{region}}","edu","apps","{{APPID}}","v2","rooms","{{roomUuid}}","widgets","poll","sequences"],"host":["api","agora","io"],"query":[],"variable":[]}},"response":[],"_postman_id":"0e38240d-32ef-46a2-b4c5-fe98605ea801"}],"id":"141a0bd6-d95e-4138-b1d3-2230745545ea","description":"<h1 id=\"documentation\"><strong>Documentation</strong></h1>\n<p>This collection is the Agora Flexible Classroom RESTful API collection.</p>\n<p><a href=\"https://docs.agora.io/en/flexible-classroom/reference/classroom-api?platform=android\">https://docs.agora.io/en/flexible-classroom/reference/classroom-api?platform=android</a></p>\n<h3 id=\"authentication\"><a href=\"https://docs.agora.io/en/flexible-classroom/reference/classroom-api?platform=android#authentication\">Authentication​</a></h3>\n<p>Flexible Classroom Cloud Service uses tokens for authentication. You need to put the following information to the <code>x-agora-token</code> and <code>x-agora-uid</code> fields when sending your HTTP request:</p>\n<ul>\n<li>The Signaling token generated at your server.</li>\n<li>The uid you use to generate the Signaling token.</li>\n</ul>\n<p>For details, see <a href=\"https://docs.agora.io/en/signaling/develop/authentication-workflow\">Generate an RTM Token</a>.</p>\n","auth":{"type":"noauth","isInherited":false},"event":[{"listen":"prerequest","script":{"id":"b3d91b31-95ad-48ee-838f-6dd3be21ef17","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"d6cdf8f4-ef28-4a50-8fd9-c68b80d73571","type":"text/javascript","exec":[""]}}],"_postman_id":"141a0bd6-d95e-4138-b1d3-2230745545ea"},{"name":"Media Gateway","item":[{"name":"Configuration Templates","item":[{"name":"create/reset","id":"c7cbfefa-da25-4b1e-84f1-d148543ed7c8","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\r\n    \"settings\": {\r\n        \"transcoding\": {\r\n            \"video\": {\r\n                \"enabled\": true,\r\n                \"codec\": \"H.264\",\r\n                \"width\": 1280,\r\n                \"height\": 720,\r\n                \"fps\": 24,\r\n                \"bitrate\": 2200,\r\n                \"simulcastStream\": {\r\n                    \"width\": 960,\r\n                    \"height\": 540,\r\n                    \"fps\": 24,\r\n                    \"bitrate\": 1670\r\n        }\r\n            },\r\n            \"audio\": {\r\n                \"enabled\": false,\r\n                \"profile\": 3\r\n            }\r\n        },\r\n        \"jitterBuffer\": {\r\n            \"size\": 500,\r\n            \"maxSize\": 800\r\n        }\r\n    }\r\n}","options":{"raw":{"language":"json"}}},"url":"https://api.agora.io/:region/v1/projects/:appId/rtls/ingress/stream-templates/:templateId","description":"<h4 id=\"create-or-reset-flow-configuration-template\">Create or reset flow configuration template</h4>\n<p>This method creates a stream configuration template (Stream Template). In the stream configuration template, you can configure transcoding parameters for video or audio streams, as well as parameters for mitigating network latency.</p>\n<p>Up to 10 flow configuration templates can be created under each App ID, and each flow configuration template has a unique ID identification (templatedId). When creating a stream configuration template, you need to specify a templateId for it. If the template corresponding to the templateId already exists, the value of the entire flow configuration template will be reset with the incoming body data.</p>\n<p>There are two ways to use flow configuration templates, which can be used in combination:</p>\n<ul>\n<li><strong>Specify a global stream configuration template for the App ID</strong>: all push codes (Stream Key) under the App ID will use this template by default;</li>\n<li><strong>Specify a specific stream configuration template for a specific push code</strong>: When using this push code to push streams, a specific stream configuration template will be used.</li>\n</ul>\n<blockquote>\n<p>By default, all App IDs do not set a stream configuration template, that is, video transcoding is not enabled by default. </p>\n</blockquote>\n<blockquote>\n<p>For <code>templateId</code> String type required parameter. Flow configuration template ID, the value can only be \"a-z\", A-Z\", \"0-9_-\", and the length cannot exceed 12Bytes. </p>\n</blockquote>\n<p><strong>Request body parameters</strong></p>\n<p>The request body consists of a JSON Object type named <code>settings</code> which includes the following fields:</p>\n<ul>\n<li><code>transcoding</code>: JSON Object (Optional) Transcoding settings, includes the following fields:<ul>\n<li><code>video</code>: JSON Object type (Optional) Video transcoding settings, include the following fields:<ul>\n<li><p><code>enabled</code>: Boolean (Required) Whether to enable video transcoding, the default value is <code>false</code>(disabled).</p>\n</li>\n<li><p><code>codec</code>: String (Optional) String type. Transcoding codec, optional values ​​​​\"H.264\", \"VP8\", the default is \"H.264\";</p>\n</li>\n<li><p><code>width</code>: Number (Optional) Width in encoding resolution. The value range is 2 to 1920.</p>\n</li>\n<li><p><code>height</code>: Number (Optional) Height in encoding resolution. The value range is 2 to 1920.</p>\n</li>\n<li><p><code>bitrate</code>: (optional) Number type. Encoding bitrate, unit kbps, value range is 0 to 14000;</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Resolution (width × height, px)</th>\n<th>Frame rate (fps)</th>\n<th>Bitrate (Kbps)</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>640 × 360</td>\n<td>15</td>\n<td>680</td>\n</tr>\n<tr>\n<td>640 × 360</td>\n<td>30</td>\n<td>1030</td>\n</tr>\n<tr>\n<td>848 × 480</td>\n<td>15</td>\n<td>920</td>\n</tr>\n<tr>\n<td>848 × 480</td>\n<td>30</td>\n<td>1400</td>\n</tr>\n<tr>\n<td>960 × 540</td>\n<td>15</td>\n<td>1100</td>\n</tr>\n<tr>\n<td>960 × 540</td>\n<td>30</td>\n<td>1670</td>\n</tr>\n<tr>\n<td>1280 × 720</td>\n<td>15</td>\n<td>1600</td>\n</tr>\n<tr>\n<td>1280 × 720</td>\n<td>30</td>\n<td>2400</td>\n</tr>\n<tr>\n<td>1920 × 1080</td>\n<td>15</td>\n<td>2500</td>\n</tr>\n<tr>\n<td>1920 × 1080</td>\n<td>30</td>\n<td>3780</td>\n</tr>\n<tr>\n<td>1920 × 1080</td>\n<td>60</td>\n<td>5730</td>\n</tr>\n</tbody>\n</table>\n</div></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<blockquote>\n<p>When the simulcast(low) stream is not enabled, it is recommended to use the automatically matched bitrate without setting the bitrate yourself. </p>\n</blockquote>\n<ul>\n<li><code>audio</code>: (optional) JSON Object type. Includes the following fields:<ul>\n<li><code>enabled</code>: (required) Boolean type. Whether to enable audio transcoding, enabled by default.</li>\n<li><code>profile</code>: (optional) Number type. Encoding audio scene, the default is 0, which means: 48 KHz sampling rate, music encoding, mono, the maximum encoding rate is 64 Kbps. If you want to set other profiles, please contact Agora technical support for confirmation.</li>\n</ul>\n</li>\n<li><code>simulcastStream</code>: JSON Object (Optional) The function of large and small video streams, used to improve the adaptive switching capability of the viewer in a weak network environment. Includes the following fields:<ul>\n<li><code>enabled</code>: Boolean (Required) Whether to enable small video transcoding. The default is `false`(off). If you want to enable it, you must enable the video transcoding function at the same time.</li>\n<li>'width`: Number (Optional) Width in small stream resolution. The value range is 2 to 1920.</li>\n<li><code>height</code>: Number (Optional) Height in small stream resolution, Number type. The value range is 2 to 1920.</li>\n<li><code>fps</code>: Number (Optional) Small stream frame rate. The value range is 1 to 60.</li>\n</ul>\n</li>\n<li><code>jitterBuffer</code>: (optional) JSON Object type. The gateway jitter buffer parameters will only take effect when video transcoding is enabled (If there are no special requirements, no explicit configuration is required)<ul>\n<li><code>size</code>: (optional)Number type. jitterBuffer length, unit ms, default value 500 (meaning the gateway will add 500ms to the end-to-end delay to reduce the lag rate caused by network jitter)</li>\n<li><code>maxSize</code>: (optional) Number type. The maximum length of jitterBuffer, unit ms, default value 1000, if provided, must be &gt; jitterBuffer.size. When the jitterBuffer length exceeds this value, the gateway will enable acceleration until it returns to jitterBuffer.size.</li>\n</ul>\n</li>\n</ul>\n","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{customerId}}"},{"key":"password","value":"{{customerSecret}}"}]},"isInherited":true,"source":{"_postman_id":"6aed9690-285e-45f0-a329-c995adbd0956","id":"6aed9690-285e-45f0-a329-c995adbd0956","name":"Media Gateway","type":"folder"}},"urlObject":{"protocol":"https","path":[":region","v1","projects",":appId","rtls","ingress","stream-templates",":templateId"],"host":["api","agora","io"],"query":[],"variable":[{"description":{"content":"<p>(required) The area where the streaming code is created, String type. Agora supports the creation of streaming codes by region, and currently supports the following regions:\n<code>cn</code>: Chinese mainland\n<code>ap</code>: Asia except Mainland China\n<code>na</code>: North America\n<code>eu</code>: Europe\nPlease make sure the region is the same as that for the input source stream and the domain name used for streaming.</p>\n","type":"text/plain"},"type":"any","value":"{{region}}","key":"region"},{"description":{"content":"<p>(required) App ID provided by Agora, String type. After creating a project in the Agora console, you can get an App ID. An App ID is a unique identifier for a project.</p>\n","type":"text/plain"},"type":"any","value":"{{appId}}","key":"appId"},{"type":"any","value":"{{templateId}}","key":"templateId"}]}},"response":[{"id":"59f99e8d-644d-4a65-999a-bab92e923947","name":"create/reset","originalRequest":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\r\n    \"settings\": {\r\n        \"transcoding\": {\r\n            \"video\": {\r\n                \"enabled\": true,\r\n                \"codec\": \"H.264\",\r\n                \"width\": 1280,\r\n                \"height\": 720,\r\n                \"fps\": 24,\r\n                \"bitrate\": 2200,\r\n                \"simulcastStream\": {\r\n                    \"width\": 960,\r\n                    \"height\": 540,\r\n                    \"fps\": 24,\r\n                    \"bitrate\": 1670\r\n        }\r\n            },\r\n            \"audio\": {\r\n                \"enabled\": false,\r\n                \"profile\": 3\r\n            }\r\n        },\r\n        \"jitterBuffer\": {\r\n            \"size\": 500,\r\n            \"maxSize\": 800\r\n        }\r\n    }\r\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://api.agora.io/:region/v1/projects/:appId/rtls/ingress/stream-templates/{{templateId}}","protocol":"https","host":["api","agora","io"],"path":[":region","v1","projects",":appId","rtls","ingress","stream-templates","{{templateId}}"],"variable":[{"id":"f8297374-7711-45b9-8950-3dd39383b13e","key":"region","value":"{{region}}"},{"id":"616128ed-001a-445e-8f54-712f4259f408","key":"appId","value":"{{appId}}"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Sun, 23 Jul 2023 07:53:36 GMT"},{"key":"Content-Type","value":"application/json; charset=UTF-8"},{"key":"Content-Length","value":"21"},{"key":"Connection","value":"keep-alive"},{"key":"X-Kong-Upstream-Latency","value":"184"},{"key":"X-Kong-Proxy-Latency","value":"0"},{"key":"Via","value":"kong/2.0.3"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"X-Request-ID","value":"ed8012bbb2b440c78b18c5685da843c1"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\"\n}"}],"_postman_id":"c7cbfefa-da25-4b1e-84f1-d148543ed7c8"},{"name":"update","id":"8b61e9b0-cb31-479a-b118-0fcc4b50c34c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PATCH","header":[],"body":{"mode":"raw","raw":"\r\n{\r\n    \"settings\": {\r\n        \"transcoding\": {\r\n            \"video\": {\r\n                \"enabled\": true,\r\n                \"codec\": \"H.264\",\r\n                \"width\": 1280,\r\n                \"height\": 720,\r\n                \"fps\": 24,\r\n                \"bitrate\": 2200,\r\n                \"simulcastStream\": {\r\n                    \"width\": 960,\r\n                    \"height\": 540,\r\n                    \"fps\": 24,\r\n                    \"bitrate\": 1670\r\n                }\r\n            }\r\n        }\r\n    }\r\n}","options":{"raw":{"language":"json"}}},"url":"https://api.agora.io/:region/v1/projects/:appId/rtls/ingress/stream-templates/:templateId","description":"<h4 id=\"update-stream-configuration-template\">Update stream configuration template</h4>\n<p>Update the created flow configuration template.</p>\n<blockquote>\n<ul>\n<li>This interface can only be called if the flow configuration template already exists.</li>\n<li>Modifications to the stream configuration template will only take effect after the stream is re-pushed. Considering the synchronization delay between the gateway and the database, please wait 3 minutes after calling this interface before re-pushing the stream.</li>\n</ul>\n</blockquote>\n<p><strong>Request body parameters</strong></p>\n<p>The request body consists of a JSON Object type named <code>settings</code> which includes the following fields. The update interface can only be called if the stream configuration template already exists, and will only update the incoming fields.</p>\n<blockquote>\n<ul>\n<li>To ensure a successful request, do not set required fields to <code>null</code> or <code>\"\"</code>.</li>\n<li>The simulcast (low stream) parameters supported by the update is:<ul>\n<li><code>transcoding.video</code></li>\n<li><code>transcoding.audio</code></li>\n<li><code>jitterBuffer</code></li>\n</ul>\n</li>\n<li>For example, if you only want to update the field transcoding.video for fps, you need to pass in the entire <code>transcoding.video</code> field again but only modify the fps field and pass in the other fields unchanged. Fields cannot be passed individually.</li>\n<li><code>transcoding.video</code>, <code>transcoding.audio</code>, and <code>jitterBuffer</code> are independent of each other and do not affect each other. If only <code>transcoding.video</code> is passed in then only its parameters will be updated and the parameter values ​​of <code>transcoding.audio</code> and <code>jitterBuffer</code> will not be affected.</li>\n</ul>\n</blockquote>\n<ul>\n<li><code>transcoding</code>: JSON Object (Optional) Transcoding settings, includes the following fields:<ul>\n<li><code>video</code>: JSON Object type (Optional) Video transcoding settings, include the following fields:<ul>\n<li><code>enabled</code>: Boolean (Required) Whether to enable video transcoding, the default value is <code>false</code>(disabled).</li>\n<li><code>codec</code>: String (Optional) String type. Transcoding codec, optional values ​​​​\"H.264\", \"VP8\", the default is \"H.264\";</li>\n<li><code>width</code>: Number (Optional) Width in encoding resolution. The value range is 2 to 1920.</li>\n<li><code>height</code>: Number (Optional) Height in encoding resolution. The value range is 2 to 1920.</li>\n<li><code>bitrate</code>: (optional) Number type. Encoding bit rate, unit kbps, value range is 0 to 14000;</li>\n<li><code>simulcastStream</code>: JSON Object (Optional) The function of large and small video streams, used to improve the adaptive switching capability of the viewer in a weak network environment. Includes the following fields:<ul>\n<li><code>enabled</code>: Boolean (Required) Whether to enable small video transcoding. The default is <code>false</code>(off). If you want to enable it, you must enable the video transcoding function at the same time.</li>\n<li><code>width</code>: Number (Optional) Width in small stream resolution. The value range is 2 to 1920.</li>\n<li><code>height</code>: Number (Optional) Height in small stream resolution, Number type. The value range is 2 to 1920.</li>\n<li><code>fps</code>: Number (Optional) Small stream frame rate. The value range is 1 to 60.</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n<li><code>audio</code>: (optional) JSON Object type. Includes the following fields:<ul>\n<li><code>enabled</code>: (required) Boolean type. Whether to enable audio transcoding, enabled by default.</li>\n<li><code>profile</code>: (optional) Number type. Encoding audio scene, the default is 0, which means: 48 KHz sampling rate, music encoding, mono, the maximum encoding rate is 64 Kbps. If you want to set other profiles, please contact Agora technical support for confirmation.</li>\n<li><code>bitrate</code>: (optional) Number type. Encoding bit rate, unit kbps, value range is 64kbps ~ 320kbps, if not filled in, the bit rate is determined by the profile value.</li>\n</ul>\n</li>\n<li><code>jitterBuffer</code>: (optional) JSON Object type. The gateway jitter buffer parameters will only take effect when video transcoding is enabled (If there are no special requirements, no explicit configuration is required)<ul>\n<li><code>size</code>: (optional) Number type. jitterBuffer length, unit ms, default value 500 (meaning the gateway will add 500ms to the end-to-end delay to reduce the lag rate caused by network jitter)</li>\n<li><code>maxSize</code>: (optional) Number type. The maximum length of jitterBuffer, unit ms, default value 1000, if provided, must be &gt; jitterBuffer.size. When the jitterBuffer length exceeds this value, the gateway will enable acceleration until it returns to jitterBuffer.size.</li>\n</ul>\n</li>\n</ul>\n","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{customerId}}"},{"key":"password","value":"{{customerSecret}}"}]},"isInherited":true,"source":{"_postman_id":"6aed9690-285e-45f0-a329-c995adbd0956","id":"6aed9690-285e-45f0-a329-c995adbd0956","name":"Media Gateway","type":"folder"}},"urlObject":{"protocol":"https","path":[":region","v1","projects",":appId","rtls","ingress","stream-templates",":templateId"],"host":["api","agora","io"],"query":[],"variable":[{"description":{"content":"<p>(required) The area where the streaming code is created, String type. Agora supports the creation of streaming codes by region, and currently supports the following regions:\n<code>cn</code>: Chinese mainland\n<code>ap</code>: Asia except Mainland China\n<code>na</code>: North America\n<code>eu</code>: Europe\nPlease make sure the region is the same as that for the input source stream and the domain name used for streaming.</p>\n","type":"text/plain"},"type":"any","value":"{{region}}","key":"region"},{"description":{"content":"<p>(required) App ID provided by Agora, String type. After creating a project in the Agora console, you can get an App ID. An App ID is a unique identifier for a project.</p>\n","type":"text/plain"},"type":"any","value":"{{appId}}","key":"appId"},{"type":"any","value":"{{templateId}}","key":"templateId"}]}},"response":[{"id":"329cf98a-2d8e-4fc7-951a-e592103ce5d7","name":"update","originalRequest":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"\r\n{\r\n    \"settings\": {\r\n        \"transcoding\": {\r\n            \"video\": {\r\n                \"enabled\": true,\r\n                \"codec\": \"H.264\",\r\n                \"width\": 1280,\r\n                \"height\": 720,\r\n                \"fps\": 24,\r\n                \"bitrate\": 2200,\r\n                \"simulcastStream\": {\r\n                    \"width\": 960,\r\n                    \"height\": 540,\r\n                    \"fps\": 24,\r\n                    \"bitrate\": 1670\r\n                }\r\n            }\r\n        }\r\n    }\r\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://api.agora.io/:region/v1/projects/:appId/rtls/ingress/stream-templates/{{templateId}}","protocol":"https","host":["api","agora","io"],"path":[":region","v1","projects",":appId","rtls","ingress","stream-templates","{{templateId}}"],"variable":[{"id":"f8297374-7711-45b9-8950-3dd39383b13e","key":"region","value":"{{region}}"},{"id":"616128ed-001a-445e-8f54-712f4259f408","key":"appId","value":"{{appId}}"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Sun, 23 Jul 2023 07:53:36 GMT"},{"key":"Content-Type","value":"application/json; charset=UTF-8"},{"key":"Content-Length","value":"21"},{"key":"Connection","value":"keep-alive"},{"key":"X-Kong-Upstream-Latency","value":"184"},{"key":"X-Kong-Proxy-Latency","value":"0"},{"key":"Via","value":"kong/2.0.3"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"X-Request-ID","value":"ed8012bbb2b440c78b18c5685da843c1"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\"\n}"}],"_postman_id":"8b61e9b0-cb31-479a-b118-0fcc4b50c34c"},{"name":"delete","id":"8bdb3a05-47be-403d-83cd-08f498bd8874","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[],"url":"https://api.agora.io/:region/v1/projects/:appId/rtls/ingress/stream-templates/:templateId","description":"<h4 id=\"delete-the-flow-configuration-template\">Delete the flow configuration template</h4>\n<p>Request package body<br />None.</p>\n","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{customerId}}"},{"key":"password","value":"{{customerSecret}}"}]},"isInherited":true,"source":{"_postman_id":"6aed9690-285e-45f0-a329-c995adbd0956","id":"6aed9690-285e-45f0-a329-c995adbd0956","name":"Media Gateway","type":"folder"}},"urlObject":{"protocol":"https","path":[":region","v1","projects",":appId","rtls","ingress","stream-templates",":templateId"],"host":["api","agora","io"],"query":[],"variable":[{"description":{"content":"<p>(required) The area where the streaming code is created, String type. Agora supports the creation of streaming codes by region, and currently supports the following regions:\n<code>cn</code>: Chinese mainland\n<code>ap</code>: Asia except Mainland China\n<code>na</code>: North America\n<code>eu</code>: Europe\nPlease make sure the region is the same as that for the input source stream and the domain name used for streaming.</p>\n","type":"text/plain"},"type":"any","value":"{{region}}","key":"region"},{"description":{"content":"<p>(required) App ID provided by Agora, String type. After creating a project in the Agora console, you can get an App ID. An App ID is a unique identifier for a project.</p>\n","type":"text/plain"},"type":"any","value":"{{appId}}","key":"appId"},{"type":"any","value":"{{templateId}}","key":"templateId"}]}},"response":[{"id":"c4b3fa00-35e3-470e-a427-49e2394cdeec","name":"delete","originalRequest":{"method":"DELETE","header":[],"url":{"raw":"https://api.agora.io/:region/v1/projects/:appId/rtls/ingress/stream-templates/{{templateId}}","protocol":"https","host":["api","agora","io"],"path":[":region","v1","projects",":appId","rtls","ingress","stream-templates","{{templateId}}"],"variable":[{"id":"c7060baa-14d2-45e0-8d11-a63fdf17a354","key":"region","value":"{{region}}"},{"id":"073a4a73-db73-49d8-8853-6bb674bbd205","key":"appId","value":"{{appId}}"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Sun, 23 Jul 2023 07:53:47 GMT"},{"key":"Content-Type","value":"application/json; charset=UTF-8"},{"key":"Content-Length","value":"21"},{"key":"Connection","value":"keep-alive"},{"key":"X-Kong-Upstream-Latency","value":"170"},{"key":"X-Kong-Proxy-Latency","value":"0"},{"key":"Via","value":"kong/2.0.3"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"X-Request-ID","value":"4d508315094745c4bcbb8fd06bc57f7b"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\"\n}"}],"_postman_id":"8bdb3a05-47be-403d-83cd-08f498bd8874"},{"name":"set global config","id":"c0e799c4-97ca-419f-b2df-48b9ddd7e9dc","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\r\n    \"settings\": {\r\n        \"defaultStreamTemplate\": \"720p\"\r\n    }\r\n}","options":{"raw":{"language":"json"}}},"url":"https://api.agora.io/:region/v1/projects/:appId/rtls/ingress/appconfig","description":"<h4 id=\"set-global-stream-configuration-template\">Set global stream configuration template</h4>\n<p>This method sets the global flow configuration template, that is, the template that applies to all push codes under the App ID.</p>\n<blockquote>\n<p>Before calling this interface, there must be a created template. You can refer to the Create or Reset Stream Configuration Template API to create a template. </p>\n</blockquote>\n<p><strong>Request body parameters</strong></p>\n<p>The request body consists of a JSON Object type named <code>settings</code> which includes the following fields:</p>\n<ul>\n<li><code>defaultStreamTemplate</code>: String type. Flow configuration template ID, must have been created.</li>\n</ul>\n<p><strong>Note</strong>:</p>\n<ul>\n<li>For users who have used the Beta version: In the Beta version, this API can also set <code>transcoding</code> parameters. Now it is recommended that you use the Create or reset stream configuration template API settings instead.</li>\n<li>If you have used this API to set it before <code>transcoding</code>, the current effective mechanism is as follows:<ul>\n<li>If you reset it now <code>defaultStreamTemplate</code>, the previously set through this API <code>transcoding</code> will automatically become invalid, and the parameters in the new template will take over.</li>\n<li>If <code>defaultStreamTemplate</code> is not set, the transcoding previously set through this API will still be retained as the default global configuration parameter of this AppID</li>\n<li>If <code>defaultStreamTemplate</code> is set, the transcoding parameter previously set through this API will automatically become invalid.</li>\n</ul>\n</li>\n</ul>\n","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{customerId}}"},{"key":"password","value":"{{customerSecret}}"}]},"isInherited":true,"source":{"_postman_id":"6aed9690-285e-45f0-a329-c995adbd0956","id":"6aed9690-285e-45f0-a329-c995adbd0956","name":"Media Gateway","type":"folder"}},"urlObject":{"protocol":"https","path":[":region","v1","projects",":appId","rtls","ingress","appconfig"],"host":["api","agora","io"],"query":[],"variable":[{"id":"6a28aa4b-4a2c-46c5-a69d-555007b9adfd","description":{"content":"<p>(required) The area where the streaming code is created, String type. Agora supports the creation of streaming codes by region, and currently supports the following regions:\n<code>cn</code>: Chinese mainland\n<code>ap</code>: Asia except Mainland China\n<code>na</code>: North America\n<code>eu</code>: Europe\nPlease make sure the region is the same as that for the input source stream and the domain name used for streaming.</p>\n","type":"text/plain"},"type":"any","value":"{{region}}","key":"region"},{"id":"abadbeb7-71e4-43dc-913b-cce4f4afd2b0","description":{"content":"<p>(required) App ID provided by Agora, String type. After creating a project in the Agora console, you can get an App ID. An App ID is a unique identifier for a project.</p>\n","type":"text/plain"},"type":"any","value":"{{appId}}","key":"appId"}]}},"response":[{"id":"d52048b8-ecbc-4745-92c5-ab76333ac1d5","name":"set global config","originalRequest":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\r\n    \"settings\": {\r\n        \"defaultStreamTemplate\": \"720p\"\r\n    }\r\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://api.agora.io/:region/v1/projects/:appId/rtls/ingress/appconfig","protocol":"https","host":["api","agora","io"],"path":[":region","v1","projects",":appId","rtls","ingress","appconfig"],"variable":[{"id":"f8297374-7711-45b9-8950-3dd39383b13e","key":"region","value":"{{region}}"},{"id":"616128ed-001a-445e-8f54-712f4259f408","key":"appId","value":"{{appId}}"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Sun, 23 Jul 2023 07:53:36 GMT"},{"key":"Content-Type","value":"application/json; charset=UTF-8"},{"key":"Content-Length","value":"21"},{"key":"Connection","value":"keep-alive"},{"key":"X-Kong-Upstream-Latency","value":"184"},{"key":"X-Kong-Proxy-Latency","value":"0"},{"key":"Via","value":"kong/2.0.3"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"X-Request-ID","value":"ed8012bbb2b440c78b18c5685da843c1"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\"\n}"}],"_postman_id":"c0e799c4-97ca-419f-b2df-48b9ddd7e9dc"},{"name":"query all templates","id":"72073934-d634-4223-8ae0-6a40cfbd2d70","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"body":{"mode":"raw","raw":"","options":{"raw":{"language":"json"}}},"url":"https://api.agora.io/:region/v1/projects/:appId/rtls/ingress/stream-templates","description":"<h4 id=\"get-flow-configuration-templates\">Get flow configuration templates</h4>\n<p>Call this interface to get all templates and their configurations</p>\n<p><strong>Response body parameters</strong></p>\n<ul>\n<li><code>transcoding</code>: JSON Object (Optional) Transcoding settings, includes the following fields:<ul>\n<li><code>video</code>: JSON Object type (Optional) Video transcoding settings, include the following fields:<ul>\n<li><code>enabled</code>: Boolean (Required) Whether to enable video transcoding, the default value is <code>false</code>(disabled).</li>\n<li><code>codec</code>: String (Optional) String type. Transcoding codec, optional values ​​​​\"H.264\", \"VP8\", the default is \"H.264\";</li>\n<li><code>width</code>: Number (Optional) Width in encoding resolution. The value range is 2 to 1920.</li>\n<li><code>height</code>: Number (Optional) Height in encoding resolution. The value range is 2 to 1920.</li>\n<li><code>bitrate</code>: (optional) Number type. Encoding bit rate, unit kbps, value range is 0 to 14000;</li>\n</ul>\n</li>\n<li><code>audio</code>: (optional) JSON Object type. Includes the following fields:<ul>\n<li><code>enabled</code>: (required) Boolean type. Whether to enable audio transcoding, enabled by default.</li>\n<li><code>profile</code>: (optional) Number type. Encoding audio scene, the default is 0, which means: 48 KHz sampling rate, music encoding, mono, the maximum encoding rate is 64 Kbps. If you want to set other profiles, please contact Agora technical support for confirmation.</li>\n<li><code>bitrate</code>: (optional) Number type. Encoding bit rate, unit kbps, value range is 64kbps ~ 320kbps, if not filled in, the bit rate is determined by the profile value.</li>\n</ul>\n</li>\n<li><code>simulcastStream</code>: JSON Object (Optional) The function of large and small video streams, used to improve the adaptive switching capability of the viewer in a weak network environment. Includes the following fields:<ul>\n<li><code>enabled</code>: Boolean (Required) Whether to enable small video transcoding. The default is <code>false</code>(off). If you want to enable it, you must enable the video transcoding function at the same time.</li>\n<li><code>width</code>: Number (Optional) Width in small stream resolution. The value range is 2 to 1920.</li>\n<li><code>height</code>: Number (Optional) Height in small stream resolution, Number type. The value range is 2 to 1920.</li>\n<li><code>fps</code>: Number (Optional) Small stream frame rate. The value range is 1 to 60.</li>\n</ul>\n</li>\n</ul>\n</li>\n<li><code>jitterBuffer</code>: (optional) JSON Object type. The gateway jitter buffer parameters will only take effect when video transcoding is enabled (If there are no special requirements, no explicit configuration is required)<ul>\n<li><code>size</code>: (optional)Number type. jitterBuffer length, unit ms, default value 500 (meaning the gateway will add 500ms to the end-to-end delay to reduce the lag rate caused by network jitter)</li>\n<li><code>maxSize</code>: (optional) Number type. The maximum length of jitterBuffer, unit ms, default value 1000, if provided, must be &gt; jitterBuffer.size. When the jitterBuffer length exceeds this value, the gateway will enable acceleration until it returns to jitterBuffer.size.</li>\n</ul>\n</li>\n</ul>\n","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{customerId}}"},{"key":"password","value":"{{customerSecret}}"}]},"isInherited":true,"source":{"_postman_id":"6aed9690-285e-45f0-a329-c995adbd0956","id":"6aed9690-285e-45f0-a329-c995adbd0956","name":"Media Gateway","type":"folder"}},"urlObject":{"protocol":"https","path":[":region","v1","projects",":appId","rtls","ingress","stream-templates"],"host":["api","agora","io"],"query":[],"variable":[{"id":"8fc820f7-c698-4c6c-9bc3-787e70507d35","description":{"content":"<p>(required) The area where the streaming code is created, String type. Agora supports the creation of streaming codes by region, and currently supports the following regions:\n<code>cn</code>: Chinese mainland\n<code>ap</code>: Asia except Mainland China\n<code>na</code>: North America\n<code>eu</code>: Europe\nPlease make sure the region is the same as that for the input source stream and the domain name used for streaming.</p>\n","type":"text/plain"},"type":"any","value":"{{region}}","key":"region"},{"id":"4a8d0742-cbb1-4d2b-87f4-8ab7821bf503","description":{"content":"<p>(required) App ID provided by Agora, String type. After creating a project in the Agora console, you can get an App ID. An App ID is a unique identifier for a project.</p>\n","type":"text/plain"},"type":"any","value":"{{appId}}","key":"appId"}]}},"response":[{"id":"84f81734-b2a9-4ea6-bc29-906cd58446b2","name":"query all templates","originalRequest":{"method":"GET","header":[],"body":{"mode":"raw","raw":"","options":{"raw":{"language":"json"}}},"url":{"raw":"https://api.agora.io/:region/v1/projects/:appId/rtls/ingress/stream-templates","protocol":"https","host":["api","agora","io"],"path":[":region","v1","projects",":appId","rtls","ingress","stream-templates"],"variable":[{"id":"f8297374-7711-45b9-8950-3dd39383b13e","key":"region","value":"{{region}}"},{"id":"616128ed-001a-445e-8f54-712f4259f408","key":"appId","value":"{{appId}}"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Sun, 23 Jul 2023 07:53:36 GMT"},{"key":"Content-Type","value":"application/json; charset=UTF-8"},{"key":"Content-Length","value":"21"},{"key":"Connection","value":"keep-alive"},{"key":"X-Kong-Upstream-Latency","value":"184"},{"key":"X-Kong-Proxy-Latency","value":"0"},{"key":"Via","value":"kong/2.0.3"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"X-Request-ID","value":"ed8012bbb2b440c78b18c5685da843c1"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\"\n}"}],"_postman_id":"72073934-d634-4223-8ae0-6a40cfbd2d70"},{"name":"query template","id":"d0a6af9e-645e-4b04-969b-8d7e4252d7c9","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"body":{"mode":"raw","raw":"","options":{"raw":{"language":"json"}}},"url":"https://api.agora.io/:region/v1/projects/:appId/rtls/ingress/stream-templates/:templateId","description":"<h4 id=\"get-flow-configuration-template\">Get flow configuration template</h4>\n<p>Call this interface to get the specific template configuration</p>\n<p><strong>Response body parameters</strong></p>\n<ul>\n<li><code>transcoding</code>: JSON Object (Optional) Transcoding settings, includes the following fields:<ul>\n<li><code>video</code>: JSON Object type (Optional) Video transcoding settings, include the following fields:<ul>\n<li><code>enabled</code>: Boolean (Required) Whether to enable video transcoding, the default value is <code>false</code>(disabled).</li>\n<li><code>codec</code>: String (Optional) String type. Transcoding codec, optional values ​​​​\"H.264\", \"VP8\", the default is \"H.264\";</li>\n<li><code>width</code>: Number (Optional) Width in encoding resolution. The value range is 2 to 1920.</li>\n<li><code>height</code>: Number (Optional) Height in encoding resolution. The value range is 2 to 1920.</li>\n<li><code>bitrate</code>: (optional) Number type. Encoding bit rate, unit kbps, value range is 0 to 14000;</li>\n</ul>\n</li>\n<li><code>audio</code>: (optional) JSON Object type. Includes the following fields:<ul>\n<li><code>enabled</code>: (required) Boolean type. Whether to enable audio transcoding, enabled by default.</li>\n<li><code>profile</code>: (optional) Number type. Encoding audio scene, the default is 0, which means: 48 KHz sampling rate, music encoding, mono, the maximum encoding rate is 64 Kbps. If you want to set other profiles, please contact Agora technical support for confirmation.</li>\n<li><code>bitrate</code>: (optional) Number type. Encoding bit rate, unit kbps, value range is 64kbps ~ 320kbps, if not filled in, the bit rate is determined by the profile value.</li>\n</ul>\n</li>\n<li><code>simulcastStream</code>: JSON Object (Optional) The function of large and small video streams, used to improve the adaptive switching capability of the viewer in a weak network environment. Includes the following fields:<ul>\n<li><code>enabled</code>: Boolean (Required) Whether to enable small video transcoding. The default is <code>false</code>(off). If you want to enable it, you must enable the video transcoding function at the same time.</li>\n<li><code>width</code>: Number (Optional) Width in small stream resolution. The value range is 2 to 1920.</li>\n<li><code>height</code>: Number (Optional) Height in small stream resolution, Number type. The value range is 2 to 1920.</li>\n<li><code>fps</code>: Number (Optional) Small stream frame rate. The value range is 1 to 60.</li>\n</ul>\n</li>\n</ul>\n</li>\n<li><code>jitterBuffer</code>: (optional) JSON Object type. The gateway jitter buffer parameters will only take effect when video transcoding is enabled (If there are no special requirements, no explicit configuration is required)<ul>\n<li><code>size</code>: (optional)Number type. jitterBuffer length, unit ms, default value 500 (meaning the gateway will add 500ms to the end-to-end delay to reduce the lag rate caused by network jitter)</li>\n<li><code>maxSize</code>: (optional) Number type. The maximum length of jitterBuffer, unit ms, default value 1000, if provided, must be &gt; jitterBuffer.size. When the jitterBuffer length exceeds this value, the gateway will enable acceleration until it returns to jitterBuffer.size.</li>\n</ul>\n</li>\n</ul>\n","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{customerId}}"},{"key":"password","value":"{{customerSecret}}"}]},"isInherited":true,"source":{"_postman_id":"6aed9690-285e-45f0-a329-c995adbd0956","id":"6aed9690-285e-45f0-a329-c995adbd0956","name":"Media Gateway","type":"folder"}},"urlObject":{"protocol":"https","path":[":region","v1","projects",":appId","rtls","ingress","stream-templates",":templateId"],"host":["api","agora","io"],"query":[],"variable":[{"id":"8fc820f7-c698-4c6c-9bc3-787e70507d35","description":{"content":"<p>(required) The area where the streaming code is created, String type. Agora supports the creation of streaming codes by region, and currently supports the following regions:\n<code>cn</code>: Chinese mainland\n<code>ap</code>: Asia except Mainland China\n<code>na</code>: North America\n<code>eu</code>: Europe\nPlease make sure the region is the same as that for the input source stream and the domain name used for streaming.</p>\n","type":"text/plain"},"type":"any","value":"{{region}}","key":"region"},{"id":"4a8d0742-cbb1-4d2b-87f4-8ab7821bf503","description":{"content":"<p>(required) App ID provided by Agora, String type. After creating a project in the Agora console, you can get an App ID. An App ID is a unique identifier for a project.</p>\n","type":"text/plain"},"type":"any","value":"{{appId}}","key":"appId"},{"type":"any","value":"","key":"templateId"}]}},"response":[{"id":"c58ba8b6-1caa-488a-9a7a-68c1677b4331","name":"query templates","originalRequest":{"method":"GET","header":[],"body":{"mode":"raw","raw":"","options":{"raw":{"language":"json"}}},"url":{"raw":"https://api.agora.io/:region/v1/projects/:appId/rtls/ingress/stream-templates/:templateId","protocol":"https","host":["api","agora","io"],"path":[":region","v1","projects",":appId","rtls","ingress","stream-templates",":templateId"],"variable":[{"id":"f8297374-7711-45b9-8950-3dd39383b13e","key":"region","value":"{{region}}"},{"id":"616128ed-001a-445e-8f54-712f4259f408","key":"appId","value":"{{appId}}"},{"key":"templateId","value":""}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Sun, 23 Jul 2023 07:53:36 GMT"},{"key":"Content-Type","value":"application/json; charset=UTF-8"},{"key":"Content-Length","value":"21"},{"key":"Connection","value":"keep-alive"},{"key":"X-Kong-Upstream-Latency","value":"184"},{"key":"X-Kong-Proxy-Latency","value":"0"},{"key":"Via","value":"kong/2.0.3"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"X-Request-ID","value":"ed8012bbb2b440c78b18c5685da843c1"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\"\n}"}],"_postman_id":"d0a6af9e-645e-4b04-969b-8d7e4252d7c9"},{"name":"configure [deprecated]","id":"e1d9b7e9-382a-42bb-9c51-9b9277d580a2","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\r\n    \"settings\": {\r\n        \"transcoding\": {\r\n            \"video\": {\r\n                \"enabled\": true,\r\n                \"codec\": \"H.264\",\r\n                \"width\": 640,\r\n                \"height\": 480,\r\n                \"fps\": 15,\r\n                \"bitrate\": 1200\r\n            },\r\n            \"audio\": {\r\n                \"enabled\": false,\r\n                \"codec\": \"OPUS\"\r\n            }\r\n        },\r\n        \"simulcastStream\": {\r\n                \"enabled\": true,\r\n                \"width\": 320,\r\n                \"height\": 240,\r\n                \"fps\": 10,\r\n                \"bitrate\": 1200\r\n        }\r\n    }\r\n}","options":{"raw":{"language":"json"}}},"url":"https://api.agora.io/:region/v1/projects/:appId/rtls/ingress/appconfig","description":"<h4 id=\"configure-the-rtmp-gateway-service\">Configure the RTMP Gateway service</h4>\n<p>Call this interface to set the transcoding configuration information of the RTMP gateway service.</p>\n<p><strong>Request body parameters</strong></p>\n<p>The request body consists of a JSON Object type named <code>settings</code> which includes the following fields:</p>\n<ul>\n<li><code>transcoding</code>: JSON Object (Optional) Transcoding settings, includes the following fields:<ul>\n<li><code>video</code>: JSON Object type (Optional) Video transcoding settings, include the following fields:<ul>\n<li><code>enabled</code>: Boolean (Required) Whether to enable video transcoding, the default value is <code>false</code>(disabled).</li>\n<li><code>width</code>: Number (Optional) Width in encoding resolution. The value range is 2 to 1920.</li>\n<li><code>height</code>: Number (Optional) Height in encoding resolution. The value range is 2 to 1920.</li>\n<li><code>fps</code>: Number (Optional) Encoding frame rate. The value range is 1 to 60.</li>\n<li><code>codec</code>: String (Optional) H264 or H265</li>\n</ul>\n</li>\n<li><code>audio</code>: JSON Object (Optional) Audio transcoding settings. Include the following fields:<ul>\n<li><code>enabled</code>: Boolean (Required) Whether to enable audio transcoding. The default value is <code>true</code>(on).</li>\n<li><code>profile</code>: Number (Optional) Encoded audio scene. The default is <code>0</code>, means: 48 KHz sampling rate, music encoding, mono, the maximum encoding bit rate is 64 Kbps.</li>\n<li><code>codec</code>: String (Optional) AAC or OPUS</li>\n</ul>\n</li>\n</ul>\n</li>\n<li><code>simulcastStream</code>: JSON Object (Optional) The function of large and small video streams, used to improve the adaptive switching capability of the viewer in a weak network environment. Includes the following fields:<ul>\n<li><code>enabled</code>: Boolean (Required) Whether to enable small video transcoding. The default is <code>false</code>(off). If you want to enable it, you must enable the video transcoding function at the same time.</li>\n<li><code>width</code>: Number (Optional) Width in small stream resolution. The value range is 2 to 1920.</li>\n<li><code>height</code>: Number (Optional) Height in small stream resolution, Number type. The value range is 2 to 1920.</li>\n<li><code>fps</code>: Number (Optional) Small stream frame rate. The value range is 1 to 60.</li>\n<li><code>bitrate</code>: Number (Optional) Small stream bit rate. The value range depends on the set <code>width</code>, <code>height</code>, <code>fps</code>value, if it exceeds the range, it will be reset to the valid range.</li>\n</ul>\n</li>\n</ul>\n","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{customerId}}"},{"key":"password","value":"{{customerSecret}}"}]},"isInherited":true,"source":{"_postman_id":"6aed9690-285e-45f0-a329-c995adbd0956","id":"6aed9690-285e-45f0-a329-c995adbd0956","name":"Media Gateway","type":"folder"}},"urlObject":{"protocol":"https","path":[":region","v1","projects",":appId","rtls","ingress","appconfig"],"host":["api","agora","io"],"query":[],"variable":[{"description":{"content":"<p>(required) The area where the streaming code is created, String type. Agora supports the creation of streaming codes by region, and currently supports the following regions:\n<code>cn</code>: Chinese mainland\n<code>ap</code>: Asia except Mainland China\n<code>na</code>: North America\n<code>eu</code>: Europe\nPlease make sure the region is the same as that for the input source stream and the domain name used for streaming.</p>\n","type":"text/plain"},"type":"any","value":"{{region}}","key":"region"},{"description":{"content":"<p>(required) App ID provided by Agora, String type. After creating a project in the Agora console, you can get an App ID. An App ID is a unique identifier for a project.</p>\n","type":"text/plain"},"type":"any","value":"{{appId}}","key":"appId"}]}},"response":[{"id":"20b0234b-c949-474e-8164-298e704b4378","name":"configure","originalRequest":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\r\n    \"settings\": {\r\n        \"transcoding\": {\r\n            \"video\": {\r\n                \"enabled\": true,\r\n                \"width\": 640,\r\n                \"height\": 480,\r\n                \"fps\": 15\r\n            },\r\n            \"audio\": {\r\n                \"enabled\": false \r\n            }\r\n        },\r\n        \"simulcastStream\": {\r\n                \"enabled\": true,\r\n                \"width\": 320,\r\n                \"height\": 240,\r\n                \"fps\": 10\r\n        }\r\n    }\r\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://api.agora.io/:region/v1/projects/:appId/rtls/ingress/appconfig","protocol":"https","host":["api","agora","io"],"path":[":region","v1","projects",":appId","rtls","ingress","appconfig"],"variable":[{"id":"f8297374-7711-45b9-8950-3dd39383b13e","key":"region","value":"{{region}}"},{"id":"616128ed-001a-445e-8f54-712f4259f408","key":"appId","value":"{{appId}}"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Sun, 23 Jul 2023 07:53:36 GMT"},{"key":"Content-Type","value":"application/json; charset=UTF-8"},{"key":"Content-Length","value":"21"},{"key":"Connection","value":"keep-alive"},{"key":"X-Kong-Upstream-Latency","value":"184"},{"key":"X-Kong-Proxy-Latency","value":"0"},{"key":"Via","value":"kong/2.0.3"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"X-Request-ID","value":"ed8012bbb2b440c78b18c5685da843c1"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\"\n}"}],"_postman_id":"e1d9b7e9-382a-42bb-9c51-9b9277d580a2"}],"id":"5568d053-6c44-46d6-ad7a-b3fbd05149a5","_postman_id":"5568d053-6c44-46d6-ad7a-b3fbd05149a5","description":"","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{customerId}}"},{"key":"password","value":"{{customerSecret}}"}]},"isInherited":true,"source":{"_postman_id":"6aed9690-285e-45f0-a329-c995adbd0956","id":"6aed9690-285e-45f0-a329-c995adbd0956","name":"Media Gateway","type":"folder"}}},{"name":"Query Stream","item":[{"name":"query stream list","event":[{"listen":"test","script":{"id":"b290986d-edf8-401a-87dd-070282110a82","exec":["var jsonData = pm.response.json();","var sid = jsonData.data[0].sid;","console.log(sid);","pm.collectionVariables.set(\"sid\", sid);"],"type":"text/javascript","packages":{}}}],"id":"ff33368f-be09-442f-9195-49ef39ba5788","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://api.agora.io/:region/v1/projects/:appId/rtls/ingress/online-streams\n","description":"<h4 id=\"query-streaming-information\">Query streaming information</h4>\n<p>Query the list of streams currently being pushed.</p>\n<p><strong>Response body parameters</strong></p>\n<p>If the status code is <code>2xx</code>, the request was successful. Body contains the following fields:</p>\n<ul>\n<li><code>status</code>: String. Request status. Value is <code>success</code>.</li>\n<li><code>data</code>: JSON Object type, includes the following fields:<ul>\n<li><code>streamKey</code>: String. The streaming code to be queried.</li>\n<li><code>channel</code>: String. The name of the audio network channel bound to the streaming code.</li>\n<li><code>uid</code>: String. The UID of the user in the audio network channel bound to the streaming code.</li>\n<li><code>expiresAfter</code>: Number. The effective duration of the streaming code, calculated from the creation time, in seconds.</li>\n<li><code>createdAt</code>: String type, Unix time stamp created by streaming code, unit is seconds.</li>\n<li><code>bitrate</code>: Number. The source stream bitrate (audio + video) of the push stream, in Kbps.</li>\n<li><code>video</code>: object. Video stream parameters, only returned if <code>status</code>is .<code>\"Running\"</code><ul>\n<li><code>width</code>: Number. Video width, in px.</li>\n<li><code>height</code>: Number. Video height, unit is px.</li>\n<li><code>fps</code>: Number. Video frame rate, unit is fps.</li>\n</ul>\n</li>\n<li><code>audio</code>: Object. Audio stream parameters, only returned if <code>status</code>is .<code>\"Running\"</code><ul>\n<li><code>channels</code>: Number. Number of audio channels.</li>\n<li><code>sampleRate</code>: Number. Audio sampling rate, unit is Hz.</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<p>If the status code is not <code>2xx</code>, the request has failed. The response body contains <code>message</code>a field of String type, describing the specific reason for the failure.</p>\n","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{customerId}}"},{"key":"password","value":"{{customerSecret}}"}]},"isInherited":true,"source":{"_postman_id":"6aed9690-285e-45f0-a329-c995adbd0956","id":"6aed9690-285e-45f0-a329-c995adbd0956","name":"Media Gateway","type":"folder"}},"urlObject":{"protocol":"https","path":[":region","v1","projects",":appId","rtls","ingress","online-streams\n"],"host":["api","agora","io"],"query":[],"variable":[{"description":{"content":"<p>(required) The area where the streaming code is created, String type. Agora supports the creation of streaming codes by region, and currently supports the following regions:\n<code>cn</code>: Chinese mainland\n<code>ap</code>: Asia except Mainland China\n<code>na</code>: North America\n<code>eu</code>: Europe\nPlease make sure the region is the same as that for the input source stream and the domain name used for streaming.</p>\n","type":"text/plain"},"type":"any","value":"{{region}}","key":"region"},{"description":{"content":"<p>(required) App ID provided by Agora, String type. After creating a project in the Agora console, you can get an App ID. An App ID is a unique identifier for a project.</p>\n","type":"text/plain"},"type":"any","value":"{{appId}}","key":"appId"}]}},"response":[{"id":"7f4e9440-b6cb-4258-85eb-452ffca5460f","name":"query stream list","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://api.agora.io/:region/v1/projects/:appId/rtls/ingress/streamkeys/:streamkey\n","protocol":"https","host":["api","agora","io"],"path":[":region","v1","projects",":appId","rtls","ingress","streamkeys",":streamkey\n"],"variable":[{"key":"region","value":"ap","description":"(required) The area where the streaming code is created, String type. Agora supports the creation of streaming codes by region, and currently supports the following regions:\n`cn`: Chinese mainland\n`ap`: Asia except Mainland China\n`na`: North America\n`eu`: Europe\nPlease make sure the region is the same as that for the input source stream and the domain name used for streaming.\n"},{"key":"appId","value":"9d2498880e934632b38b0a68fa2f1622","description":"(required) App ID provided by Agora, String type. After creating a project in the Agora console, you can get an App ID. An App ID is a unique identifier for a project.\n"},{"key":"streamkey\n","value":"","description":"(required) The streaming code to be queried."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Sun, 23 Jul 2023 07:53:08 GMT"},{"key":"Content-Type","value":"application/json; charset=UTF-8"},{"key":"Content-Length","value":"150"},{"key":"Connection","value":"keep-alive"},{"key":"X-Kong-Upstream-Latency","value":"91"},{"key":"X-Kong-Proxy-Latency","value":"0"},{"key":"Via","value":"kong/2.0.3"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"X-Request-ID","value":"8af32870af66446f982c34762470da03"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": \"success\",\n  \"data\": [\n    {\n      \"sid\": \"string\",\n      \"channel\": \"demo\",\n      \"uid\": \"100\",\n      \"url\": \"string\",\n      \"status\": \"string\",\n      \"beginAt\": \"string\",\n      \"bitrate\": 0,\n      \"video\": {\n        \"width\": 0,\n        \"height\": 0,\n        \"fps\": 0\n      },\n      \"audio\": {\n        \"channels\": 0,\n        \"sampleRate\": 0\n      }\n    }\n  ]\n}"}],"_postman_id":"ff33368f-be09-442f-9195-49ef39ba5788"},{"name":"Mute/Unmute the stream","event":[{"listen":"test","script":{"id":"bc491711-c4db-4bd4-a749-8e47d2b37e06","exec":[""],"type":"text/javascript","packages":{}}}],"id":"0e9f38c1-8942-499d-9394-1e87466b326a","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"settings\": {\r\n        \"videoMuted\": true,\r\n        \"audioMuted\": false\r\n    }\r\n}","options":{"raw":{"language":"json"}}},"url":"https://api.agora.io/:region/v1/projects/:appId/rtls/ingress/online-streams/:sid/mute","description":"<h4 id=\"muteunmute-the-stream\">Mute/Unmute the stream</h4>\n<ol>\n<li><p><strong>Command Execution Confirmation</strong>:</p>\n<ol>\n<li><p>A successful API call confirms that the mute/unmute command has been successfully sent to the gateway node.</p>\n</li>\n<li><p>It does <strong>not</strong> confirm the successful completion of the mute/unmute operation, as this is executed asynchronously in the background.</p>\n</li>\n</ol>\n</li>\n<li><p><strong>Operation Delay</strong>:</p>\n<ol>\n<li><p>The mute/unmute operation typically takes approximately <strong>1 second</strong> from the time the request is sent to take effect.</p>\n</li>\n<li><p>If the operation does not take effect as expected, you may retry the API call.</p>\n</li>\n</ol>\n</li>\n<li><p><strong>Stream Reconnection Behavior</strong>:</p>\n<ol>\n<li><p>The API operates on the <strong>current stream</strong> at the time of the request.</p>\n</li>\n<li><p>If the stream is interrupted and restarted, the new stream will default to an <strong>unmuted</strong> state, and you will need to call the API again if muting is required.</p>\n</li>\n</ol>\n</li>\n</ol>\n<p><strong>Path parameters</strong></p>\n<ul>\n<li><p><code>appId</code>: string (required) App ID provided by Agora to each developer. After creating a project in the Agora console, you can get an App ID. App ID is a unique identifier for a project.</p>\n</li>\n<li><p><code>region</code>: string (required) Create an area for pushing stream key. Agora supports the creation of stream keys by region. Currently, it supports the following regions:</p>\n<ul>\n<li><p><code>na</code>: North America</p>\n</li>\n<li><p><code>eu</code>: European</p>\n</li>\n<li><p><code>ap</code>: Asia except mainland China</p>\n</li>\n<li><p><code>cn</code>: Chinese mainland</p>\n</li>\n</ul>\n</li>\n<li><p><code>sid</code>: string (required) You can get this through the \"Query Stream List API\" or from the webhook callback</p>\n</li>\n</ul>\n<p><strong>Request body parameters</strong></p>\n<p>The request body consists of a JSON Object type named <code>settings</code> which includes the following fields:</p>\n<ul>\n<li><p><code>videoMuted</code>: Boolean (required) A value of true means muting the video stream; a value of false means unmuting the video streamd.</p>\n</li>\n<li><p><code>audioMuted</code>: Boolean (required) A value of true means muting the audio stream; a value of false means unmuting the audio stream</p>\n</li>\n</ul>\n<blockquote>\n<p>To ensure a successful request, do not set this required field to <code>null</code> or <code>\"\"</code>.</p>\n</blockquote>\n","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{customerId}}"},{"key":"password","value":"{{customerSecret}}"}]},"isInherited":true,"source":{"_postman_id":"6aed9690-285e-45f0-a329-c995adbd0956","id":"6aed9690-285e-45f0-a329-c995adbd0956","name":"Media Gateway","type":"folder"}},"urlObject":{"protocol":"https","path":[":region","v1","projects",":appId","rtls","ingress","online-streams",":sid","mute"],"host":["api","agora","io"],"query":[],"variable":[{"description":{"content":"<p>(required) The area where the streaming code is created, String type. Agora supports the creation of streaming codes by region, and currently supports the following regions:\n<code>cn</code>: Chinese mainland\n<code>ap</code>: Asia except Mainland China\n<code>na</code>: North America\n<code>eu</code>: Europe\nPlease make sure the region is the same as that for the input source stream and the domain name used for streaming.</p>\n","type":"text/plain"},"type":"any","value":"{{region}}","key":"region"},{"description":{"content":"<p>(required) App ID provided by Agora, String type. After creating a project in the Agora console, you can get an App ID. An App ID is a unique identifier for a project.</p>\n","type":"text/plain"},"type":"any","value":"{{appId}}","key":"appId"},{"description":{"content":"<p>(required) You can get this value using the Query String List API</p>\n","type":"text/plain"},"type":"any","value":"{{sid}}","key":"sid"}]}},"response":[{"id":"2ce0085f-a651-4784-9e78-629ba9414767","name":"Mute/Unmute the stream","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"settings\": {\r\n        \"videoMuted\": true,\r\n        \"audioMuted\": true\r\n    }\r\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://api.agora.io/:region/v1/projects/:appId/rtls/ingress/online-streams/:sid/mute","protocol":"https","host":["api","agora","io"],"path":[":region","v1","projects",":appId","rtls","ingress","online-streams",":sid","mute"],"variable":[{"key":"region","value":"{{region}}","description":"(required) The area where the streaming code is created, String type. Agora supports the creation of streaming codes by region, and currently supports the following regions:\n`cn`: Chinese mainland\n`ap`: Asia except Mainland China\n`na`: North America\n`eu`: Europe\nPlease make sure the region is the same as that for the input source stream and the domain name used for streaming.\n\n"},{"key":"appId","value":"{{appId}}","description":"(required) App ID provided by Agora, String type. After creating a project in the Agora console, you can get an App ID. An App ID is a unique identifier for a project.\n"},{"key":"sid","value":""}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Fri, 09 Aug 2024 06:05:25 GMT"},{"key":"Content-Type","value":"application/json; charset=UTF-8"},{"key":"Content-Length","value":"150"},{"key":"Connection","value":"keep-alive"},{"key":"X-Capacity-RateLimit-Limit-second","value":"100"},{"key":"X-Capacity-RateLimit-Remaining-second","value":"100"},{"key":"X-Capacity-RateLimit","value":"active"},{"key":"RateLimit-Reset","value":"1"},{"key":"X-RateLimit-Remaining-Second","value":"99"},{"key":"X-RateLimit-Limit-Second","value":"100"},{"key":"RateLimit-Limit","value":"100"},{"key":"RateLimit-Remaining","value":"99"},{"key":"X-Kong-Upstream-Latency","value":"83"},{"key":"X-Kong-Proxy-Latency","value":"0"},{"key":"Via","value":"kong/2.8.3"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"X-Request-ID","value":"770c0ac5b19340b891d8504827681ae3"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\"\n}"}],"_postman_id":"0e9f38c1-8942-499d-9394-1e87466b326a"},{"name":"query stream info","event":[{"listen":"test","script":{"id":"57e66b52-9096-4da1-909a-bd5f0b786753","exec":[""],"type":"text/javascript","packages":{}}}],"id":"42689183-25ad-4938-b76a-d59f90bb3d19","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://api.agora.io/:region/v1/projects/:appId/rtls/ingress/online-streams/:sid\n","description":"<h4 id=\"query-streaming-information\">Query streaming information</h4>\n<p>Use the stream session ID (SID) to query the information of the specified ongoing stream.</p>\n<p><strong>Response body parameters</strong></p>\n<p>If the status code is <code>2xx</code>, the request was successful. Body contains the following fields:</p>\n<ul>\n<li><code>status</code>: String. Request status. Value is <code>success</code>.</li>\n<li><code>data</code>: JSON Object type, includes the following fields:<ul>\n<li><code>streamKey</code>: String. The streaming code to be queried.</li>\n<li><code>channel</code>: String. The name of the audio network channel bound to the streaming code.</li>\n<li><code>uid</code>: String. The UID of the user in the audio network channel bound to the streaming code.</li>\n<li><code>expiresAfter</code>: Number. The effective duration of the streaming code, calculated from the creation time, in seconds.</li>\n<li><code>createdAt</code>: String type, Unix time stamp created by streaming code, unit is seconds.</li>\n<li><code>bitrate</code>: Number. The source stream bitrate (audio + video) of the push stream, in Kbps.</li>\n<li><code>video</code>: object. Video stream parameters, only returned if <code>status</code>is .<code>\"Running\"</code><ul>\n<li><code>width</code>: Number. Video width, in px.</li>\n<li><code>height</code>: Number. Video height, unit is px.</li>\n<li><code>fps</code>: Number. Video frame rate, unit is fps.</li>\n</ul>\n</li>\n<li><code>audio</code>: Object. Audio stream parameters, only returned if <code>status</code>is .<code>\"Running\"</code><ul>\n<li><code>channels</code>: Number. Number of audio channels.</li>\n<li><code>sampleRate</code>: Number. Audio sampling rate, unit is Hz.</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<p>If the status code is not <code>2xx</code>, the request has failed. The response body contains <code>message</code>a field of String type, describing the specific reason for the failure.</p>\n","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{customerId}}"},{"key":"password","value":"{{customerSecret}}"}]},"isInherited":true,"source":{"_postman_id":"6aed9690-285e-45f0-a329-c995adbd0956","id":"6aed9690-285e-45f0-a329-c995adbd0956","name":"Media Gateway","type":"folder"}},"urlObject":{"protocol":"https","path":[":region","v1","projects",":appId","rtls","ingress","online-streams",":sid\n"],"host":["api","agora","io"],"query":[],"variable":[{"description":{"content":"<p>(required) The area where the streaming code is created, String type. Agora supports the creation of streaming codes by region, and currently supports the following regions:\n<code>cn</code>: Chinese mainland\n<code>ap</code>: Asia except Mainland China\n<code>na</code>: North America\n<code>eu</code>: Europe\nPlease make sure the region is the same as that for the input source stream and the domain name used for streaming.</p>\n","type":"text/plain"},"type":"any","value":"{{region}}","key":"region"},{"description":{"content":"<p>(required) App ID provided by Agora, String type. After creating a project in the Agora console, you can get an App ID. An App ID is a unique identifier for a project.</p>\n","type":"text/plain"},"type":"any","value":"{{appId}}","key":"appId"},{"description":{"content":"<p>(required) The streaming session ID (Session ID) is the unique identifier for each streaming task initiated. It can be obtained by querying the current push list API , or by receiving the payload of the message notification callback .</p>\n","type":"text/plain"},"type":"any","value":"{{sid}}","key":"sid\n"}]}},"response":[{"id":"26284117-1284-45e2-81f9-6b59c97a0173","name":"query stream info","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://api.agora.io/:region/v1/projects/:appId/rtls/ingress/online-streams/:sid\n","protocol":"https","host":["api","agora","io"],"path":[":region","v1","projects",":appId","rtls","ingress","online-streams",":sid\n"],"variable":[{"key":"region","value":"ap","description":"(required) The area where the streaming code is created, String type. Agora supports the creation of streaming codes by region, and currently supports the following regions:\n`cn`: Chinese mainland\n`ap`: Asia except Mainland China\n`na`: North America\n`eu`: Europe\nPlease make sure the region is the same as that for the input source stream and the domain name used for streaming.\n"},{"key":"appId","value":"9d2498880e934632b38b0a68fa2f1622","description":"(required) App ID provided by Agora, String type. After creating a project in the Agora console, you can get an App ID. An App ID is a unique identifier for a project.\n"},{"key":"sid\n","value":""}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Sun, 23 Jul 2023 07:53:08 GMT"},{"key":"Content-Type","value":"application/json; charset=UTF-8"},{"key":"Content-Length","value":"150"},{"key":"Connection","value":"keep-alive"},{"key":"X-Kong-Upstream-Latency","value":"91"},{"key":"X-Kong-Proxy-Latency","value":"0"},{"key":"Via","value":"kong/2.0.3"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"X-Request-ID","value":"8af32870af66446f982c34762470da03"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": \"success\",\n  \"data\": {\n    \"sid\": \"3a394cda-d8ce-72f9-afd1-3d183a7f35a9\",\n    \"channel\": \"demo\",\n    \"uid\": \"100\",\n    \"url\": \"rtls-ingress-prod-na.agoramdn.com/live/streamKey\",\n    \"status\": \"Running\",\n    \"beginAt\": \"1690097264\",\n    \"bitrate\": 2106,\n    \"video\": {\n        \"width\": 1280,\n        \"height\": 720,\n        \"fps\": 30\n      },\n      \"audio\": {\n            \"channels\": 2,\n            \"sampleRate\": 48000\n      }\n    }\n}"}],"_postman_id":"42689183-25ad-4938-b76a-d59f90bb3d19"},{"name":"force disconnect","id":"44585312-b63d-48e6-b6b8-626412514951","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[],"url":"https://api.agora.io/:region/v1/projects/:appId/rtls/ingress/online-streams/:sid","description":"<p>Use the streaming session ID (SID) to disconnect the specified ongoing streaming.</p>\n<p>You can combine this interface with the destroy stream key API to completely disable the stream. Destroying the stream key will only delete the stream key from the database. After that, the stream key can no longer be used, but the ongoing stream key cannot be disconnected. If you need to disconnect the ongoing stream, you can refer to the following operations:</p>\n<ul>\n<li>First call the destroy stream key API , and then use this interface to disconnect the ongoing stream.</li>\n</ul>\n<p>Be sure to destroy the stream key first, otherwise after using this interface alone to force a disconnection, the streaming software will immediately reconnect. At this time, a new stream session (corresponding to a new <code>sid</code>) will be generated, and the disconnection will fail.</p>\n","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{customerId}}"},{"key":"password","value":"{{customerSecret}}"}]},"isInherited":true,"source":{"_postman_id":"6aed9690-285e-45f0-a329-c995adbd0956","id":"6aed9690-285e-45f0-a329-c995adbd0956","name":"Media Gateway","type":"folder"}},"urlObject":{"protocol":"https","path":[":region","v1","projects",":appId","rtls","ingress","online-streams",":sid"],"host":["api","agora","io"],"query":[],"variable":[{"description":{"content":"<p>(required) The area where the streaming code is created, String type. Agora supports the creation of streaming codes by region, and currently supports the following regions:\n<code>cn</code>: Chinese mainland\n<code>ap</code>: Asia except Mainland China\n<code>na</code>: North America\n<code>eu</code>: Europe\nPlease make sure the region is the same as that for the input source stream and the domain name used for streaming.</p>\n","type":"text/plain"},"type":"any","value":"{{region}}","key":"region"},{"description":{"content":"<p>(required) App ID provided by Agora, String type. After creating a project in the Agora console, you can get an App ID. An App ID is a unique identifier for a project.</p>\n","type":"text/plain"},"type":"any","value":"{{appId}}","key":"appId"},{"type":"any","value":"{{sid}}","key":"sid"}]}},"response":[{"id":"b7300734-f10b-4312-b863-5d5401e2431c","name":"force disconnect","originalRequest":{"method":"DELETE","header":[],"url":{"raw":"https://api.agora.io/:region/v1/projects/:appId/rtls/ingress/online-streams/:sid","protocol":"https","host":["api","agora","io"],"path":[":region","v1","projects",":appId","rtls","ingress","online-streams",":sid"],"variable":[{"key":"region","value":"{{region}}"},{"key":"appId","value":"{{appId}}"},{"key":"sid","value":"{{sid}}"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Sun, 23 Jul 2023 07:53:47 GMT"},{"key":"Content-Type","value":"application/json; charset=UTF-8"},{"key":"Content-Length","value":"21"},{"key":"Connection","value":"keep-alive"},{"key":"X-Kong-Upstream-Latency","value":"170"},{"key":"X-Kong-Proxy-Latency","value":"0"},{"key":"Via","value":"kong/2.0.3"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"X-Request-ID","value":"4d508315094745c4bcbb8fd06bc57f7b"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\"\n}"}],"_postman_id":"44585312-b63d-48e6-b6b8-626412514951"}],"id":"0a33b75c-704c-45c3-b908-8d9699ad0e6e","_postman_id":"0a33b75c-704c-45c3-b908-8d9699ad0e6e","description":"","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{customerId}}"},{"key":"password","value":"{{customerSecret}}"}]},"isInherited":true,"source":{"_postman_id":"6aed9690-285e-45f0-a329-c995adbd0956","id":"6aed9690-285e-45f0-a329-c995adbd0956","name":"Media Gateway","type":"folder"}}},{"name":"create stream key","event":[{"listen":"test","script":{"id":"bc491711-c4db-4bd4-a749-8e47d2b37e06","exec":["var jsonData = pm.response.json();\r","pm.collectionVariables.set(\"streamKey\", jsonData.data.streamKey);\r","\r","pm.test(\"Status code is 200\", function () {\r","    pm.response.to.have.status(200);\r","});\r",""],"type":"text/javascript","packages":{}}}],"id":"a9260f56-b941-4d76-8855-31a8d00fdc6e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"settings\": {\r\n        \"channel\": \"demo\",\r\n        \"uid\": \"100\",\r\n        \"expiresAfter\": 3600\r\n    }\r\n}","options":{"raw":{"language":"json"}}},"url":"https://api.agora.io/:region/v1/projects/:appId/rtls/ingress/streamkeys","description":"<h4 id=\"create-a-stream-key\">Create a stream key</h4>\n<p>This interface creates a streaming key.</p>\n<p>This can ensure that the media stream is pushed to the correct channel and anchor uid. Before streaming, you need to create a stream key first.</p>\n<blockquote>\n<p>Please keep the created stream key properly and do not expose it, otherwise anyone can use the stream key to push streams to the channel. </p>\n</blockquote>\n<p><strong>Path parameters</strong></p>\n<ul>\n<li><code>appId</code>: string (required) App ID provided by Agora to each developer. After creating a project in the Agora console, you can get an App ID. App ID is a unique identifier for a project.</li>\n<li><code>region</code>: string (required) Create an area for pushing stream key. Agora supports the creation of stream keys by region. Currently, it supports the following regions:<ul>\n<li><code>na</code>: North America</li>\n<li><code>eu</code>: European</li>\n<li><code>ap</code>: Asia except mainland China</li>\n<li><code>cn</code>: Chinese mainland</li>\n</ul>\n</li>\n<li><code>streamkey</code>: string (required) Stream key that you need details from.</li>\n</ul>\n<p><strong>Request body parameters</strong></p>\n<p>The request body consists of a JSON Object type named <code>settings</code> which includes the following fields:</p>\n<ul>\n<li><code>channel</code>: (required) the Agora channel name, String type. The string length must be less than 64 bytes. The following character sets are supported:</li>\n<li><code>uid</code>: String type (required) The host user UID of the RTMP gateway in the Agora channel. Can be a numeric ID or a string ID. If it is a numeric ID, the value range is from 1 to 2^32 -1; if it is a string ID, it cannot exceed 255 bytes, nor can it be an empty string. The supported character set is the same as that for the channel. To ensure a successful request, do not set this required field to <code>null</code> or <code>\"\"</code>.</li>\n<li><code>expiresAfter</code>: The validity period of the created stream key in seconds. Counted from creation time. If fill in with 0, the stream key will always be valid.</li>\n</ul>\n<blockquote>\n<p>To ensure a successful request, do not set this required field to <code>null</code> or <code>\"\"</code>.</p>\n</blockquote>\n","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{customerId}}"},{"key":"password","value":"{{customerSecret}}"}]},"isInherited":true,"source":{"_postman_id":"6aed9690-285e-45f0-a329-c995adbd0956","id":"6aed9690-285e-45f0-a329-c995adbd0956","name":"Media Gateway","type":"folder"}},"urlObject":{"protocol":"https","path":[":region","v1","projects",":appId","rtls","ingress","streamkeys"],"host":["api","agora","io"],"query":[],"variable":[{"description":{"content":"<p>(required) The area where the streaming code is created, String type. Agora supports the creation of streaming codes by region, and currently supports the following regions:\n<code>cn</code>: Chinese mainland\n<code>ap</code>: Asia except Mainland China\n<code>na</code>: North America\n<code>eu</code>: Europe\nPlease make sure the region is the same as that for the input source stream and the domain name used for streaming.</p>\n","type":"text/plain"},"type":"any","value":"{{region}}","key":"region"},{"description":{"content":"<p>(required) App ID provided by Agora, String type. After creating a project in the Agora console, you can get an App ID. An App ID is a unique identifier for a project.</p>\n","type":"text/plain"},"type":"any","value":"{{appId}}","key":"appId"}]}},"response":[{"id":"1c9cca56-92d1-4fd0-8024-8961e02ad34f","name":"create stream key","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"settings\": {\r\n        \"channel\": \"demo\",\r\n        \"uid\": \"100\",\r\n        \"expiresAfter\": 3600\r\n    }\r\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://api.agora.io/:region/v1/projects/:appId/rtls/ingress/streamkeys","protocol":"https","host":["api","agora","io"],"path":[":region","v1","projects",":appId","rtls","ingress","streamkeys"],"variable":[{"key":"region","value":"{{region}}","description":"(required) The area where the streaming code is created, String type. Agora supports the creation of streaming codes by region, and currently supports the following regions:\n`cn`: Chinese mainland\n`ap`: Asia except Mainland China\n`na`: North America\n`eu`: Europe\nPlease make sure the region is the same as that for the input source stream and the domain name used for streaming.\n\n"},{"key":"appId","value":"{{appId}}","description":"(required) App ID provided by Agora, String type. After creating a project in the Agora console, you can get an App ID. An App ID is a unique identifier for a project.\n"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Fri, 09 Aug 2024 06:05:25 GMT"},{"key":"Content-Type","value":"application/json; charset=UTF-8"},{"key":"Content-Length","value":"150"},{"key":"Connection","value":"keep-alive"},{"key":"X-Capacity-RateLimit-Limit-second","value":"100"},{"key":"X-Capacity-RateLimit-Remaining-second","value":"100"},{"key":"X-Capacity-RateLimit","value":"active"},{"key":"RateLimit-Reset","value":"1"},{"key":"X-RateLimit-Remaining-Second","value":"99"},{"key":"X-RateLimit-Limit-Second","value":"100"},{"key":"RateLimit-Limit","value":"100"},{"key":"RateLimit-Remaining","value":"99"},{"key":"X-Kong-Upstream-Latency","value":"83"},{"key":"X-Kong-Proxy-Latency","value":"0"},{"key":"Via","value":"kong/2.8.3"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"X-Request-ID","value":"770c0ac5b19340b891d8504827681ae3"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"data\": {\n        \"streamKey\": \"AKxOnm8SAhrcu_-GY5fwH1Oz7b1Qt-z\",\n        \"channel\": \"demo\",\n        \"uid\": \"100\",\n        \"expiresAfter\": 3600,\n        \"createdAt\": \"1723183524\"\n    }\n}"}],"_postman_id":"a9260f56-b941-4d76-8855-31a8d00fdc6e"},{"name":"query","id":"d0ecc3da-5acc-4f5d-918f-dcd83dea763b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://api.agora.io/:region/v1/projects/:appId/rtls/ingress/streamkeys/:streamkey\n","description":"<h4 id=\"query-streaming-information\">Query streaming information</h4>\n<p>Call this interface to query information about streaming codes, such as bound UID, bound channel name, valid duration.</p>\n<p><strong>Path parameters</strong></p>\n<ul>\n<li><p><code>appId</code>: string (required) App ID provided by Agora to each developer. After creating a project in the Agora console, you can get an App ID. App ID is a unique identifier for a project.</p>\n</li>\n<li><p><code>region</code>: string (required) Create an area for pushing stream key. Agora supports the creation of stream keys by region. Currently, it supports the following regions:</p>\n<ul>\n<li><code>na</code>: North America</li>\n<li><code>eu</code>: European</li>\n<li><code>ap</code>: Asia except mainland China</li>\n<li><code>cn</code>: Chinese mainland</li>\n</ul>\n<p>  <strong>Note</strong> :</p>\n<ul>\n<li>Please ensure that the setting <code>region</code> is in the same region as the input source stream.</li>\n<li>Please make sure that the domain name you set <code>region</code> is in the same region as the domain name used for push streaming.</li>\n</ul>\n</li>\n<li><p><code>streamkey</code>: string (required) Stream key that you need details from.</p>\n</li>\n<li><p><code>templateId</code>: string (required) Stream configuration template ID. The value can only be a-z, A-Z, 0-9, and the length cannot exceed 12 bytes. The value of the flow configuration template ID can be set according to business scenario requirements. For example, the values ​​can be \"720p\", \"1080p\" according to different target resolutions; the values ​​can also be \"gameA\", \"gameB\" and so on according to different game scenarios.</p>\n</li>\n</ul>\n<p><strong>Response body parameters</strong></p>\n<p>If the status code is <code>2xx</code>, the request was successful. Body contains the following fields:</p>\n<ul>\n<li><code>status</code>: String. Request status. Value is <code>success</code>.</li>\n<li><code>data</code>: JSON Object type, includes the following fields:<ul>\n<li><code>streamKey</code>: String. The streaming code to be queried.</li>\n<li><code>channel</code>: String. The name of the audio network channel bound to the streaming code.</li>\n<li><code>uid</code>: String. The UID of the user in the audio network channel bound to the streaming code.</li>\n<li><code>expiresAfter</code>: Number. The effective duration of the streaming code, calculated from the creation time, in seconds.</li>\n<li><code>createdAt</code>: String type, Unix time stamp created by streaming code, unit is seconds.</li>\n</ul>\n</li>\n</ul>\n<p>If the status code is not <code>2xx</code>, the request has failed. The response body contains <code>message</code> a field of String type, describing the specific reason for the failure.</p>\n","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{customerId}}"},{"key":"password","value":"{{customerSecret}}"}]},"isInherited":true,"source":{"_postman_id":"6aed9690-285e-45f0-a329-c995adbd0956","id":"6aed9690-285e-45f0-a329-c995adbd0956","name":"Media Gateway","type":"folder"}},"urlObject":{"protocol":"https","path":[":region","v1","projects",":appId","rtls","ingress","streamkeys",":streamkey\n"],"host":["api","agora","io"],"query":[],"variable":[{"description":{"content":"<p>(required) The area where the streaming code is created, String type. Agora supports the creation of streaming codes by region, and currently supports the following regions:\n<code>cn</code>: Chinese mainland\n<code>ap</code>: Asia except Mainland China\n<code>na</code>: North America\n<code>eu</code>: Europe\nPlease make sure the region is the same as that for the input source stream and the domain name used for streaming.</p>\n","type":"text/plain"},"type":"any","value":"{{region}}","key":"region"},{"description":{"content":"<p>(required) App ID provided by Agora, String type. After creating a project in the Agora console, you can get an App ID. An App ID is a unique identifier for a project.</p>\n","type":"text/plain"},"type":"any","value":"{{appId}}","key":"appId"},{"description":{"content":"<p>(required) The streaming code to be queried.</p>\n","type":"text/plain"},"type":"any","value":"{{streamKey}}","key":"streamkey\n"}]}},"response":[{"id":"428bd4b4-ed37-4899-9478-ea6bb97f65bc","name":"query","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://api.agora.io/:region/v1/projects/:appId/rtls/ingress/streamkeys/:streamkey\n","protocol":"https","host":["api","agora","io"],"path":[":region","v1","projects",":appId","rtls","ingress","streamkeys",":streamkey\n"],"variable":[{"key":"region","value":"ap","description":"(required) The area where the streaming code is created, String type. Agora supports the creation of streaming codes by region, and currently supports the following regions:\n`cn`: Chinese mainland\n`ap`: Asia except Mainland China\n`na`: North America\n`eu`: Europe\nPlease make sure the region is the same as that for the input source stream and the domain name used for streaming.\n"},{"key":"appId","value":"9d2498880e934632b38b0a68fa2f1622","description":"(required) App ID provided by Agora, String type. After creating a project in the Agora console, you can get an App ID. An App ID is a unique identifier for a project.\n"},{"key":"streamkey\n","value":"","description":"(required) The streaming code to be queried."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Sun, 23 Jul 2023 07:53:08 GMT"},{"key":"Content-Type","value":"application/json; charset=UTF-8"},{"key":"Content-Length","value":"150"},{"key":"Connection","value":"keep-alive"},{"key":"X-Kong-Upstream-Latency","value":"91"},{"key":"X-Kong-Proxy-Latency","value":"0"},{"key":"Via","value":"kong/2.0.3"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"X-Request-ID","value":"8af32870af66446f982c34762470da03"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"data\": {\n        \"streamKey\": \"A0j5ptIcqnI2CQHd3zbQjUcgR58rbYH\",\n        \"channel\": \"demo\",\n        \"uid\": \"100\",\n        \"expiresAfter\": 3600,\n        \"createdAt\": \"1690097264\"\n    }\n}"}],"_postman_id":"d0ecc3da-5acc-4f5d-918f-dcd83dea763b"},{"name":"destroy","id":"23d86349-1b24-4002-999d-ea6851231095","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[],"url":"https://api.agora.io/:region/v1/projects/:appId/rtls/ingress/streamkeys/:streamkey","description":"<h4 id=\"destroy-stream-key\">Destroy stream key</h4>\n<p>Call this interface to destroy unused streaming keys.</p>\n<p><strong>Path parameters</strong></p>\n<ul>\n<li><p><code>appId</code>: string (required) App ID provided by Agora to each developer. After creating a project in the Agora console, you can get an App ID. App ID is a unique identifier for a project.</p>\n</li>\n<li><p><code>region</code>: string (required) Create an area for pushing stream key. Agora supports the creation of stream keys by region. Currently, it supports the following regions:</p>\n<ul>\n<li><p><code>na</code>: North America</p>\n</li>\n<li><p><code>eu</code>: European</p>\n</li>\n<li><p><code>ap</code>: Asia except mainland China</p>\n</li>\n<li><p><code>cn</code>: Chinese mainland</p>\n</li>\n</ul>\n</li>\n<li><p><code>streamkey</code>: string (required) Stream key that you need details from.</p>\n</li>\n<li><p><code>templateId</code>: string (required) Stream configuration template ID. The value can only be a-z, A-Z, 0-9, and the length cannot exceed 12 bytes. The value of the flow configuration template ID can be set according to business scenario requirements. For example, the values ​​can be \"720p\", \"1080p\" according to different target resolutions; the values ​​can also be \"gameA\", \"gameB\" and so on according to different game scenarios.</p>\n</li>\n</ul>\n","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{customerId}}"},{"key":"password","value":"{{customerSecret}}"}]},"isInherited":true,"source":{"_postman_id":"6aed9690-285e-45f0-a329-c995adbd0956","id":"6aed9690-285e-45f0-a329-c995adbd0956","name":"Media Gateway","type":"folder"}},"urlObject":{"protocol":"https","path":[":region","v1","projects",":appId","rtls","ingress","streamkeys",":streamkey"],"host":["api","agora","io"],"query":[],"variable":[{"description":{"content":"<p>(required) The area where the streaming code is created, String type. Agora supports the creation of streaming codes by region, and currently supports the following regions:\n<code>cn</code>: Chinese mainland\n<code>ap</code>: Asia except Mainland China\n<code>na</code>: North America\n<code>eu</code>: Europe\nPlease make sure the region is the same as that for the input source stream and the domain name used for streaming.</p>\n","type":"text/plain"},"type":"any","value":"{{region}}","key":"region"},{"description":{"content":"<p>(required) App ID provided by Agora, String type. After creating a project in the Agora console, you can get an App ID. An App ID is a unique identifier for a project.</p>\n","type":"text/plain"},"type":"any","value":"{{appId}}","key":"appId"},{"description":{"content":"<p>(required) The stream key to be destroyed.</p>\n","type":"text/plain"},"type":"any","value":"{{streamKey}}","key":"streamkey"}]}},"response":[{"id":"1f7a2d32-99af-4f17-9669-3331fc08bfda","name":"destroy","originalRequest":{"method":"DELETE","header":[],"url":{"raw":"https://api.agora.io/:region/v1/projects/:appId/rtls/ingress/streamkeys/:streamkey","protocol":"https","host":["api","agora","io"],"path":[":region","v1","projects",":appId","rtls","ingress","streamkeys",":streamkey"],"variable":[{"id":"c7060baa-14d2-45e0-8d11-a63fdf17a354","key":"region","value":"{{region}}"},{"id":"073a4a73-db73-49d8-8853-6bb674bbd205","key":"appId","value":"{{appId}}"},{"id":"79ee93a4-2127-4e75-990b-49b6ccf3fa54","key":"streamkey","value":"{{streamKey}}"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Sun, 23 Jul 2023 07:53:47 GMT"},{"key":"Content-Type","value":"application/json; charset=UTF-8"},{"key":"Content-Length","value":"21"},{"key":"Connection","value":"keep-alive"},{"key":"X-Kong-Upstream-Latency","value":"170"},{"key":"X-Kong-Proxy-Latency","value":"0"},{"key":"Via","value":"kong/2.0.3"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"X-Request-ID","value":"4d508315094745c4bcbb8fd06bc57f7b"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\"\n}"}],"_postman_id":"23d86349-1b24-4002-999d-ea6851231095"}],"id":"6aed9690-285e-45f0-a329-c995adbd0956","description":"<p>To execute requests in this folder using Postman, select the Media Gateway environment and fill in the corresponding values.</p>\n<p>The Agora RESTful API supports two authentication methods: Basic HTTP authentication and HMAC HTTP authentication. Basic authentication is easier to use but weaker in security. HMAC authentication has higher security and is the recommended authentication method.</p>\n<h4 id=\"request-header\">Request header</h4>\n<ul>\n<li><code>X-Request-ID</code>: UUID (Universal Unique Identifier) ​​of the request. The Agora server returns this field in the response header.</li>\n<li><code>Authorization</code>: For the value of this field, see the following authentication methods.</li>\n</ul>\n<h3 id=\"basic-http-authentication\">Basic HTTP authentication</h3>\n<p>All HTTP requests in this folder use basic authentication. Every time you send an HTTP request, you fill in the <code>Authorization</code> field in the request header. Use <code>customerID</code> as the Username, and <code>customerSecret</code> as the password. You can obtain these parameters from <a href=\"https://null\">Agora Console</a> by clicking on your user name and then selecting <strong>RESTful API</strong> fom the menu.</p>\n<h3 id=\"hmac-http-authentication\">HMAC HTTP authentication</h3>\n<p>When sending an HTTP request using HMAC authentication, you generate a signature through the HMAC-SHA256 algorithm, and pass the signature and related information in the <code>Authorization</code> field of the request header.</p>\n<p>In the process of generating the authentication field, you need to use the following information from your Agora account:</p>\n<ul>\n<li>The App ID of the Agora project.</li>\n<li>The customer ID and customer secret provided in the Agora console RESTful API.</li>\n</ul>\n<p>The following Node.js code uses the API for obtaining service configuration information as an example to demonstrate how to generate the value of the <code>Authorization</code> field:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-javascript\">const crypto = require('crypto');\nconst http = require('http');\n// App ID of your soundnet project\nappid = \"\"\n// Customer ID obtained from the Agora console RESTful API\ncustomer_username = \"\"\n// The customer secret obtained from the Agora console RESTful API\ncustomer_secret = \"\"\nhost = \"https://api.agora.io\"\n// The region in of where you are going to send the request from. Ex. na, cn\nregion = \"\"\n// Request body\ndata = \"\"\nfunction hashData(data) {\n     const hash = crypto.createHash('sha256');\n     hash. update(data);\n     return hash.digest('base64');\n}\nfunction signData(data) {\n     const hmac = crypto.createHmac('sha256', customer_secret);\n     hmac. update(data);\n     return hmac.digest('base64');\n}\ndate = (new Date()).toUTCString();\nreqpath = `/${region}/v1/projects/${appid}/rtls/ingress/appconfig`;\nreqline = `GET ${reqpath} HTTP/1.1`;\n// Calculate the SHA-256 hash value of the Body\nbodySign = hashData(args.data);\ndigest = `SHA-256=${bodySign}`;\n// generate signature\nsigningStr = `host: ${host}\\ndate: ${date}\\n${reqline}\\ndigest: ${digest}`;\nsign = signData(signingStr);\nauth = `hmac username=\"${customer_username}\", `\nauth += `algorithm=\"hmac-sha256\", `\nauth += `headers=\"host date request-line digest\", `\nauth += `signature=\"${sign}\"`;\nconsole.log(`Authorization: ${auth}`);\n\n</code></pre>\n<h4 id=\"response-status-codes\">Response status codes</h4>\n<ul>\n<li>If the response status code is <code>2xx</code>, the request was successful.</li>\n<li>If the response status code is not <code>2xx</code>, the request failed. Troubleshoot the problem according to the <code>message</code> field content in the corresponding response body.</li>\n</ul>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status code</th>\n<th>Possible <code>message</code> field content</th>\n<th>Description</th>\n<th>Solution</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>200 OK</td>\n<td></td>\n<td>The request was successful.</td>\n<td></td>\n</tr>\n<tr>\n<td>400 Bad Request</td>\n<td>- Invalid settings.  <br />- Parameter 'channel' is invalid formatted.  <br />- Streamkey exists in region: na.</td>\n<td>A request parameter is incorrect.</td>\n<td>Check <code>message</code> according to the specific content of the field.</td>\n</tr>\n<tr>\n<td>401 Unauthorized</td>\n<td>Invalid authentication credentials.</td>\n<td>RESTful API authentication failed.</td>\n<td>Perform your HMAC authentication again.</td>\n</tr>\n<tr>\n<td>403 Forbidden</td>\n<td>- Media Gateway is not enabled for your app ID yet. Contact Agora support to enable it.  <br />- Stream does not belong to this app ID.</td>\n<td>- The Media Gateway service is not activated.  <br />- The queried streaming code does not belong to the App ID.</td>\n<td>- Contact technical support to activate the Media Gateway service.  <br />- Check that the passed <code>streamKey</code> and the App ID match.</td>\n</tr>\n<tr>\n<td>404 Not Found</td>\n<td>Resource is not found and destroyed.</td>\n<td>The requested resource does not exist.</td>\n<td>Check that the passed in <code>streamkey</code> is correct.</td>\n</tr>\n<tr>\n<td>409 Conflict</td>\n<td>Resource with the same name already exists.</td>\n<td>Too many concurrent requests.</td>\n<td>Use a back-off strategy to try again. For example, wait 1 second before retrying the first time, wait 3 seconds before retrying the second time, and wait 6 seconds before retrying the third time.</td>\n</tr>\n<tr>\n<td>429 Too Many Requests</td>\n<td>- Request rate limit exceeded.  <br />- Resources quota limit exceeded.  <br />- No available resources.</td>\n<td>Internal server error.</td>\n<td>Use a back-off strategy to try again.</td>\n</tr>\n<tr>\n<td>504 Gateway Timeout</td>\n<td>Gateway timeout. Query to check whether the player has been created, or to create another one instead.</td>\n<td>Internal server error.</td>\n<td>Use a back-off strategy to try again.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{customerId}}"},{"key":"password","value":"{{customerSecret}}"}]},"isInherited":false},"event":[{"listen":"prerequest","script":{"id":"d7142cd7-ef9b-427c-8b9b-2ab3e278f439","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"70bde2a6-fcac-40c2-8b89-4b8caa4cab91","type":"text/javascript","exec":[""]}}],"_postman_id":"6aed9690-285e-45f0-a329-c995adbd0956"},{"name":"Media Push","item":[{"name":"Create","event":[{"listen":"test","script":{"id":"00b9969f-edb8-4fda-ad8c-382e76277864","exec":["var jsonData = JSON.parse(responseBody);","var id = jsonData.converter.id;","console.log(id);","pm.collectionVariables.set(\"id\", id);"],"type":"text/javascript","packages":{}}}],"id":"b8ba5d3f-8904-4768-be91-1148f1908ce3","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerCertificate}}"}]},"isInherited":false},"method":"POST","header":[{"key":"X-Request-ID","value":"","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"converter\": {\n        \"name\": \"test\",\n        \"transcodeOptions\": {\n            \"rtcChannel\": \"{{AccessChannel}}\",\n            \"token\": \"\",\n            \"audioOptions\": {\n                \"codecProfile\": \"LC-AAC\",\n                \"sampleRate\": 48000,\n                \"bitrate\": 48,\n                \"audioChannels\": 1\n            },\n            \"videoOptions\": {\n                \"canvas\": {\n                    \"width\": 960,\n                    \"height\": 720\n                },\n                \"layout\": [\n                    {\n                        \"rtcStreamUid\": \"{{ImageUID}}\",\n                        \"region\": {\n                            \"xPos\": 0,\n                            \"yPos\": 0,\n                            \"zIndex\": 1,\n                            \"width\": 480,\n                            \"height\": 720\n                        },\n                        \"fillMode\": \"fill\",\n                        \"placeholderImageUrl\": \"http://example.agora.io/host_placeholder.jpg\"\n                    },\n                    {\n                        \"rtcStreamUid\": {{rtcUid}},\n                        \"region\": {\n                            \"xPos\": 480,\n                            \"yPos\": 0,\n                            \"zIndex\": 1,\n                            \"width\": 480,\n                            \"height\": 720\n                        }\n                    }\n                ],\n                \"codecProfile\": \"main\",\n                \"frameRate\": 15,\n                \"gop\": 30,\n                \"bitrate\": 910\n            }\n        },\n        \"rtmpUrl\": \"{{RTMPUrl}}\",\n        \"idleTimeOut\": {{idleTimeout}}\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.agora.io/{{region}}/v1/projects/{{APPID}}/rtmp-converters","urlObject":{"protocol":"https","path":["{{region}}","v1","projects","{{APPID}}","rtmp-converters"],"host":["api","agora","io"],"query":[],"variable":[]}},"response":[],"_postman_id":"b8ba5d3f-8904-4768-be91-1148f1908ce3"},{"name":"Create w/o transcoding","event":[{"listen":"test","script":{"id":"00b9969f-edb8-4fda-ad8c-382e76277864","exec":["var jsonData = JSON.parse(responseBody);","var id = jsonData.converter.id;","console.log(id);","pm.collectionVariables.set(\"id\", id);"],"type":"text/javascript","packages":{}}}],"id":"57d76fc5-90fd-4a14-8a26-d8d88dee256e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerCertificate}}"}]},"isInherited":false},"method":"POST","header":[{"key":"X-Request-ID","value":"","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"converter\": {\n        \"name\": \"test\",\n        \"rawOptions\": {\n            \"rtcChannel\": \"{{AccessChannel}}\",\n            \"token\": \"\",\n            \"rtcStreamUid\": {{rtcUid}}\n        },\n        \"rtmpUrl\": \"{{RTMPUrl}}\",\n        \"idleTimeOut\": {{idleTimeout}}\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.agora.io/{{region}}/v1/projects/{{APPID}}/rtmp-converters","urlObject":{"protocol":"https","path":["{{region}}","v1","projects","{{APPID}}","rtmp-converters"],"host":["api","agora","io"],"query":[],"variable":[]}},"response":[],"_postman_id":"57d76fc5-90fd-4a14-8a26-d8d88dee256e"},{"name":"GetStatus","id":"9eeebdca-94c4-42cb-bfb6-4f0e3335f97b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerCertificate}}"}]},"isInherited":false},"method":"GET","header":[],"url":"https://api.agora.io/{{region}}/v1/projects/{{APPID}}/rtmp-converters/{{id}}","urlObject":{"protocol":"https","path":["{{region}}","v1","projects","{{APPID}}","rtmp-converters","{{id}}"],"host":["api","agora","io"],"query":[],"variable":[]}},"response":[],"_postman_id":"9eeebdca-94c4-42cb-bfb6-4f0e3335f97b"},{"name":"List","id":"ba5770dc-f9a4-488d-96d9-0acc77f6e649","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerCertificate}}"}]},"isInherited":false},"method":"GET","header":[],"url":"https://api.agora.io/v1/projects/{{APPID}}/rtmp-converters","urlObject":{"protocol":"https","path":["v1","projects","{{APPID}}","rtmp-converters"],"host":["api","agora","io"],"query":[],"variable":[]}},"response":[],"_postman_id":"ba5770dc-f9a4-488d-96d9-0acc77f6e649"},{"name":"Update","id":"ba424ed1-6307-4931-b977-556bf067a6be","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PATCH","header":[],"body":{"mode":"raw","raw":"{\n    \"converter\": {\n        \"transcodeOptions\": {\n            \"rtcChannel\": \"{{AccessChannel}}\",\n            \"videoOptions\": {\n                \"canvas\": {\n                    \"width\": 960,\n                    \"height\": 720\n                },\n                \"layout\": [\n                    {\n                        \"rtcStreamUid\": {{rtcUid}},\n                        \"region\": {\n                            \"xPos\": 0,\n                            \"yPos\": 0,\n                            \"zIndex\": 1,\n                            \"width\": 480,\n                            \"height\": 720\n                        },\n                        \"fillMode\": \"fill\",\n                        \"placeholderImageUrl\": \"http://example.agora.io/host_placeholder.jpg\"\n                    },\n                    {\n                        \"imageUrl\": \"http://example.agora.io/host_placeholder.jpg\",\n                        \"region\": {\n                            \"xPos\": 480,\n                            \"yPos\": 0,\n                            \"zIndex\": 1,\n                            \"width\": 480,\n                            \"height\": 720\n                        },\n                        \"fillMode\": \"fill\"\n                    }\n                ]\n            }\n        }\n    },\n    \"fields\": \"transcodeOptions.videoOptions.canvas,transcodeOptions.videoOptions.layout\"\n}","options":{"raw":{"language":"json"}}},"url":"https://api.agora.io/{{region}}/v1/projects/{{APPID}}/rtmp-converters/{{id}}","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":true,"source":{"_postman_id":"d7da7175-1801-46b9-8ee4-e5c9e3010da3","id":"d7da7175-1801-46b9-8ee4-e5c9e3010da3","name":"Agora RESTful APIs","type":"collection"}},"urlObject":{"protocol":"https","path":["{{region}}","v1","projects","{{APPID}}","rtmp-converters","{{id}}"],"host":["api","agora","io"],"query":[],"variable":[]}},"response":[],"_postman_id":"ba424ed1-6307-4931-b977-556bf067a6be"},{"name":"Delete","id":"c9eb52b9-f169-49ae-beac-dfa65a51a05a","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerCertificate}}"}]},"isInherited":false},"method":"DELETE","header":[],"url":"https://api.agora.io/{{region}}/v1/projects/{{APPID}}/rtmp-converters/{{id}}","urlObject":{"protocol":"https","path":["{{region}}","v1","projects","{{APPID}}","rtmp-converters","{{id}}"],"host":["api","agora","io"],"query":[],"variable":[]}},"response":[],"_postman_id":"c9eb52b9-f169-49ae-beac-dfa65a51a05a"}],"id":"685c918a-d7fa-4556-b07f-93d6f72d60c3","description":"<h1 id=\"documentation\"><strong>Documentation</strong></h1>\n<p>This article contains detailed help for the Media Push RESTful APIs.</p>\n<h2 id=\"authentication\"><a href=\"https://docs.agora.io/en/media-push/develop/restful-api#authentication\">Authentication​</a></h2>\n<p>The RESTful APIs require basic HTTP authentication. You need to set the <code>Authorization</code> parameter in every HTTP request header. For how to get the value for Authorization, see <a href=\"https://docs.agora.io/en/media-push/reference/restful-authentication\">RESTful API authentication</a>.</p>\n<h2 id=\"understand-the-tech\"><a href=\"https://docs.agora.io/en/media-push/develop/restful-api#understand-the-tech\">Understand the tech​</a></h2>\n<p>You can implement different types of Media Push depending on the live streaming scenario requires transcoded or non-transcoded streaming. Transcoding is essentially an encoding and decoding function used to mix multiple audio and video streams into one audio and video stream, which can guarantee the synchronization of multiple hosts' live streams seen by the audience. Therefore, generally speaking, in the case of multiple-hosts live streaming, you need to enable transcoding when pushing streams to CDN; in the case of single-host live streaming, only one media stream is pushed to the CDN, so you do not need to enable transcoding. It is also required to set the codec to h264. Processing the media streams and pushing it to the CDN creates a Media Push task (shown as \"Converter\" in the rest of the article) in the Agora channel. You can control a Converter through the following methods:</p>\n<ul>\n<li><code>Create</code>: Create a Converter for your project, and set up the relevant configuration of transcoded or non-transcoded streaming. The media stream in the channel is processed by the Converter according to this configuration and then pushed to the CDN.</li>\n<li><code>Delete</code>: Destroy the specified Converter. The user's media stream in this channel will no longer be processed by the Converter or pushed to the CDN after you destroy the Converter.</li>\n<li><code>Update</code>: Update the specified Converter configuration.</li>\n<li><code>Get</code>: Get the streaming status of the specified Converter.</li>\n</ul>\n<h2 id=\"create-create-a-converter\"><a href=\"https://docs.agora.io/en/media-push/develop/restful-api#create-create-a-converter\">Create: Create a Converter​</a></h2>\n<h3 id=\"http-request\"><a href=\"https://docs.agora.io/en/media-push/develop/restful-api#http-request\">HTTP request​</a></h3>\n<p><code>POST https://api.agora.io/{region}/v1/projects/{appId}/rtmp-converters</code></p>\n<h4 id=\"path-parameter\"><a href=\"https://docs.agora.io/en/media-push/develop/restful-api#path-parameter\">Path parameter​</a></h4>\n<ul>\n<li><code>appId</code>: (Required) String. The <strong>App ID</strong> provided by Agora. You can get an App ID after creating a project in the Agora console. An App ID is the unique identification of a project.</li>\n<li><code>region</code>: (Required) String. The region that the Converter was created in. Agora supports the creation of Converters in different regions. Currently, four regions are supported:<ul>\n<li><code>cn</code>: China Mainland</li>\n<li><code>ap</code>: Asia, excluding Mainland China</li>\n<li><code>na</code>: North America</li>\n<li><code>eu</code>: Europe</li>\n</ul>\n</li>\n<li>Please ensure that the region you set is the same region as where your CDN originates is located.</li>\n<li>Please make sure the value of <code>region</code> is lowercase.</li>\n</ul>\n<h4 id=\"query-parameters\"><a href=\"https://docs.agora.io/en/media-push/develop/restful-api#query-parameters\">Query parameters​</a></h4>\n<p><code>regionHintIp</code>: (Optional) String. The IP address of the CDN source station. It must be a valid IPv4 address. This parameter can help ensure the stability of the RTMP stream.</p>\n<p><code>POST https://api.agora.io/{region}/v1/projects/{appId}/rtmp-converters?regionHintIp={regionHintIp}</code></p>\n<h4 id=\"request-header\"><a href=\"https://docs.agora.io/en/media-push/develop/restful-api#request-header\">Request header​</a></h4>\n<ul>\n<li><code>Content-Type</code>: <code>application/json</code></li>\n<li><code>Authorization</code>: The value of this field must refer to the <a href=\"https://docs.agora.io/en/media-push/reference/restful-authentication\">Authentication instructions</a>.</li>\n<li>Agora recommends that you assign a value to <code>X-Request-ID</code>. Agora server returns an <code>X-Custom-Request-ID</code> field in the response header for trouble shooting.</li>\n</ul>\n<h4 id=\"request-body\">Request body​</h4>\n<p>You can implement different types of Media Push depending on the live streaming scenario requires transcoded or non-transcoded streaming. Generally speaking, in the case of multiple-hosts live streaming, you need to enable transcoding when using Media Push RESTful APIs; in the case of single-host live streaming, only one media stream is pushed to the CDN, so you do not need to enable transcoding. For details, see <a href=\"https://docs.agora.io/en/media-push/overview/product-overview#features\">Media Push Features</a>.</p>\n<p><strong>Media Push with transcoding</strong></p>\n<p>The request Body is the <code>converter</code> field of JSON Object type. The field structure is shown in the following figure:</p>\n<img src=\"https://web-cdn.agora.io/docs-files/1654595558221\" />\n\n<p>Details for these fields are shown in the following table:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Descriptions</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>name</td>\n<td>(Optional) String</td>\n<td>The name of the Converter. The maximum length is 64 characters. The supported character set range is:  <br />  <br />- All lowercase English letters (a-z)  <br />- All uppercase English letters (A-Z)  <br />- Numbers 0-9  <br />- \"-\", \"_\"  <br />  <br />The field is empty when no value is passed. Multiple converters with an empty name field can be created under a project. Two converters cannot have the same name, however; you will receive a response status code of <code>409</code> (Conflict) if you try to create a converter with the same name as one that already exists under that project.To avoid repeatedly creating multiple Converters and repetitively pushing streams, please use the <code>name</code> field to manage the Converters under the specified project. Agora recommends that you combine \"channel name (<code>rtcChannel</code>)\" and \"Converter feature\" to assign a value to the <code>name</code>. For example, <code>show68_horizontal</code> and <code>show68_vertical</code> would represent converters for the user screen created in channel <code>show68</code> with horizontal and vertical layouts, respectively.</td>\n</tr>\n<tr>\n<td>transcodeOptions</td>\n<td>(Required) JSON Object</td>\n<td>The Converter’s transcoding configuration.  <br />  <br />- When the <code>audioOptions</code> and <code>videoOptions</code> fields in <code>converter.transcodeOptions</code> are not defined, the converter will output a video stream only (without audio).  <br />- When there is no <code>rtcStreamUids</code> field in the <code>converter.transcodeOptions.audioOptions</code> field, Agora will mix the audio streams of all users in the channel and output the mixed audio stream through the Converter.  <br />- When there is an <code>rtcStreamUids</code> field in the <code>converter.transcodeOptions.audioOptions</code> field, Agora will mix the audio stream of the specified user and output the mixed audio stream through the Converter.</td>\n</tr>\n<tr>\n<td>transcodeOptions.rtcChannel</td>\n<td>(Required) String</td>\n<td>The Agora channel name. This is the channel to which the stream processed by the Converter belongs. The maximum length of the string is 64 characters, and the following character sets (89 characters in total) are supported:  <br />  <br />- All lowercase English letters (a-z)  <br />- All uppercase English letters (A-Z)  <br />- Numbers 0-9  <br />- The space character \"!\", \"#\", \"$\", \"%\", \"&amp;\", \"(\", \")\", \"+\", \"-\", \":\", \";\", \"&lt;\", \"=\", \".\", \"&gt;\", \"?\", \"@\", \"[\", \"]\", \"^\", \"_\", \" , \", \"</td>\n</tr>\n<tr>\n<td>transcodeOptions.audioOptions</td>\n<td>(Optional) JSON Object</td>\n<td>The audio transcoding configuration of the Converter. See <a href=\"https://docs.agora.io/en/media-push/reference/restful-type-definition#audiooptions\">audioOptions</a> for details.  <br />  <br />- There is no need to set <code>audioOptions</code> and related fields in a video stream only (without audio) scenario.  <br />- In an audio &amp; video scenario, <code>audioOptions</code> is a required field. If there is no field setting requirement, you can set <code>audioOptions</code> to empty, for example: \"audioOptions\":</td>\n</tr>\n<tr>\n<td>transcodeOptions.videoOptions</td>\n<td>(Optional) JSON Object</td>\n<td>The video transcoding configuration of the Converter.  <br />  <br />- There is no need to set <code>videoOptions</code> and related fields in an audio stream only (without video) scenario.  <br />- In an audio &amp; video scenario, <code>videoOptions</code> is a required field and cannot be empty.</td>\n</tr>\n<tr>\n<td>transcodeOptions.videoOptions.canvas</td>\n<td>(Required) JSON Object</td>\n<td>The video canvas. See <a href=\"https://docs.agora.io/en/media-push/reference/restful-type-definition#canvas\">canvas</a> for details.</td>\n</tr>\n<tr>\n<td>transcodeOptions.videoOptions.layoutType</td>\n<td>(Optional) Number</td>\n<td>The screen layout type of the output video:  <br />  <br />- <code>0</code> or empty: (Default) Custom layout, which is set through the<code>transcodeOptions.videoOptions.layout</code> parameter.  <br />- <code>1</code>: Vertical layout. Specify one user to display in the large window on the left side of the screen, while the other users are vertically arranged in the small windows on the right side of the screen. For details, see <a href=\"https://docs.agora.io/en/media-push/reference/set-vertical-layout\">Set Vertical Layout</a>.</td>\n</tr>\n<tr>\n<td>transcodeOptions.videoOptions.layout</td>\n<td>(Optional) JSON Array</td>\n<td>The content description of the video screen on the canvas. Two elements are supported: RtcStreamView and ImageView.If <code>layoutType</code> is 0 or empty, this field is required.</td>\n</tr>\n<tr>\n<td>transcodeOptions.videoOptions.layout.RtcStreamView element</td>\n<td>None</td>\n<td>The video screen of each user on the canvas. See <a href=\"https://docs.agora.io/en/media-push/reference/restful-type-definition#layout\">RtcStreamView</a> for details.</td>\n</tr>\n<tr>\n<td>transcodeOptions.videoOptions.layout.ImageView element</td>\n<td>None</td>\n<td>The video image on the canvas, which can be used as a watermark. See <a href=\"https://docs.agora.io/en/media-push/reference/restful-type-definition#layoutimageview\">ImageView</a> for details.</td>\n</tr>\n<tr>\n<td>transcodeOptions.videoOptions.vertical</td>\n<td>(Optional) JSON Object</td>\n<td>Vertical layout. This parameter must be set when <code>layoutType</code> is 1. See <a href=\"https://docs.agora.io/en/media-push/reference/restful-type-definition#vertical\">vertical</a> for details.</td>\n</tr>\n<tr>\n<td>transcodeOptions.videoOptions.defaultPlaceholderImageUrl</td>\n<td>(Required) String</td>\n<td>The default user screen background image URL address. Supports images in JPG, PNG and GIF formats. This controls what happens when a user in a channel stops publishing their video stream:  <br />  <br />- If this field is set, the user's window switches to this background image.  <br />- If this field is not set, the user's window initially displays the last frame of the user's video. Once the layout refreshes, the window displays the background color of the canvas.</td>\n</tr>\n<tr>\n<td>transcodeOptions.videoOptions.bitrate</td>\n<td>(Required) Number</td>\n<td>The encoding bitrate (Kbps) of the video. The value range is [1,10000].</td>\n</tr>\n<tr>\n<td>transcodeOptions.videoOptions.gop</td>\n<td>(Optional) Number</td>\n<td>The GOP of the video. The defalt value is the value of <code>frameRate</code> * 2。</td>\n</tr>\n<tr>\n<td>transcodeOptions.videoOptions.frameRate</td>\n<td>(Optional) Number</td>\n<td>The encoding frame rate (fps) of the video. The value range is [1,30]. The default value is 15.</td>\n</tr>\n<tr>\n<td>transcodeOptions.videoOptions.codec</td>\n<td>(Optional) String</td>\n<td>The video codec type of the output video stream. The following values are supported:  <br />  <br />- (Default) H.264  <br />- H.265</td>\n</tr>\n<tr>\n<td>transcodeOptions.videoOptions.codecProfile</td>\n<td>(Optional) String</td>\n<td>The encoding specification of the video. The following values are supported:  <br />  <br />- <code>high</code> (Default): High video codec profile, generally used for high-resolution broadcasts or television.  <br />- <code>baseline</code>: Baseline video codec profile, generally used for video calls on mobile phones.  <br />- <code>main</code>: Main video codec profile, generally used for mainstream electronics, such as MP4 players, portable video players, PSPs, and iPads.  <br />  <br />If <code>codec</code> is set to <code>H.256</code>, <code>codecProfile</code> is automatically set to <code>main</code>.</td>\n</tr>\n<tr>\n<td>transcodeOptions.videoOptions.seiOptions</td>\n<td>JSON Object</td>\n<td>Sets the user SEI information carried in the output video stream. The default is empty. If it is not set, it means that no SEI information is output. See <a href=\"https://docs.agora.io/en/media-push/reference/restful-type-definition#seioptions\">seiOptions</a> for details.</td>\n</tr>\n<tr>\n<td>rtmpUrl</td>\n<td>(Required) String</td>\n<td>The address of Media Push. It must be a valid RTMP address with a length of 1,024 characters or less.</td>\n</tr>\n<tr>\n<td>idleTimeOut</td>\n<td>(Optional) Number</td>\n<td>The maximum time (seconds) that the Converter is idle. Idle means that all users corresponding to the media stream processed by the Converter have left the channel. After the idle state exceeds the set <code>idleTimeOut</code>, the Converter will be destroyed automatically.</td>\n</tr>\n<tr>\n<td>jitterBufferSizeMs</td>\n<td>(Optional) Int</td>\n<td>Network delay (ms) from the receiver to the jitter buffer. The default value is 1000. The value range is [0, 1000].  <br />  <br />- The Media Push service rounds up to the nearest 100 multiples with the value you set.  <br />- If the value is set to 0, jitter buffer delay does not take effect. Agora recommends that you do not set the <code>jitterBufferSizeMs</code> to 0 because poor network may cause low audio quality.</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Media Push without transcoding</strong></p>\n<p>The request body is the <code>converter</code> field of JSON Object type. The field structure is shown in the following figure:</p>\n<img src=\"https://web-cdn.agora.io/docs-files/1654595914132\" />\n\n<p>Details for these fields are shown in the following table:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Category</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>name</td>\n<td>String</td>\n<td>The name of the Converter.</td>\n</tr>\n<tr>\n<td>rawOptions</td>\n<td>(Required)JSON Object</td>\n<td>Media Push configuration for the Converter.</td>\n</tr>\n<tr>\n<td>rawOptions.rtcChannel</td>\n<td>String</td>\n<td>The Agora channel name. The channel to which the stream processed by the Converter belongs.</td>\n</tr>\n<tr>\n<td>rawOptions.rtcStreamUid</td>\n<td>Number</td>\n<td>The UID of the user to which the media stream belongs.</td>\n</tr>\n<tr>\n<td>rtmpUrl</td>\n<td>(Required)String</td>\n<td>The CDN streaming address.</td>\n</tr>\n<tr>\n<td>idleTimeOut</td>\n<td>Number</td>\n<td>The maximum time (s) that the Converter is idle. Idle means that all users of the corresponding media streams processed by the Converter have left the channel. When the Converter is in the idle state for longer than <code>idleTimeout</code>, the Converter is automatically destroyed and the streaming stops.</td>\n</tr>\n<tr>\n<td>jitterBufferSizeMs</td>\n<td>(Optional) Int</td>\n<td>Network delay (ms) from the receiver to the jitter buffer. The default value is 1000. The value range is [0, 1000].  <br />  <br />- The Media Push service rounds up to the nearest 100 multiples with the value you set.  <br />- If the value is set to 0, jitter buffer delay does not take effect. Agora recommends that you do not set the <code>jitterBufferSizeMs</code> to 0 because poor network may cause low audio quality.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"http-response\"><a href=\"https://docs.agora.io/en/media-push/develop/restful-api#http-response\">HTTP response​</a></h3>\n<p>All possible response status codes. See <a href=\"https://docs.agora.io/en/media-push/develop/restful-api#status-codes\">Status codes</a> for details.</p>\n<h4 id=\"response-header\"><a href=\"https://docs.agora.io/en/media-push/develop/restful-api#response-header\">Response header​</a></h4>\n<ul>\n<li>If the response status code of this request is not 2XX, this field may be missing from the response header.</li>\n<li><code>X-Resource-ID</code>: The UUID (Universal Unique Identifier) that identifies the <strong>ID</strong> of the Converter updated in this request.</li>\n</ul>\n<h4 id=\"response-body\"><a href=\"https://docs.agora.io/en/media-push/develop/restful-api#response-body\">Response body​</a></h4>\n<p>If the status code is 2XX, the request is successful. The field structure is shown in the following figure:</p>\n<img src=\"https://web-cdn.agora.io/docs-files/1624003059693\" />\n\n<p>Details for these fields are shown in the following table:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Descriptions</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>String</td>\n<td>The ID of the Converter. This is a UUID (Universal Unique Identifier) generated by the Agora server to identify a created Converter.</td>\n</tr>\n<tr>\n<td><code>createTs</code></td>\n<td>Number</td>\n<td>The Unix timestamp(seconds) when the Converter was created.</td>\n</tr>\n<tr>\n<td><code>updateTs</code></td>\n<td>Number</td>\n<td>The Unix timestamp(seconds) when the Converter configuration was last updated.</td>\n</tr>\n<tr>\n<td><code>state</code></td>\n<td>String</td>\n<td>The running status of the Converter:  <br />  <br />- <code>idle</code>: The Media Push has not started or has ended.  <br />- <code>connecting</code>: Connecting to the Agora streaming server and the CDN server.  <br />- <code>running</code>: The Agora streaming server is pushing the streams.  <br />- <code>failed</code>: The Media Push fails.</td>\n</tr>\n<tr>\n<td><code>fields</code></td>\n<td>String</td>\n<td>The field mask of the converter JSON Object. See <a href=\"https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmask\">Google protobuf FieldMask Document</a> for details. This is used to describe the set of fields contained in the returned <code>converter</code>. In this example, <code>fields</code> specifies that the Agora server returns a subset of the <code>id</code>, <code>createTs</code>, <code>updateTs</code> and <code>state</code> fields in the <code>converter</code> field.</td>\n</tr>\n</tbody>\n</table>\n</div><p>If the status code is not 2XX, the request fails. The body contains a String type <code>message</code> field that describes the specific reason for the failure.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"message\": \"Invalid authentication credentials.\"\n }\n\n</code></pre>\n<h3 id=\"request-example\"><a href=\"https://docs.agora.io/en/media-push/develop/restful-api#request-example\">Request example​</a></h3>\n<p><strong>Custom layout for Media Push with transcoding</strong></p>\n<p>This example shows that the video of the two specified users in the <code>show68</code> channel are mixed with a custom layout and pushed to the CDN. The audio of all users in the channel is also mixed.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"converter\": {\n        \"name\": \"show68_vertical\",\n        \"transcodeOptions\": {\n            \"rtcChannel\": \"show68\",\n            \"audioOptions\": {\n                \"codecProfile\": \"LC-AAC\",\n                \"sampleRate\": 48000,\n                \"bitrate\": 48,\n                \"audioChannels\": 1\n            },\n            \"videoOptions\": {\n                \"canvas\": {\n                    \"width\": 360,\n                    \"height\": 640\n                },\n                \"layout\": [\n                    {\n                        \"rtcStreamUid\": 201,\n                        \"region\": {\n                            \"xPos\": 0,\n                            \"yPos\": 0,\n                            \"zIndex\": 1,\n                            \"width\": 360,\n                            \"height\": 320\n                        },\n                        \"fillMode\": \"fill\",\n                        \"placeholderImageUrl\": \"http://example.agora.io/user_placeholder.jpg\"\n                    },\n                    {\n                        \"rtcStreamUid\": 202,\n                        \"region\": {\n                            \"xPos\": 0,\n                            \"yPos\": 320,\n                            \"zIndex\": 1,\n                            \"width\": 360,\n                            \"height\": 320\n                        }\n                    }\n                ],\n                \"codecProfile\": \"High\",\n                \"frameRate\": 15,\n                \"gop\": 30,\n                \"bitrate\": 400,\n                \"seiOptions\": {}\n            }\n        },\n        \"rtmpUrl\": \"rtmp://example/live/show68\"\n    }\n}\n\n</code></pre>\n<p>The sample code for setting SEI information (<code>seiOptions</code>) is as follows:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"converter\": {\n        \"transcodeOptions\": {\n            \"videoOptions\": {\n                \"seiOptions\": {\n                    \"source\": {\n                        \"metadata\": true,\n                        \"datastream\": true,\n                        \"customized\": {\n                            \"payload\": \"example\"\n                        }\n                    },\n                    \"sink\": {\n                        \"type\": 100\n                    }\n                }\n            }\n        }\n    }\n}\n\n</code></pre>\n<p><strong>Vertical layout for Media Push with transcoding</strong> This example shows that the video of the two specified users in the <code>show68</code> channel are mixed with a vertical layout and pushed to the CDN. The audio of two specified users in the channel are mixed.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"converter\": {\n        \"name\": \"show68_vertical\",\n        \"transcodeOptions\": {\n            \"rtcChannel\": \"show68\",\n            \"audioOptions\": {\n                \"codecProfile\": \"HE-AAC\",\n                \"sampleRate\": 48000,\n                \"bitrate\": 128,\n                \"audioChannels\": 1,\n                \"rtcStreamUids\": [\n                    201,\n                    202\n                ]\n            },\n            \"videoOptions\": {\n                \"canvas\": {\n                    \"width\": 360,\n                    \"height\": 640,\n                    \"color\": 0\n                },\n                \"layout\": [\n                    {\n                        \"rtcStreamUid\": 201,\n                        \"region\": {\n                            \"xPos\": 0,\n                            \"yPos\": 0,\n                            \"zIndex\": 1,\n                            \"width\": 360,\n                            \"height\": 640\n                        },\n                        \"fillMode\": \"fill\",\n                        \"placeholderImageUrl\": \"http://example/host_placeholder.jpg\"\n                    },\n                    {\n                        \"rtcStreamUid\": 202,\n                        \"region\": {\n                            \"xPos\": 0,\n                            \"yPos\": 320,\n                            \"zIndex\": 1,\n                            \"width\": 360,\n                            \"height\": 320\n                        }\n                    }\n                ],\n                \"codec\": \"H.264\",\n                \"codecProfile\": \"high\",\n                \"frameRate\": 15,\n                \"gop\": 30,\n                \"bitrate\": 400,\n                \"layoutType\": 1,\n                \"vertical\": {\n                    \"maxResolutionUid\": 201,\n                    \"fillMode\": \"fill\",\n                    \"refreshIntervalSec\": 4\n                },\n                \"defaultPlaceholderImageUrl\": \"http://example/host_placeholder.jpg\",\n                \"seiOptions\": {\n                    \"source\": {\n                        \"metadata\": true,\n                        \"datastream\": true,\n                        \"customized\": {\n                            \"payload\": \"example\"\n                        }\n                    },\n                    \"sink\": {\n                        \"type\": 100\n                    }\n                }\n            }\n        },\n        \"rtmpUrl\": \"rtmp://example/live/show68\",\n        \"idleTimeout\": 300\n    }\n}\n\n</code></pre>\n<p><strong>Media Push without transcoding</strong></p>\n<p>This example shows that the media stream of the specified user in the <code>show68</code> channel is pushed to the CDN.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"converter\": {\n      \"name\": \"show68_vertical\",\n      \"rawOptions\": {\n        \"rtcChannel\": \"show68\",\n        \"rtcStreamUid\": 201\n      },\n      \"rtmpUrl\": \"rtmp://example/live/global\"\n    }\n}\n\n</code></pre>\n<h3 id=\"response-example\"><a href=\"https://docs.agora.io/en/media-push/develop/restful-api#response-example\">Response example​</a></h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n   \"converter\": {\n     \"id\": \"4c014467d647bb87b60b719f6fa57686\",\n     \"createTs\": 1591786766,\n     \"updateTs\": 1591786766,\n     \"state\": \"connecting\"\n   },\n   \"fields\": \"id,createTs,updateTs,state\"\n}\n\n</code></pre>\n<h2 id=\"delete-destroy-the-converter\"><a href=\"https://docs.agora.io/en/media-push/develop/restful-api#delete-destroy-the-converter\">Delete: Destroy the Converter​</a></h2>\n<h3 id=\"http-request-1\"><a href=\"https://docs.agora.io/en/media-push/develop/restful-api#http-request-1\">HTTP request​</a></h3>\n<p><code>DELETE https://api.agora.io/{region}/v1/projects/{appId}/rtmp-converters/{converterId}</code></p>\n<h4 id=\"path-parameter-1\"><a href=\"https://docs.agora.io/en/media-push/develop/restful-api#path-parameter-1\">Path parameter​</a></h4>\n<ul>\n<li><code>region</code>: (Required) String. The region where the Converter is created in, which must be the same as the <code>region</code> set when creating Converter.</li>\n<li><code>appId</code>: (Required) String type parameter. The <strong>App ID</strong> provided by Agora . You can get an App ID after creating a project in the Agora console. An App ID is the unique identification of a project.</li>\n<li><code>converterId</code>: (Required) String type parameter. The <strong>ID</strong> of the Converter.</li>\n</ul>\n<h4 id=\"request-header-1\"><a href=\"https://docs.agora.io/en/media-push/develop/restful-api#request-header-1\">Request header​</a></h4>\n<ul>\n<li><code>Authorization</code>: The value of this field must refer to the <a href=\"https://docs.agora.io/en/media-push/reference/restful-authentication\">Authentication instructions</a>.</li>\n<li>Agora recommends that you assign a value to <code>X-Request-ID</code>. Agora server returns an <code>X-Custom-Request-ID</code> field in the response header for trouble shooting.</li>\n</ul>\n<h3 id=\"http-response-1\"><a href=\"https://docs.agora.io/en/media-push/develop/restful-api#http-response-1\">HTTP response​</a></h3>\n<p>All possible response status codes. See <a href=\"https://docs.agora.io/en/media-push/develop/restful-api#status-codes\">Status codes</a> for details.</p>\n<h4 id=\"response-header-1\"><a href=\"https://docs.agora.io/en/media-push/develop/restful-api#response-header-1\">Response header​</a></h4>\n<ul>\n<li>If the response status code of this request is not 2XX, this field may be missing from the response header.</li>\n<li><code>X-Resource-ID</code>: The UUID (Universal Unique Identifier) that identifies the <strong>ID</strong> of the Converter created in this request.</li>\n</ul>\n<h4 id=\"response-body-1\"><a href=\"https://docs.agora.io/en/media-push/develop/restful-api#response-body-1\">Response body​</a></h4>\n<ul>\n<li>If the status code is 2XX, the request is successful. The body is empty.</li>\n<li>If the status code is not 2XX, the request fails. The body contains a String type <code>message</code> field that describes the specific reason for the failure.</li>\n</ul>\n<h2 id=\"update-update-the-converter\"><a href=\"https://docs.agora.io/en/media-push/develop/restful-api#update-update-the-converter\">Update: Update the Converter​</a></h2>\n<h3 id=\"http-request-2\"><a href=\"https://docs.agora.io/en/media-push/develop/restful-api#http-request-2\">HTTP request​</a></h3>\n<p><code>PATCH https://api.agora.io/{region}/v1/projects/{appId}/rtmp-converters/{converterId}</code></p>\n<h4 id=\"path-parameter-2\"><a href=\"https://docs.agora.io/en/media-push/develop/restful-api#path-parameter-2\">Path parameter​</a></h4>\n<ul>\n<li><code>region</code>: (Required) String. The region where the Converter is created in, which must be the same as the <code>region</code> set when creating Converter.</li>\n<li><code>appId</code>: (Required) String type parameter. The <strong>App ID</strong> provided by Agora. You can get an App ID after creating a project in the Agora console. An App ID is the unique identification of a project.</li>\n<li><code>converterId</code>: (Required) String type parameter. The <strong>ID</strong> of the Converter.</li>\n</ul>\n<h4 id=\"query-parameters-1\"><a href=\"https://docs.agora.io/en/media-push/develop/restful-api#query-parameters-1\">Query Parameters​</a></h4>\n<p><code>sequence</code>: (Required) Number type parameter. The serial number of the <code>Update</code> request. The value must be greater than or equal to 0. Please make sure that the serial number of the next <code>Update</code> request is greater than the serial number of the previous <code>Update</code> request. The serial number can ensure that the Agora server updates the Converter according to the latest configuration you specify.</p>\n<blockquote>\n<p>Agora recommends that you fill in <code>sequence</code> sequentially, using 0 when calling Update for the first time, 1 for the second time, 2 for the third time, and so on. The Agora server will update the Converter according to the latest Update request (the largest serial number). </p>\n</blockquote>\n<p><code>PATCH https://api.agora.io/v1/projects//rtmp-converters/?sequence={sequence}</code></p>\n<h4 id=\"request-header-2\"><a href=\"https://docs.agora.io/en/media-push/develop/restful-api#request-header-2\">Request header​</a></h4>\n<ul>\n<li><code>Content-Type</code>: <code>application/json</code></li>\n<li><code>Authorization</code>: The value of this field must refer to the <a href=\"https://docs.agora.io/en/media-push/reference/restful-authentication\">Authentication instructions</a>.</li>\n<li>Agora recommends that you assign a value to <code>X-Request-ID</code>. Agora server returns an <code>X-Custom-Request-ID</code> field in the response header for trouble shooting.</li>\n</ul>\n<h4 id=\"request-body-1\"><a href=\"https://docs.agora.io/en/media-push/develop/restful-api#request-body-1\">Request body​</a></h4>\n<p>For details about the fields, see the <a href=\"https://docs.agora.io/en/media-push/develop/restful-api#request-body\">Create request body</a>.</p>\n<blockquote>\n<p><code>Update</code> method does not support updating the following configurations of a Converter: </p>\n</blockquote>\n<ul>\n<li>After calling the <code>Create</code> method to create a Converter that outputs video stream only or audio stream only, you cannot update it to a Converter that outputs audio stream only or video stream only through the <code>Update</code> method.</li>\n<li>When using Media Push with vertical layout (<code>layoutType</code> is <code>1</code>), you can only update the <code>rtmpUrl</code> field.</li>\n</ul>\n<h3 id=\"http-response-2\"><a href=\"https://docs.agora.io/en/media-push/develop/restful-api#http-response-2\">HTTP response​</a></h3>\n<p>All possible response status codes. See <a href=\"https://docs.agora.io/en/media-push/develop/restful-api#status-codes\">Status codes</a> for details.</p>\n<h4 id=\"response-header-2\"><a href=\"https://docs.agora.io/en/media-push/develop/restful-api#response-header-2\">Response header​</a></h4>\n<ul>\n<li>If the response status code of this request is not 2XX, this field may be missing from the response header.</li>\n<li><code>X-Resource-ID</code>: The UUID (Universal Unique Identifier) that identifies the <strong>ID</strong> of the Converter updated in this request.</li>\n</ul>\n<h4 id=\"response-body-2\"><a href=\"https://docs.agora.io/en/media-push/develop/restful-api#response-body-2\">Response body​</a></h4>\n<p>If the status code is 2XX, the request is successful. The field structure is shown in the following figure:</p>\n<img src=\"https://web-cdn.agora.io/docs-files/1624003059693\" />\n\n<p>Details of these fields are shown in the following table:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Descriptions</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>String</td>\n<td>The ID of the Converter. This is a UUID (Universal Unique Identifier) generated by the Agora server to identify a created Converter.</td>\n</tr>\n<tr>\n<td><code>createTs</code></td>\n<td>Number</td>\n<td>The Unix timestamp(seconds) when the Converter was created.</td>\n</tr>\n<tr>\n<td><code>updateTs</code></td>\n<td>Number</td>\n<td>The Unix timestamp(seconds) when the Converter configuration was last updated.</td>\n</tr>\n<tr>\n<td><code>state</code></td>\n<td>String</td>\n<td>The running status of the Converter:  <br />  <br />- <code>idle</code>: The Media Push has not started or has ended.  <br />- <code>connecting</code>: Connecting to the Agora streaming server and the CDN server.  <br />- <code>running</code>: The Agora streaming server is pushing the streams.  <br />- <code>failed</code>: The Media Push Fails.</td>\n</tr>\n<tr>\n<td><code>fields</code></td>\n<td>String</td>\n<td>The field mask of the converter JSON Object. See <a href=\"https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmask\">Google protobuf FieldMask Document</a> for details. This is used to describe the set of fields contained in the returned <code>converter</code>.  <br />In this example, <code>fields</code> specifies that the Agora server returns a subset of the <code>id</code>, <code>createTs</code>, <code>updateTs</code>, and <code>state</code> fields in the <code>converter</code> field.</td>\n</tr>\n</tbody>\n</table>\n</div><p>If the status code is not 2XX, the request fails. The body contains a String type <code>message</code> field that describes the specific reason for the failure.</p>\n<h3 id=\"response-example-1\"><a href=\"https://docs.agora.io/en/media-push/develop/restful-api#response-example-1\">Response example​</a></h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n   \"converter\": {\n     \"id\": \"4c014467d647bb87b60b719f6fa57686\",\n     \"createTs\": 1591786766,\n     \"updateTs\": 1591788746,\n     \"state\": \"running\"\n   },\n   \"fields\": \"id,createTs,updateTs,state\"\n}\n\n</code></pre>\n<h2 id=\"get-get-the-streaming-status-of-the-converter\"><a href=\"https://docs.agora.io/en/media-push/develop/restful-api#get-get-the-streaming-status-of-the-converter\">Get: Get the streaming status of the Converter​</a></h2>\n<h3 id=\"http-request-3\"><a href=\"https://docs.agora.io/en/media-push/develop/restful-api#http-request-3\">HTTP request​</a></h3>\n<p><code>GET https://api.agora.io/{region}/v1/projects/{appId}/rtmp-converters/{converterId}</code></p>\n<h4 id=\"path-parameter-3\"><a href=\"https://docs.agora.io/en/media-push/develop/restful-api#path-parameter-3\">Path parameter​</a></h4>\n<ul>\n<li><code>region</code>: (Required) String. The region where the Converter is created in, which must be the same as the <code>region</code> set when creating Converter.</li>\n<li><code>appId</code>: (Required) String type parameter. The <strong>App ID</strong> provided by Agora . You can get an App ID after creating a project in the Agora console. An App ID is the unique identification of a project.</li>\n<li><code>converterId</code>: (Required) String type parameter. The <strong>ID</strong> of the Converter.</li>\n</ul>\n<h4 id=\"request-header-3\"><a href=\"https://docs.agora.io/en/media-push/develop/restful-api#request-header-3\">Request header​</a></h4>\n<ul>\n<li><code>Content-Type</code>: <code>application/json</code></li>\n<li><code>Authorization</code>: The value of this field must refer to the <a href=\"https://docs.agora.io/en/media-push/reference/restful-authentication\">Authentication instructions</a>.</li>\n<li>Agora recommends that you assign a value to <code>X-Request-ID</code>. Agora server returns an <code>X-Custom-Request-ID</code> field in the response header for trouble shooting.</li>\n</ul>\n<h3 id=\"http-response-3\"><a href=\"https://docs.agora.io/en/media-push/develop/restful-api#http-response-3\">HTTP response​</a></h3>\n<p>All possible response status codes. See <a href=\"https://docs.agora.io/en/media-push/develop/restful-api#status-codes\">Status codes</a> for details.</p>\n<h4 id=\"response-header-3\"><a href=\"https://docs.agora.io/en/media-push/develop/restful-api#response-header-3\">Response header​</a></h4>\n<ul>\n<li>If the response status code of this request is not 2XX, this field may be missing from the response header.</li>\n<li><code>X-Resource-ID</code>: The UUID (Universal Unique Identifier) that identifies the <strong>ID</strong> of the Converter created in this request.</li>\n</ul>\n<h4 id=\"response-body-3\"><a href=\"https://docs.agora.io/en/media-push/develop/restful-api#response-body-3\">Response body​</a></h4>\n<p>If the status code is 2XX, the request is successful. The field structure is shown in the following figure:</p>\n<img src=\"https://web-cdn.agora.io/docs-files/1646374583131\" />\n\n<p>Details of these fields are shown in the following table:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Descriptions</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>name</td>\n<td>String</td>\n<td>The name of the Converter.</td>\n</tr>\n<tr>\n<td>transcodeOptions</td>\n<td>JSON Object</td>\n<td>The transcoding configuration of the Converter.</td>\n</tr>\n<tr>\n<td>transcodeOptions.rtcChannel</td>\n<td>String</td>\n<td>The Agora channel name.</td>\n</tr>\n<tr>\n<td>transcodeOptions.audioOptions</td>\n<td>JSON Object</td>\n<td>The audio transcoding configuration of the Converter. See <a href=\"https://docs.agora.io/en/media-push/reference/restful-type-definition#audiooptions\">audioOptions</a> for details.</td>\n</tr>\n<tr>\n<td>transcodeOptions.videoOptions</td>\n<td>JSON Object</td>\n<td>The video transcoding configuration of the Converter.</td>\n</tr>\n<tr>\n<td>transcodeOptions.videoOptions.canvas</td>\n<td>JSON Object</td>\n<td>The video canvas. See <a href=\"https://docs.agora.io/en/media-push/reference/restful-type-definition#canvas\">canvas</a> for details.</td>\n</tr>\n<tr>\n<td>transcodeOptions.videoOptions.layout</td>\n<td>JSON Array</td>\n<td>The content description of the video screen on the canvas. Two elements are supported: RtcStreamView and ImageView.</td>\n</tr>\n<tr>\n<td>transcodeOptions.videoOptions.layout.RtcStreamView element</td>\n<td>NA</td>\n<td>The video screen of each user on the canvas. See <a href=\"https://docs.agora.io/en/media-push/reference/restful-type-definition#layout\">RtcStreamView</a> for details.</td>\n</tr>\n<tr>\n<td>transcodeOptions.videoOptions.layout.ImageView element</td>\n<td>NA</td>\n<td>The video image on the canvas, which can be used as a watermark. See <a href=\"https://docs.agora.io/en/media-push/reference/restful-type-definition#layoutimageview\">ImageView</a> for details.</td>\n</tr>\n<tr>\n<td>transcodeOptions.videoOptions.bitrate</td>\n<td>Number</td>\n<td>The encoding bitrate (Kbps) of the video.</td>\n</tr>\n<tr>\n<td>transcodeOptions.videoOptions.frameRate</td>\n<td>Number</td>\n<td>The encoding frame rate (fps) of the video.</td>\n</tr>\n<tr>\n<td>transcodeOptions.videoOptions.codec</td>\n<td>String</td>\n<td>The video codec type of the output video stream.</td>\n</tr>\n<tr>\n<td>transcodeOptions.videoOptions.codecProfile</td>\n<td>String</td>\n<td>The encoding specification of the video.</td>\n</tr>\n<tr>\n<td>transcodeOptions.videoOptions.seiOptions</td>\n<td>JSON Object</td>\n<td>The user SEI information carried in the output video stream. See <a href=\"https://docs.agora.io/en/media-push/reference/restful-type-definition#seioptions\">seiOptions</a> for details.</td>\n</tr>\n<tr>\n<td>rtmpUrl</td>\n<td>String</td>\n<td>The address of Media Push.</td>\n</tr>\n<tr>\n<td>idleTimeout</td>\n<td>Number</td>\n<td>The maximum time (seconds) that the Converter is idle. Idle means that all users corresponding to the media stream processed by the Converter have left the channel.</td>\n</tr>\n<tr>\n<td>createTs</td>\n<td>Number</td>\n<td>The Unix timestamp(seconds) when the Converter was created.</td>\n</tr>\n<tr>\n<td>state</td>\n<td>String</td>\n<td>The running status of the Converter:  <br />  <br />- <code>idle</code>: Pushing the stream has not started or has ended.  <br />- <code>connecting</code>: Connecting to the Agora streaming server and the CDN server.  <br />- <code>running</code>: Pushing the stream.  <br />- <code>failed</code>: Failed to push the stream.</td>\n</tr>\n</tbody>\n</table>\n</div><p>If the status code is not 2XX, the request fails. The body contains a String type <code>message</code> field that describes the specific reason for the failed.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"reason\": \"Resource is not found and destroyed.\"\n}\n\n</code></pre>\n<p><strong>Media Push without transcoding</strong></p>\n<p>If the status code is 2XX, the request is successful. The field structure is shown in the following figure:</p>\n<img src=\"https://web-cdn.agora.io/docs-files/1654595914132\" />\n\n<p>Details of these fields are shown in the following table:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field name</th>\n<th>Category</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>name</td>\n<td>String</td>\n<td>The name of the Converter.</td>\n</tr>\n<tr>\n<td>rawOptions</td>\n<td>JSON Object</td>\n<td>Media Push configuration for the Converter.</td>\n</tr>\n<tr>\n<td>rawOptions.rtcChannel</td>\n<td>String</td>\n<td>The Agora channel name. The channel to which the stream processed by the Converter belongs.</td>\n</tr>\n<tr>\n<td>rawOptions.rtcStreamUid</td>\n<td>Number</td>\n<td>The UID of the user to which the media stream belongs.</td>\n</tr>\n<tr>\n<td>rtmpUrl</td>\n<td>String</td>\n<td>The CDN streaming address.</td>\n</tr>\n<tr>\n<td>idleTimeOut</td>\n<td>Number</td>\n<td>The maximum time (s) that the Converter is idle. Idle means that all users of the corresponding media streams processed by the Converter have left the channel. When the Converter is in the idle state for longer than <code>idleTimeout</code>, the Converter is automatically destroyed and the streaming stops.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-example-2\"><a href=\"https://docs.agora.io/en/media-push/develop/restful-api#response-example-2\">Response example​</a></h3>\n<p><strong>Custom layout for Media Push with transcoding</strong></p>\n<p>If the status code is 2XX, the request is successful.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"name\": \"show68_vertical\",\n    \"transcodeOptions\": {\n        \"rtcChannel\": \"show68\",\n        \"audioOptions\": {\n            \"codecProfile\": \"HE-AAC\",\n            \"sampleRate\": 48000,\n            \"bitrate\": 128,\n            \"audioChannels\": 1,\n            \"rtcStreamUids\": [\n                201\n            ]\n        },\n        \"videoOptions\": {\n            \"canvas\": {\n                \"width\": 360,\n                \"height\": 640,\n                \"color\": 0\n            },\n            \"layout\": [\n                {\n                    \"rtcStreamUid\": 201,\n                    \"region\": {\n                        \"xPos\": 0,\n                        \"yPos\": 0,\n                        \"zIndex\": 1,\n                        \"width\": 360,\n                        \"height\": 320\n                    },\n                    \"fillMode\": \"fill\",\n                    \"placeholderImageUrl\": \"http://example.agora.io/host_placeholder.jpg\"\n                },\n                {\n                    \"rtcStreamUid\": 202,\n                    \"region\": {\n                        \"xPos\": 0,\n                        \"yPos\": 320,\n                        \"zIndex\": 1,\n                        \"width\": 360,\n                        \"height\": 320\n                    }\n                },\n                {\n                    \"imageUrl\": \"http://example.agora.io/watchmark.jpg\",\n                    \"region\": {\n                        \"xPos\": 0,\n                        \"yPos\": 0,\n                        \"zIndex\": 2,\n                        \"width\": 36,\n                        \"height\": 64\n                    },\n                    \"fillMode\": \"fit\"\n                }\n            ],\n            \"codec\": \"H.264\",\n            \"codecProfile\": \"High\",\n            \"frameRate\": 15,\n            \"gop\": 30,\n            \"bitrate\": 400,\n            \"seiOptions\": {}\n        }\n    },\n    \"rtmpUrl\": \"rtmp://example.agora.io/live/show68\",\n    \"idleTimeout\": 300,\n    \"createTs\": 1616946970,\n    \"updateTs\": 1783656785,\n    \"state\": \"running\"\n}\n\n</code></pre>\n<p><strong>Vertical layout for Media Push with transcoding</strong></p>\n<p>If the status code is 2XX, the request is successful.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"name\": \"show68_vertical\",\n    \"transcodeOptions\": {\n        \"rtcChannel\": \"show68\",\n        \"audioOptions\": {\n            \"codecProfile\": \"HE-AAC\",\n            \"sampleRate\": 48000,\n            \"bitrate\": 128,\n            \"audioChannels\": 1,\n            \"rtcStreamUids\": [\n                201\n            ]\n        },\n        \"videoOptions\": {\n            \"canvas\": {\n                \"width\": 360,\n                \"height\": 640,\n                \"color\": 0\n            },\n            \"layout\": [\n                {\n                    \"rtcStreamUid\": 201,\n                    \"region\": {\n                        \"xPos\": 0,\n                        \"yPos\": 0,\n                        \"zIndex\": 1,\n                        \"width\": 360,\n                        \"height\": 640\n                    },\n                    \"fillMode\": \"fill\",\n                    \"placeholderImageUrl\": \"http://example.agora.io/host_placeholder.jpg\"\n                }\n            ],\n            \"codec\": \"H.264\",\n            \"codecProfile\": \"high\",\n            \"frameRate\": 15,\n            \"gop\": 30,\n            \"bitrate\": 400,\n            \"layoutType\": 1,\n            \"vertical\": {\n                \"maxResolutionUid\": 201,\n                \"fillMode\": \"fill\",\n                \"refreshIntervalSec\": 4\n            },\n            \"defaultPlaceholderImageUrl\": \"http://example.agora.io/host_placeholder.jpg\",\n            \"seiOptions\": {\n                \"source\": {\n                    \"metadata\": true,\n                    \"datastream\": true,\n                    \"customized\": {\n                        \"payload\": \"example\"\n                    }\n                },\n                \"sink\": {\n                    \"type\": 100\n                }\n            }\n        }\n    },\n    \"rtmpUrl\": \"rtmp://example.agora.io/live/show68\",\n    \"idleTimeout\": 300\n}\n\n</code></pre>\n<p><strong>Media Push without transcoding</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"converter\": {\n      \"name\": \"wX8210Ce1VWVyGVHyaHA0W\",\n      \"rawOptions\": {\n        \"rtcChannel\": \"example\",\n        \"rtcStreamUid\": XXXX\n      },\n      \"rtmpUrl\": \"rtmp://vid-218.push.chinanetcenter.broadcastapp.agora.io/live/global\",\n      \"idleTimeout\": 120\n    }\n}\n\n</code></pre>\n<h2 id=\"list-query-the-converters-of-all-or-specified-channels-under-a-project\"><a href=\"https://docs.agora.io/en/media-push/develop/restful-api#list-query-the-converters-of-all-or-specified-channels-under-a-project\">List: Query the Converters of all or specified channels under a project​</a></h2>\n<h3 id=\"http-request-4\"><a href=\"https://docs.agora.io/en/media-push/develop/restful-api#http-request-4\">HTTP request​</a></h3>\n<ul>\n<li>Query all Converters under a project: <code>GET https://api.agora.io/v1/projects/{appId}/rtmp-converters</code></li>\n<li>Query the Converter of a specified channel under a project: <code>GET https://api.agora.io/v1/projects/{appId}/channels/{cname}/rtmp-converters</code></li>\n</ul>\n<h4 id=\"path-parameter-4\"><a href=\"https://docs.agora.io/en/media-push/develop/restful-api#path-parameter-4\">Path parameter​</a></h4>\n<ul>\n<li><code>appId</code>: (Required) String. The App ID provided by Agora. You can get an App ID after creating a project in the Agora console. An App ID is the unique identification of a project.</li>\n<li><code>cname</code>: (Required) String. The Agora channel name. This is the channel to which the stream processed by the Converter belongs. The maximum length of the string is 64 characters, and the following character sets (89 characters in total) are supported:</li>\n<li>All lowercase English letters (a-z)</li>\n<li>All uppercase English letters (A-Z)</li>\n<li>Numbers 0-9The space character</li>\n<li>\"!\", \"#\", \"$\", \"%\", \"&amp;\", \"(\", \")\", \"+\", \"-\", \":\", \";\", \"&lt;\", \"=\", \".\", \"&gt;\", \"?\", \"@\", \"[\", \"]\", \"^\", \"_\", \" , \", \"|\", \"~\", \",\"</li>\n</ul>\n<h4 id=\"query-parameters-2\"><a href=\"https://docs.agora.io/en/media-push/develop/restful-api#query-parameters-2\">Query Parameters​</a></h4>\n<p><code>cursor</code>: (Optional) String. Cursor for paging query Converters. The value must be greater than or equal to 0.</p>\n<blockquote>\n</blockquote>\n<ul>\n<li>You do not need to set the cursor when you initiate a <code>List</code> request for the first time. After the request is successful, the list of Converters on the first page return.</li>\n<li>Each request returns information about a maximum of 500 Converters.. If the number of Converters under the project exceeds 500, get the <code>cursor</code> from the response body, and pass the <code>cursor</code> in the URL of the next request. Until the value of the <code>cursor</code> field in the response body is <code>0</code>, it means that all Converters under the project or the specified channel have been queried.</li>\n</ul>\n<p>The HTTP URL using Query Parameters is as follows:</p>\n<ul>\n<li>Query all Converters under a project: <code>GET https://api.agora.io/v1/projects/{appId}/rtmp-converters?cursor={cursor}</code></li>\n<li>Query the Converter of a specified channel under a project: <code>GET https://api.agora.io/v1/projects/{appId}/channels/{cname}/rtmp-converters?cursor={cursor}</code></li>\n</ul>\n<h4 id=\"request-header-4\"><a href=\"https://docs.agora.io/en/media-push/develop/restful-api#request-header-4\">Request header​</a></h4>\n<ul>\n<li><code>Content-Type</code>: <code>application/json</code></li>\n<li><code>Authorization</code>: The value of this field must refer to the <a href=\"https://docs.agora.io/en/media-push/reference/restful-authentication\">Authentication instructions</a>.</li>\n<li>Agora recommends that you assign a value to <code>X-Request-ID</code>. Agora server returns an <code>X-Custom-Request-ID</code> field in the response header for troubleshooting.</li>\n</ul>\n<h3 id=\"http-response-4\"><a href=\"https://docs.agora.io/en/media-push/develop/restful-api#http-response-4\">HTTP response​</a></h3>\n<p>All possible response status codes. See <a href=\"https://docs.agora.io/en/media-push/develop/restful-api#status-codes\">Status codes</a> for details.</p>\n<h4 id=\"response-header-4\"><a href=\"https://docs.agora.io/en/media-push/develop/restful-api#response-header-4\">Response header​</a></h4>\n<p><code>X-Request-ID</code>: The UUID (Universal Unique Identifier) that identifies this request. This value is the same as the X-Request-ID in the header of this request. If there is an error in the request, print out the value in the log to troubleshoot the problem.</p>\n<blockquote>\n<p>If the response status code of this request is not 2XX, this field may be missing from the response header. </p>\n</blockquote>\n<h4 id=\"response-body-4\"><a href=\"https://docs.agora.io/en/media-push/develop/restful-api#response-body-4\">Response body​</a></h4>\n<p>If the status code is 2XX, the request is successful. The field structure is shown in the following figure:</p>\n<img src=\"https://web-cdn.agora.io/docs-files/1645513457718\" />\n\n<p>Details for these fields are shown in the following table:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Descriptions</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>success</code></td>\n<td>Bool</td>\n<td>The request was successful.</td>\n</tr>\n<tr>\n<td><code>data</code></td>\n<td>JSON Object</td>\n<td>Returns data details.</td>\n</tr>\n<tr>\n<td><code>data.total_count</code></td>\n<td>String</td>\n<td>The number of all Converters under the queried project or channel.</td>\n</tr>\n<tr>\n<td><code>data.cursor</code></td>\n<td>JSON</td>\n<td>Cursor for paging query Converter information list. If the cursor is <code>0</code>, it means that all Converters under the project or the specified channel have been queried; otherwise, the query needs to be continued.</td>\n</tr>\n<tr>\n<td><code>data.members.rtcChannel</code></td>\n<td>String</td>\n<td>The Agora channel name. This is the channel to which the stream processed by the Converter belongs.</td>\n</tr>\n<tr>\n<td><code>data.members.converterName</code></td>\n<td>String</td>\n<td>The name of the Converter.</td>\n</tr>\n<tr>\n<td><code>data.members.updateTs</code></td>\n<td>Number</td>\n<td>The Unix timestamp(seconds) when the Converter configuration was last updated.</td>\n</tr>\n<tr>\n<td><code>data.members.appId</code></td>\n<td>String</td>\n<td>The <strong>App ID</strong> provided by Agora . You can get an App ID after creating a project in the Agora console. An App ID is the unique identification of a project.</td>\n</tr>\n<tr>\n<td><code>data.members.rtmpUrl</code></td>\n<td>String</td>\n<td>The CDN streaming address.</td>\n</tr>\n<tr>\n<td><code>data.members.converterId</code></td>\n<td>String</td>\n<td>The <strong>ID</strong> of the Converter. The unique identifier for the Converter.</td>\n</tr>\n<tr>\n<td><code>data.members.create</code></td>\n<td>Number</td>\n<td>The Unix timestamp(seconds) when the Converter was created.</td>\n</tr>\n<tr>\n<td><code>data.members.idleTimeout</code></td>\n<td>Number</td>\n<td>The maximum time (seconds) that the Converter is idle. Idle means that all users corresponding to the media stream processed by the Converter have left the channel.</td>\n</tr>\n<tr>\n<td><code>data.members.state</code></td>\n<td>String</td>\n<td>The running status of the Converter:  <br />  <br />- <code>idle</code>: Pushing the stream has not started or has ended.  <br />- <code>connecting</code>: Connecting to the Agora streaming server and the CDN server.  <br />- <code>running</code>: Pushing the stream.  <br />- <code>failed</code>: Failed to push the stream.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-example-3\"><a href=\"https://docs.agora.io/en/media-push/develop/restful-api#response-example-3\">Response example​</a></h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"success\": true,\n    \"data\": {\n        \"total_count\": 1,\n        \"cursor\": 0,\n        \"members\": [\n            {\n                \"rtcChannel\": \"testchannel\",\n                \"status\": \"200\",\n                \"converterName\": \"wX8210XXXXWVyGVHyaHA0W\",\n                \"updateTs\": \"1641267823\",\n                \"appId\": \"aab8b8f5a8cd4469a63042fcfafe7063\",\n                \"rtmpUrl\": \"rtmp://example/live/areu\",\n                \"ip\": \"183.131.160.244\",\n                \"converterId\": \"889B6D4BEC4XXXXE68CCDA978BF21350\",\n                \"create\": \"1641267818\",\n                \"idleTimeout\": \"120\",\n                \"state\": \"running\"\n            }\n        ]\n    }\n}\n\n</code></pre>\n<h2 id=\"api-call-rate-limits\"><a href=\"https://docs.agora.io/en/media-push/develop/restful-api#api-call-rate-limits\">API call rate limits​</a></h2>\n<p>The Agora server limits the call rate for the Media Push API by method. When a call rate exceeds its limit, the status code <code>429 (Too Many Requests)</code> is returned. If you need a higher call rate, please contact technical support.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>API</th>\n<th>Rate limits</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>Create</code></td>\n<td>In a project, the rate limit for the rate of creating a Converter is 50 times per second.</td>\n</tr>\n<tr>\n<td><code>Delete</code></td>\n<td>In a project, the rate limit for the converter destruction is 50 times per second.</td>\n</tr>\n<tr>\n<td><code>Update</code></td>\n<td>In a project, the rate limit for the rate of updating a specified Converter is 2 times per second.</td>\n</tr>\n<tr>\n<td><code>Get</code></td>\n<td>In a project, the rate limit for the rate of getting the status of a specified Converter is 50 times per second.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"status-codes\">Status codes​</h2>\n<ul>\n<li>If the status code is 2XX, the request is successful.</li>\n<li>If the status code is not 2XX, the request fails. Please troubleshoot the problem based on the content of the <code>message</code> field in the corresponding response message Body.</li>\n</ul>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status codes</th>\n<th>Possible message field content</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>200 OK</td>\n<td>/</td>\n</tr>\n<tr>\n<td>400 Bad Request</td>\n<td>- Invalid parameter: rtmpUrl. Replace it, and retry.  <br />- Invalid parameter: idleTimeout. Replace it, and retry.</td>\n</tr>\n<tr>\n<td>401 Unauthorized</td>\n<td>Invalid authentication credentials.</td>\n</tr>\n<tr>\n<td>403 Forbidden</td>\n<td>The project lacks permission to use this function. Contact <a href=\"https://mailto:support@agora.io\">Agora technical support</a>.</td>\n</tr>\n<tr>\n<td>404 Not Found</td>\n<td>Resource cannot be found/has been destroyed.</td>\n</tr>\n<tr>\n<td>409 Conflict</td>\n<td>Resource with the same name already exists. Use the existing resource; otherwise, delete it, and create a new resource.</td>\n</tr>\n<tr>\n<td>429 Too Many Requests</td>\n<td>Request rate limit exceeded.Resource quota limit exceeded.No available resources.</td>\n</tr>\n<tr>\n<td>500 Unknown</td>\n<td>Internal errors. Contact Agora for assistance with troubleshooting.</td>\n</tr>\n<tr>\n<td>501 Not Implemented</td>\n<td>The method requested has not been implemented.</td>\n</tr>\n<tr>\n<td>503 Service Unavailable</td>\n<td>The server is temporarily overloading. Retry with a backoff strategy and contact Agora for assistance with troubleshooting.The server is temporarily down. Retry with a backoff strategy.</td>\n</tr>\n<tr>\n<td>504 Gateway Timeout</td>\n<td>Gateway timeout. Check whether the resource is created; if not, re-create a new resource.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"consideration\"><a href=\"https://docs.agora.io/en/media-push/develop/restful-api#consideration\">Consideration​</a></h2>\n<p>This section summarizes the most important considerations for using the Media Push RESTful API.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Note</th>\n<th>Influence level</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Please make sure that the Agora channel scene is live.</td>\n<td>★★★☆☆</td>\n</tr>\n<tr>\n<td>If you need only one Converter in a channel, you must use the <code>name</code> parameter. See the <code>name</code> parameter explanation for details.</td>\n<td>★★★☆☆</td>\n</tr>\n<tr>\n<td>Please ensure that the region you set is the same region as where your CDN originates is located. For details, see the description of <code>region</code>.</td>\n<td>★★★★★</td>\n</tr>\n<tr>\n<td>If a Converter is automatically destroyed due to service failures (or other reasons), Agora recommends that you create a new Converter.</td>\n<td>★★★★★</td>\n</tr>\n<tr>\n<td>After creating a Converter, if the CDN side pulls the stream abnormally, Agora recommends that you <code>Delete</code> that Converter and create a new Converter.</td>\n<td>★★★★★</td>\n</tr>\n<tr>\n<td>Please make sure that the <code>sequence</code> value is incremented when you <code>Update</code> the same Converter multiple times. Please refer to the <code>sequence</code> parameter explanation for details.</td>\n<td>★★★★★</td>\n</tr>\n<tr>\n<td>When there is an error in the request, please be sure to print out the <code>X-Request-ID</code> and <code>X-Resource-ID</code> field values of the response header in the log to facilitate troubleshooting.</td>\n<td>★★★☆☆</td>\n</tr>\n</tbody>\n</table>\n</div><p><a href=\"https://docs.agora.io/en/Interactive%20Broadcast/streaming_product?platform=RESTful\">https://docs.agora.io/en/Interactive%20Broadcast/streaming_product?platform=RESTful</a></p>\n","_postman_id":"685c918a-d7fa-4556-b07f-93d6f72d60c3","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":true,"source":{"_postman_id":"d7da7175-1801-46b9-8ee4-e5c9e3010da3","id":"d7da7175-1801-46b9-8ee4-e5c9e3010da3","name":"Agora RESTful APIs","type":"collection"}}},{"name":"Media Pull","item":[{"name":"Create","event":[{"listen":"prerequest","script":{"id":"766d2fff-e2b0-4bb9-ba60-1d944e721b43","exec":[""],"type":"text/javascript","packages":{}}},{"listen":"test","script":{"id":"1f67345a-d845-4db6-bb1b-19d194aaca72","exec":["var jsonData = pm.response.json();\r","var playerId = jsonData.player.id;\r","console.log(playerId);\r","pm.collectionVariables.set(\"id\", playerId);"],"type":"text/javascript","packages":{}}}],"id":"a8a7547d-cdf7-4164-b7d6-f2263f2c676f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":false},"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"player\": {\r\n        \"streamUrl\": \"{{InjectUrl}}\",\r\n        \"channelName\": \"{{AccessChannel}}\",\r\n        \"token\": \"\",\r\n        \"uid\": {{CloudPlayerUID}},\r\n        // \"account\": \"{{CloudPlayerStringUid}}\"\r\n        \"idleTimeout\": 300,\r\n        \"name\": \"test\"\r\n    }\r\n}"},"url":"https://api.agora.io/{{region}}/v1/projects/{{APPID}}/cloud-player/players","urlObject":{"protocol":"https","path":["{{region}}","v1","projects","{{APPID}}","cloud-player","players"],"host":["api","agora","io"],"query":[],"variable":[]}},"response":[],"_postman_id":"a8a7547d-cdf7-4164-b7d6-f2263f2c676f"},{"name":"Delete","event":[{"listen":"test","script":{"id":"81356c17-6430-4fbc-90de-b97881e0927c","exec":[""],"type":"text/javascript"}}],"id":"b6386a17-9a34-4fa5-81cb-7feec49b6b3c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":false},"method":"DELETE","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":"https://api.agora.io/{{region}}/v1/projects/{{APPID}}/cloud-player/players/{{id}}","urlObject":{"protocol":"https","path":["{{region}}","v1","projects","{{APPID}}","cloud-player","players","{{id}}"],"host":["api","agora","io"],"query":[],"variable":[]}},"response":[],"_postman_id":"b6386a17-9a34-4fa5-81cb-7feec49b6b3c"},{"name":"List","id":"aea1286d-1ebe-4181-8c0e-6e7c57b085fb","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":false},"method":"GET","header":[],"url":"https://api.agora.io/v1/projects/{{APPID}}/cloud-player/players?Content-Type=application/json","urlObject":{"protocol":"https","path":["v1","projects","{{APPID}}","cloud-player","players"],"host":["api","agora","io"],"query":[{"key":"Content-Type","value":"application/json"}],"variable":[]}},"response":[],"_postman_id":"aea1286d-1ebe-4181-8c0e-6e7c57b085fb"}],"id":"66a79ef6-5286-49de-86e2-13400aa744c4","description":"<h1 id=\"documentation\"><strong>Documentation</strong></h1>\n<p><strong>The RESTful API for Media Pull</strong> enables you to inject an online media stream into the Agora channel as a live video source. After the injection succeeds, the online media stream automatically plays in the Agora channel, and remote users can see the content of the media stream.</p>\n<h2 id=\"working-principle\"><a href=\"https://docs.agora.io/en/media-pull/reference/restful-api#working-principle\">Working principle​</a></h2>\n<p>Injecting an online media stream into the Agora channel creates a Media Pull task (shown as \"cloud player\" in the rest of the article) in the Agora channel. You can control the cloud player through the RESTful API and accomplish the following functions for Media Pull:</p>\n<ul>\n<li><code>Create</code>: Creates a cloud player in the project.</li>\n<li><code>Delete</code>: Destroys the cloud player in the project.</li>\n<li><code>List</code>: Queries and lists all the cloud players in the project.</li>\n</ul>\n<p>Media Pull supports the following formats:</p>\n<ul>\n<li>Video codec formats: H.264, H.265, and VP8</li>\n<li>Audio codec formats: AAC and OPUS</li>\n<li>Protocols: HTTP, HTTPS, and RTMP</li>\n<li>Container formats: FLV, MP4, MPEG-TS, Matroska (MKV), and HLS</li>\n</ul>\n<h2 id=\"authentication\"><a href=\"https://docs.agora.io/en/media-pull/reference/restful-api#authentication\">Authentication​</a></h2>\n<p>The RESTful APIs require basic HTTP authentication. You need to set the <code>Authorization</code> parameter in every HTTP request header. For how to get the value for Authorization, see <a href=\"https://docs.agora.io/en/media-pull/reference/restful-authentication\">RESTful API authentication</a>.</p>\n<h2 id=\"create-api\"><a href=\"https://docs.agora.io/en/media-pull/reference/restful-api#create-api\">Create API​</a></h2>\n<p>This API creates a cloud player in the project.</p>\n<h3 id=\"http-request\"><a href=\"https://docs.agora.io/en/media-pull/reference/restful-api#http-request\">HTTP request​</a></h3>\n<p><code>POST https://api.agora.io/{region}/v1/projects/{appId}/cloud-player/players   </code></p>\n<h4 id=\"path-parameters\"><a href=\"https://docs.agora.io/en/media-pull/reference/restful-api#path-parameters\">Path parameters​</a></h4>\n<ul>\n<li><code>appId</code>: (Required) String. Agora provides the <a href=\"https://docs.agora.io/en/media-pull/reference/glossary#app-id\">App ID</a> when you create a <strong>project</strong> in Agora Console. The App ID identifies each project.</li>\n<li><code>region</code>: (Required) String. The region that the cloud player was created in. Agora supports the creation of cloud players in different regions. Currently, it supports four regions:</li>\n<li><code>cn</code>: China Mainland</li>\n<li><code>ap</code>: Asia Pacific</li>\n<li><code>na</code>: North America</li>\n<li><code>eu</code>: EuropePlease ensure that the region you set is the same region as where your media stream originates is located.</li>\n</ul>\n<h4 id=\"query-parameters\"><a href=\"https://docs.agora.io/en/media-pull/reference/restful-api#query-parameters\">Query parameters​</a></h4>\n<p>A sample request URL when using query parameters:</p>\n<p><code>https://api.agora.io/{region}/v1/projects/{appId}/cloud-player/players?streamIp={streamIp}   </code></p>\n<p><code>streamIp</code>: (Optional) String. The IP address of the media stream's origin server. Must be a valid IPv4 address. Use this parameter to ensure the transmission quality of the media stream when the media stream is only available in some regions. Otherwise, ignore this parameter.</p>\n<h4 id=\"request-header\"><a href=\"https://docs.agora.io/en/media-pull/reference/restful-api#request-header\">Request header​</a></h4>\n<p>The request header contains the following fields:</p>\n<ul>\n<li><code>Content-Type</code>: <code>application/json</code></li>\n<li><code>Authorization</code>: See <a href=\"https://docs.agora.io/en/media-pull/reference/restful-authentication\">Authentication instructions</a>.</li>\n<li>Agora recommends using this field. If you do not pass in any value, Agora's server automatically generates a UUID to pass in.</li>\n</ul>\n<h4 id=\"request-body\"><a href=\"https://docs.agora.io/en/media-pull/reference/restful-api#request-body\">Request body​</a></h4>\n<p>If the status code is 2XX, the request succeeds. The response body is a JSON Object called <code>player</code>, containing the following fields:</p>\n<blockquote>\n<ul>\n<li>You must set the cloud player's username, which can be Number type or String type. Otherwise, the cloud player cannot be created, and Agora's server returns the <code>400(Bad Request)</code> status code. Ensure that you have read <a href=\"https://docs.agora.io/en/help/integration-issues/string\">How can I use a username in string type?</a> when using a username in String type.</li>\n<li>To avoid the failed request, do not pass <code>null</code> or <code>\"\"</code> in the required fields.</li>\n</ul>\n</blockquote>\n<ul>\n<li><code>audioOptions</code>: (Optional) JSON Object. The audio transcoding configuration of the cloud player. Setting this field to empty or not set means that the audio is not transcoded.</li>\n<li><code>Profile</code>：Number. Audio profile. Sets the audio profile sample rate, bitrate, encoding mode, and the number of channels.<ul>\n<li><code>0</code>: Default audio profile.<ul>\n<li>In the communication profile, the default audio profile represents a sample rate of 32 kHz, audio encoding, mono, and a bitrate of up to 18 Kbps.</li>\n<li>In the live broadcasting profile, the default audio profile represents a sample rate of 48 kHz, music encoding, mono, and a bitrate of up to 64 Kbps.</li>\n</ul>\n</li>\n<li><code>1</code>: SPEECH_STANDARD. A sample rate of 32 kHz, audio encoding, mono, and a bitrate of up to 18 Kbps.</li>\n<li><code>2</code>: MUSIC_STANDARD. A sample rate of 48 kHz, music encoding, mono, and a bitrate of up to 64 Kbps.</li>\n<li><code>3</code>: MUSIC_STANDARD_STEREO. A sample rate of 48 kHz, music encoding, stereo, and a bitrate of up to 80 Kbps.</li>\n<li><code>4</code>: MUSIC_HIGH_QUALITY. A sample rate of 48 kHz, music encoding, mono, and a bitrate of up to 96 Kbps.</li>\n<li><code>5</code>: MUSIC_HIGH_QUALITY_STEREO. A sample rate of 48 kHz, music encoding, stereo, and a bitrate of up to 128 Kbps.</li>\n</ul>\n</li>\n<li><code>videoOptions</code>: (Optional) JSON Object. The video transcoding configuration of the cloud player. Setting this field to empty or not set means that the video is not transcoded.</li>\n<li><code>width</code>: Number. The width (px) of the output video. The value range is [66,1920].</li>\n<li><code>height</code>: Number. The height (px) of the output video. The value range is [66,1080].</li>\n<li><code>widthHeightAdaption</code>: Bool. Whether to enable horizontal and vertical screen adaptive mode:<ul>\n<li><code>true</code>: Enable portrait and landscape adaptive mode. After you enable the adaptive mode, if the source media stream is in landscape mode, the output video width and height are 1280 × 720; if the source media stream is in portrait mode, the output video width and height are 720 × 1280.</li>\n<li><code>false</code>: (Default) Do not enable portrait and landscape adaptive mode.</li>\n</ul>\n</li>\n<li><code>frameRate</code>: The frameRate (fps) of the output video. The value range is [1,30]. The default value is 15. For details, see <a href=\"https://docs.agora.io/en/cloud-recording/develop/recording-video-profile#video-profile-table\">Video profile table</a>.</li>\n<li><code>bitrate</code>: Number. The bitrate (Kbps) of the output video. The value range is [1,10000]. For details, see <a href=\"https://docs.agora.io/en/cloud-recording/develop/recording-video-profile#video-profile-table\">Video profile table</a>.</li>\n<li><code>codec</code>: String type. The encoding format of the output video. The following settings are supported:<ul>\n<li>VP8: Standard VP8.</li>\n<li>H.264: (Default) Standard H.264. If set to other value, the default is H.264 video encoding format.</li>\n</ul>\n</li>\n<li><code>fillMode</code>: String. The fill mode of the output video:<ul>\n<li><code>fit</code>: (Default) Scales the video proportionally until it is fully displayed in the viewport.</li>\n<li><code>fill</code>: Scales the video proportionally until it fills the viewport.</li>\n</ul>\n</li>\n<li><code>streamUrl</code>: (Required) String. The RTMP/HTTP/HTTPS URL of the online media stream. The maximum length of this field is 1024 bytes.</li>\n</ul>\n<blockquote>\n<p>To injetct an image to the Agora channel, set <code>streamUrl</code> to the URL of the image you want to inject, and the cloud player will convert the image to a video and inject it to the Agora channel. Images in JPEG and PNG formats are currently supported. You can set video transcoding parameters through <code>videoOptions</code>.</p>\n</blockquote>\n<ul>\n<li><p><code>channelName</code>: (Required) String. The channel name. The maximum length of this field is 64 bytes. Supported character scopes are:</p>\n<ul>\n<li>All lowercase English letters: a to z.</li>\n<li>All uppercase English letters: A to Z.</li>\n<li>All numeric characters: 0 to 9.</li>\n<li>The space character.</li>\n<li>Punctuation characters and other symbols, including: \"!\", \"#\", \"$\", \"%\", \"&amp;\", \"(\", \")\", \"+\", \"-\", \":\", \";\", \"&lt;\", \"=\", \".\", \"&gt;\", \"?\", \"@\", \"[\", \"]\", \"^\", \"_\", \" , \", \"|\", \"~\", \",\".</li>\n</ul>\n</li>\n<li><p>Ensure that the value is different from any other User IDs of other users and players in the channel.</p>\n</li>\n<li><p>Ensure that the value is different from any other User Accounts of other users and players in the channel.</p>\n<ul>\n<li>All lowercase English letters: a to z.</li>\n<li>All uppercase English letters: A to Z.</li>\n<li>All numeric characters: 0 to 9.</li>\n<li>The space character.</li>\n<li>Punctuation characters and other symbols, including: \"!\", \"#\", \"$\", \"%\", \"&amp;\", \"(\", \")\", \"+\", \"-\", \":\", \";\", \"&lt;\", \"=\", \".\", \"&gt;\", \"?\", \"@\", \"[\", \"]\", \"^\", \"_\", \" , \", \"|\", \"~\", \",\".</li>\n</ul>\n</li>\n<li><p><code>token</code>: (Optional) String. The authentication token used by the cloud player in the channel. If you do not enable the App Certificate in Agora Console, ignore this field. If you enable the App Certificate in Agora Console, you must pass a value in this field:</p>\n<ul>\n<li>For low-security requirements: Use the temporary token generated in Agora Console. For details, see <a href=\"https://docs.agora.io/en/media-pull/reference/manage-your-agora-account#generate-a-temporary-token\">Generate an Video SDK temporary token</a>.</li>\n<li>When generating a token at your server, the value of <code>uid</code> or <code>account</code> must be the same as the User ID or User Account of the cloud player, and <code>privilegeExpiredTs</code> is recommended to be <code>0</code> to ensure that the token is valid for 24 hours at most.</li>\n</ul>\n</li>\n<li><p><code>idleTimeout</code>: (Optional) Number. The maximum length of time (in seconds) that the cloud player is idle. The \"idle\" state means that the media stream is not playing. When the idle state exceeds <code>idleTimeout</code>, the cloud player is automatically destroyed. The value ranges from 5 to 600. The default value is 300. If the value is less than 5, Agora's server automatically adjusts it to 5; if the value is greater than 600, Agora's server automatically adjusts it to 600.</p>\n</li>\n<li><p><code>playTs</code>: (Optional) Number. The Unix timestamp (in seconds) when the cloud player starts playing the online media stream. The value range of playTs is [<code>createTs</code>-86400, <code>createTs</code>+300]. The default value is 0, which means the cloud player starts playing the online media stream when the cloud player is successfully created. If the value of <code>playTs</code> is not <code>0</code>, the following behavior occurs:</p>\n</li>\n<li><p><code>playTs</code> &gt; <code>createTs</code>: The cloud player starts playing the online media stream when the time is <code>playTs</code>. This is suitable for timing playback with other elements.</p>\n</li>\n<li><p><code>playTs</code> &lt; <code>createTs</code>: If the online media stream is a live stream, the cloud player starts playing the live stream when the cloud player is successfully created. If the online media stream is an on-demand stream, the cloud player starts playing the online media stream at the specified time in the stream prior to the creation of the cloud player. This is suitable for error recovery. For example, if the cloud player experiences an error during operation, you can create a new cloud player and set the <code>playTs</code> field of new cloud player to the unix timestamp when the old cloud player started to play the online media stream.</p>\n</li>\n<li><p>To avoid repeatedly creating multiple cloud players to inject the same online media stream into the same channel, use the <code>name</code> parameter to manage all the cloud players in your specified project. Agora recommends that you pass a value in <code>name</code> using a combination of the channel name (<code>channelName</code>) and the username (<code>uid</code> or <code>account</code>) of the cloud player, such as <code>class32_101</code> and <code>class33_teacher101</code> in the sample code.</p>\n<ul>\n<li>All lowercase English letters: a to z.</li>\n<li>All uppercase English letters: A to Z.</li>\n<li>All numeric characters: 0 to 9.</li>\n<li>\"-\", \"_\". <code>name</code> is null if you do not pass any value. Multiple cloud players using null name parameters can exist in one project at the same time; multiple cloud players with the same name cannot exist in one project at the same time. When trying to create a cloud player with the same name as an existing cloud player in the project, you will receive the <code>409(Conflict)</code> status code.</li>\n</ul>\n</li>\n<li><p><code>encryptMode</code>: (Optional) String. Encryption mode. Agora recommends using either the <code>aes-128-gcm2</code> or <code>aes-256-gcm2</code> encryption mode, both of which support adding a salt and are more secure.</p>\n</li>\n<li><p><code>aes-128-xts</code>: 128-bit AES encryption, XTS mode.</p>\n</li>\n<li><p><code>aes-256-xts</code>: 256-bit AES encryption, XTS mode.</p>\n</li>\n<li><p><code>aes-128-ecb</code>: 128-bit AES encryption, ECB mode.</p>\n</li>\n<li><p><code>sm4-128-ecb</code>: 128-bit SM4 encryption, ECB mode.</p>\n</li>\n<li><p><code>aes-128-gcm</code>: 128-bit AES encryption, GCM mode.</p>\n</li>\n<li><p><code>aes-256-gcm</code>: 256-bit AES encryption, GCM mode.</p>\n</li>\n<li><p><code>aes-128-gcm2</code>: 128-bit AES encryption, GCM mode. Compared to <code>aes-128-gcm</code> encryption mode, <code>aes-128-gcm2</code> encryption mode is more secure and requires you to set the salt (<code>encryptKdfSalt</code>).</p>\n</li>\n<li><p><code>aes-256-gcm2</code>: 256-bit AES encryption, GCM mode. Compared to <code>aes-256-gcm</code> encryption mode, <code>aes-256-gcm2</code> encryption mode is more secure and requires you to set the salt (<code>encryptKdfSalt</code>).</p>\n</li>\n<li><p><code>encryptKey</code>: (Optional) String. Encryption key with unlimited length. Agora recommends using a 32-byte key.If you do not set an encryption key or set it as null, you cannot use the built-in encryption.</p>\n</li>\n<li><p><code>encryptKdfSalt</code>: (Optional) String. The salt with the length of 32 bytes. Agora recommends using OpenSSL to generate the salt on your server. For details, see <a href=\"https://docs.agora.io/en/interactive-live-streaming/develop/media-stream-encryption\">Media Stream Encryption</a>.This parameter is only valid when you set the encryption mode as aes-128-gcm2 or aes-256-gcm2. In this case, ensure that this parameter is not 0.</p>\n</li>\n<li><p><code>repeatTime</code>: (Optional) Int. Number of media streams played. This parameter applies only to on-demand streams. It can be set to:</p>\n</li>\n<li><p><code>1</code>: (Default) Plays a media resource once.</p>\n</li>\n<li><p><code>-1</code>: Plays media resources in a loop.</p>\n</li>\n<li><p><code>N</code>: User-defined number of media resources to be played. It is an integer and cannot be set to <code>0</code>.</p>\n</li>\n<li><p><code>seekPosition</code>: (Optional) Number. Specifies the playback position (seconds) of the on-demand file. The default value is 0, which means play from the beginning of the on-demand file. It must be less than the media resource duration.</p>\n</li>\n<li><p>dataStreamOptions: (Optional) JSON Object. The data stream configuration, which is used to set the SEI information carried by the video frame. This parameter applies only to on-demand streams.</p>\n</li>\n<li><p><code>enable</code>: Set whether to inject the SEI information of Agora DataStream type.</p>\n<ul>\n<li><code>true</code>: Inject the SEI information of Agora DataStream type.</li>\n<li><code>false</code>: (Default) Do not inject the SEI information of Agora DataStream type. Agora DataStream is a data stream format of JSON type, the example is as follows:<code>1message PositionData {   2 # The length of the on-demand file   3int32 duration = 1;   4 # The playback position of the on-demand file   5int32 position = 2;   6 # The user ID of the host playing the on-demand file   7int32 uid = 3;   8}   </code></li>\n</ul>\n</li>\n</ul>\n<h3 id=\"http-response\"><a href=\"https://docs.agora.io/en/media-pull/reference/restful-api#http-response\">HTTP response​</a></h3>\n<p>For all possible response status codes, see <a href=\"https://docs.agora.io/en/media-pull/reference/restful-api#code\">Status codes</a>.</p>\n<h4 id=\"response-header\"><a href=\"https://docs.agora.io/en/media-pull/reference/restful-api#response-header\">Response header​</a></h4>\n<p>The response header contains the following fields:</p>\n<ul>\n<li><code>X-Request-ID</code>: UUID (Universally Unique Identifier) to identify this request. It is the same as the <code>X-Request-ID</code> field in the request header. If the request fails, print out this value in the log for troubleshooting.</li>\n</ul>\n<blockquote>\n<p>If you receive the <code>401(Unauthorized)</code> status code for this request, the response header does not contain the field.</p>\n</blockquote>\n<ul>\n<li><code>X-Resource-ID</code>: UUID (Universally Unique Identifier) to identify the cloud player created by this request:<ul>\n<li>When the status code is 2XX, this value is the ID of the cloud player created by this request.</li>\n<li>When the status code is <code>409(Conflict)</code>, the name of the cloud player created by this request is duplicate with the name of other existing players in the project. This value is the ID of that existing player. Please check and modify the name of the cloud player created by this request.</li>\n<li>When the status code is another value, this field is null and this request fails.</li>\n</ul>\n</li>\n</ul>\n<h4 id=\"response-body\"><a href=\"https://docs.agora.io/en/media-pull/reference/restful-api#response-body\">Response body​</a></h4>\n<p>If the status code is 2XX, the request succeeds. The response body contains the following fields:</p>\n<ul>\n<li><code>player</code>: JSON Object. Contains the following fields:<ul>\n<li><code>uid</code>: Number. The User ID of the cloud player in the channel.</li>\n<li><code>account</code>: String. The User Account of the cloud player in the channel.</li>\n<li><code>id</code>: String. The ID of the cloud player. It is a UUID (Universally Unique Identifier) generated by Agora's server to identify the ID of the cloud player created.</li>\n<li><code>createTs</code>: Number. The Unix timestamp (in seconds) when creating the cloud player.</li>\n<li><code>status</code>: String. The state of the cloud player at runtime:<ul>\n<li><code>\"idle\"</code>: The playback is not started.</li>\n<li><code>\"connecting\"</code>: Agora's server is connecting to the address of the media stream or detecting the audio and video data.</li>\n<li><code>\"running\"</code>: Playing.</li>\n<li><code>\"failed\"</code>: Agora's server cannot connect to the address of the media stream, or the media stream cannot be played.</li>\n</ul>\n</li>\n<li><code>fields</code>: String. The field mask to represent a set of symbolic field paths. The field mask is encoded as a single string where paths are separated by a comma. It specifies a subset of fields that should be returned by this request. In the sample code using <code>uid</code>, <code>fields</code> specifies that Agora's server returns the <code>uid</code>, <code>id</code>, <code>createTs</code>, and <code>status</code> fields. For details, see <a href=\"https://googleapis.dev/nodejs/pubsub/latest/google.protobuf.html#.FieldMask\">Google protobuf FieldMask</a>.</li>\n</ul>\n</li>\n</ul>\n<p>If the status code is not 2XX, the request fails. The response body contains the <code>message</code> field, which describes the detailed reason for the failure.</p>\n<h3 id=\"request-example\"><a href=\"https://docs.agora.io/en/media-pull/reference/restful-api#request-example\">Request example​</a></h3>\n<p><strong>Media Pull without transcoding</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"player\": {\n    \"streamUrl\": \"rtmp://example.agora.io/live/class32/101\",\n    \"channelName\": \"class32\",\n    \"token\": \"2a784467d6\",\n    \"uid\": 101,\n    \"idleTimeout\": 300,\n    \"playTs\": 1575508644,\n    \"name\": \"test\"\n    }\n}\n\n</code></pre>\n<p><strong>Media Pull with transcoding</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"player\": {\n        \"audioOptions\": {\n            \"profile\": 1\n        },\n        \"videoOptions\": {\n            \"width\": 1920,\n            \"height\": 1080,\n            \"frameRate\": 15,\n            \"bitrate\": 400,\n            \"codec\": \"VP8\",\n            \"gop\": 30,\n            \"fillMode\": \"fill\"\n        },\n    \"streamUrl\": \"rtmp://example.agora.io/live/class32/101\",\n    \"channelName\": \"class32\",\n    \"token\": \"2a784467d6\",\n    \"uid\": 101,\n    \"idleTimeout\": 300,\n    \"playTs\": 1575508644,\n    \"name\": \"test\"\n    }\n}\n\n</code></pre>\n<h3 id=\"response-example\"><a href=\"https://docs.agora.io/en/media-pull/reference/restful-api#response-example\">Response example​</a></h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"player\": {\n        \"uid\": 101,\n        \"id\": \"2a784467d647bb87b60b719f6fa56317\",\n        \"createTs\": 1575508644,\n        \"status\": \"running\"\n    },\n    \"fields\": \"player.uid,player.id,player.createTs,player.status\"\n}\n\n</code></pre>\n<h2 id=\"delete-api\"><a href=\"https://docs.agora.io/en/media-pull/reference/restful-api#delete-api\">Delete API​</a></h2>\n<p>This API destroys the cloud player in the project.</p>\n<h3 id=\"http-request-1\"><a href=\"https://docs.agora.io/en/media-pull/reference/restful-api#http-request-1\">HTTP request​</a></h3>\n<p><code>DELETE https://api.agora.io/{region}/v1/projects/{appId}/cloud-player/players/{id}</code></p>\n<h4 id=\"path-parameters-1\"><a href=\"https://docs.agora.io/en/media-pull/reference/restful-api#path-parameters-1\">Path parameters​</a></h4>\n<ul>\n<li><code>appId</code>: (Required) String. Agora provides the <a href=\"https://docs.agora.io/en/media-pull/reference/glossary#app-id\">App ID</a> when you create a <strong>project</strong> in Agora Console. The App ID identifies each project.</li>\n<li><code>id</code>: (Required) String. The ID of the cloud player.</li>\n<li><code>region</code>: (Required) String. The <code>region</code> where the Player is created in.</li>\n</ul>\n<h4 id=\"request-header-1\"><a href=\"https://docs.agora.io/en/media-pull/reference/restful-api#request-header-1\">Request header​</a></h4>\n<ul>\n<li><code>Authorization</code>: See <a href=\"https://docs.agora.io/en/media-pull/reference/restful-api#authentication\">Authentication</a>.</li>\n<li>Agora recommends using this field. If you do not pass in any value, Agora's server automatically generates a UUID to pass in.</li>\n</ul>\n<h3 id=\"http-response-1\"><a href=\"https://docs.agora.io/en/media-pull/reference/restful-api#http-response-1\">HTTP response​</a></h3>\n<p>For all possible response status codes, see <a href=\"https://docs.agora.io/en/media-pull/reference/restful-api#code\">Status codes</a>.</p>\n<h4 id=\"response-header-1\"><a href=\"https://docs.agora.io/en/media-pull/reference/restful-api#response-header-1\">Response header​</a></h4>\n<p>The response header contains the following fields:</p>\n<ul>\n<li><code>X-Request-ID</code>: UUID (Universally Unique Identifier) to identify this request. It is the same as the <code>X-Request-ID</code> field in the request header. If the request fails, print out this value in the log for troubleshooting.</li>\n</ul>\n<blockquote>\n<p>If you receive the <code>401(Unauthorized)</code> status code for this request, the response header does not contain the field.</p>\n</blockquote>\n<ul>\n<li><code>X-Resource-ID</code>: UUID (Universally Unique Identifier) to identify the ID of the cloud player created by this request. The UUID is the same as the value in the <code>id</code> path parameter.</li>\n</ul>\n<h4 id=\"response-body-1\"><a href=\"https://docs.agora.io/en/media-pull/reference/restful-api#response-body-1\">Response body​</a></h4>\n<ul>\n<li>If the status code is 2XX, the request succeeds. The response body is empty.</li>\n<li>If the status code is not 2XX, the request fails. The response body contains the <code>message</code> field, which describes the detailed reason for the failure.</li>\n</ul>\n<h2 id=\"list-api\"><a href=\"https://docs.agora.io/en/media-pull/reference/restful-api#list-api\">List API​</a></h2>\n<p>This API queries and lists all the cloud players in the project.</p>\n<h3 id=\"http-request-2\"><a href=\"https://docs.agora.io/en/media-pull/reference/restful-api#http-request-2\">HTTP request​</a></h3>\n<p><code>GET https://api.agora.io/v1/projects/{appId}/cloud-player/players</code></p>\n<h4 id=\"path-parameters-2\"><a href=\"https://docs.agora.io/en/media-pull/reference/restful-api#path-parameters-2\">Path parameters​</a></h4>\n<p><code>appId</code>: (Required) String. Agora provides the <a href=\"https://docs.agora.io/en/media-pull/reference/glossary#app=id\">App ID</a> when you create a <strong>project</strong> in Agora Console. The App ID identifies each project.</p>\n<h4 id=\"query-parameters-1\"><a href=\"https://docs.agora.io/en/media-pull/reference/restful-api#query-parameters-1\">Query parameters​</a></h4>\n<p>A sample request URL when using query parameters:</p>\n<p><code>https://api.agora.io/v1/projects/{appId}/cloud-player/players?filter={filter}&amp;pageSize={pageSize}&amp;pageToken={pageToken}</code></p>\n<ul>\n<li>Spaces exist before and after <code>eq</code> and require URL encoding.Assuming the channel name is <code>class32</code>, replace <code>filter={filter}</code> in the sample request URL with <code>filter=channelName eq class32</code>; Assuming the channel name is <code>bigclass</code>, replace <code>filter={filter}</code> in the sample request URL with <code>filter=channelName eq bigclass</code>.</li>\n<li><code>pageSize</code>: (Optional) Number. The maximum number of cloud players to return on one page. The value ranges from 1 to 500. The default value is 200, which means that for a single page, Agora's server lists up to 200 cloud players if you do not pass in any value.</li>\n<li>Recommended usage: When using the <code>List</code> API for the first time, do not pass any value in the <code>pageToken</code> query parameter. You can get the query results of the first page and the value of the <code>nextPageToken</code> field. The next time you use the <code>List</code> API, pass this value in the <code>pageToken</code> query parameter to query the cloud players on the next page.</li>\n</ul>\n<p>After using the above parameters, Agora's server queries and lists the cloud players according to the following steps:</p>\n<ol>\n<li>Query the cloud players that meet the filter criteria in the specified project.</li>\n<li>Set the space size of each page.</li>\n<li>List the cloud players in the specified page.</li>\n</ol>\n<blockquote>\n<p>Agora's server lists the cloud players in ascending order by <code>createTs</code>.</p>\n</blockquote>\n<h4 id=\"request-header-2\"><a href=\"https://docs.agora.io/en/media-pull/reference/restful-api#request-header-2\">Request header​</a></h4>\n<p>The request header contains the following fields:</p>\n<ul>\n<li><code>Authorization</code>: See <a href=\"https://docs.agora.io/en/media-pull/reference/restful-authentication\">Authentication</a>.</li>\n<li>Agora recommends using this field. If you do not pass in any value, Agora's server automatically generates a UUID to pass in.</li>\n</ul>\n<h3 id=\"http-response-2\"><a href=\"https://docs.agora.io/en/media-pull/reference/restful-api#http-response-2\">HTTP response​</a></h3>\n<p>For all possible response status codes, see <a href=\"https://docs.agora.io/en/media-pull/reference/restful-api#code\">Status codes</a>.</p>\n<h4 id=\"response-header-2\"><a href=\"https://docs.agora.io/en/media-pull/reference/restful-api#response-header-2\">Response header​</a></h4>\n<ul>\n<li>If you receive the <code>401(Unauthorized)</code> status code for this request, the response header does not contain the field.</li>\n</ul>\n<h4 id=\"response-body-2\"><a href=\"https://docs.agora.io/en/media-pull/reference/restful-api#response-body-2\">Response body​</a></h4>\n<p>If the status code is 2XX, the request succeeds. The response body contains the following fields:</p>\n<ul>\n<li><code>totalSize</code>: Number. The number of cloud players that meet the filter criteria.</li>\n<li><code>players</code>: JSON Array. Contains the following fields:<ul>\n<li><code>name</code>: String. The name of the cloud player.</li>\n<li><code>streamUrl</code>: String. The RTMP/HTTP/HTTPS URL of the online media stream.</li>\n<li><code>channelName</code>: String. The name of the Agora channel.</li>\n<li><code>uid</code>: Number. The User ID of the cloud player in the Agora channel.</li>\n<li><code>account</code>: String. The User Account of the cloud player in the Agora channel.</li>\n<li><code>id</code>: String. UUID (Universally Unique Identifier) to identify the cloud player created. It is the ID of the cloud player.</li>\n<li><code>createTs</code>: Number. The Unix timestamp (in seconds) when creating the cloud player.</li>\n<li><code>status</code>: String. The state of the cloud player at runtime:<ul>\n<li><code>\"idle\"</code>: The playback is not started.</li>\n<li><code>\"connecting\"</code>: Agora's server is connecting to the address of the media stream or detecting the audio and video data.</li>\n<li><code>\"running\"</code>: Playing.</li>\n<li><code>\"failed\"</code>: Agora's server cannot connect to the address of the media stream, or the media stream cannot be played.</li>\n</ul>\n</li>\n</ul>\n</li>\n<li><code>fields</code>: String. The field mask to represent a set of symbolic field paths. The field mask is encoded as a single string where paths are separated by a comma. It specifies that Agora's server returns a subset of fields in each player in the <code>players</code> array. In the sample code using <code>uid</code>, <code>fields</code> specifies that Agora's server returns the <code>name</code>, <code>streamUrl</code>, <code>channelName</code>, <code>uid</code>, <code>id</code>, <code>createTs</code>, and <code>status</code> fields in each player in the <code>players</code> array.</li>\n<li><code>nextPageToken</code>: String. The next page number of <code>pageToken</code>. You can pass the value of the <code>nextPageToken</code> field in the <code>pageToken</code> query parameter when using the <code>List</code> API next time. When <code>nextPageToken</code> is an empty string, there are no more players that match the request.</li>\n</ul>\n<p>If the status code is not 2XX, the request fails. The response body contains the <code>message</code> field, which describes the detailed reason for the failure.</p>\n<h3 id=\"response-example-1\"><a href=\"https://docs.agora.io/en/media-pull/reference/restful-api#response-example-1\">Response example​</a></h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"totalSize\": 10,\n    \"players\": [{\n        \"name\": \"class32_101\",\n        \"streamUrl\": \"rtmp://example.agora.io/live/class32/101\",\n        \"channelName\": \"class32\",\n        \"uid\": 101,\n        \"id\": \"2a784467d647bb87b60b719f6fa56317\",\n        \"createTs\": 1575508644,\n        \"status\": \"running\"\n   }, {\n        \"name\": \"class68_422\",\n        \"streamUrl\": \"rtmp://example.agora.io/live/class68/422\",\n        \"channelName\": \"class68\",\n        \"uid\": 422,\n        \"id\": \"0b719f6fa563172a784467d647bb87b6\",\n        \"createTs\": 1575588644,\n        \"status\": \"connecting\"\n   }],\n    \"fields\": \"player.name,player.streamUrl,player.channelName,player.uid,player.id,player.createTs,player.status\",\n    \"nextPageToken\": \"7b60b719f\"\n}\n\n</code></pre>\n<h2 id=\"rate-limits\"><a href=\"https://docs.agora.io/en/media-pull/reference/restful-api#rate-limits\">Rate limits​</a></h2>\n<p>Do not exceed the API rate limits, otherwise you receive the <code>429(Too Many Requests)</code> status code.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>API</th>\n<th>Rate limit</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>Create</code></td>\n<td>- In a project, when creating cloud players with <code>name</code>, the maximum rate of creating each cloud player with a different name is 2 times per second.<br />- In a project, the maximum rate of creating a cloud player without <code>name</code> is 50 times per second.</td>\n</tr>\n<tr>\n<td><code>Delete</code></td>\n<td>In a project, the maximum rate of destroying a cloud player is 100 times per second.</td>\n</tr>\n<tr>\n<td><code>List</code></td>\n<td>- In a project, the maximum rate of querying a cloud player with <code>filter</code>(<code>channelName</code>) is 2 times per second and 15 times per minute.<br />- In a project, the maximum rate of querying a cloud player without <code>filter</code>(<code>channelName</code>) is 10 times per second and 20 times per minute.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"status-codes\"><a href=\"https://docs.agora.io/en/media-pull/reference/restful-api#status-codes\">Status codes​</a></h2>\n<ul>\n<li>If the status code is 2XX, the request succeeds.</li>\n<li>If the status code is not 2XX, the request fails. Use the <code>message</code> field in the response body for troubleshooting.</li>\n</ul>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status code</th>\n<th>Possible message field</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>200 OK</td>\n<td>/</td>\n</tr>\n<tr>\n<td>400 Bad Request</td>\n<td>- Parameter 'streamUrl' is invalid formatted.<br />- Parameter channelName is invalid. Fix it in your request and retry.</td>\n</tr>\n<tr>\n<td>401 Unauthorized</td>\n<td>Invalid authentication credentials.</td>\n</tr>\n<tr>\n<td>403 Forbidden</td>\n<td>- This project has not enabled Cloud Player product yet. Contact us to enable it.<br />- This project's permission to use Cloud Player was revoked. Contact us for details.</td>\n</tr>\n<tr>\n<td>404 Not Found</td>\n<td>Resource is not found and destroyed.</td>\n</tr>\n<tr>\n<td>409 Conflict</td>\n<td>Resource with the same name already exists.</td>\n</tr>\n<tr>\n<td>429 Too Many Requests</td>\n<td>- Request rate limit exceeded.<br />- Resources quota limit exceeded.<br />- no available resources</td>\n</tr>\n<tr>\n<td>500 Unknown</td>\n<td>Some internal error happened. Contact us to help fix it.</td>\n</tr>\n<tr>\n<td>503 Service Unavailable</td>\n<td>- Service overload. Retry with back off strategy, and contact us to help fix it.<br />- Service unavailable temporarily. Retry with back off strategy.</td>\n</tr>\n<tr>\n<td>504 Gateway Timeout</td>\n<td>Gateway timeout. Query to check whether the player has been created, or to create another one instead.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"restful-api-callback-service\"><a href=\"https://docs.agora.io/en/media-pull/reference/restful-api#restful-api-callback-service\">RESTful API callback service​</a></h2>\n<p>After using these RESTful APIs, Agora's notification server sends the callback notification to your server through HTTP or HTTPS request. For details, see <a href=\"https://docs.agora.io/en/media-pull/reference/ncs-events\">Message Notification Service</a>.</p>\n<h2 id=\"considerations\"><a href=\"https://docs.agora.io/en/media-pull/reference/restful-api#considerations\">Considerations​</a></h2>\n<p>This section summarizes some important considerations when using the Media Pull RESTful API.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Item</th>\n<th>Impact</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Ensure that the channel profile is set as <code>LIVE_BROADCASTING</code>.</td>\n<td>★★★☆☆</td>\n</tr>\n<tr>\n<td>If the channel needs only one cloud player, ensure that you have set the <code>name</code> parameter. For details, see the description of <code>name</code>.</td>\n<td>★★★☆☆</td>\n</tr>\n<tr>\n<td>If the channel needs more than one cloud player, ensure that each player has a unique user ID/account. For details, see the description of <code>uid</code> and <code>account</code>.</td>\n<td>★★★★★</td>\n</tr>\n<tr>\n<td>Please ensure that the region you set is the same region as where your media stream originates is located. For details, see the description of <code>region</code>.</td>\n<td>★★★★★</td>\n</tr>\n<tr>\n<td>The cloud player may be deleted automatically due to server errors. Agora recommends that you enable the Message Notification Service to listen for events of Media Pull. For details, see the <a href=\"https://docs.agora.io/en/media-pull/reference/enable-ncs/\">Media Pull Message Notification Server</a>.</td>\n<td>★★★★★</td>\n</tr>\n<tr>\n<td>When using the <code>List</code> API, the <code>players</code> field in the response body might only include <code>id</code>, <code>name</code>, and <code>CreateTs</code>. Ensure that your app logic can handle this situation.</td>\n<td>★★★★★</td>\n</tr>\n<tr>\n<td>If using the <code>Create</code> or <code>Delete</code> API results in a status code of <code>504 Gateway Timeout</code>, call the <code>List</code> API to query the actual state of the cloud player to make sure an unmanaged cloud player does not exist.</td>\n<td>★★★☆☆</td>\n</tr>\n<tr>\n<td>If your request fails, ensure that you print out the <code>X-Request-ID</code> and <code>X-Resource-ID</code> fields in the response header in the log for later use in troubleshooting.</td>\n<td>★★★☆☆</td>\n</tr>\n<tr>\n<td>After creating a cloud player and receiving a response message, you need to wait about 10 seconds before using the <code>List</code> method to query, otherwise you may not get any information.</td>\n<td>★★★☆☆</td>\n</tr>\n<tr>\n<td>The default maximum number of concurrent tasks is 50, which means that a maximum of 50 Media Pull tasks are allowed to run simultaneously for each project. You can contact <a href=\"mailto:sales@agora.io\">sales@agora.io</a> to get a higher quota.</td>\n<td>★★★★☆</td>\n</tr>\n</tbody>\n</table>\n</div><p>This collection is the Agora Media PushI Stream RESTful API collection. (previously Media Inject, Cloud Player)</p>\n<p><a href=\"https://docs.agora.io/en/Interactive%20Broadcast/inject_stream_restful_overview?platform=RESTful\">https://docs.agora.io/en/Interactive%20Broadcast/inject_stream_restful_overview?platform=RESTful</a></p>\n","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":false},"event":[{"listen":"prerequest","script":{"id":"754a6adc-e068-4f54-a8f1-c2218cf1b2c4","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"7bba98fa-9da0-4107-ad89-730f2b391e32","type":"text/javascript","exec":[""]}}],"_postman_id":"66a79ef6-5286-49de-86e2-13400aa744c4"},{"name":"IoT License Activation","item":[{"name":"activate","event":[{"listen":"test","script":{"id":"4ca1583a-f6b7-4711-87d2-389afc46dfc1","exec":["pm.test(\"Status code is 200\", function () {\r","    pm.response.to.have.status(200);\r","});"],"type":"text/javascript"}}],"id":"6ddb96e8-f053-400c-898a-8a774d6b33c4","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"url":"https://api.agora.io/dabiz/license/v2/active?pid={{pid}}&licenseKey={{licenseKey}}&appid={{appID}}","description":"<p>After receiving the Agora license, use the <code>activate</code> request for license activation.</p>\n<p><strong>Response parameters</strong></p>\n<p>If the response status code is <code>200</code>, the request is successful, and the response body contains the following parameters:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>license</code></td>\n<td>String</td>\n<td>The value of the active license.</td>\n</tr>\n<tr>\n<td><code>skuView</code></td>\n<td>Array</td>\n<td>SKU capability set:  <br />* <code>product</code> (Integer):  <br />1: Video SDK  <br />2: IoT SDK  <br />3: FPA  <br />  <br />* <code>name</code> (String): The name of the SKU  <br />`mediaType` (Integer):  <br />1: Audio  <br />2: Video  <br />3: Both audio and video  <br />  <br />* <code>minutes</code> (Integer): The maximum duration of the license  <br />  <br />* <code>period</code>  <br />(String): License usage time period  <br /></td>\n</tr>\n</tbody>\n</table>\n</div><p>If the request fails, the status code is not <code>200</code>. Follow the returned status code and the <code>message</code> field in the response body to troubleshoot errors.</p>\n<p><strong>Response example</strong><br />The following is a response example for a successful activation request:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-dart\">{\n   \"code\":200,\n   \"data\":{\n      \"license\":\"1D65xxxxxxxxxxxxxxxxxxxxxxxx6016\",\n      \"skuView\":{\n         \"product\":1,\n         \"name\":\"01\",\n         \"mediaType\":1,\n         \"minutes\":100,\n         \"period\":\"00:00~23:59\"\n      }\n   }\n}\n\n</code></pre>\n","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{customerID}}"},{"key":"password","value":"{{customerSecret}}"}]},"isInherited":true,"source":{"_postman_id":"c8160c19-a234-49fd-a333-7723b7ca53b2","id":"c8160c19-a234-49fd-a333-7723b7ca53b2","name":"IoT License Activation","type":"folder"}},"urlObject":{"protocol":"https","path":["dabiz","license","v2","active"],"host":["api","agora","io"],"query":[{"description":{"content":"<p>The license identification defined by SKU, validity period, and category.</p>\n","type":"text/plain"},"key":"pid","value":"{{pid}}"},{"description":{"content":"<p>The unique ID of the device. For example, the SN number, Mac address, and so on. The string length must be less than 64 bytes.</p>\n","type":"text/plain"},"key":"licenseKey","value":"{{licenseKey}}"},{"description":{"content":"<p>The unique identifier assigned by Agora to your project.</p>\n","type":"text/plain"},"key":"appid","value":"{{appID}}"}],"variable":[]}},"response":[],"_postman_id":"6ddb96e8-f053-400c-898a-8a774d6b33c4"}],"id":"c8160c19-a234-49fd-a333-7723b7ca53b2","description":"<p><strong>Call frequency limit</strong></p>\n<p>For each Agora account (not each App ID), the maximum call frequency of each API on this page is 10 queries per second.</p>\n<p>The activation request requires basic authentication. Use the <code>customerID</code> as the Username, and the <code>customerSecret</code> as the password. You can obtain these parameters from <a href=\"https://console.agora.io/\">Agora Console</a> by clicking on your user name and then selecting <strong>RESTful API</strong> fom the menu.</p>\n","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{customerID}}"},{"key":"password","value":"{{customerSecret}}"}]},"isInherited":false},"event":[{"listen":"prerequest","script":{"id":"aed1b348-742a-4158-8a07-9f969780f3d7","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"fe3af69c-f5cd-430a-a2b4-c311b215be0f","type":"text/javascript","exec":[""]}}],"_postman_id":"c8160c19-a234-49fd-a333-7723b7ca53b2"},{"name":"[Paid] Analytics","item":[{"name":"Call Search","item":[{"name":"List","event":[{"listen":"test","script":{"exec":["var jsonData = JSON.parse(responseBody);","var call_id = jsonData.call_lists[0].call_id;","var created_ts = jsonData.call_lists[0].created_ts;","var destroyed_ts = jsonData.call_lists[0].destroyed_ts;","","pm.collectionVariables.set(\"created_ts\", created_ts);","pm.collectionVariables.set(\"destroyed_ts\", destroyed_ts);","pm.collectionVariables.set(\"call_id\", call_id );","",""],"type":"text/javascript","id":"5739a341-09c2-43d5-8561-4b469a5e7559"}},{"listen":"prerequest","script":{"exec":["// Last 24 hours","pm.collectionVariables.set(\"startTs\", Math.floor(Date.now() / 1000 - 86400));","pm.collectionVariables.set(\"endTs\", Math.floor(Date.now() / 1000 - 60));",""],"type":"text/javascript","id":"c8f71429-03ee-406f-912a-a0debd595e80"}}],"id":"d297d313-c84c-4cee-a75a-8b11a96d5dfc","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":"{{baseUrl}}/beta/analytics/call/lists?start_ts={{startTs}}&end_ts={{endTs}}&appid={{APPID}}","urlObject":{"path":["beta","analytics","call","lists"],"host":["{{baseUrl}}"],"query":[{"key":"start_ts","value":"{{startTs}}"},{"key":"end_ts","value":"{{endTs}}"},{"key":"appid","value":"{{APPID}}"}],"variable":[]}},"response":[],"_postman_id":"d297d313-c84c-4cee-a75a-8b11a96d5dfc"},{"name":"Details","event":[{"listen":"test","script":{"exec":["var jsonData = JSON.parse(responseBody);","var sid = jsonData.call_info[0].sid;","","pm.collectionVariables.set(\"sids\", sid );","",""],"type":"text/javascript","id":"85cfdb7f-d396-441c-a2eb-e4506fef4768"}}],"id":"68c5ae35-f8b1-4f77-aed2-1b9350cea3d6","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":"{{baseUrl}}/beta/analytics/call/sessions?start_ts={{created_ts}}&end_ts={{destroyed_ts}}&appid={{APPID}}&call_id={{call_id}}","urlObject":{"path":["beta","analytics","call","sessions"],"host":["{{baseUrl}}"],"query":[{"key":"start_ts","value":"{{created_ts}}"},{"key":"end_ts","value":"{{destroyed_ts}}"},{"key":"appid","value":"{{APPID}}"},{"key":"call_id","value":"{{call_id}}"}],"variable":[]}},"response":[],"_postman_id":"68c5ae35-f8b1-4f77-aed2-1b9350cea3d6"},{"name":"Quality Metrics","id":"d960de70-ba26-4826-bf16-9f85b3d97778","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":"{{baseUrl}}/beta/analytics/call/metrics?start_ts={{created_ts}}&end_ts={{destroyed_ts}}&appid={{APPID}}&call_id={{call_id}}&sids={{sids}}","urlObject":{"path":["beta","analytics","call","metrics"],"host":["{{baseUrl}}"],"query":[{"key":"start_ts","value":"{{created_ts}}"},{"key":"end_ts","value":"{{destroyed_ts}}"},{"key":"appid","value":"{{APPID}}"},{"key":"call_id","value":"{{call_id}}"},{"key":"sids","value":"{{sids}}"}],"variable":[]}},"response":[],"_postman_id":"d960de70-ba26-4826-bf16-9f85b3d97778"},{"name":"Call Statistics","id":"8074fa31-feb6-4332-8698-37c52250c61d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":"{{baseUrl}}/beta/analytics/call/statistics?start_ts={{created_ts}}&end_ts={{destroyed_ts}}&appid={{APPID}}&call_id={{call_id}}&dimension={{dimension}}&metric={{metric}}","urlObject":{"path":["beta","analytics","call","statistics"],"host":["{{baseUrl}}"],"query":[{"key":"start_ts","value":"{{created_ts}}"},{"key":"end_ts","value":"{{destroyed_ts}}"},{"key":"appid","value":"{{APPID}}"},{"key":"call_id","value":"{{call_id}}"},{"description":{"content":"<p>Set this to country, region, net,s dk, os, or device</p>\n","type":"text/plain"},"key":"dimension","value":"{{dimension}}"},{"description":{"content":"<p>Set this to video_freeze_rate or audio_freeze_rate</p>\n","type":"text/plain"},"key":"metric","value":"{{metric}}"}],"variable":[]}},"response":[],"_postman_id":"8074fa31-feb6-4332-8698-37c52250c61d"},{"name":"Retrieve Audio/Video freeze rate statistics","id":"01b90526-9a8d-4ae8-87fb-8feecc6b56ab","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":"{{baseUrl}}/beta/analytics/call/freeze/bucxket?start_ts={{created_ts}}&end_ts={{destroyed_ts}}&appid={{APPID}}&call_id={{call_id}}&metric={{metric}}","urlObject":{"path":["beta","analytics","call","freeze","bucxket"],"host":["{{baseUrl}}"],"query":[{"key":"start_ts","value":"{{created_ts}}"},{"key":"end_ts","value":"{{destroyed_ts}}"},{"key":"appid","value":"{{APPID}}"},{"key":"call_id","value":"{{call_id}}"},{"description":{"content":"<p>Set this to video_freeze_rate or audio_freeze_rate</p>\n","type":"text/plain"},"key":"metric","value":"{{metric}}"}],"variable":[]}},"response":[],"_postman_id":"01b90526-9a8d-4ae8-87fb-8feecc6b56ab"},{"name":"Retrieve Insight Statistics","id":"bd212289-39ae-4bdd-9b21-ff7306f46493","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":"{{baseUrl}}/beta/analytics/call/statistics/time?start_ts={{created_ts}}&end_ts={{destroyed_ts}}&appid={{APPID}}&call_id={{call_id}}&metric={{metric}}","urlObject":{"path":["beta","analytics","call","statistics","time"],"host":["{{baseUrl}}"],"query":[{"key":"start_ts","value":"{{created_ts}}"},{"key":"end_ts","value":"{{destroyed_ts}}"},{"key":"appid","value":"{{APPID}}"},{"key":"call_id","value":"{{call_id}}"},{"description":{"content":"<p>Set this to user_count, audio_freeze_rate, video_freeze_rate,\n audio_freeze_user_count, or video_freeze_user_count</p>\n","type":"text/plain"},"key":"metric","value":"{{metric}}"}],"variable":[]}},"response":[],"_postman_id":"bd212289-39ae-4bdd-9b21-ff7306f46493"}],"id":"7e05326b-b4c1-4fe0-aab3-e7c993a7e3b9","_postman_id":"7e05326b-b4c1-4fe0-aab3-e7c993a7e3b9","description":"","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":true,"source":{"_postman_id":"d7da7175-1801-46b9-8ee4-e5c9e3010da3","id":"d7da7175-1801-46b9-8ee4-e5c9e3010da3","name":"Agora RESTful APIs","type":"collection"}}},{"name":"Data Insights","item":[{"name":"WebRTC","item":[{"name":"Quality by networkDelay","event":[{"listen":"test","script":{"exec":[""],"type":"text/javascript","id":"4aafbc43-1b3e-41e8-b2d1-756251203d43"}},{"listen":"prerequest","script":{"exec":["// Last 3 days","pm.collectionVariables.set(\"startTs\", Math.floor(Date.now() / 1000 - 86400 * 3));","pm.collectionVariables.set(\"endTs\", Math.floor(Date.now() / 1000 - 43200));",""],"type":"text/javascript","id":"71d99ee7-f346-487d-ae3b-4c38bcc54278"}}],"id":"096925d6-64d1-4b99-9491-0a730b1e71ce","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":"{{baseUrl}}/beta/insight/quality/by_time?startTs={{startTs}}&endTs={{endTs}}&appid={{APPID}}&metric=networkDelay&aggregateGranularity=1h&productType=WebRTC","urlObject":{"path":["beta","insight","quality","by_time"],"host":["{{baseUrl}}"],"query":[{"key":"startTs","value":"{{startTs}}"},{"key":"endTs","value":"{{endTs}}"},{"key":"appid","value":"{{APPID}}"},{"key":"metric","value":"networkDelay"},{"key":"aggregateGranularity","value":"1h"},{"key":"productType","value":"WebRTC"}],"variable":[]}},"response":[],"_postman_id":"096925d6-64d1-4b99-9491-0a730b1e71ce"},{"name":"Quality by joinSuccessRate","event":[{"listen":"test","script":{"exec":[""],"type":"text/javascript","id":"54a6fc1a-9203-4537-88fa-cb98b0cb21b9"}},{"listen":"prerequest","script":{"exec":["// Last 3 days","pm.collectionVariables.set(\"startTs\", Math.floor(Date.now() / 1000 - 86400 * 3));","pm.collectionVariables.set(\"endTs\", Math.floor(Date.now() / 1000 - 43200));",""],"type":"text/javascript","id":"9a97071c-5ad2-4c11-a386-e99169a91bcc"}}],"id":"b2fc311b-f516-4f58-adc3-efaa7dbae96f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":"{{baseUrl}}/beta/insight/quality/by_time?startTs={{startTs}}&endTs={{endTs}}&appid={{APPID}}&metric=joinSuccessRate&aggregateGranularity=1h&productType=WebRTC","urlObject":{"path":["beta","insight","quality","by_time"],"host":["{{baseUrl}}"],"query":[{"key":"startTs","value":"{{startTs}}"},{"key":"endTs","value":"{{endTs}}"},{"key":"appid","value":"{{APPID}}"},{"key":"metric","value":"joinSuccessRate"},{"key":"aggregateGranularity","value":"1h"},{"key":"productType","value":"WebRTC"}],"variable":[]}},"response":[],"_postman_id":"b2fc311b-f516-4f58-adc3-efaa7dbae96f"},{"name":"Quality by joinSuccessIn5sRate","event":[{"listen":"test","script":{"exec":[""],"type":"text/javascript","id":"2147da6a-7e59-4531-ac3a-3c452e0a22e0"}},{"listen":"prerequest","script":{"exec":["// Last 3 days","pm.collectionVariables.set(\"startTs\", Math.floor(Date.now() / 1000 - 86400 * 3));","pm.collectionVariables.set(\"endTs\", Math.floor(Date.now() / 1000 - 43200));",""],"type":"text/javascript","id":"b37b43c4-4d92-4aa6-9a27-2ca1d9c16bd1"}}],"id":"53bb9dab-055a-4f25-9035-cbf6bc12b092","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":"{{baseUrl}}/beta/insight/quality/by_time?startTs={{startTs}}&endTs={{endTs}}&appid={{APPID}}&metric=joinSuccessIn5sRate&aggregateGranularity=1h&productType=WebRTC","urlObject":{"path":["beta","insight","quality","by_time"],"host":["{{baseUrl}}"],"query":[{"key":"startTs","value":"{{startTs}}"},{"key":"endTs","value":"{{endTs}}"},{"key":"appid","value":"{{APPID}}"},{"key":"metric","value":"joinSuccessIn5sRate"},{"key":"aggregateGranularity","value":"1h"},{"key":"productType","value":"WebRTC"}],"variable":[]}},"response":[],"_postman_id":"53bb9dab-055a-4f25-9035-cbf6bc12b092"},{"name":"Quality by audioFreezeRate","event":[{"listen":"test","script":{"exec":[""],"type":"text/javascript","id":"d7f41af9-e149-41f3-8930-ec75e836c39a"}},{"listen":"prerequest","script":{"exec":["// Last 3 days","pm.collectionVariables.set(\"startTs\", Math.floor(Date.now() / 1000 - 86400 * 3));","pm.collectionVariables.set(\"endTs\", Math.floor(Date.now() / 1000 - 43200));",""],"type":"text/javascript","id":"7caedc23-935b-40fd-89cf-97f4135a4aab"}}],"id":"f0436877-e7d7-447b-a1e5-3ab9a910db73","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":"{{baseUrl}}/beta/insight/quality/by_time?startTs={{startTs}}&endTs={{endTs}}&appid={{APPID}}&metric=audioFreezeRate&aggregateGranularity=1h&productType=WebRTC","urlObject":{"path":["beta","insight","quality","by_time"],"host":["{{baseUrl}}"],"query":[{"key":"startTs","value":"{{startTs}}"},{"key":"endTs","value":"{{endTs}}"},{"key":"appid","value":"{{APPID}}"},{"key":"metric","value":"audioFreezeRate"},{"key":"aggregateGranularity","value":"1h"},{"key":"productType","value":"WebRTC"}],"variable":[]}},"response":[],"_postman_id":"f0436877-e7d7-447b-a1e5-3ab9a910db73"},{"name":"Quality by videoFreezeRate","event":[{"listen":"test","script":{"exec":[""],"type":"text/javascript","id":"3e2083e6-73db-4037-ab18-386bd11b43a2"}},{"listen":"prerequest","script":{"exec":["// Last 3 days","pm.collectionVariables.set(\"startTs\", Math.floor(Date.now() / 1000 - 86400 * 3));","pm.collectionVariables.set(\"endTs\", Math.floor(Date.now() / 1000 - 43200));",""],"type":"text/javascript","id":"f4c6a648-98e6-4d5a-a668-2070f3d3c289"}}],"id":"f255c57c-a5f1-4f18-971e-7b64263ea5ae","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":"{{baseUrl}}/beta/insight/quality/by_time?startTs={{startTs}}&endTs={{endTs}}&appid={{APPID}}&metric=videoFreezeRate&aggregateGranularity=1h&productType=WebRTC","urlObject":{"path":["beta","insight","quality","by_time"],"host":["{{baseUrl}}"],"query":[{"key":"startTs","value":"{{startTs}}"},{"key":"endTs","value":"{{endTs}}"},{"key":"appid","value":"{{APPID}}"},{"key":"metric","value":"videoFreezeRate"},{"key":"aggregateGranularity","value":"1h"},{"key":"productType","value":"WebRTC"}],"variable":[]}},"response":[],"_postman_id":"f255c57c-a5f1-4f18-971e-7b64263ea5ae"}],"id":"03aa94f3-be21-4968-a2b9-94a9c5b63637","_postman_id":"03aa94f3-be21-4968-a2b9-94a9c5b63637","description":"","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":true,"source":{"_postman_id":"d7da7175-1801-46b9-8ee4-e5c9e3010da3","id":"d7da7175-1801-46b9-8ee4-e5c9e3010da3","name":"Agora RESTful APIs","type":"collection"}}},{"name":"Native","item":[{"name":"Quality by networkDelay","event":[{"listen":"test","script":{"exec":[""],"type":"text/javascript","id":"85bd4cc8-3e6b-41a6-86a4-9b864fc99a50"}},{"listen":"prerequest","script":{"exec":["// Last 3 days","pm.collectionVariables.set(\"startTs\", Math.floor(Date.now() / 1000 - 86400 * 3));","pm.collectionVariables.set(\"endTs\", Math.floor(Date.now() / 1000 - 43200));",""],"type":"text/javascript","id":"aaaa96a3-9c7c-422b-a4e7-08b8f49d58c2"}}],"id":"ff0c4b8b-b6d7-4b17-b104-af2da23dce34","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":"{{baseUrl}}/beta/insight/quality/by_time?startTs={{startTs}}&endTs={{endTs}}&appid={{APPID}}&metric=networkDelay&aggregateGranularity=1h&productType=Native","urlObject":{"path":["beta","insight","quality","by_time"],"host":["{{baseUrl}}"],"query":[{"key":"startTs","value":"{{startTs}}"},{"key":"endTs","value":"{{endTs}}"},{"key":"appid","value":"{{APPID}}"},{"key":"metric","value":"networkDelay"},{"key":"aggregateGranularity","value":"1h"},{"key":"productType","value":"Native"}],"variable":[]}},"response":[],"_postman_id":"ff0c4b8b-b6d7-4b17-b104-af2da23dce34"},{"name":"Quality by joinSuccessRate","event":[{"listen":"test","script":{"exec":[""],"type":"text/javascript","id":"3ed4f6b9-4898-4218-b4c4-1ea22065d130"}},{"listen":"prerequest","script":{"exec":["// Last 3 days","pm.collectionVariables.set(\"startTs\", Math.floor(Date.now() / 1000 - 86400 * 3));","pm.collectionVariables.set(\"endTs\", Math.floor(Date.now() / 1000 - 43200));",""],"type":"text/javascript","id":"8e84a6b4-ca06-4b1a-922f-bc36530abef9"}}],"id":"19b957cb-c28c-4578-b4e3-279aeee5fd57","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":"{{baseUrl}}/beta/insight/quality/by_time?startTs={{startTs}}&endTs={{endTs}}&appid={{APPID}}&metric=joinSuccessRate&aggregateGranularity=1h&productType=Native","urlObject":{"path":["beta","insight","quality","by_time"],"host":["{{baseUrl}}"],"query":[{"key":"startTs","value":"{{startTs}}"},{"key":"endTs","value":"{{endTs}}"},{"key":"appid","value":"{{APPID}}"},{"key":"metric","value":"joinSuccessRate"},{"key":"aggregateGranularity","value":"1h"},{"key":"productType","value":"Native"}],"variable":[]}},"response":[],"_postman_id":"19b957cb-c28c-4578-b4e3-279aeee5fd57"},{"name":"Quality by joinSuccessIn5sRate","event":[{"listen":"test","script":{"exec":[""],"type":"text/javascript","id":"88ffab37-8cb5-4d11-a139-8aaad8b0ed85"}},{"listen":"prerequest","script":{"exec":["// Last 3 days","pm.collectionVariables.set(\"startTs\", Math.floor(Date.now() / 1000 - 86400 * 3));","pm.collectionVariables.set(\"endTs\", Math.floor(Date.now() / 1000 - 43200));",""],"type":"text/javascript","id":"8caa6c31-aca1-4281-8837-6fc4fe11dcfb"}}],"id":"67e5f5b0-b171-48cf-999f-f2433ea02c3a","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":"{{baseUrl}}/beta/insight/quality/by_time?startTs={{startTs}}&endTs={{endTs}}&appid={{APPID}}&metric=joinSuccessIn5sRate&aggregateGranularity=1h&productType=Native","urlObject":{"path":["beta","insight","quality","by_time"],"host":["{{baseUrl}}"],"query":[{"key":"startTs","value":"{{startTs}}"},{"key":"endTs","value":"{{endTs}}"},{"key":"appid","value":"{{APPID}}"},{"key":"metric","value":"joinSuccessIn5sRate"},{"key":"aggregateGranularity","value":"1h"},{"key":"productType","value":"Native"}],"variable":[]}},"response":[],"_postman_id":"67e5f5b0-b171-48cf-999f-f2433ea02c3a"},{"name":"Quality by audioFreezeRate","event":[{"listen":"test","script":{"exec":[""],"type":"text/javascript","id":"bd402ab7-3ca6-4349-b64a-d1c12a518e0a"}},{"listen":"prerequest","script":{"exec":["// Last 3 days","pm.collectionVariables.set(\"startTs\", Math.floor(Date.now() / 1000 - 86400 * 3));","pm.collectionVariables.set(\"endTs\", Math.floor(Date.now() / 1000 - 43200));",""],"type":"text/javascript","id":"462a1340-10bd-42b2-a346-97d19266be81"}}],"id":"224032b9-07c1-4f3a-9b14-e891a4a8bd63","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":"{{baseUrl}}/beta/insight/quality/by_time?startTs={{startTs}}&endTs={{endTs}}&appid={{APPID}}&metric=audioFreezeRate&aggregateGranularity=1h&productType=Native","urlObject":{"path":["beta","insight","quality","by_time"],"host":["{{baseUrl}}"],"query":[{"key":"startTs","value":"{{startTs}}"},{"key":"endTs","value":"{{endTs}}"},{"key":"appid","value":"{{APPID}}"},{"key":"metric","value":"audioFreezeRate"},{"key":"aggregateGranularity","value":"1h"},{"key":"productType","value":"Native"}],"variable":[]}},"response":[],"_postman_id":"224032b9-07c1-4f3a-9b14-e891a4a8bd63"},{"name":"Quality by videoFreezeRate","event":[{"listen":"test","script":{"exec":[""],"type":"text/javascript","id":"96089ab8-84c4-4456-a8d0-e502c32b7e88"}},{"listen":"prerequest","script":{"exec":["// Last 3 days","pm.collectionVariables.set(\"startTs\", Math.floor(Date.now() / 1000 - 86400 * 3));","pm.collectionVariables.set(\"endTs\", Math.floor(Date.now() / 1000 - 43200));",""],"type":"text/javascript","id":"206eabac-78a9-4cbe-84d1-a73270003a73"}}],"id":"11c28248-0422-4fa0-a095-3b3bab665de9","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":"{{baseUrl}}/beta/insight/quality/by_time?startTs={{startTs}}&endTs={{endTs}}&appid={{APPID}}&metric=videoFreezeRate&aggregateGranularity=1h&productType=Native","urlObject":{"path":["beta","insight","quality","by_time"],"host":["{{baseUrl}}"],"query":[{"key":"startTs","value":"{{startTs}}"},{"key":"endTs","value":"{{endTs}}"},{"key":"appid","value":"{{APPID}}"},{"key":"metric","value":"videoFreezeRate"},{"key":"aggregateGranularity","value":"1h"},{"key":"productType","value":"Native"}],"variable":[]}},"response":[],"_postman_id":"11c28248-0422-4fa0-a095-3b3bab665de9"}],"id":"d225a921-2833-4888-acf3-84aa1001e55a","_postman_id":"d225a921-2833-4888-acf3-84aa1001e55a","description":"","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":true,"source":{"_postman_id":"d7da7175-1801-46b9-8ee4-e5c9e3010da3","id":"d7da7175-1801-46b9-8ee4-e5c9e3010da3","name":"Agora RESTful APIs","type":"collection"}}},{"name":"Usage by userCount","event":[{"listen":"test","script":{"exec":[""],"type":"text/javascript","id":"9c28fa09-1ba4-43e4-a4e7-11a5bc6fc7ad"}},{"listen":"prerequest","script":{"exec":["// Last 3 days","pm.collectionVariables.set(\"startTs\", Math.floor(Date.now() / 1000 - 86400 * 3));","pm.collectionVariables.set(\"endTs\", Math.floor(Date.now() / 1000 - 43200));",""],"type":"text/javascript","id":"59f1e36f-ef8e-4378-851f-3fbc5b043803"}}],"id":"95b7fed3-13e4-425f-8e37-85b2bd7cfce9","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":"{{baseUrl}}/beta/insight/usage/by_time?startTs={{startTs}}&endTs={{endTs}}&appid={{APPID}}&metric=userCount&aggregateGranularity=1d","urlObject":{"path":["beta","insight","usage","by_time"],"host":["{{baseUrl}}"],"query":[{"key":"startTs","value":"{{startTs}}"},{"key":"endTs","value":"{{endTs}}"},{"key":"appid","value":"{{APPID}}"},{"key":"metric","value":"userCount"},{"key":"aggregateGranularity","value":"1d"}],"variable":[]}},"response":[],"_postman_id":"95b7fed3-13e4-425f-8e37-85b2bd7cfce9"}],"id":"9a1fdc6e-94df-4718-992b-cdeea802cbba","_postman_id":"9a1fdc6e-94df-4718-992b-cdeea802cbba","description":"","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":true,"source":{"_postman_id":"d7da7175-1801-46b9-8ee4-e5c9e3010da3","id":"d7da7175-1801-46b9-8ee4-e5c9e3010da3","name":"Agora RESTful APIs","type":"collection"}}},{"name":"Realtime","item":[{"name":"WebRTC","item":[{"name":"Quality by networkDelay","event":[{"listen":"test","script":{"exec":[""],"type":"text/javascript","id":"ea3d66a0-d8f2-467b-a1f7-d491a2483340"}},{"listen":"prerequest","script":{"exec":["// Last 40 mins","pm.collectionVariables.set(\"startTs\", Math.floor(Date.now() / 1000 - 60 * 40));","pm.collectionVariables.set(\"endTs\", Math.floor(Date.now() / 1000 - 40));",""],"type":"text/javascript","id":"7520cb6c-826e-456e-b446-0eaf21095708"}}],"id":"b63dd0a5-a58f-4294-aa3b-ac419f6d0a38","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":"{{baseUrl}}/beta/realtime/quality/by_time_20sec?startTs={{startTs}}&endTs={{endTs}}&appid={{APPID}}&metric=networkDelay&productType=WebRTC","urlObject":{"path":["beta","realtime","quality","by_time_20sec"],"host":["{{baseUrl}}"],"query":[{"key":"startTs","value":"{{startTs}}"},{"key":"endTs","value":"{{endTs}}"},{"key":"appid","value":"{{APPID}}"},{"key":"metric","value":"networkDelay"},{"key":"productType","value":"WebRTC"}],"variable":[]}},"response":[],"_postman_id":"b63dd0a5-a58f-4294-aa3b-ac419f6d0a38"},{"name":"Quality by joinSuccessRate","event":[{"listen":"test","script":{"exec":[""],"type":"text/javascript","id":"339581d2-a4c2-441c-a038-85b8abd87475"}},{"listen":"prerequest","script":{"exec":["// Last 40 mins","pm.collectionVariables.set(\"startTs\", Math.floor(Date.now() / 1000 - 60 * 40));","pm.collectionVariables.set(\"endTs\", Math.floor(Date.now() / 1000 - 40));",""],"type":"text/javascript","id":"7bda2f80-53d2-464a-8063-2769f89312a6"}}],"id":"34af005a-484a-49c1-975d-05d351d56a06","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":"{{baseUrl}}/beta/realtime/quality/by_time_20sec?startTs={{startTs}}&endTs={{endTs}}&appid={{APPID}}&metric=joinSuccessRate&productType=WebRTC","urlObject":{"path":["beta","realtime","quality","by_time_20sec"],"host":["{{baseUrl}}"],"query":[{"key":"startTs","value":"{{startTs}}"},{"key":"endTs","value":"{{endTs}}"},{"key":"appid","value":"{{APPID}}"},{"key":"metric","value":"joinSuccessRate"},{"key":"productType","value":"WebRTC"}],"variable":[]}},"response":[],"_postman_id":"34af005a-484a-49c1-975d-05d351d56a06"},{"name":"Quality by joinSuccessIn5sRate","event":[{"listen":"test","script":{"exec":[""],"type":"text/javascript","id":"b95064e3-3ef7-4077-9cc1-5c465a87a857"}},{"listen":"prerequest","script":{"exec":["// Last 40 mins","pm.collectionVariables.set(\"startTs\", Math.floor(Date.now() / 1000 - 60 * 40));","pm.collectionVariables.set(\"endTs\", Math.floor(Date.now() / 1000 - 40));",""],"type":"text/javascript","id":"8d03a3d5-ca46-49c9-800f-66c3fb7115b3"}}],"id":"b774c4ea-f087-4459-8fd5-ec89cda77611","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":"{{baseUrl}}/beta/realtime/quality/by_time_20sec?startTs={{startTs}}&endTs={{endTs}}&appid={{APPID}}&metric=joinSuccessIn5sRate&productType=WebRTC","urlObject":{"path":["beta","realtime","quality","by_time_20sec"],"host":["{{baseUrl}}"],"query":[{"key":"startTs","value":"{{startTs}}"},{"key":"endTs","value":"{{endTs}}"},{"key":"appid","value":"{{APPID}}"},{"key":"metric","value":"joinSuccessIn5sRate"},{"key":"productType","value":"WebRTC"}],"variable":[]}},"response":[],"_postman_id":"b774c4ea-f087-4459-8fd5-ec89cda77611"},{"name":"Quality by audioFreezeRate","event":[{"listen":"test","script":{"exec":[""],"type":"text/javascript","id":"de269eed-5d93-4667-98ea-82a58e758a08"}},{"listen":"prerequest","script":{"exec":["// Last 40 mins","pm.collectionVariables.set(\"startTs\", Math.floor(Date.now() / 1000 - 60 * 40));","pm.collectionVariables.set(\"endTs\", Math.floor(Date.now() / 1000 - 40));",""],"type":"text/javascript","id":"0f5a07b4-a396-43af-8c05-a8ff06828635"}}],"id":"6745f4dc-471a-43d9-9e22-387a214aa980","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":"{{baseUrl}}/beta/realtime/quality/by_time_20sec?startTs={{startTs}}&endTs={{endTs}}&appid={{APPID}}&metric=audioFreezeRate&productType=WebRTC","urlObject":{"path":["beta","realtime","quality","by_time_20sec"],"host":["{{baseUrl}}"],"query":[{"key":"startTs","value":"{{startTs}}"},{"key":"endTs","value":"{{endTs}}"},{"key":"appid","value":"{{APPID}}"},{"key":"metric","value":"audioFreezeRate"},{"key":"productType","value":"WebRTC"}],"variable":[]}},"response":[],"_postman_id":"6745f4dc-471a-43d9-9e22-387a214aa980"},{"name":"Quality by videoFreezeRate","event":[{"listen":"test","script":{"exec":[""],"type":"text/javascript","id":"4558e3b6-ea2d-4457-bd55-ddeb7e7dcde4"}},{"listen":"prerequest","script":{"exec":["// Last 40 mins","pm.collectionVariables.set(\"startTs\", Math.floor(Date.now() / 1000 - 60 * 40));","pm.collectionVariables.set(\"endTs\", Math.floor(Date.now() / 1000 - 40));",""],"type":"text/javascript","id":"441c754d-4f82-49ec-9bd5-b6524fe27a37"}}],"id":"ceff4fd9-a2d1-403b-a76d-d37c30b02c5e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":"{{baseUrl}}/beta/realtime/quality/by_time_20sec?startTs={{startTs}}&endTs={{endTs}}&appid={{APPID}}&metric=videoFreezeRate&productType=WebRTC","urlObject":{"path":["beta","realtime","quality","by_time_20sec"],"host":["{{baseUrl}}"],"query":[{"key":"startTs","value":"{{startTs}}"},{"key":"endTs","value":"{{endTs}}"},{"key":"appid","value":"{{APPID}}"},{"key":"metric","value":"videoFreezeRate"},{"key":"productType","value":"WebRTC"}],"variable":[]}},"response":[],"_postman_id":"ceff4fd9-a2d1-403b-a76d-d37c30b02c5e"},{"name":"Scale - ChannelCount","event":[{"listen":"test","script":{"exec":[""],"type":"text/javascript","id":"0b248998-5dfc-474b-a968-22f92b1eea89"}},{"listen":"prerequest","script":{"exec":["// Last 40 mins","pm.collectionVariables.set(\"startTs\", Math.floor(Date.now() / 1000 - 60 * 40));","pm.collectionVariables.set(\"endTs\", Math.floor(Date.now() / 1000 - 40));",""],"type":"text/javascript","id":"fd63f62b-9bdf-4040-a0b2-c1402c664a87"}}],"id":"e2948b77-856e-42ec-9794-6563828e87e1","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":"{{baseUrl}}/beta/realtime/usage/by_time_20sec?startTs={{startTs}}&endTs={{endTs}}&appid={{APPID}}&metric=channelCount&productType=WebRTC","urlObject":{"path":["beta","realtime","usage","by_time_20sec"],"host":["{{baseUrl}}"],"query":[{"key":"startTs","value":"{{startTs}}"},{"key":"endTs","value":"{{endTs}}"},{"key":"appid","value":"{{APPID}}"},{"key":"metric","value":"channelCount"},{"key":"productType","value":"WebRTC"},{"disabled":true,"key":"cname","value":""}],"variable":[]}},"response":[],"_postman_id":"e2948b77-856e-42ec-9794-6563828e87e1"},{"name":"Scale - UserCount","event":[{"listen":"test","script":{"exec":[""],"type":"text/javascript","id":"85ec9b1f-9ec7-4d4c-b7e2-e8e51e037337"}},{"listen":"prerequest","script":{"exec":["// Last 40 mins","pm.collectionVariables.set(\"startTs\", Math.floor(Date.now() / 1000 - 60 * 40));","pm.collectionVariables.set(\"endTs\", Math.floor(Date.now() / 1000 - 40));",""],"type":"text/javascript","id":"4244a972-fe83-46d9-87f1-5037592c026b"}}],"id":"f6b88adf-6a7f-41e0-8d73-a936053d01c4","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":"{{baseUrl}}/beta/realtime/usage/by_time_20sec?startTs={{startTs}}&endTs={{endTs}}&appid={{APPID}}&metric=userCount&productType=WebRTC","urlObject":{"path":["beta","realtime","usage","by_time_20sec"],"host":["{{baseUrl}}"],"query":[{"key":"startTs","value":"{{startTs}}"},{"key":"endTs","value":"{{endTs}}"},{"key":"appid","value":"{{APPID}}"},{"key":"metric","value":"userCount"},{"key":"productType","value":"WebRTC"},{"disabled":true,"key":"cname","value":""}],"variable":[]}},"response":[],"_postman_id":"f6b88adf-6a7f-41e0-8d73-a936053d01c4"}],"id":"0c5a2418-53e7-4a19-ba66-e37b6719481c","_postman_id":"0c5a2418-53e7-4a19-ba66-e37b6719481c","description":"","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":true,"source":{"_postman_id":"d7da7175-1801-46b9-8ee4-e5c9e3010da3","id":"d7da7175-1801-46b9-8ee4-e5c9e3010da3","name":"Agora RESTful APIs","type":"collection"}}},{"name":"Native","item":[{"name":"Quality by networkDelay","event":[{"listen":"test","script":{"exec":[""],"type":"text/javascript","id":"be3e3f7c-cd45-4214-9dca-fd48378b3382"}},{"listen":"prerequest","script":{"exec":["// Last 40 mins","pm.collectionVariables.set(\"startTs\", Math.floor(Date.now() / 1000 - 60 * 40));","pm.collectionVariables.set(\"endTs\", Math.floor(Date.now() / 1000 - 40));",""],"type":"text/javascript","id":"75d24f63-72e3-4fc2-b54b-a93ce6df2f11"}}],"id":"a299c734-d6ab-4fa7-bbf2-5329fb54f7e7","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":"{{baseUrl}}/beta/realtime/quality/by_time_20sec?startTs={{startTs}}&endTs={{endTs}}&appid={{APPID}}&metric=networkDelay&productType=Native","urlObject":{"path":["beta","realtime","quality","by_time_20sec"],"host":["{{baseUrl}}"],"query":[{"key":"startTs","value":"{{startTs}}"},{"key":"endTs","value":"{{endTs}}"},{"key":"appid","value":"{{APPID}}"},{"key":"metric","value":"networkDelay"},{"key":"productType","value":"Native"}],"variable":[]}},"response":[],"_postman_id":"a299c734-d6ab-4fa7-bbf2-5329fb54f7e7"},{"name":"Quality by joinSuccessRate","event":[{"listen":"test","script":{"exec":[""],"type":"text/javascript","id":"5e3d213c-1611-4f92-9b22-31d813f468f9"}},{"listen":"prerequest","script":{"exec":["// Last 40 mins","pm.collectionVariables.set(\"startTs\", Math.floor(Date.now() / 1000 - 60 * 40));","pm.collectionVariables.set(\"endTs\", Math.floor(Date.now() / 1000 - 40));",""],"type":"text/javascript","id":"b4775d95-3f2f-4ce1-bdda-ecb741a0bc2a"}}],"id":"48cd00b3-b432-490b-9922-e4b9e463d650","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":"{{baseUrl}}/beta/realtime/quality/by_time_20sec?startTs={{startTs}}&endTs={{endTs}}&appid={{APPID}}&metric=joinSuccessRate&productType=Native","urlObject":{"path":["beta","realtime","quality","by_time_20sec"],"host":["{{baseUrl}}"],"query":[{"key":"startTs","value":"{{startTs}}"},{"key":"endTs","value":"{{endTs}}"},{"key":"appid","value":"{{APPID}}"},{"key":"metric","value":"joinSuccessRate"},{"key":"productType","value":"Native"}],"variable":[]}},"response":[],"_postman_id":"48cd00b3-b432-490b-9922-e4b9e463d650"},{"name":"Quality by joinSuccessIn5sRate","event":[{"listen":"test","script":{"exec":[""],"type":"text/javascript","id":"e28e4fc9-c8a4-4f39-ab06-b353364d1f02"}},{"listen":"prerequest","script":{"exec":["// Last 40 mins","pm.collectionVariables.set(\"startTs\", Math.floor(Date.now() / 1000 - 60 * 40));","pm.collectionVariables.set(\"endTs\", Math.floor(Date.now() / 1000 - 40));",""],"type":"text/javascript","id":"72975c45-53fa-4997-862e-c8cb3d34160f"}}],"id":"99f72616-8d33-438c-9f48-5239406430f2","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":"{{baseUrl}}/beta/realtime/quality/by_time_20sec?startTs={{startTs}}&endTs={{endTs}}&appid={{APPID}}&metric=joinSuccessIn5sRate&productType=Native","urlObject":{"path":["beta","realtime","quality","by_time_20sec"],"host":["{{baseUrl}}"],"query":[{"key":"startTs","value":"{{startTs}}"},{"key":"endTs","value":"{{endTs}}"},{"key":"appid","value":"{{APPID}}"},{"key":"metric","value":"joinSuccessIn5sRate"},{"key":"productType","value":"Native"}],"variable":[]}},"response":[],"_postman_id":"99f72616-8d33-438c-9f48-5239406430f2"},{"name":"Quality by audioFreezeRate","event":[{"listen":"test","script":{"exec":[""],"type":"text/javascript","id":"a747f3f1-ebd9-4ecc-a482-9362c9aab63f"}},{"listen":"prerequest","script":{"exec":["// Last 40 mins","pm.collectionVariables.set(\"startTs\", Math.floor(Date.now() / 1000 - 60 * 40));","pm.collectionVariables.set(\"endTs\", Math.floor(Date.now() / 1000 - 40));",""],"type":"text/javascript","id":"dc82979e-c3d8-4f53-8591-70ebbf690b85"}}],"id":"a2bc548c-f72d-496c-9a58-1e14197af4f6","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":"{{baseUrl}}/beta/realtime/quality/by_time_20sec?startTs={{startTs}}&endTs={{endTs}}&appid={{APPID}}&metric=audioFreezeRate&productType=Native","urlObject":{"path":["beta","realtime","quality","by_time_20sec"],"host":["{{baseUrl}}"],"query":[{"key":"startTs","value":"{{startTs}}"},{"key":"endTs","value":"{{endTs}}"},{"key":"appid","value":"{{APPID}}"},{"key":"metric","value":"audioFreezeRate"},{"key":"productType","value":"Native"}],"variable":[]}},"response":[],"_postman_id":"a2bc548c-f72d-496c-9a58-1e14197af4f6"},{"name":"Quality by videoFreezeRate","event":[{"listen":"test","script":{"exec":[""],"type":"text/javascript","id":"a942a2f7-eb0a-4a66-be45-3dca288ed742"}},{"listen":"prerequest","script":{"exec":["// Last 40 mins","pm.collectionVariables.set(\"startTs\", Math.floor(Date.now() / 1000 - 60 * 40));","pm.collectionVariables.set(\"endTs\", Math.floor(Date.now() / 1000 - 40));",""],"type":"text/javascript","id":"1c8e921e-2e9e-49ec-8281-f48b31fb3a4c"}}],"id":"406f83a4-21a1-4517-9837-f360b8e9b1a3","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":"{{baseUrl}}/beta/realtime/quality/by_time_20sec?startTs={{startTs}}&endTs={{endTs}}&appid={{APPID}}&metric=videoFreezeRate&productType=Native","urlObject":{"path":["beta","realtime","quality","by_time_20sec"],"host":["{{baseUrl}}"],"query":[{"key":"startTs","value":"{{startTs}}"},{"key":"endTs","value":"{{endTs}}"},{"key":"appid","value":"{{APPID}}"},{"key":"metric","value":"videoFreezeRate"},{"key":"productType","value":"Native"}],"variable":[]}},"response":[],"_postman_id":"406f83a4-21a1-4517-9837-f360b8e9b1a3"},{"name":"Scale - ChannelCount","event":[{"listen":"test","script":{"exec":[""],"type":"text/javascript","id":"4b1d5a6d-add7-4a1d-ba81-10cf7d0b768b"}},{"listen":"prerequest","script":{"exec":["// Last 40 mins","pm.collectionVariables.set(\"startTs\", Math.floor(Date.now() / 1000 - 60 * 40));","pm.collectionVariables.set(\"endTs\", Math.floor(Date.now() / 1000 - 40));",""],"type":"text/javascript","id":"ffab4398-7908-471e-86fb-396852a8bfd4"}}],"id":"03f73333-de3a-47cb-9c31-d87e779b6fa7","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":"{{baseUrl}}/beta/realtime/usage/by_time_20sec?startTs={{startTs}}&endTs={{endTs}}&appid={{APPID}}&metric=channelCount&productType=Native","urlObject":{"path":["beta","realtime","usage","by_time_20sec"],"host":["{{baseUrl}}"],"query":[{"key":"startTs","value":"{{startTs}}"},{"key":"endTs","value":"{{endTs}}"},{"key":"appid","value":"{{APPID}}"},{"key":"metric","value":"channelCount"},{"key":"productType","value":"Native"},{"disabled":true,"key":"cname","value":""}],"variable":[]}},"response":[],"_postman_id":"03f73333-de3a-47cb-9c31-d87e779b6fa7"},{"name":"Scale - UserCount","event":[{"listen":"test","script":{"exec":[""],"type":"text/javascript","id":"e0ec9099-dea0-47fa-8b51-aab72f3eb135"}},{"listen":"prerequest","script":{"exec":["// Last 40 mins","pm.collectionVariables.set(\"startTs\", Math.floor(Date.now() / 1000 - 60 * 40));","pm.collectionVariables.set(\"endTs\", Math.floor(Date.now() / 1000 - 40));",""],"type":"text/javascript","id":"0c5cde84-2bcc-400e-99ec-79d98860fac3"}}],"id":"af231f4a-2302-4708-b4a6-4ff5b6625f6f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":"{{baseUrl}}/beta/realtime/usage/by_time_20sec?startTs={{startTs}}&endTs={{endTs}}&appid={{APPID}}&metric=userCount&productType=Native","urlObject":{"path":["beta","realtime","usage","by_time_20sec"],"host":["{{baseUrl}}"],"query":[{"key":"startTs","value":"{{startTs}}"},{"key":"endTs","value":"{{endTs}}"},{"key":"appid","value":"{{APPID}}"},{"key":"metric","value":"userCount"},{"key":"productType","value":"Native"},{"disabled":true,"key":"cname","value":""}],"variable":[]}},"response":[],"_postman_id":"af231f4a-2302-4708-b4a6-4ff5b6625f6f"}],"id":"159f8932-dd0e-4a2f-89f7-728be0b0ff23","_postman_id":"159f8932-dd0e-4a2f-89f7-728be0b0ff23","description":"","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":true,"source":{"_postman_id":"d7da7175-1801-46b9-8ee4-e5c9e3010da3","id":"d7da7175-1801-46b9-8ee4-e5c9e3010da3","name":"Agora RESTful APIs","type":"collection"}}}],"id":"239a101f-8406-46bd-9f46-3c31d81205ad","_postman_id":"239a101f-8406-46bd-9f46-3c31d81205ad","description":"","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":true,"source":{"_postman_id":"d7da7175-1801-46b9-8ee4-e5c9e3010da3","id":"d7da7175-1801-46b9-8ee4-e5c9e3010da3","name":"Agora RESTful APIs","type":"collection"}}}],"id":"dc2b3c60-6d14-4334-8006-263a9e93103e","description":"<p>These RESTful APIs are only available with paid support packages or paid Analytics packages. Please contact Agora Sales if you would like to purchase them.<br />Keep in mind different support packages have different options available to them for the RESTful APIs.  </p>\n<p>Support Plans are available here: <a href=\"https://www.agora.io/en/pricing/support-plans/\">https://www.agora.io/en/pricing/support-plans/</a>  </p>\n<p>Agora Analytics Plans are available here: <a href=\"https://analytics-lab.agora.io/pricing?source=console\">https://analytics-lab.agora.io/pricing?source=console</a></p>\n","_postman_id":"dc2b3c60-6d14-4334-8006-263a9e93103e","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":true,"source":{"_postman_id":"d7da7175-1801-46b9-8ee4-e5c9e3010da3","id":"d7da7175-1801-46b9-8ee4-e5c9e3010da3","name":"Agora RESTful APIs","type":"collection"}}},{"name":"[Internal] Cloud Transcoder","item":[{"name":"Transcoding Templates","item":[{"name":"create/reset","event":[{"listen":"prerequest","script":{"id":"96448d3e-522a-406e-bff9-accdcd2bed8b","exec":[""],"type":"text/javascript","packages":{}}},{"listen":"test","script":{"id":"95b4b014-34c6-4401-826e-3d348d0ee1b2","exec":["var jsonData = JSON.parse(responseBody);\r","pm.collectionVariables.set(\"taskId\", jsonData.taskId);\r","pm.test(\"Status code is 200\", function () {\r","    pm.response.to.have.status(200);\r","});"],"type":"text/javascript","packages":{}}}],"id":"c6992fff-7fe6-42e1-a355-6a62caf817f1","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\r\n  \"enabled\": true,\r\n  \"video\": {\r\n    \"width\": 1920,\r\n    \"height\": 1080,\r\n    \"fps\": 30\r\n  }\r\n}","options":{"raw":{"language":"json"}}},"url":"https://api.sd-rtn.com/v1/projects/{{APPID}}/rtls/abr/config/codecs/{{codecId}}","description":"<p>After initiating <code>Acquire</code>the request, you can <code>Create</code>create a cloud transcoder through the request. The Agora server will begin to transcode and combine the multi-channel streams you specified and input them into the Agora RTC channel.</p>\n<h2 id=\"request\"><a href=\"https://doc.shengwang.cn/api-ref/cloud-transcoder/restful/cloud-transcoder/operations/post-v1-projects-appId-rtsc-cloud-transcoder-tasks#Request\">Request</a></h2>\n<p>Security: Basic Auth</p>\n<p><strong>HTTP Basic Authentication</strong> : Every time you send an HTTP request, you must fill in the field in the request header <code>Authorization</code>. For information on how to generate the value of this field, please refer to <a href=\"https://doc.shengwang.cn/doc/cloud-transcoder/restful/get-started/http-basic-auth\">Implementing HTTP Basic Authentication</a> .</p>\n<p>Basic authentication is a simple authentication scheme built into the HTTP protocol. To use it, send your HTTP requests with an Authorization header that contains the word Basic followed by a space and a base64-encoded string <code>username:password</code>.</p>\n<p>Example:<code>Authorization: Basic ZGVtbzpwQDU1dzByZA==</code></p>\n<h3 id=\"path-parameters\"><a href=\"https://doc.shengwang.cn/api-ref/cloud-transcoder/restful/cloud-transcoder/operations/post-v1-projects-appId-rtsc-cloud-transcoder-tasks#Path-Parameters\">Path Parameters</a></h3>\n<p>appIdstringrequired</p>\n<p><strong>App ID</strong> provided by Shengwang to each developer . After creating a project in the Agora console, you can get an App ID. An App ID is a unique identifier for a project.</p>\n<h3 id=\"query-parameters\"><a href=\"https://doc.shengwang.cn/api-ref/cloud-transcoder/restful/cloud-transcoder/operations/post-v1-projects-appId-rtsc-cloud-transcoder-tasks#Query-Parameters\">Query Parameters</a></h3>\n<p>builderTokenstringrequired</p>\n<p>Fill in the value <code>Acquire</code>obtained from the response body of the method <code>tokenName</code>.</p>\n<h3 id=\"headers\"><a href=\"https://doc.shengwang.cn/api-ref/cloud-transcoder/restful/cloud-transcoder/operations/post-v1-projects-appId-rtsc-cloud-transcoder-tasks#request-headers\">Headers</a></h3>\n<p>Content-Typestringrequired</p>\n<p><code>application/json</code></p>\n<h3 id=\"body\"><a href=\"https://doc.shengwang.cn/api-ref/cloud-transcoder/restful/cloud-transcoder/operations/post-v1-projects-appId-rtsc-cloud-transcoder-tasks#request-body\">Body</a></h3>\n<p>application/jsonservicesobjectrequiredcloudTranscoderobjectrequiredserviceTypestringrequired</p>\n<p>Service type, here <code>\"cloudTranscoderV2\"</code>.</p>\n<p>configobjectrequiredtranscoderobjectrequiredidleTimeoutnumber</p>\n<p>The maximum amount of time, in seconds, that a Cloud transcoder can be idle. Idle means that all anchors corresponding to the audio and video streams processed by cloud transcoder have left the channel. After the idle state exceeds the set value <code>idleTimeOut</code>, the cloud transcoder will be automatically destroyed.</p>\n<p>&gt;= 1&lt;= 86400Default :300audioInputsarray[object]rtcobjectrequiredrtcChannelstringrequired</p>\n<p>The RTC channel name to which the audio input source belongs. Currently, only subscribing to audio and video sources of a single channel is supported. The channels to which the audio source and video source belong must be the same.</p>\n<p>rtcUidnumberrequired</p>\n<p>UID corresponding to the audio input source. The same UID is not allowed to exist in the RTC channel.</p>\n<p>rtcTokenstringrequired</p>\n<p>Token that Cloud transcoder needs to set when entering the RTC channel of the video source to be transcoded. This value can be used to ensure channel security and prevent abnormal users from disrupting other users in the channel. For details, see <a href=\"https://doc.shengwang.cn/doc/rtc/android/basic-features/token-authentication\">Using Token Authentication</a> .</p>\n<p><strong>Note</strong> : The UID of the Cloud transcoder in the RTC channel of the audio and video source to be transcoded is randomly assigned by Agora. Therefore, when generating a Token, the UID you use <code>uid</code>must be 0.</p>\n<p>videoInputsarray[object]rtcobjectrequiredplaceholderImageUrlstringrequired</p>\n<p>The URL of the placeholder image when the user is offline. Must be a legal URL and contain <code>jpg</code>or <code>png</code>suffix.</p>\n<p>regionobjectrequiredcanvasobjectrequiredwidthnumberrequired</p>\n<p>The width of the canvas (px).</p>\n<p>&gt;= 120&lt;= 3840heightnumberrequired</p>\n<p>The height of the canvas (px). The value range is [120,3840].</p>\n<p>&gt;= 120&lt;= 3840colornumberrequired</p>\n<p>The background color of the canvas. RGB color value, expressed as a decimal number. For example, 0 represents black and 255 represents blue.</p>\n<p>&gt;= 0&lt;= 16777215backgroundImagestring</p>\n<p>Canvas background image. Must be a legal URL and contain <code>jpg</code>or <code>png</code>suffix.</p>\n<p><strong>Note</strong> : If no value is passed, there will be no canvas background image.</p>\n<p>fillModestring</p>\n<p>The fill mode of the canvas background image:</p>\n<ul>\n<li><p><code>\"FILL\"</code>: Zoom the screen and crop it in the center while maintaining the aspect ratio. See <a href=\"https://web-cdn.agora.io/docs-files/1628837665989\">diagram</a> for details .</p>\n</li>\n<li><p><code>\"FIT\"</code>: While maintaining the aspect ratio, zoom the screen to display it completely. See <a href=\"https://web-cdn.agora.io/docs-files/1628837708782\">diagram</a> for details .</p>\n</li>\n</ul>\n<p>Default :FILLwaterMarksarray[object]imageUrlstringrequired</p>\n<p>The URL of the watermark image. Must be a legal URL and contain <code>jpg</code>or <code>png</code>suffix.</p>\n<p>regionobjectrequiredx#/components/schemas/x-wmrequiredynumberrequired</p>\n<p>The y coordinate (px) of the watermark on the canvas. Taking the upper left corner of the canvas as the origin, the y coordinate is the vertical displacement of the upper left corner of the screen relative to the origin.</p>\n<p>&gt;= 0&lt;= 3840widthnumberrequired</p>\n<p>The width of the watermark (px).</p>\n<p>&gt;= 120&lt;= 3840heightnumberrequired</p>\n<p>The height of the watermark (px).</p>\n<p>&gt;= 120&lt;= 3840zOrdernumberrequired</p>\n<p>The layer number of the watermark. 0 represents the lowest layer. 100 represents the top layer.</p>\n<p>&gt;= 0&lt;= 100fillModestring</p>\n<p>Watermark fill mode:</p>\n<ul>\n<li><p><code>\"FILL\"</code>: Zoom the screen and crop it in the center while maintaining the aspect ratio. See <a href=\"https://web-cdn.agora.io/docs-files/1628837665989\">diagram</a> for details .</p>\n</li>\n<li><p><code>\"FIT\"</code>: While maintaining the aspect ratio, zoom the screen to display it completely. See <a href=\"https://web-cdn.agora.io/docs-files/1628837708782\">diagram</a> for details .</p>\n</li>\n</ul>\n<p>Default :FILLoutputsarray[object]requiredrtcobjectrequiredrtcChannelstringrequired</p>\n<p>The name of the RTC channel to which the transcoded output audio and video stream belongs.</p>\n<p>rtcUidnumberrequired</p>\n<p>Cloud transcoder UID in the RTC channel to which the transcoded output audio and video stream belongs. Identical UIDs are not allowed within RTC channels, so make sure this value is different from other user UIDs in the channel.</p>\n<p>rtcTokenstringrequired</p>\n<p>Token that Cloud transcoder needs to set when entering the RTC channel to which the output audio and video stream belongs. This value can be used to ensure channel security and prevent abnormal users from disrupting other users in the channel. For details, see <a href=\"https://doc.shengwang.cn/doc/rtc/android/basic-features/token-authentication\">Using Token Authentication</a> . <strong>Note</strong> : The UID of Cloud transcoder in the RTC channel to which the transcoded output audio and video stream belongs is specified by you <code>outputs.rtc.rtcUid</code>. Therefore, when generating Token, the UID you use <code>uid</code>must be <code>outputs.rtc.rtcUid</code>consistent with .</p>\n<p>audioOptionobjectprofileTypestring</p>\n<p>Audio properties of transcoded output:</p>\n<ul>\n<li><p><code>\"AUDIO_PROFILE_DEFAULT\"</code>: 48 kHz sampling rate, music encoding, mono, the maximum encoding rate is 64 Kbps.</p>\n</li>\n<li><p><code>\"AUDIO_PROFILE_SPEECH_STANDARD\"</code>: 32 kHz sampling rate, speech encoding, mono, the maximum encoding rate is 18 Kbps.</p>\n</li>\n<li><p><code>\"AUDIO_PROFILE_MUSIC_STANDARD\"</code>: 48 KHz sampling rate, music encoding, mono, the maximum encoding rate is 64 Kbps.</p>\n</li>\n<li><p><code>\"AUDIO_PROFILE_MUSIC_STANDARD_STEREO\"</code>: 48 KHz sampling rate, music encoding, two-channel, maximum encoding rate is 80 Kbps.</p>\n</li>\n<li><p><code>\"AUDIO_PROFILE_MUSIC_HIGH_QUALITY\"</code>: 48 KHz sampling rate, music encoding, mono, the maximum encoding rate is 96 Kbps.</p>\n</li>\n<li><p><code>\"AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO\"</code>: 48 KHz sampling rate, music encoding, two-channel, maximum encoding rate is 128 Kbps.</p>\n</li>\n</ul>\n<p>Default :AUDIO_PROFILE_DEFAULTvideoOptionobjectfpsnumber</p>\n<p>The frame rate (fps) of the transcoded output video.</p>\n<p>&gt;= 1&lt;= 30Default :15codecstringrequired</p>\n<p>The codec for transcoding the output video. Values ​​include:</p>\n<ul>\n<li><p><code>\"H264\"</code>: Standard H.264 encoding.</p>\n</li>\n<li><p><code>\"VP8\"</code>: Standard VP8 encoding.</p>\n</li>\n</ul>\n<p>bitratenumber</p>\n<p>The bitrate of the transcoded output video.</p>\n<p><strong>Note</strong> : If you do not pass a value, Shengwang will automatically set the video bitrate based on network conditions and other video attributes.</p>\n<p>&gt;= 1&lt;= 10000widthnumberrequired</p>\n<p>The width (px) of the transcoded output video.</p>\n<p>&gt;= 120&lt;= 3840heightnumberrequired</p>\n<p>The height (px) of the transcoded output video.</p>\n<p>&gt;= 120&lt;= 3840lowBitrateHighQualityboolean</p>\n<p>Whether to enable the low-code high-definition function for the transcoded output audio and video streams:</p>\n<ul>\n<li><p><code>true</code>: On.</p>\n</li>\n<li><p><code>false</code>: Not enabled.</p>\n</li>\n</ul>\n<p><strong>Note</strong> : The low-code HD function can achieve the effect of higher-quality video perceived by the human eye at a lower bit rate. This function will increase the cost. Please contact Shengwang sales to inquire about the cost before activating it.</p>\n<p>Default :false</p>\n<h2 id=\"responses\"><a href=\"https://doc.shengwang.cn/api-ref/cloud-transcoder/restful/cloud-transcoder/operations/post-v1-projects-appId-rtsc-cloud-transcoder-tasks#Responses\">Responses</a></h2>\n<p>200Not 2XX</p>\n<p>If the status code is 2XX, the request is successful.</p>\n<h3 id=\"headers-1\"><a href=\"https://doc.shengwang.cn/api-ref/cloud-transcoder/restful/cloud-transcoder/operations/post-v1-projects-appId-rtsc-cloud-transcoder-tasks#response-headers\">Headers</a></h3>\n<p>X-Request-IDstring</p>\n<p>UUID (Universally Unique Identifier), used to identify this request.</p>\n<p><strong>Note</strong> : If a request error occurs, please print the value in the log to troubleshoot the problem. If the response status code of this request is not 2XX, this field may not be included in the response header.</p>\n<h3 id=\"body-1\"><a href=\"https://doc.shengwang.cn/api-ref/cloud-transcoder/restful/cloud-transcoder/operations/post-v1-projects-appId-rtsc-cloud-transcoder-tasks#response-body\">Body</a></h3>\n<p>application/jsonresponses/200taskIdstring</p>\n<p>Transcoding task ID, which is a UUID and is used to identify the cloud transcoder of this request operation.</p>\n<p>createTsnumber</p>\n<p>The Unix timestamp (in seconds) when the transcoding task was created.</p>\n<p>statusstring</p>\n<p>The running status of the transcoding task:</p>\n<ul>\n<li><p><code>\"IDLE\"</code>: The task has not started.</p>\n</li>\n<li><p><code>\"PREPARED\"</code>: The task has received a start request.</p>\n</li>\n<li><p><code>\"STARTING\"</code>: The task is starting.</p>\n</li>\n<li><p><code>\"CREATED\"</code>: Task initialization completed.</p>\n</li>\n<li><p><code>\"STARTED\"</code>: The task has been started.</p>\n</li>\n<li><p><code>\"IN_PROGRESS\"</code>: The task is in progress.</p>\n</li>\n<li><p><code>\"STOPPING\"</code>: The task is stopping.</p>\n</li>\n<li><p><code>\"STOPPED\"</code>: The task has been stopped.</p>\n</li>\n<li><p><code>\"EXIT\"</code>: The task exits normally.</p>\n</li>\n<li><p><code>\"FAILURE_STOP\"</code>: The task exited abnormally.</p>\n</li>\n</ul>\n<p><strong>Note</strong> : You can use this field to monitor the status of the task.</p>\n<p>servicesobjectcloudTranscoderobjecteventHandlersreserved-object</p>\n<p>Reserved fields.</p>\n<p>executionobjectworkflowsreserved-object</p>\n<p>Reserved fields.</p>\n<p>propertiesreserved-object</p>\n<p>Reserved fields.</p>\n<p>sequenceIdstring</p>\n<p>Reserved fields.</p>\n<p>variablesreserved-object</p>\n<p>Reserved fields.</p>\n<p>workflowsreserved-object</p>\n<p>Reserved fields.</p>\n","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":true,"source":{"_postman_id":"d7da7175-1801-46b9-8ee4-e5c9e3010da3","id":"d7da7175-1801-46b9-8ee4-e5c9e3010da3","name":"Agora RESTful APIs","type":"collection"}},"urlObject":{"protocol":"https","path":["v1","projects","{{APPID}}","rtls","abr","config","codecs","{{codecId}}"],"host":["api","sd-rtn","com"],"query":[],"variable":[]}},"response":[{"id":"f3cddc42-2abe-42e2-9971-3dc99d84b55e","name":"create/reset","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\r\n  \"enabled\": true,\r\n  \"video\": {\r\n    \"width\": 1920,\r\n    \"height\": 1080,\r\n    \"fps\": 30\r\n  }\r\n}","options":{"raw":{"language":"json"}}},"url":"https://api.sd-rtn.com/v1/projects/{{APPID}}/rtsc/cloud-transcoder/tasks"},"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":""}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\"\n}"}],"_postman_id":"c6992fff-7fe6-42e1-a355-6a62caf817f1"},{"name":"query templates","id":"0858164c-1f74-4157-a234-54b3e4beade1","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"body":{"mode":"raw","raw":"","options":{"raw":{"language":"json"}}},"url":"https://api.sd-rtn.com/v1/projects/{{APPID}}/rtls/abr/config/codecs","description":"<h4 id=\"get-flow-configuration-templates\">Get flow configuration templates</h4>\n<p>Call this interface to get all templates and their configurations</p>\n<p><strong>Response body parameters</strong></p>\n<ul>\n<li><code>transcoding</code>: JSON Object (Optional) Transcoding settings, includes the following fields:<ul>\n<li><code>video</code>: JSON Object type (Optional) Video transcoding settings, include the following fields:<ul>\n<li><code>enabled</code>: Boolean (Required) Whether to enable video transcoding, the default value is <code>false</code>(disabled).</li>\n<li><code>codec</code>: String (Optional) String type. Transcoding codec, optional values ​​​​\"H.264\", \"VP8\", the default is \"H.264\";</li>\n<li><code>width</code>: Number (Optional) Width in encoding resolution. The value range is 2 to 1920.</li>\n<li><code>height</code>: Number (Optional) Height in encoding resolution. The value range is 2 to 1920.</li>\n<li><code>bitrate</code>: (optional) Number type. Encoding bit rate, unit kbps, value range is 0 to 14000;</li>\n</ul>\n</li>\n<li><code>audio</code>: (optional) JSON Object type. Includes the following fields:<ul>\n<li><code>enabled</code>: (required) Boolean type. Whether to enable audio transcoding, enabled by default.</li>\n<li><code>profile</code>: (optional) Number type. Encoding audio scene, the default is 0, which means: 48 KHz sampling rate, music encoding, mono, the maximum encoding rate is 64 Kbps. If you want to set other profiles, please contact Agora technical support for confirmation.</li>\n<li><code>bitrate</code>: (optional) Number type. Encoding bit rate, unit kbps, value range is 64kbps ~ 320kbps, if not filled in, the bit rate is determined by the profile value.</li>\n</ul>\n</li>\n<li><code>simulcastStream</code>: JSON Object (Optional) The function of large and small video streams, used to improve the adaptive switching capability of the viewer in a weak network environment. Includes the following fields:<ul>\n<li><code>enabled</code>: Boolean (Required) Whether to enable small video transcoding. The default is <code>false</code>(off). If you want to enable it, you must enable the video transcoding function at the same time.</li>\n<li><code>width</code>: Number (Optional) Width in small stream resolution. The value range is 2 to 1920.</li>\n<li><code>height</code>: Number (Optional) Height in small stream resolution, Number type. The value range is 2 to 1920.</li>\n<li><code>fps</code>: Number (Optional) Small stream frame rate. The value range is 1 to 60.</li>\n</ul>\n</li>\n</ul>\n</li>\n<li><code>jitterBuffer</code>: (optional) JSON Object type. The gateway jitter buffer parameters will only take effect when video transcoding is enabled (If there are no special requirements, no explicit configuration is required)<ul>\n<li><code>size</code>: (optional)Number type. jitterBuffer length, unit ms, default value 500 (meaning the gateway will add 500ms to the end-to-end delay to reduce the lag rate caused by network jitter)</li>\n<li><code>maxSize</code>: (optional) Number type. The maximum length of jitterBuffer, unit ms, default value 1000, if provided, must be &gt; jitterBuffer.size. When the jitterBuffer length exceeds this value, the gateway will enable acceleration until it returns to jitterBuffer.size.</li>\n</ul>\n</li>\n</ul>\n","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":true,"source":{"_postman_id":"d7da7175-1801-46b9-8ee4-e5c9e3010da3","id":"d7da7175-1801-46b9-8ee4-e5c9e3010da3","name":"Agora RESTful APIs","type":"collection"}},"urlObject":{"protocol":"https","path":["v1","projects","{{APPID}}","rtls","abr","config","codecs"],"host":["api","sd-rtn","com"],"query":[],"variable":[]}},"response":[{"id":"de0f19e3-293a-4b2c-b4c9-e3fbe6ac54d5","name":"query templates","originalRequest":{"method":"GET","header":[],"body":{"mode":"raw","raw":"","options":{"raw":{"language":"json"}}},"url":{"raw":"https://api.agora.io/:region/v1/projects/:appId/rtls/ingress/stream-templates","protocol":"https","host":["api","agora","io"],"path":[":region","v1","projects",":appId","rtls","ingress","stream-templates"],"variable":[{"key":"region","value":"{{region}}"},{"key":"appId","value":"{{appId}}"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Sun, 23 Jul 2023 07:53:36 GMT"},{"key":"Content-Type","value":"application/json; charset=UTF-8"},{"key":"Content-Length","value":"21"},{"key":"Connection","value":"keep-alive"},{"key":"X-Kong-Upstream-Latency","value":"184"},{"key":"X-Kong-Proxy-Latency","value":"0"},{"key":"Via","value":"kong/2.0.3"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"X-Request-ID","value":"ed8012bbb2b440c78b18c5685da843c1"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": \"success\",\n  \"data\": {\n    \"enabled\": true,\n    \"codecs\": [\n      {\n        \"id\": \"1080p\",\n        \"enabled\": true,\n        \"video\": {\n          \"width\": 1920,\n          \"height\": 1080,\n          \"fps\": 30\n        }\n      }\n    ]\n  }\n}"}],"_postman_id":"0858164c-1f74-4157-a234-54b3e4beade1"}],"id":"bb492b1d-0b4c-48b9-a7a8-54005646bee7","_postman_id":"bb492b1d-0b4c-48b9-a7a8-54005646bee7","description":"","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":true,"source":{"_postman_id":"d7da7175-1801-46b9-8ee4-e5c9e3010da3","id":"d7da7175-1801-46b9-8ee4-e5c9e3010da3","name":"Agora RESTful APIs","type":"collection"}}},{"name":"acquire","event":[{"listen":"test","script":{"id":"ac80e163-d221-4885-a4ce-64c3a85e9d1e","exec":["var jsonData = JSON.parse(pm.response.text());","pm.collectionVariables.set(\"builderToken\", jsonData.tokenName);","pm.test(\"Status code is 200\", function () {","    pm.response.to.have.status(200);","});"],"type":"text/javascript","packages":{}}}],"id":"71538101-8f38-433a-8461-4ce58a28bae8","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"instanceId\": \"{{AccessChannel}}\"\n}","options":{"raw":{"language":"json"}}},"url":"https://api.sd-rtn.com/v1/projects/{{APPID}}/rtsc/cloud-transcoder/builderTokens","description":"<p>Before starting cloud transcoding, you must first call <code>Acquire</code>the method to obtain a cloud transcoding resource.</p>\n<p><strong>Terms and Conditions</strong> :</p>\n<ul>\n<li><p>After calling <code>Acquire</code>the method successfully, you can get one in the response package body <code>builderToken</code>.</p>\n</li>\n<li><p>To ensure successful cloud transcoding, please   initiate the corresponding request immediately within 2 seconds after  each <code>Acquire</code> request is obtained   .  Making a batch request after  a batch fetch   may cause the request to fail.<code>builderTokenCreatebuilderTokenCreate</code></p>\n</li>\n<li><p>One <code>builderToken</code>can only be used for one cloud transcoding task. <code>builderToken</code>The time limit is 5 minutes.</p>\n</li>\n</ul>\n<h2 id=\"request\"><a href=\"https://doc.shengwang.cn/api-ref/cloud-transcoder/restful/cloud-transcoder/operations/post-v1-projects-appId-rtsc-cloud-transcoder-builderTokens#Request\">Request</a></h2>\n<p>Security: Basic Auth</p>\n<p><strong>HTTP Basic Authentication</strong> : Every time you send an HTTP request, you must fill in the field in the request header <code>Authorization</code>. For information on how to generate the value of this field, please refer to <a href=\"https://doc.shengwang.cn/doc/cloud-transcoder/restful/get-started/http-basic-auth\">Implementing HTTP Basic Authentication</a> .</p>\n<p>Basic authentication is a simple authentication scheme built into the HTTP protocol. To use it, send your HTTP requests with an Authorization header that contains the word Basic followed by a space and a base64-encoded string <code>username:password</code>.</p>\n<p>Example:<code>Authorization: Basic ZGVtbzpwQDU1dzByZA==</code></p>\n<h3 id=\"path-parameters\"><a href=\"https://doc.shengwang.cn/api-ref/cloud-transcoder/restful/cloud-transcoder/operations/post-v1-projects-appId-rtsc-cloud-transcoder-builderTokens#Path-Parameters\">Path Parameters</a></h3>\n<p>appIdstringrequired</p>\n<p><strong>App ID</strong> provided by Shengwang to each developer . After creating a project in the Agora console, you can get an App ID. An App ID is a unique identifier for a project.</p>\n<h3 id=\"headers\"><a href=\"https://doc.shengwang.cn/api-ref/cloud-transcoder/restful/cloud-transcoder/operations/post-v1-projects-appId-rtsc-cloud-transcoder-builderTokens#request-headers\">Headers</a></h3>\n<p>Content-Typestringrequired</p>\n<p><code>application/json</code></p>\n<h3 id=\"body\"><a href=\"https://doc.shengwang.cn/api-ref/cloud-transcoder/restful/cloud-transcoder/operations/post-v1-projects-appId-rtsc-cloud-transcoder-builderTokens#request-body\">Body</a></h3>\n<p>application/jsoninstanceIdstringrequired</p>\n<p>User-specified instance ID. The length must be within 64 characters, and the supported character set range is:</p>\n<ul>\n<li><p>All lowercase English letters (az)</p>\n</li>\n<li><p>All uppercase English letters (AZ)</p>\n</li>\n<li><p>Numbers 0-9</p>\n</li>\n<li><p>\"-\", \"_\"</p>\n</li>\n</ul>\n<p><strong>Note</strong> : One <code>instanceId</code>can generate multiple ones <code>builderToken</code>, but only one can be used to initiate a request in a task <code>builderToken</code>.</p>\n<h2 id=\"responses\"><a href=\"https://doc.shengwang.cn/api-ref/cloud-transcoder/restful/cloud-transcoder/operations/post-v1-projects-appId-rtsc-cloud-transcoder-builderTokens#Responses\">Responses</a></h2>\n<p>200Not 2XX</p>\n<p>If the status code is 2XX, the request is successful.</p>\n<h3 id=\"headers-1\"><a href=\"https://doc.shengwang.cn/api-ref/cloud-transcoder/restful/cloud-transcoder/operations/post-v1-projects-appId-rtsc-cloud-transcoder-builderTokens#response-headers\">Headers</a></h3>\n<p>X-Request-IDstring</p>\n<p>UUID (Universally Unique Identifier), used to identify this request.</p>\n<p><strong>Note</strong> : If a request error occurs, please print the value in the log to troubleshoot the problem. If the response status code of this request is not 2XX, this field may not be included in the response header.</p>\n<h3 id=\"body-1\"><a href=\"https://doc.shengwang.cn/api-ref/cloud-transcoder/restful/cloud-transcoder/operations/post-v1-projects-appId-rtsc-cloud-transcoder-builderTokens#response-body\">Body</a></h3>\n<p>application/jsonresponses/200/tokenNamecreateTsnumber</p>\n<p><code>builderToken</code>The Unix timestamp (in seconds) when was generated .</p>\n<p>instanceIdstring</p>\n<p>Set when requested <code>instanceId</code>.</p>\n<p>tokenNamestring</p>\n<p>Represents <code>builderToken</code>the value of , which needs to be passed in when calling other methods later.</p>\n","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":true,"source":{"_postman_id":"d7da7175-1801-46b9-8ee4-e5c9e3010da3","id":"d7da7175-1801-46b9-8ee4-e5c9e3010da3","name":"Agora RESTful APIs","type":"collection"}},"urlObject":{"protocol":"https","path":["v1","projects","{{APPID}}","rtsc","cloud-transcoder","builderTokens"],"host":["api","sd-rtn","com"],"query":[],"variable":[]}},"response":[{"id":"b0c61bca-e5a4-42af-8251-597913629870","name":"acquire","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"instanceId\": \"testtranscoding01\"\n}\n","options":{"raw":{"language":"json"}}},"url":"https://api.sd-rtn.com/v1/projects/{{APPID}}/rtsc/cloud-transcoder/builderTokens"},"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"createTs\": 1661324606,\n    \"instanceId\": \"testtranscoding01\",\n    \"tokenName\": \"nUwUbQf9Zg6tsgtLslGnDg0lk8RYaUE0***\"\n}"}],"_postman_id":"71538101-8f38-433a-8461-4ce58a28bae8"},{"name":"create","event":[{"listen":"prerequest","script":{"id":"96448d3e-522a-406e-bff9-accdcd2bed8b","exec":[""],"type":"text/javascript","packages":{}}},{"listen":"test","script":{"id":"95b4b014-34c6-4401-826e-3d348d0ee1b2","exec":["var jsonData = JSON.parse(responseBody);\r","pm.collectionVariables.set(\"taskId\", jsonData.taskId);\r","pm.test(\"Status code is 200\", function () {\r","    pm.response.to.have.status(200);\r","});"],"type":"text/javascript","packages":{}}}],"id":"c92602db-c817-47bd-ae8f-de7afa3891f7","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\r\n  \"services\": {\r\n    \"cloudTranscoder\": {\r\n      \"serviceType\": \"cloudTranscoderV2\",\r\n      \"config\": {\r\n        \"transcoder\": {\r\n          \"idleTimeout\": 300,\r\n          \"audioInputs\": [\r\n            {\r\n              \"rtc\": {\r\n                \"rtcChannel\": \"{{AccessChannel}}\",\r\n                \"rtcUid\": {{uid}},\r\n                \"rtcToken\": \"{{token}}\"\r\n              }\r\n            },\r\n            {\r\n              \"rtc\": {\r\n                \"rtcChannel\": \"{{AccessChannel}}\",\r\n                \"rtcUid\": {{uidTwo}},\r\n                \"rtcToken\": \"{{tokenTwo}}\"\r\n              }\r\n            }\r\n          ],\r\n          \"canvas\": {\r\n            \"width\": 960,\r\n            \"height\": 480,\r\n            \"color\": 0,\r\n            \"backgroundImage\": \"https://example.jpg\",\r\n            \"fillMode\": \"FIT\"\r\n          },\r\n          \"waterMarks\": [\r\n            {\r\n              \"imageUrl\": \"https://example.png\",\r\n              \"region\": {\r\n                \"x\": 0,\r\n                \"y\": 0,\r\n                \"width\": 120,\r\n                \"height\": 120,\r\n                \"zOrder\": 50\r\n              }\r\n            }\r\n          ],\r\n          \"videoInputs\": [\r\n            {\r\n              \"rtc\": {\r\n                \"rtcChannel\": \"{{AccessChannel}}\",\r\n                \"rtcUid\": {{uid}},\r\n                \"rtcToken\": \"{{token}}\"\r\n              },\r\n              \"placeholderImageUrl\": \"https://example.jpg\",\r\n              \"region\": {\r\n                \"x\": 0,\r\n                \"y\": 0,\r\n                \"width\": 320,\r\n                \"height\": 360,\r\n                \"zOrder\": 1\r\n              }\r\n            },\r\n            {\r\n              \"rtc\": {\r\n                \"rtcChannel\": \"{{AccessChannel}}\",\r\n                \"rtcUid\": {{uidTwo}},\r\n                \"rtcToken\": \"{{tokenTwo}}\"\r\n              },\r\n              \"placeholderImageUrl\": \"https://example.jpg\",\r\n              \"region\": {\r\n                \"x\": 320,\r\n                \"y\": 0,\r\n                \"width\": 320,\r\n                \"height\": 320,\r\n                \"zOrder\": 1\r\n              }\r\n            }\r\n          ],\r\n          \"outputs\": [\r\n            {\r\n              \"rtc\": {\r\n                \"rtcChannel\": \"{{AccessChannelOC}}\",\r\n                \"rtcUid\": {{uidOC}},\r\n                \"rtcToken\": \"{{tokenOC}}\"\r\n              },\r\n              \"audioOption\": {\r\n                \"profileType\": \"AUDIO_PROFILE_MUSIC_STANDARD\"\r\n              },\r\n              \"videoOption\": {\r\n                \"fps\": 30,\r\n                \"codec\": \"H264\",\r\n                \"bitrate\": 800,\r\n                \"width\": 960,\r\n                \"height\": 480,\r\n                \"lowBitrateHighQuality\": false\r\n              }\r\n            }\r\n          ]\r\n        }\r\n      }\r\n    }\r\n  }\r\n}","options":{"raw":{"language":"json"}}},"url":"https://api.sd-rtn.com/v1/projects/{{APPID}}/rtsc/cloud-transcoder/tasks?builderToken=","description":"<p>After initiating <code>Acquire</code>the request, you can <code>Create</code>create a cloud transcoder through the request. The Agora server will begin to transcode and combine the multi-channel streams you specified and input them into the Agora RTC channel.</p>\n<h2 id=\"request\"><a href=\"https://doc.shengwang.cn/api-ref/cloud-transcoder/restful/cloud-transcoder/operations/post-v1-projects-appId-rtsc-cloud-transcoder-tasks#Request\">Request</a></h2>\n<p>Security: Basic Auth</p>\n<p><strong>HTTP Basic Authentication</strong> : Every time you send an HTTP request, you must fill in the field in the request header <code>Authorization</code>. For information on how to generate the value of this field, please refer to <a href=\"https://doc.shengwang.cn/doc/cloud-transcoder/restful/get-started/http-basic-auth\">Implementing HTTP Basic Authentication</a> .</p>\n<p>Basic authentication is a simple authentication scheme built into the HTTP protocol. To use it, send your HTTP requests with an Authorization header that contains the word Basic followed by a space and a base64-encoded string <code>username:password</code>.</p>\n<p>Example:<code>Authorization: Basic ZGVtbzpwQDU1dzByZA==</code></p>\n<h3 id=\"path-parameters\"><a href=\"https://doc.shengwang.cn/api-ref/cloud-transcoder/restful/cloud-transcoder/operations/post-v1-projects-appId-rtsc-cloud-transcoder-tasks#Path-Parameters\">Path Parameters</a></h3>\n<p>appIdstringrequired</p>\n<p><strong>App ID</strong> provided by Shengwang to each developer . After creating a project in the Agora console, you can get an App ID. An App ID is a unique identifier for a project.</p>\n<h3 id=\"query-parameters\"><a href=\"https://doc.shengwang.cn/api-ref/cloud-transcoder/restful/cloud-transcoder/operations/post-v1-projects-appId-rtsc-cloud-transcoder-tasks#Query-Parameters\">Query Parameters</a></h3>\n<p>builderTokenstringrequired</p>\n<p>Fill in the value <code>Acquire</code>obtained from the response body of the method <code>tokenName</code>.</p>\n<h3 id=\"headers\"><a href=\"https://doc.shengwang.cn/api-ref/cloud-transcoder/restful/cloud-transcoder/operations/post-v1-projects-appId-rtsc-cloud-transcoder-tasks#request-headers\">Headers</a></h3>\n<p>Content-Typestringrequired</p>\n<p><code>application/json</code></p>\n<h3 id=\"body\"><a href=\"https://doc.shengwang.cn/api-ref/cloud-transcoder/restful/cloud-transcoder/operations/post-v1-projects-appId-rtsc-cloud-transcoder-tasks#request-body\">Body</a></h3>\n<p>application/jsonservicesobjectrequiredcloudTranscoderobjectrequiredserviceTypestringrequired</p>\n<p>Service type, here <code>\"cloudTranscoderV2\"</code>.</p>\n<p>configobjectrequiredtranscoderobjectrequiredidleTimeoutnumber</p>\n<p>The maximum amount of time, in seconds, that a Cloud transcoder can be idle. Idle means that all anchors corresponding to the audio and video streams processed by cloud transcoder have left the channel. After the idle state exceeds the set value <code>idleTimeOut</code>, the cloud transcoder will be automatically destroyed.</p>\n<p>&gt;= 1&lt;= 86400Default :300audioInputsarray[object]rtcobjectrequiredrtcChannelstringrequired</p>\n<p>The RTC channel name to which the audio input source belongs. Currently, only subscribing to audio and video sources of a single channel is supported. The channels to which the audio source and video source belong must be the same.</p>\n<p>rtcUidnumberrequired</p>\n<p>UID corresponding to the audio input source. The same UID is not allowed to exist in the RTC channel.</p>\n<p>rtcTokenstringrequired</p>\n<p>Token that Cloud transcoder needs to set when entering the RTC channel of the video source to be transcoded. This value can be used to ensure channel security and prevent abnormal users from disrupting other users in the channel. For details, see <a href=\"https://doc.shengwang.cn/doc/rtc/android/basic-features/token-authentication\">Using Token Authentication</a> .</p>\n<p><strong>Note</strong> : The UID of the Cloud transcoder in the RTC channel of the audio and video source to be transcoded is randomly assigned by Agora. Therefore, when generating a Token, the UID you use <code>uid</code>must be 0.</p>\n<p>videoInputsarray[object]rtcobjectrequiredplaceholderImageUrlstringrequired</p>\n<p>The URL of the placeholder image when the user is offline. Must be a legal URL and contain <code>jpg</code>or <code>png</code>suffix.</p>\n<p>regionobjectrequiredcanvasobjectrequiredwidthnumberrequired</p>\n<p>The width of the canvas (px).</p>\n<p>&gt;= 120&lt;= 3840heightnumberrequired</p>\n<p>The height of the canvas (px). The value range is [120,3840].</p>\n<p>&gt;= 120&lt;= 3840colornumberrequired</p>\n<p>The background color of the canvas. RGB color value, expressed as a decimal number. For example, 0 represents black and 255 represents blue.</p>\n<p>&gt;= 0&lt;= 16777215backgroundImagestring</p>\n<p>Canvas background image. Must be a legal URL and contain <code>jpg</code>or <code>png</code>suffix.</p>\n<p><strong>Note</strong> : If no value is passed, there will be no canvas background image.</p>\n<p>fillModestring</p>\n<p>The fill mode of the canvas background image:</p>\n<ul>\n<li><p><code>\"FILL\"</code>: Zoom the screen and crop it in the center while maintaining the aspect ratio. See <a href=\"https://web-cdn.agora.io/docs-files/1628837665989\">diagram</a> for details .</p>\n</li>\n<li><p><code>\"FIT\"</code>: While maintaining the aspect ratio, zoom the screen to display it completely. See <a href=\"https://web-cdn.agora.io/docs-files/1628837708782\">diagram</a> for details .</p>\n</li>\n</ul>\n<p>Default :FILLwaterMarksarray[object]imageUrlstringrequired</p>\n<p>The URL of the watermark image. Must be a legal URL and contain <code>jpg</code>or <code>png</code>suffix.</p>\n<p>regionobjectrequiredx#/components/schemas/x-wmrequiredynumberrequired</p>\n<p>The y coordinate (px) of the watermark on the canvas. Taking the upper left corner of the canvas as the origin, the y coordinate is the vertical displacement of the upper left corner of the screen relative to the origin.</p>\n<p>&gt;= 0&lt;= 3840widthnumberrequired</p>\n<p>The width of the watermark (px).</p>\n<p>&gt;= 120&lt;= 3840heightnumberrequired</p>\n<p>The height of the watermark (px).</p>\n<p>&gt;= 120&lt;= 3840zOrdernumberrequired</p>\n<p>The layer number of the watermark. 0 represents the lowest layer. 100 represents the top layer.</p>\n<p>&gt;= 0&lt;= 100fillModestring</p>\n<p>Watermark fill mode:</p>\n<ul>\n<li><p><code>\"FILL\"</code>: Zoom the screen and crop it in the center while maintaining the aspect ratio. See <a href=\"https://web-cdn.agora.io/docs-files/1628837665989\">diagram</a> for details .</p>\n</li>\n<li><p><code>\"FIT\"</code>: While maintaining the aspect ratio, zoom the screen to display it completely. See <a href=\"https://web-cdn.agora.io/docs-files/1628837708782\">diagram</a> for details .</p>\n</li>\n</ul>\n<p>Default :FILLoutputsarray[object]requiredrtcobjectrequiredrtcChannelstringrequired</p>\n<p>The name of the RTC channel to which the transcoded output audio and video stream belongs.</p>\n<p>rtcUidnumberrequired</p>\n<p>Cloud transcoder UID in the RTC channel to which the transcoded output audio and video stream belongs. Identical UIDs are not allowed within RTC channels, so make sure this value is different from other user UIDs in the channel.</p>\n<p>rtcTokenstringrequired</p>\n<p>Token that Cloud transcoder needs to set when entering the RTC channel to which the output audio and video stream belongs. This value can be used to ensure channel security and prevent abnormal users from disrupting other users in the channel. For details, see <a href=\"https://doc.shengwang.cn/doc/rtc/android/basic-features/token-authentication\">Using Token Authentication</a> . <strong>Note</strong> : The UID of Cloud transcoder in the RTC channel to which the transcoded output audio and video stream belongs is specified by you <code>outputs.rtc.rtcUid</code>. Therefore, when generating Token, the UID you use <code>uid</code>must be <code>outputs.rtc.rtcUid</code>consistent with .</p>\n<p>audioOptionobjectprofileTypestring</p>\n<p>Audio properties of transcoded output:</p>\n<ul>\n<li><p><code>\"AUDIO_PROFILE_DEFAULT\"</code>: 48 kHz sampling rate, music encoding, mono, the maximum encoding rate is 64 Kbps.</p>\n</li>\n<li><p><code>\"AUDIO_PROFILE_SPEECH_STANDARD\"</code>: 32 kHz sampling rate, speech encoding, mono, the maximum encoding rate is 18 Kbps.</p>\n</li>\n<li><p><code>\"AUDIO_PROFILE_MUSIC_STANDARD\"</code>: 48 KHz sampling rate, music encoding, mono, the maximum encoding rate is 64 Kbps.</p>\n</li>\n<li><p><code>\"AUDIO_PROFILE_MUSIC_STANDARD_STEREO\"</code>: 48 KHz sampling rate, music encoding, two-channel, maximum encoding rate is 80 Kbps.</p>\n</li>\n<li><p><code>\"AUDIO_PROFILE_MUSIC_HIGH_QUALITY\"</code>: 48 KHz sampling rate, music encoding, mono, the maximum encoding rate is 96 Kbps.</p>\n</li>\n<li><p><code>\"AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO\"</code>: 48 KHz sampling rate, music encoding, two-channel, maximum encoding rate is 128 Kbps.</p>\n</li>\n</ul>\n<p>Default :AUDIO_PROFILE_DEFAULTvideoOptionobjectfpsnumber</p>\n<p>The frame rate (fps) of the transcoded output video.</p>\n<p>&gt;= 1&lt;= 30Default :15codecstringrequired</p>\n<p>The codec for transcoding the output video. Values ​​include:</p>\n<ul>\n<li><p><code>\"H264\"</code>: Standard H.264 encoding.</p>\n</li>\n<li><p><code>\"VP8\"</code>: Standard VP8 encoding.</p>\n</li>\n</ul>\n<p>bitratenumber</p>\n<p>The bitrate of the transcoded output video.</p>\n<p><strong>Note</strong> : If you do not pass a value, Shengwang will automatically set the video bitrate based on network conditions and other video attributes.</p>\n<p>&gt;= 1&lt;= 10000widthnumberrequired</p>\n<p>The width (px) of the transcoded output video.</p>\n<p>&gt;= 120&lt;= 3840heightnumberrequired</p>\n<p>The height (px) of the transcoded output video.</p>\n<p>&gt;= 120&lt;= 3840lowBitrateHighQualityboolean</p>\n<p>Whether to enable the low-code high-definition function for the transcoded output audio and video streams:</p>\n<ul>\n<li><p><code>true</code>: On.</p>\n</li>\n<li><p><code>false</code>: Not enabled.</p>\n</li>\n</ul>\n<p><strong>Note</strong> : The low-code HD function can achieve the effect of higher-quality video perceived by the human eye at a lower bit rate. This function will increase the cost. Please contact Shengwang sales to inquire about the cost before activating it.</p>\n<p>Default :false</p>\n<h2 id=\"responses\"><a href=\"https://doc.shengwang.cn/api-ref/cloud-transcoder/restful/cloud-transcoder/operations/post-v1-projects-appId-rtsc-cloud-transcoder-tasks#Responses\">Responses</a></h2>\n<p>200Not 2XX</p>\n<p>If the status code is 2XX, the request is successful.</p>\n<h3 id=\"headers-1\"><a href=\"https://doc.shengwang.cn/api-ref/cloud-transcoder/restful/cloud-transcoder/operations/post-v1-projects-appId-rtsc-cloud-transcoder-tasks#response-headers\">Headers</a></h3>\n<p>X-Request-IDstring</p>\n<p>UUID (Universally Unique Identifier), used to identify this request.</p>\n<p><strong>Note</strong> : If a request error occurs, please print the value in the log to troubleshoot the problem. If the response status code of this request is not 2XX, this field may not be included in the response header.</p>\n<h3 id=\"body-1\"><a href=\"https://doc.shengwang.cn/api-ref/cloud-transcoder/restful/cloud-transcoder/operations/post-v1-projects-appId-rtsc-cloud-transcoder-tasks#response-body\">Body</a></h3>\n<p>application/jsonresponses/200taskIdstring</p>\n<p>Transcoding task ID, which is a UUID and is used to identify the cloud transcoder of this request operation.</p>\n<p>createTsnumber</p>\n<p>The Unix timestamp (in seconds) when the transcoding task was created.</p>\n<p>statusstring</p>\n<p>The running status of the transcoding task:</p>\n<ul>\n<li><p><code>\"IDLE\"</code>: The task has not started.</p>\n</li>\n<li><p><code>\"PREPARED\"</code>: The task has received a start request.</p>\n</li>\n<li><p><code>\"STARTING\"</code>: The task is starting.</p>\n</li>\n<li><p><code>\"CREATED\"</code>: Task initialization completed.</p>\n</li>\n<li><p><code>\"STARTED\"</code>: The task has been started.</p>\n</li>\n<li><p><code>\"IN_PROGRESS\"</code>: The task is in progress.</p>\n</li>\n<li><p><code>\"STOPPING\"</code>: The task is stopping.</p>\n</li>\n<li><p><code>\"STOPPED\"</code>: The task has been stopped.</p>\n</li>\n<li><p><code>\"EXIT\"</code>: The task exits normally.</p>\n</li>\n<li><p><code>\"FAILURE_STOP\"</code>: The task exited abnormally.</p>\n</li>\n</ul>\n<p><strong>Note</strong> : You can use this field to monitor the status of the task.</p>\n<p>servicesobjectcloudTranscoderobjecteventHandlersreserved-object</p>\n<p>Reserved fields.</p>\n<p>executionobjectworkflowsreserved-object</p>\n<p>Reserved fields.</p>\n<p>propertiesreserved-object</p>\n<p>Reserved fields.</p>\n<p>sequenceIdstring</p>\n<p>Reserved fields.</p>\n<p>variablesreserved-object</p>\n<p>Reserved fields.</p>\n<p>workflowsreserved-object</p>\n<p>Reserved fields.</p>\n","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":true,"source":{"_postman_id":"d7da7175-1801-46b9-8ee4-e5c9e3010da3","id":"d7da7175-1801-46b9-8ee4-e5c9e3010da3","name":"Agora RESTful APIs","type":"collection"}},"urlObject":{"protocol":"https","path":["v1","projects","{{APPID}}","rtsc","cloud-transcoder","tasks"],"host":["api","sd-rtn","com"],"query":[{"key":"builderToken","value":""}],"variable":[]}},"response":[{"id":"e628c565-d627-44be-a342-1ed9745c8d5c","name":"create","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\r\n  \"services\": {\r\n    \"cloudTranscoder\": {\r\n      \"serviceType\": \"cloudTranscoderV2\",\r\n      \"config\": {\r\n        \"transcoder\": {\r\n          \"idleTimeout\": 300,\r\n          \"audioInputs\": [\r\n            {\r\n              \"rtc\": {\r\n                \"rtcChannel\": \"testtranscoding01\",\r\n                \"rtcUid\": 123,\r\n                \"rtcToken\": \"aab8b8f5a8cd4469a63042fcfafe7***\"\r\n              }\r\n            },\r\n            {\r\n              \"rtc\": {\r\n                \"rtcChannel\": \"testtranscoding01\",\r\n                \"rtcUid\": 456,\r\n                \"rtcToken\": \"aab8b8f5a8cd4469a63042fcfafe7***\"\r\n              }\r\n            }\r\n          ],\r\n          \"canvas\": {\r\n            \"width\": 960,\r\n            \"height\": 480,\r\n            \"color\": 0,\r\n            \"backgroundImage\": \"https://example.jpg\",\r\n            \"fillMode\": \"FIT\"\r\n          },\r\n          \"waterMarks\": [\r\n            {\r\n              \"imageUrl\": \"https://example.png\",\r\n              \"region\": {\r\n                \"x\": 0,\r\n                \"y\": 0,\r\n                \"width\": 120,\r\n                \"height\": 120,\r\n                \"zOrder\": 50\r\n              }\r\n            }\r\n          ],\r\n          \"videoInputs\": [\r\n            {\r\n              \"rtc\": {\r\n                \"rtcChannel\": \"testtranscoding01\",\r\n                \"rtcUid\": 123,\r\n                \"rtcToken\": \"aab8b8f5a8cd4469a63042fcfafe7***\"\r\n              },\r\n              \"placeholderImageUrl\": \"https://example.jpg\",\r\n              \"region\": {\r\n                \"x\": 0,\r\n                \"y\": 0,\r\n                \"width\": 320,\r\n                \"height\": 360,\r\n                \"zOrder\": 1\r\n              }\r\n            },\r\n            {\r\n              \"rtc\": {\r\n                \"rtcChannel\": \"testtranscoding01\",\r\n                \"rtcUid\": 456,\r\n                \"rtcToken\": \"aab8b8f5a8cd4469a63042fcfafe7***\"\r\n              },\r\n              \"placeholderImageUrl\": \"https://example.jpg\",\r\n              \"region\": {\r\n                \"x\": 320,\r\n                \"y\": 0,\r\n                \"width\": 320,\r\n                \"height\": 320,\r\n                \"zOrder\": 1\r\n              }\r\n            }\r\n          ],\r\n          \"outputs\": [\r\n            {\r\n              \"rtc\": {\r\n                \"rtcChannel\": \"testtranscoding02\",\r\n                \"rtcUid\": 9999,\r\n                \"rtcToken\": \"aab8b8f5a8cd4469a63042fcfafe7***\"\r\n              },\r\n              \"audioOption\": {\r\n                \"profileType\": \"AUDIO_PROFILE_MUSIC_STANDARD\"\r\n              },\r\n              \"videoOption\": {\r\n                \"fps\": 30,\r\n                \"codec\": \"H264\",\r\n                \"bitrate\": 800,\r\n                \"width\": 960,\r\n                \"height\": 480,\r\n                \"lowBitrateHighQuality\": false\r\n              }\r\n            }\r\n          ]\r\n        }\r\n      }\r\n    }\r\n  }\r\n}","options":{"raw":{"language":"json"}}},"url":"https://api.sd-rtn.com/v1/projects/{{APPID}}/rtsc/cloud-transcoder/tasks"},"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n  \"createTs\" : 1661324613 , \n  \"eventHandlers\" : { } , \n  \"execution\" : { \n    \"workflows\" : { } \n  } ,\n  \"properties\" : { } , \n  \"sequenceId\" : \"0\" , \n  \"services\" : { \n    \"cloudTranscoder\" : { \n      \"config\" : { } , \n      \"createTs\" : 1661324614 , \n      \"details\" : { } , \n      \"message\" : \"\" , \n      \"serviceType\" : \"cloudTranscoderV2\" , \n      \"status\" : \"serviceReady\" \n    }\n  } ,\n  \"status\" : \"STARTED\" , \n  \"taskId\" : \"609f28f2644f1ae1ceb041b7047e3***\" , \n  \"variables\" : { } , \n  \"workflows\" : { }\n}"}],"_postman_id":"c92602db-c817-47bd-ae8f-de7afa3891f7"},{"name":"query","event":[{"listen":"test","script":{"id":"29b7ac8e-7a96-4de1-8e01-5a18a2ef18cf","exec":["pm.test(\"Status code is 200\", function () {\r","    pm.response.to.have.status(200);\r","});"],"type":"text/javascript","packages":{}}}],"id":"99226600-4464-4537-98d3-505efc586c48","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":""},"url":"https://api.sd-rtn.com/v1/projects/{{APPID}}/rtsc/cloud-transcoder/tasks/?builderToken=","description":"<p>After creating cloud transcoding, you can initiate <code>Query</code>a request to query the transcoding status.</p>\n<h2 id=\"request\"><a href=\"https://doc.shengwang.cn/api-ref/cloud-transcoder/restful/cloud-transcoder/operations/get-v1-projects-appId-rtsc-cloud-transcoder-tasks-taskId#Request\">Request</a></h2>\n<p>Security: Basic Auth</p>\n<p><strong>HTTP Basic Authentication</strong> : Every time you send an HTTP request, you must fill in the field in the request header <code>Authorization</code>. For information on how to generate the value of this field, please refer to <a href=\"https://doc.shengwang.cn/doc/cloud-transcoder/restful/get-started/http-basic-auth\">Implementing HTTP Basic Authentication</a> .</p>\n<p>Basic authentication is a simple authentication scheme built into the HTTP protocol. To use it, send your HTTP requests with an Authorization header that contains the word Basic followed by a space and a base64-encoded string <code>username:password</code>.</p>\n<p>Example:<code>Authorization: Basic ZGVtbzpwQDU1dzByZA==</code></p>\n<h3 id=\"path-parameters\"><a href=\"https://doc.shengwang.cn/api-ref/cloud-transcoder/restful/cloud-transcoder/operations/get-v1-projects-appId-rtsc-cloud-transcoder-tasks-taskId#Path-Parameters\">Path Parameters</a></h3>\n<p>appIdstringrequired</p>\n<p><strong>App ID</strong> provided by Shengwang to each developer . After creating a project in the Agora console, you can get an App ID. An App ID is a unique identifier for a project.</p>\n<p>taskIdstringrequired</p>\n<p>Transcoding task ID, which is UUID and is used to identify the cloud transcoder of this request operation.</p>\n<h3 id=\"query-parameters\"><a href=\"https://doc.shengwang.cn/api-ref/cloud-transcoder/restful/cloud-transcoder/operations/get-v1-projects-appId-rtsc-cloud-transcoder-tasks-taskId#Query-Parameters\">Query Parameters</a></h3>\n<p>builderTokenstringrequired</p>\n<p>Fill in the value <code>Acquire</code>obtained from the response body of the method <code>tokenName</code>.</p>\n<h3 id=\"headers\"><a href=\"https://doc.shengwang.cn/api-ref/cloud-transcoder/restful/cloud-transcoder/operations/get-v1-projects-appId-rtsc-cloud-transcoder-tasks-taskId#request-headers\">Headers</a></h3>\n<p>Content-Typestringrequired</p>\n<p><code>application/json</code></p>\n<h2 id=\"responses\"><a href=\"https://doc.shengwang.cn/api-ref/cloud-transcoder/restful/cloud-transcoder/operations/get-v1-projects-appId-rtsc-cloud-transcoder-tasks-taskId#Responses\">Responses</a></h2>\n<p>200Not 2XX</p>\n<p>If the status code is 2XX, the request is successful.</p>\n<h3 id=\"headers-1\"><a href=\"https://doc.shengwang.cn/api-ref/cloud-transcoder/restful/cloud-transcoder/operations/get-v1-projects-appId-rtsc-cloud-transcoder-tasks-taskId#response-headers\">Headers</a></h3>\n<p>X-Request-IDstring</p>\n<p>UUID (Universally Unique Identifier), used to identify this request.</p>\n<p><strong>Note</strong> : If a request error occurs, please print the value in the log to troubleshoot the problem. If the response status code of this request is not 2XX, this field may not be included in the response header.</p>\n<h3 id=\"body\"><a href=\"https://doc.shengwang.cn/api-ref/cloud-transcoder/restful/cloud-transcoder/operations/get-v1-projects-appId-rtsc-cloud-transcoder-tasks-taskId#response-body\">Body</a></h3>\n<p>application/jsontaskIdstring</p>\n<p>Transcoding task ID, which is a UUID and is used to identify the cloud transcoder of this request operation.</p>\n<p>createTsnumber</p>\n<p>The Unix timestamp (in seconds) when the transcoding task was created.</p>\n<p>statusstring</p>\n<p>The running status of the transcoding task:</p>\n<ul>\n<li><p><code>\"IDLE\"</code>: The task has not started.</p>\n</li>\n<li><p><code>\"PREPARED\"</code>: The task has received a start request.</p>\n</li>\n<li><p><code>\"STARTING\"</code>: The task is starting.</p>\n</li>\n<li><p><code>\"CREATED\"</code>: Task initialization completed.</p>\n</li>\n<li><p><code>\"STARTED\"</code>: The task has been started.</p>\n</li>\n<li><p><code>\"IN_PROGRESS\"</code>: The task is in progress.</p>\n</li>\n<li><p><code>\"STOPPING\"</code>: The task is stopping.</p>\n</li>\n<li><p><code>\"STOPPED\"</code>: The task has been stopped.</p>\n</li>\n<li><p><code>\"EXIT\"</code>: The task exits normally.</p>\n</li>\n<li><p><code>\"FAILURE_STOP\"</code>: The task exited abnormally.</p>\n</li>\n</ul>\n<p><strong>Note</strong> : You can use this field to monitor the status of the task.</p>\n<p>servicesobjectcloudTranscoderobjecteventHandlersreserved-object</p>\n<p>Reserved fields.</p>\n<p>executionobjectworkflowsreserved-object</p>\n<p>Reserved fields.</p>\n<p>propertiesreserved-object</p>\n<p>Reserved fields.</p>\n<p>sequenceIdstring</p>\n<p>Reserved fields.</p>\n<p>variablesreserved-object</p>\n<p>Reserved fields.</p>\n<p>workflowsreserved-object</p>\n<p>Reserved fields.</p>\n","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":true,"source":{"_postman_id":"d7da7175-1801-46b9-8ee4-e5c9e3010da3","id":"d7da7175-1801-46b9-8ee4-e5c9e3010da3","name":"Agora RESTful APIs","type":"collection"}},"urlObject":{"protocol":"https","path":["v1","projects","{{APPID}}","rtsc","cloud-transcoder","tasks",""],"host":["api","sd-rtn","com"],"query":[{"key":"builderToken","value":""}],"variable":[]}},"response":[{"id":"2951e357-1927-466e-b0dc-b0ec9e5ed103","name":"query","originalRequest":{"method":"GET","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":"https://api.sd-rtn.com/v1/projects/{{APPID}}/rtsc/cloud-transcoder/tasks/"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Sat, 11 Mar 2023 03:38:04 GMT"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"91"},{"key":"Connection","value":"keep-alive"},{"key":"X-Capacity-RateLimit","value":"active"},{"key":"X-Capacity-RateLimit-Remaining-second","value":"10"},{"key":"X-Capacity-RateLimit-Limit-second","value":"10"},{"key":"X-RateLimit-Remaining-Second","value":"9"},{"key":"X-RateLimit-Limit-Second","value":"10"},{"key":"RateLimit-Limit","value":"10"},{"key":"RateLimit-Remaining","value":"9"},{"key":"RateLimit-Reset","value":"1"},{"key":"Accept-Ranges","value":"bytes"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"X-Request-ID","value":"b6522b456ba04552bd30549764cc6a37"}],"cookie":[],"responseTime":null,"body":"{\n  \"createTs\": 1661420011,\n  \"eventHandlers\": {},\n  \"execution\": {\n    \"workflows\": {}\n  },\n  \"properties\": {},\n  \"sequenceId\": \"0\",\n  \"services\": {\n    \"cloudTranscoder\": {\n      \"config\": {},\n      \"createTs\": 1661420011,\n      \"message\": \"OnSlaveServiceQueryUpdated\",\n      \"serviceType\": \"cloudTranscoderV2\",\n      \"status\": \"serviceInProgress\"\n    }\n  },\n  \"status\": \"IN_PROGRESS\",\n  \"taskId\": \"c0077139e34d0949c719189a393aa***\",\n  \"variables\": {},\n  \"workflows\": {}\n}"}],"_postman_id":"99226600-4464-4537-98d3-505efc586c48"},{"name":"update","id":"92f54076-e071-4d6f-9f39-9e7b347745cf","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"services\": {\n    \"cloudTranscoder\": {\n      \"serviceType\": \"cloudTranscoderV2\",\n      \"config\": {\n        \"transcoder\": {\n          \"idleTimeout\": 300,\n          \"audioInputs\": [\n            {\n              \"rtc\": {\n                \"rtcChannel\": \"{{AccessChannel}}\",\n                \"rtcUid\": {{uid}},\n                \"rtcToken\": \"{{token}}\"\n              }\n            },\n            {\n              \"rtc\": {\n                \"rtcChannel\": \"{{AccessChannel}}\",\n                \"rtcUid\": {{uidTwo}},\n                \"rtcToken\": \"{{tokenTwo}}\"\n              }\n            }\n          ],\n          \"canvas\": {\n            \"width\": 960,\n            \"height\": 480,\n            \"color\": 0,\n            \"backgroundImage\": \"https://example.jpg\",\n            \"fillMode\": \"FIT\"\n          },\n          \"waterMarks\": [\n            {\n              \"imageUrl\": \"https://example.png\",\n              \"region\": {\n                \"x\": 0,\n                \"y\": 0,\n                \"width\": 120,\n                \"height\": 120,\n                \"zOrder\": 50\n              }\n            }\n          ],\n          \"videoInputs\": [\n            {\n              \"rtc\": {\n                \"rtcChannel\": \"{{AccessChannel}}\",\n                \"rtcUid\": {{uid}},\n                \"rtcToken\": \"{{uid}}\"\n              },\n              \"placeholderImageUrl\": \"https://example.jpg\",\n              \"region\": {\n                \"x\": 0,\n                \"y\": 0,\n                \"width\": 320,\n                \"height\": 360,\n                \"zOrder\": 1\n              }\n            },\n            {\n              \"rtc\": {\n                \"rtcChannel\": \"{{AccessChannel}}\",\n                \"rtcUid\": {{uidTwo}},\n                \"rtcToken\": \"{{tokenTwo}}\"\n              },\n              \"placeholderImageUrl\": \"https://example.jpg\",\n              \"region\": {\n                \"x\": 320,\n                \"y\": 0,\n                \"width\": 320,\n                \"height\": 320,\n                \"zOrder\": 1\n              }\n            }\n          ],\n          \"outputs\": [\n            {\n              \"rtc\": {\n                \"rtcChannel\": \"{{AccessChannelOC}}\",\n                \"rtcUid\": {{uidOC}},\n                \"rtcToken\": \"{{tokenOC}}\"\n              },\n              \"audioOption\": {\n                \"profileType\": \"AUDIO_PROFILE_MUSIC_STANDARD\"\n              },\n              \"videoOption\": {\n                \"fps\": 30,\n                \"codec\": \"H264\",\n                \"bitrate\": 800,\n                \"width\": 960,\n                \"height\": 480,\n                \"lowBitrateHighQuality\": false\n              }\n            }\n          ]\n        }\n      }\n    }\n  }\n}"},"url":"https://api.sd-rtn.com/v1/projects/{{APPID}}/rtsc/cloud-transcoder/tasks/?builderToken=&sequenceId={{sequenceId}}&updateMask=services.cloudTranscoder.config","description":"<p>After obtaining and creating the cloud transcoder through <code>Acquire</code>the and request, you can initiate a request to update the cloud transcoder.<code>CreateUpdate</code></p>\n<p><strong>Notes for use</strong> : <code>Update</code>When updating cloud transcoder, your request package body must contain <code>Create</code>all fields in the request package body. For fields that do not need to be updated, please maintain the original values. <code>Update</code>The request only supports modification of the following fields:</p>\n<ul>\n<li><p>Add or delete <code>audioInputs[]</code>members <code>videoInputs[]</code>in <code>rtc</code>, used to subscribe or unsubscribe to the audio and video streams of the host in the channel.</p>\n</li>\n<li><p>Modify the field <code>videoInputs[]</code>in <code>region</code>to update the host's combined picture layout.</p>\n</li>\n<li><p>Modify the fields <code>outputs[]</code>in to update the transcoding output audio configuration and video configuration.<code>audioOptionvideoOption</code></p>\n</li>\n</ul>\n<p><strong>Note</strong> : <code>Create</code>When requesting to create a cloud transcoder, there are three usage scenarios:</p>\n<ul>\n<li><p>Audio and video scenes.</p>\n</li>\n<li><p>Audio-only scenario.</p>\n</li>\n<li><p>Full channel mixing scene.</p>\n</li>\n</ul>\n<p>For the setting methods of these three scenarios, please refer to <strong>the click switching example</strong><code>Create</code> on the right side of the document . When requesting to update cloud transcoder, please keep the usage scenario consistent, otherwise an exception will occur. For example, for cloud transcoder for audio and video scenes, please do not update it to cloud transcoder for pure audio scenes.<code>Update</code></p>\n<h2 id=\"request\"><a href=\"https://doc.shengwang.cn/api-ref/cloud-transcoder/restful/cloud-transcoder/operations/patch-v1-projects-appId-rtsc-cloud-transcoder-tasks-taskId#Request\">Request</a></h2>\n<p>Security: Basic Auth</p>\n<p><strong>HTTP Basic Authentication</strong> : Every time you send an HTTP request, you must fill in the field in the request header <code>Authorization</code>. For information on how to generate the value of this field, please refer to <a href=\"https://doc.shengwang.cn/doc/cloud-transcoder/restful/get-started/http-basic-auth\">Implementing HTTP Basic Authentication</a> .</p>\n<p>Basic authentication is a simple authentication scheme built into the HTTP protocol. To use it, send your HTTP requests with an Authorization header that contains the word Basic followed by a space and a base64-encoded string <code>username:password</code>.</p>\n<p>Example:<code>Authorization: Basic ZGVtbzpwQDU1dzByZA==</code></p>\n<h3 id=\"path-parameters\"><a href=\"https://doc.shengwang.cn/api-ref/cloud-transcoder/restful/cloud-transcoder/operations/patch-v1-projects-appId-rtsc-cloud-transcoder-tasks-taskId#Path-Parameters\">Path Parameters</a></h3>\n<p>appIdstringrequired</p>\n<p><strong>App ID</strong> provided by Shengwang to each developer . After creating a project in the Agora console, you can get an App ID. An App ID is a unique identifier for a project.</p>\n<p>taskIdstringrequired</p>\n<p>Transcoding task ID, which is UUID and is used to identify the cloud transcoder of this request operation.</p>\n<h3 id=\"query-parameters\"><a href=\"https://doc.shengwang.cn/api-ref/cloud-transcoder/restful/cloud-transcoder/operations/patch-v1-projects-appId-rtsc-cloud-transcoder-tasks-taskId#Query-Parameters\">Query Parameters</a></h3>\n<p>builderTokenstringrequired</p>\n<p>Fill in the value <code>Acquire</code>obtained from the response body of the method <code>tokenName</code>.</p>\n<p>sequenceIdstringrequired</p>\n<p><code>Update</code>The requested sequence number. The value needs to be greater than or equal to 0. Please ensure that the sequence number of the next <code>Update</code>request is greater than the sequence number of the previous <code>Update</code>request. The serial number ensures that the Agora server updates the cloud transcoder according to the latest configuration you specify.</p>\n<p><strong>Usage suggestions</strong> : Shengwang recommends that you set to <code>Update</code>when calling for the first time . On the second call to , set to . On the third call to , set to . And so on. The Shengwang server will update the cloud transcoder according to the latest request (that is, the largest serial number).<code>sequence0Updatesequence1Updatesequence2Update</code></p>\n<h3 id=\"headers\"><a href=\"https://doc.shengwang.cn/api-ref/cloud-transcoder/restful/cloud-transcoder/operations/patch-v1-projects-appId-rtsc-cloud-transcoder-tasks-taskId#request-headers\">Headers</a></h3>\n<p>Content-Typestringrequired</p>\n<p><code>application/json</code></p>\n<h3 id=\"body\"><a href=\"https://doc.shengwang.cn/api-ref/cloud-transcoder/restful/cloud-transcoder/operations/patch-v1-projects-appId-rtsc-cloud-transcoder-tasks-taskId#request-body\">Body</a></h3>\n<p>application/jsonservicesobjectrequiredcloudTranscoderobjectrequired</p>\n<h2 id=\"responses\"><a href=\"https://doc.shengwang.cn/api-ref/cloud-transcoder/restful/cloud-transcoder/operations/patch-v1-projects-appId-rtsc-cloud-transcoder-tasks-taskId#Responses\">Responses</a></h2>\n<p>200Not 2XX</p>\n<p>If the status code is 2XX, the request is successful. The package body is empty.</p>\n<h3 id=\"headers-1\"><a href=\"https://doc.shengwang.cn/api-ref/cloud-transcoder/restful/cloud-transcoder/operations/patch-v1-projects-appId-rtsc-cloud-transcoder-tasks-taskId#response-headers\">Headers</a></h3>\n<p>X-Request-IDstring</p>\n<p>UUID (Universally Unique Identifier), used to identify this request.</p>\n<p><strong>Note</strong> : If a request error occurs, please print the value in the log to troubleshoot the problem. If the response status code of this request is not 2XX, this field may not be included in the response header.</p>\n","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":true,"source":{"_postman_id":"d7da7175-1801-46b9-8ee4-e5c9e3010da3","id":"d7da7175-1801-46b9-8ee4-e5c9e3010da3","name":"Agora RESTful APIs","type":"collection"}},"urlObject":{"protocol":"https","path":["v1","projects","{{APPID}}","rtsc","cloud-transcoder","tasks",""],"host":["api","sd-rtn","com"],"query":[{"key":"builderToken","value":""},{"key":"sequenceId","value":"{{sequenceId}}"},{"key":"updateMask","value":"services.cloudTranscoder.config"}],"variable":[]}},"response":[{"id":"282f4209-d513-458c-8f18-4d25e33e7087","name":"update","originalRequest":{"method":"PATCH","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"services\": {\n    \"cloudTranscoder\": {\n      \"serviceType\": \"cloudTranscoderV2\",\n      \"config\": {\n        \"transcoder\": {\n          \"idleTimeout\": 300,\n          \"audioInputs\": [\n            {\n              \"rtc\": {\n                \"rtcChannel\": \"testtranscoding01\",\n                \"rtcUid\": 123,\n                \"rtcToken\": \"aab8b8f5a8cd4469a63042fcfafe7***\"\n              }\n            },\n            {\n              \"rtc\": {\n                \"rtcChannel\": \"testtranscoding01\",\n                \"rtcUid\": 456,\n                \"rtcToken\": \"aab8b8f5a8cd4469a63042fcfafe7***\"\n              }\n            }\n          ],\n          \"canvas\": {\n            \"width\": 960,\n            \"height\": 480,\n            \"color\": 0,\n            \"backgroundImage\": \"https://example.jpg\",\n            \"fillMode\": \"FIT\"\n          },\n          \"waterMarks\": [\n            {\n              \"imageUrl\": \"https://example.png\",\n              \"region\": {\n                \"x\": 0,\n                \"y\": 0,\n                \"width\": 120,\n                \"height\": 120,\n                \"zOrder\": 50\n              }\n            }\n          ],\n          \"videoInputs\": [\n            {\n              \"rtc\": {\n                \"rtcChannel\": \"testtranscoding01\",\n                \"rtcUid\": 123,\n                \"rtcToken\": \"aab8b8f5a8cd4469a63042fcfafe7***\"\n              },\n              \"placeholderImageUrl\": \"https://example.jpg\",\n              \"region\": {\n                \"x\": 0,\n                \"y\": 0,\n                \"width\": 320,\n                \"height\": 360,\n                \"zOrder\": 1\n              }\n            },\n            {\n              \"rtc\": {\n                \"rtcChannel\": \"testtranscoding01\",\n                \"rtcUid\": 456,\n                \"rtcToken\": \"aab8b8f5a8cd4469a63042fcfafe7***\"\n              },\n              \"placeholderImageUrl\": \"https://example.jpg\",\n              \"region\": {\n                \"x\": 320,\n                \"y\": 0,\n                \"width\": 320,\n                \"height\": 320,\n                \"zOrder\": 1\n              }\n            }\n          ],\n          \"outputs\": [\n            {\n              \"rtc\": {\n                \"rtcChannel\": \"testtranscoding02\",\n                \"rtcUid\": 9999,\n                \"rtcToken\": \"aab8b8f5a8cd4469a63042fcfafe7***\"\n              },\n              \"audioOption\": {\n                \"profileType\": \"AUDIO_PROFILE_MUSIC_STANDARD\"\n              },\n              \"videoOption\": {\n                \"fps\": 30,\n                \"codec\": \"H264\",\n                \"bitrate\": 800,\n                \"width\": 960,\n                \"height\": 480,\n                \"lowBitrateHighQuality\": false\n              }\n            }\n          ]\n        }\n      }\n    }\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.sd-rtn.com/v1/projects/{{APPID}}/rtsc/cloud-transcoder/tasks/"},"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","name":"Content-Type","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"createTs\": 1661324613,\n    \"eventHandlers\": {},\n    \"execution\": {\n        \"workflows\": {}\n    },\n    \"properties\": {},\n    \"sequenceId\": \"0\",\n    \"services\": {\n        \"cloudTranscoder\": {\n            \"config\": {},\n            \"createTs\": 1661324614,\n            \"details\": {},\n            \"message\": \"\",\n            \"serviceType\": \"cloudTranscoderV2\",\n            \"status\": \"serviceReady\"\n        }\n    },\n    \"status\": \"STARTED\",\n    \"taskId\": \"609f28f2644f1ae1ceb041b7047e3***\",\n    \"variables\": {},\n    \"workflows\": {}\n}"}],"_postman_id":"92f54076-e071-4d6f-9f39-9e7b347745cf"},{"name":"delete","event":[{"listen":"test","script":{"id":"27b49877-f6c9-4f05-aed1-8e480da63c43","exec":["pm.test(\"Status code is 200\", function () {\r","    pm.response.to.have.status(200);\r","});"],"type":"text/javascript"}}],"id":"63beb19a-ace3-4539-a716-4b526601ee08","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":"https://api.sd-rtn.com/v1/projects/{{APPID}}/rtsc/cloud-transcoder/tasks/","description":"<p>If you no longer need cloud transcoding, you can initiate <code>Delete</code>a destruction request.</p>\n<h2 id=\"request\"><a href=\"https://doc.shengwang.cn/api-ref/cloud-transcoder/restful/cloud-transcoder/operations/delete-v1-projects-appId-rtsc-cloud-transcoder-tasks-taskId#Request\">Request</a></h2>\n<p>Security: Basic Auth</p>\n<p><strong>HTTP Basic Authentication</strong> : Every time you send an HTTP request, you must fill in the field in the request header <code>Authorization</code>. For information on how to generate the value of this field, please refer to <a href=\"https://doc.shengwang.cn/doc/cloud-transcoder/restful/get-started/http-basic-auth\">Implementing HTTP Basic Authentication</a> .</p>\n<p>Basic authentication is a simple authentication scheme built into the HTTP protocol. To use it, send your HTTP requests with an Authorization header that contains the word Basic followed by a space and a base64-encoded string <code>username:password</code>.</p>\n<p>Example:<code>Authorization: Basic ZGVtbzpwQDU1dzByZA==</code></p>\n<h3 id=\"path-parameters\"><a href=\"https://doc.shengwang.cn/api-ref/cloud-transcoder/restful/cloud-transcoder/operations/delete-v1-projects-appId-rtsc-cloud-transcoder-tasks-taskId#Path-Parameters\">Path Parameters</a></h3>\n<p>appIdstringrequired</p>\n<p><strong>App ID</strong> provided by Shengwang to each developer . After creating a project in the Agora console, you can get an App ID. An App ID is a unique identifier for a project.</p>\n<p>taskIdstringrequired</p>\n<p>Transcoding task ID, which is UUID and is used to identify the cloud transcoder of this request operation.</p>\n<h3 id=\"query-parameters\"><a href=\"https://doc.shengwang.cn/api-ref/cloud-transcoder/restful/cloud-transcoder/operations/delete-v1-projects-appId-rtsc-cloud-transcoder-tasks-taskId#Query-Parameters\">Query Parameters</a></h3>\n<p>builderTokenstringrequired</p>\n<p>Fill in the value <code>Acquire</code>obtained from the response body of the method <code>tokenName</code>.</p>\n<h3 id=\"headers\"><a href=\"https://doc.shengwang.cn/api-ref/cloud-transcoder/restful/cloud-transcoder/operations/delete-v1-projects-appId-rtsc-cloud-transcoder-tasks-taskId#request-headers\">Headers</a></h3>\n<p>Content-Typestringrequired</p>\n<p><code>application/json</code></p>\n<h2 id=\"responses\"><a href=\"https://doc.shengwang.cn/api-ref/cloud-transcoder/restful/cloud-transcoder/operations/delete-v1-projects-appId-rtsc-cloud-transcoder-tasks-taskId#Responses\">Responses</a></h2>\n<p>200Not 2XX</p>\n<p>If the status code is 2XX, the request is successful.</p>\n<h3 id=\"headers-1\"><a href=\"https://doc.shengwang.cn/api-ref/cloud-transcoder/restful/cloud-transcoder/operations/delete-v1-projects-appId-rtsc-cloud-transcoder-tasks-taskId#response-headers\">Headers</a></h3>\n<p>X-Request-IDstring</p>\n<p>UUID (Universally Unique Identifier), used to identify this request.</p>\n<p><strong>Note</strong> : If a request error occurs, please print the value in the log to troubleshoot the problem. If the response status code of this request is not 2XX, this field may not be included in the response header.</p>\n<h3 id=\"body\"><a href=\"https://doc.shengwang.cn/api-ref/cloud-transcoder/restful/cloud-transcoder/operations/delete-v1-projects-appId-rtsc-cloud-transcoder-tasks-taskId#response-body\">Body</a></h3>\n<p>application/jsontaskIdstring</p>\n<p>Transcoding task ID, which is a UUID and is used to identify the cloud transcoder of this request operation.</p>\n<p>createTsnumber</p>\n<p>The Unix timestamp (in seconds) when the transcoding task was created.</p>\n<p>statusstring</p>\n<p>The running status of the transcoding task:</p>\n<ul>\n<li><p><code>\"IDLE\"</code>: The task has not started.</p>\n</li>\n<li><p><code>\"PREPARED\"</code>: The task has received a start request.</p>\n</li>\n<li><p><code>\"STARTING\"</code>: The task is starting.</p>\n</li>\n<li><p><code>\"CREATED\"</code>: Task initialization completed.</p>\n</li>\n<li><p><code>\"STARTED\"</code>: The task has been started.</p>\n</li>\n<li><p><code>\"IN_PROGRESS\"</code>: The task is in progress.</p>\n</li>\n<li><p><code>\"STOPPING\"</code>: The task is stopping.</p>\n</li>\n<li><p><code>\"STOPPED\"</code>: The task has been stopped.</p>\n</li>\n<li><p><code>\"EXIT\"</code>: The task exits normally.</p>\n</li>\n<li><p><code>\"FAILURE_STOP\"</code>: The task exited abnormally.</p>\n</li>\n</ul>\n<p><strong>Note</strong> : You can use this field to monitor the status of the task.</p>\n<p>servicesobjectcloudTranscoderobjectconfigobject</p>\n<p>Same as the fields you <code>Create</code>set in the request body <code>config</code>.</p>\n<p>createTsnumber</p>\n<p>The Unix timestamp in seconds when the service was created.</p>\n<p>detailsreserved-object</p>\n<p>Reserved fields.</p>\n<p>messagestring</p>\n<p>Reserved fields.</p>\n<p>serviceTypestring</p>\n<p>Service type, here <code>\"cloudTranscoderV2\"</code>.</p>\n<p>statusstring</p>\n<p>The running status of the transcoding service in the transcoding task:</p>\n<ul>\n<li><p><code>\"serviceIdle\"</code>: The service has not started.</p>\n</li>\n<li><p><code>\"serviceReady\"</code>: The service is ready.</p>\n</li>\n<li><p><code>\"serviceStarted\"</code>: Service has started.</p>\n</li>\n<li><p><code>\"serviceInProgress\"</code>: Service is in progress.</p>\n</li>\n<li><p><code>\"serviceCompleted\"</code>: The service has been stopped and all tasks have been completed.</p>\n</li>\n<li><p><code>\"servicePartialCompleted\"</code>: The service has been stopped and the task is partially completed.</p>\n</li>\n<li><p><code>\"serviceValidationFailed\"</code>: Service parameter validation failed.</p>\n</li>\n<li><p><code>\"serviceAbnormal\"</code>: The service exited abnormally.</p>\n</li>\n<li><p><code>\"serviceUnknown\"</code>: Service unknown status.</p>\n</li>\n</ul>\n<p><strong>Note</strong> : This field can be used to allow the Agora technical team to investigate the issue, and you do not need to pay too much attention to it.</p>\n<p>eventHandlersreserved-object</p>\n<p>Reserved fields.</p>\n<p>executionobjectworkflowsreserved-object</p>\n<p>Reserved fields.</p>\n<p>propertiesreserved-object</p>\n<p>Reserved fields.</p>\n<p>sequenceIdstring</p>\n<p>Reserved fields.</p>\n<p>variablesreserved-object</p>\n<p>Reserved fields.</p>\n<p>workflowsreserved-object</p>\n<p>Reserved fields.</p>\n","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":true,"source":{"_postman_id":"d7da7175-1801-46b9-8ee4-e5c9e3010da3","id":"d7da7175-1801-46b9-8ee4-e5c9e3010da3","name":"Agora RESTful APIs","type":"collection"}},"urlObject":{"protocol":"https","path":["v1","projects","{{APPID}}","rtsc","cloud-transcoder","tasks",""],"host":["api","sd-rtn","com"],"query":[],"variable":[]}},"response":[{"id":"f2700f13-2f64-4cff-9d09-b47336771277","name":"delete","originalRequest":{"method":"DELETE","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":"https://api.sd-rtn.com/v1/projects/{{APPID}}/rtsc/cloud-transcoder/tasks/"},"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","name":"Content-Type","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n  \"createTs\": 1661324613,\n  \"eventHandlers\": {},\n  \"execution\": {\n    \"workflows\": {}\n  },\n  \"properties\": {},\n  \"sequenceId\": \"0\",\n  \"services\": {\n    \"cloudTranscoder\": {\n      \"config\": {},\n      \"createTs\": 1661324614,\n      \"details\": {},\n      \"message\": \"OnSlaveServiceStopped\",\n      \"serviceType\": \"cloudTranscoderV2\",\n      \"status\": \"serviceCompleted\"\n    }\n  },\n  \"status\": \"STOPPED\",\n  \"taskId\": \"609f28f2644f1ae1ceb041b7047e3***\",\n  \"variables\": {},\n  \"workflows\": {}\n}"}],"_postman_id":"63beb19a-ace3-4539-a716-4b526601ee08"}],"id":"67552e50-fca7-49f8-a799-3cf9e7cd2bab","_postman_id":"67552e50-fca7-49f8-a799-3cf9e7cd2bab","description":"","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":true,"source":{"_postman_id":"d7da7175-1801-46b9-8ee4-e5c9e3010da3","id":"d7da7175-1801-46b9-8ee4-e5c9e3010da3","name":"Agora RESTful APIs","type":"collection"}}},{"name":"Conversational AI [Beta]","item":[],"id":"03b397c1-7838-44f2-9dd9-6a0791cb63c0","description":"<p><a href=\"https://frank005.github.io/convo_ai/\">https://frank005.github.io/convo_ai/</a></p>\n","_postman_id":"03b397c1-7838-44f2-9dd9-6a0791cb63c0","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]},"isInherited":true,"source":{"_postman_id":"d7da7175-1801-46b9-8ee4-e5c9e3010da3","id":"d7da7175-1801-46b9-8ee4-e5c9e3010da3","name":"Agora RESTful APIs","type":"collection"}}}],"auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{CustomerID}}"},{"key":"password","value":"{{CustomerSecret}}"}]}},"event":[{"listen":"prerequest","script":{"id":"ff6b5545-1067-4e4a-a722-15f1be958728","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"d1c398f9-5ef9-4ebd-bae3-9c39205fce08","type":"text/javascript","exec":[""]}}],"variable":[{"key":"builderToken","value":""},{"key":"taskId","value":""},{"key":"resourceId","value":""},{"key":"uniqueName","value":"","type":"string"},{"key":"AgoraChannelName","value":"","type":"string"},{"key":"llmApiKey","value":"","type":"string"},{"key":"llmUrl","value":"","type":"string"},{"key":"asrLang","value":"","type":"string"},{"key":"ttsVendor","value":"","type":"string"},{"key":"ttsVoiceName","value":"","type":"string"},{"key":"ttsKey","value":"","type":"string"},{"key":"ttsRegion","value":"","type":"string"}]}