# Acquire a builder token (/en/api-reference/api-ref/cloud-transcoding/acquire)

> For AI agents: see the complete documentation index at [llms.txt](/llms.txt).

Acquires a builder token for creating a Cloud Transcoding task.

- OpenAPI: /openapi/cloud-transcoding/cloud-transcoding.en.yaml
- Operation ID: acquire-cloud-transcoding-builder-token
- Method: POST
- Path: /v1/projects/{appId}/rtsc/cloud-transcoder/builderTokens
- Endpoint: https://api.sd-rtn.com/v1/projects/{appId}/rtsc/cloud-transcoder/builderTokens

## Servers

- https://api.sd-rtn.com

Before you create a Cloud Transcoding task, call the `builderTokens` endpoint to retrieve a builder token.


## Authorization

This endpoint requires authentication.

- `basicAuth`

## Parameters

- `Content-Type` (header, required, string) - The request content type. Use `application/json`.
  - Allowed: `application/json`
- `X-Request-ID` (header, optional, string) - UUID (Universally Unique Identifier), used to identify this request.

If the request fails, print out the value in the log to troubleshoot the problem. If the response status code of the request is not 2XX, then the response header may not contain this field.
- `appId` (path, required, string) - The App ID of your project from Agora Console.

## Request body

- `instanceId` (string, required) - The `instanceId` you specified in the request.
  - Max length: `64`
  - Pattern: `^[A-Za-z0-9_-]+$`
- `services` (object, required)
  - `services.cloudTranscoder` (object, required)
    - `services.cloudTranscoder.serviceType` (string, required) - Should be `"cloudTranscoderV2"`.

The service type. Use "cloudTranscoderV2".
      - Allowed: `cloudTranscoderV2`
    - `services.cloudTranscoder.config` (object, required) - Same as the fields you set in the `Create` request body.
      - `services.cloudTranscoder.config.transcoder` (object, required)
        - `services.cloudTranscoder.config.transcoder.idleTimeout` (number) - The maximum period, in seconds, that Cloud Transcoder can be idle. If the idle state exceeds this value, Cloud Transcoder is automatically destroyed.
          - Default: `300`
          - Range: `[1, 86400]`
        - `services.cloudTranscoder.config.transcoder.streamProcessMode` (string) - If this parameter is not specified, the working mode of Cloud transcoder is the merge mode. You can specify the following modes:
- `heterogeneous-single`: Heterogeneous single stream mode. The types of input stream and output stream can be different or the same. The currently supported stream types are RTC and CDN.
- `single`: RTC stream relay mode. Relays the host's audio and video data and signaling in the source channel to the destination channel.
          - Allowed: `mix` | `heterogeneous-single` | `single`
          - Default: `mix`

          :::info[Note]
          - If you set `streamProcessMode` to `heterogeneous-single` or `single`, then the `audioInputs` or `videoInputs` list may contain at most one item.
          
          - If you need to mix audio, combine images, or mix audio and combine images, no `streamProcessMode` settings are required.
          :::
        - `services.cloudTranscoder.config.transcoder.audioInputs` (array) - Audio input source list, supports two types: RTC audio stream and CDN audio stream. If you specify multiple input audio sources, the streams are mixed.

          :::info[Note]
          Either `rtc` or `streamUrl` must be filled in.
          :::
          - `services.cloudTranscoder.config.transcoder.audioInputs.items` (object)
            - `services.cloudTranscoder.config.transcoder.audioInputs.items.streamUrl` (string) - The URL of the audio source stream. Required when the audio input source is CDN.
            - `services.cloudTranscoder.config.transcoder.audioInputs.items.volume` (number) - The volume of the audio source stream. This parameter only takes effect when the audio input source is CDN.
              - Default: `100`
              - Range: `[0, 200]`
            - `services.cloudTranscoder.config.transcoder.audioInputs.items.repeat` (number) - The number of times to play the media stream. `1` means play once, `-1` means loop, and any positive integer specifies a playback count.
              - Default: `1`
            - `services.cloudTranscoder.config.transcoder.audioInputs.items.rtc` (object) - When the audio input source is RTC, this object is required.
              - `services.cloudTranscoder.config.transcoder.audioInputs.items.rtc.rtcChannel` (string, required) - The RTC channel name for the transcoded audio and video.

The RTC channel name for the audio input source. Currently, you can only subscribe to audio and video sources from a single channel; the audio and video sources must belong to the same channel.

The RTC channel name for the video input source. Currently, you can only subscribe to audio and video sources from a single channel; the audio and video sources must belong to the same channel.
              - `services.cloudTranscoder.config.transcoder.audioInputs.items.rtc.rtcUid` (number, required) - The UID of the RTC channel for the transcoded audio and video streams. Make sure this value is different from the UID of other users in the channel.

The UID corresponding to the audio input source. The same UID must not exist in the RTC channel.

The UID corresponding to the video input source. The same UID must not exist in the RTC channel.
              - `services.cloudTranscoder.config.transcoder.audioInputs.items.rtc.rtcToken` (string, required) - The token that the Cloud Transcoder uses to join the output RTC channel. Using a token ensures channel security and prevents malicious users from disrupting other users in the channel. See Token authentication for details.

 When generating this token, use `outputs.rtc.rtcUid` to generate the token.

The token that the Cloud Transcoder uses to join the RTC channel for transcoding. Using a token ensures channel security and prevents malicious users from disrupting other users in the channel. See Token authentication for details.

 The UID of Cloud Transcoder in the RTC channel is randomly assigned by Agora. Therefore, when generating a token, set the uid to 0.
        - `services.cloudTranscoder.config.transcoder.videoInputs` (array) - Video input source list, supports RTC video stream and CDN video stream. If you specify multiple input video sources, the streams are merged.
          - `services.cloudTranscoder.config.transcoder.videoInputs.items` (object)
            - `services.cloudTranscoder.config.transcoder.videoInputs.items.streamUrl` (string) - The URL of the video source stream. Required when the video input source is CDN.
            - `services.cloudTranscoder.config.transcoder.videoInputs.items.repeat` (number) - The number of times to play the media stream. `1` means play once, `-1` means loop, and any positive integer specifies a playback count.
              - Default: `1`
            - `services.cloudTranscoder.config.transcoder.videoInputs.items.rtc` (object) - This object is required when the video input source is RTC.
              - `services.cloudTranscoder.config.transcoder.videoInputs.items.rtc.rtcChannel` (string, required) - The RTC channel name for the transcoded audio and video.

The RTC channel name for the audio input source. Currently, you can only subscribe to audio and video sources from a single channel; the audio and video sources must belong to the same channel.

The RTC channel name for the video input source. Currently, you can only subscribe to audio and video sources from a single channel; the audio and video sources must belong to the same channel.
              - `services.cloudTranscoder.config.transcoder.videoInputs.items.rtc.rtcUid` (number, required) - The UID of the RTC channel for the transcoded audio and video streams. Make sure this value is different from the UID of other users in the channel.

The UID corresponding to the audio input source. The same UID must not exist in the RTC channel.

The UID corresponding to the video input source. The same UID must not exist in the RTC channel.
              - `services.cloudTranscoder.config.transcoder.videoInputs.items.rtc.rtcToken` (string, required) - The token that the Cloud Transcoder uses to join the output RTC channel. Using a token ensures channel security and prevents malicious users from disrupting other users in the channel. See Token authentication for details.

 When generating this token, use `outputs.rtc.rtcUid` to generate the token.

The token that the Cloud Transcoder uses to join the RTC channel for transcoding. Using a token ensures channel security and prevents malicious users from disrupting other users in the channel. See Token authentication for details.

 The UID of Cloud Transcoder in the RTC channel is randomly assigned by Agora. Therefore, when generating a token, set the uid to 0.
            - `services.cloudTranscoder.config.transcoder.videoInputs.items.placeholderImageUrl` (string) - The URL of the placeholder image displayed when the user is offline. It must be a valid image URL and contain the `jpg` or `png` suffix.
            - `services.cloudTranscoder.config.transcoder.videoInputs.items.region` (object, required)
              - `services.cloudTranscoder.config.transcoder.videoInputs.items.region.x` (number, required) - The x coordinate of the watermark on the canvas (px). The x coordinate is the horizontal displacement of the upper left corner of the image relative to the origin.

The x coordinate of the image on the canvas (px). The x coordinate is the horizontal displacement of the upper left corner of the image relative to the origin, where the upper left corner of the canvas is the origin.
                - Range: `[0, 3840]`
              - `services.cloudTranscoder.config.transcoder.videoInputs.items.region.y` (number, required) - The y coordinate of the watermark on the canvas (px). The y coordinate is the vertical displacement of the upper left corner of the image relative to the origin.

The y coordinate of the image on the canvas (px). The y coordinate is the vertical displacement of the upper left corner of the image relative to the origin, where the upper left corner of the canvas is the origin.
                - Range: `[0, 3840]`
              - `services.cloudTranscoder.config.transcoder.videoInputs.items.region.width` (number, required) - The width of the watermark (px).

The width of the screen (px).
                - Range: `[120, 3840]`
              - `services.cloudTranscoder.config.transcoder.videoInputs.items.region.height` (number, required) - The height of the watermark (px).

The height of the screen (px).
                - Range: `[120, 3840]`
              - `services.cloudTranscoder.config.transcoder.videoInputs.items.region.zOrder` (number, required) - The layer order of the watermark. `0` represents the bottom layer. `100` represents the top layer.

The layer order of the host screen. 2 represents the layer above the placeholder layer. 100 represents the top layer.
                - Range: `[2, 100]`
        - `services.cloudTranscoder.config.transcoder.canvas` (object, required)
          - `services.cloudTranscoder.config.transcoder.canvas.width` (number, required) - The width of the canvas (px).
            - Range: `[120, 3840]`
          - `services.cloudTranscoder.config.transcoder.canvas.height` (number, required) - The height of the canvas (px).
            - Range: `[120, 3840]`
          - `services.cloudTranscoder.config.transcoder.canvas.color` (number, required) - The background color of the canvas as a decimal RGB value.
            - Range: `[0, 16777215]`
          - `services.cloudTranscoder.config.transcoder.canvas.backgroundImage` (string) - Canvas background image. Must be a valid image URL with a `jpg` or `png` suffix. If omitted, there is no canvas background image.
          - `services.cloudTranscoder.config.transcoder.canvas.fillMode` (string) - Fill mode for the canvas background image.
            - Allowed: `FILL` | `FIT`
            - Default: `FILL`
        - `services.cloudTranscoder.config.transcoder.watermarks` (array, required) - Watermark list.
          - `services.cloudTranscoder.config.transcoder.watermarks.items` (object)
            - `services.cloudTranscoder.config.transcoder.watermarks.items.imageUrl` (string, required) - The URL of the watermark image.
            - `services.cloudTranscoder.config.transcoder.watermarks.items.region` (object, required)
              - `services.cloudTranscoder.config.transcoder.watermarks.items.region.zOrder` (number, required) - The layer order of the watermark. `0` represents the bottom layer. `100` represents the top layer.

The layer order of the host screen. 2 represents the layer above the placeholder layer. 100 represents the top layer.
                - Range: `[2, 100]`
              - `services.cloudTranscoder.config.transcoder.watermarks.items.region.x` (number, required) - The x coordinate of the watermark on the canvas (px). The x coordinate is the horizontal displacement of the upper left corner of the image relative to the origin.

The x coordinate of the image on the canvas (px). The x coordinate is the horizontal displacement of the upper left corner of the image relative to the origin, where the upper left corner of the canvas is the origin.
                - Range: `[0, 3840]`
              - `services.cloudTranscoder.config.transcoder.watermarks.items.region.y` (number, required) - The y coordinate of the watermark on the canvas (px). The y coordinate is the vertical displacement of the upper left corner of the image relative to the origin.

The y coordinate of the image on the canvas (px). The y coordinate is the vertical displacement of the upper left corner of the image relative to the origin, where the upper left corner of the canvas is the origin.
                - Range: `[0, 3840]`
              - `services.cloudTranscoder.config.transcoder.watermarks.items.region.width` (number, required) - The width of the watermark (px).

The width of the screen (px).
                - Range: `[120, 3840]`
              - `services.cloudTranscoder.config.transcoder.watermarks.items.region.height` (number, required) - The height of the watermark (px).

The height of the screen (px).
                - Range: `[120, 3840]`
            - `services.cloudTranscoder.config.transcoder.watermarks.items.fillMode` (string) - Watermark fill mode:
- `"FILL"`: Scale the image and crop it in the center while maintaining the aspect ratio.
- `"FIT"`: Scale the image to fill the display while maintaining the aspect ratio.
              - Allowed: `FILL` | `FIT`
              - Default: `FILL`
        - `services.cloudTranscoder.config.transcoder.outputs` (array, required) - Configure output settings to publish to an RTC channel or CDN address.

 You must specify either `streamUrl` or `rtc`.

Configure output settings to publish to a single RTC channel or CDN address.

 You must specify either streamUrl or rtc.
          - `services.cloudTranscoder.config.transcoder.outputs.items` (object)
            - `services.cloudTranscoder.config.transcoder.outputs.items.streamUrl` (string) - CDN streaming address.
            - `services.cloudTranscoder.config.transcoder.outputs.items.rtc` (object, required) - Required for publishing to an RTC channel. Currently, you can publish to only one RTC channel.
              - `services.cloudTranscoder.config.transcoder.outputs.items.rtc.rtcChannel` (string, required) - The RTC channel name for the transcoded audio and video.

The RTC channel name for the audio input source. Currently, you can only subscribe to audio and video sources from a single channel; the audio and video sources must belong to the same channel.

The RTC channel name for the video input source. Currently, you can only subscribe to audio and video sources from a single channel; the audio and video sources must belong to the same channel.
              - `services.cloudTranscoder.config.transcoder.outputs.items.rtc.rtcUid` (number, required) - The UID of the RTC channel for the transcoded audio and video streams. Make sure this value is different from the UID of other users in the channel.

The UID corresponding to the audio input source. The same UID must not exist in the RTC channel.

The UID corresponding to the video input source. The same UID must not exist in the RTC channel.
              - `services.cloudTranscoder.config.transcoder.outputs.items.rtc.rtcToken` (string, required) - The token that the Cloud Transcoder uses to join the output RTC channel. Using a token ensures channel security and prevents malicious users from disrupting other users in the channel. See Token authentication for details.

 When generating this token, use `outputs.rtc.rtcUid` to generate the token.

The token that the Cloud Transcoder uses to join the RTC channel for transcoding. Using a token ensures channel security and prevents malicious users from disrupting other users in the channel. See Token authentication for details.

 The UID of Cloud Transcoder in the RTC channel is randomly assigned by Agora. Therefore, when generating a token, set the uid to 0.
            - `services.cloudTranscoder.config.transcoder.outputs.items.audioOption` (object)
              - `services.cloudTranscoder.config.transcoder.outputs.items.audioOption.profileType` (string) - Audio properties of the transcoded output:
- `"AUDIO_PROFILE_DEFAULT"`: 48 kHz sampling rate, music encoding, mono channel, maximum encoding bitrate is 64 Kbps.
- `"AUDIO_PROFILE_SPEECH_STANDARD"`: 32 kHz sampling rate, speech encoding, mono channel, maximum encoding bitrate is 18 Kbps.
- `"AUDIO_PROFILE_MUSIC_STANDARD"`: 48 KHz sampling rate, music encoding, mono channel, maximum encoding bitrate is 64 Kbps.
- `"AUDIO_PROFILE_MUSIC_STANDARD_STEREO"`: 48 KHz sampling rate, music encoding, stereo channel, maximum encoding bitrate is 80 Kbps.
- `"AUDIO_PROFILE_MUSIC_HIGH_QUALITY"`: 48 KHz sampling rate, music encoding, mono channel, maximum encoding bitrate is 96 Kbps.
- `"AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO"`: 48 kHz sampling rate, music encoding, dual channels, and a maximum encoding bitrate of 128 Kbps.
                - Allowed: `AUDIO_PROFILE_DEFAULT` | `AUDIO_PROFILE_SPEECH_STANDARD` | `AUDIO_PROFILE_MUSIC_STANDARD` | `AUDIO_PROFILE_MUSIC_STANDARD_STEREO` | `AUDIO_PROFILE_MUSIC_HIGH_QUALITY` | `AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO`
                - Default: `AUDIO_PROFILE_DEFAULT`
            - `services.cloudTranscoder.config.transcoder.outputs.items.videoOption` (object)
              - `services.cloudTranscoder.config.transcoder.outputs.items.videoOption.width` (number, required) - The width of the transcoded output video (px).
                - Range: `[120, 3840]`
              - `services.cloudTranscoder.config.transcoder.outputs.items.videoOption.height` (number, required) - The height of the transcoded output video (px).
                - Range: `[120, 3840]`
              - `services.cloudTranscoder.config.transcoder.outputs.items.videoOption.bitrate` (number, required) - The bitrate of the transcoded output video.
                - Range: `[1, 10000]`
              - `services.cloudTranscoder.config.transcoder.outputs.items.videoOption.codec` (string, required) - The codec used to transcode the output video.

 **Possible values**:
- `"H264"`: Standard H.264 encoding.
- `"VP8"`: Standard VP8 encoding.
                - Allowed: `H264` | `H265`
              - `services.cloudTranscoder.config.transcoder.outputs.items.videoOption.fps` (number) - The frame rate (fps) of the transcoded output video.
                - Default: `15`
                - Range: `[1, 30]`
              - `services.cloudTranscoder.config.transcoder.outputs.items.videoOption.mode` (string) - Can be set to `RAW`, which means the output video is not transcoded. The encoding format of the input video remains unchanged.

 If the output video is transcoded, do not set this field.
 In `RAW` mode, the number of inputs set in `videoInputs` can only be 1.
              - `services.cloudTranscoder.config.transcoder.outputs.items.videoOption.lowBitrateHighQuality` (boolean) - Whether to enable low-bitrate high-quality mode.

### Request body example

```json
{
  "instanceId": "abc13328",
  "services": {
    "cloudTranscoder": {
      "serviceType": "cloudTranscoderV2",
      "config": {
        "transcoder": {
          "idleTimeout": 300,
          "audioInputs": [
            {
              "rtc": {
                "rtcChannel": "test01",
                "rtcUid": 123,
                "rtcToken": "<your_rtc_token>"
              }
            }
          ],
          "canvas": {
            "width": 960,
            "height": 480,
            "color": 0
          },
          "videoInputs": [
            {
              "rtc": {
                "rtcChannel": "test01",
                "rtcUid": 123,
                "rtcToken": "<your_rtc_token>"
              },
              "region": {
                "x": 0,
                "y": 0,
                "width": 320,
                "height": 360,
                "zOrder": 2
              }
            }
          ],
          "outputs": [
            {
              "rtc": {
                "rtcChannel": "test02",
                "rtcUid": 1000,
                "rtcToken": "<your_rtc_token>"
              },
              "audioOption": {
                "profileType": "AUDIO_PROFILE_MUSIC_STANDARD"
              },
              "videoOption": {
                "fps": 30,
                "codec": "H264",
                "bitrate": 800,
                "width": 960,
                "height": 480
              }
            }
          ]
        }
      }
    }
  }
}
```

## Request examples

### curl

```bash
curl --request post \
        --url https://api.sd-rtn.com/v1/projects/:appId/rtsc/cloud-transcoder/builderTokens \
        --header 'Authorization: Basic <credentials>' \
        --header 'Content-Type: <string>' \
        --data '
      {
        "instanceId": "abc13328",
        "services": {
          "cloudTranscoder": {
            "serviceType": "cloudTranscoderV2",
            "config": {
              "transcoder": {
                "idleTimeout": 300,
                "audioInputs": [
                  {
                    "rtc": {
                      "rtcChannel": "test01",
                      "rtcUid": 123,
                      "rtcToken": "<your_rtc_token>"
                    }
                  },
                  {
                    "rtc": {
                      "rtcChannel": "test01",
                      "rtcUid": 456,
                      "rtcToken": "<your_rtc_token>"
                    }
                  }
                ],
                "canvas": {
                  "width": 960,
                  "height": 480,
                  "color": 0,
                  "backgroundImage": "https://web-cdn.agora.io/website-files/images/new-home-2-banne-online-karaoke-bg.jpg",
                  "fillMode": "FIT"
                },
                "waterMarks": [
                  {
                    "imageUrl": "https://web-cdn.agora.io/website-files/images/advantage-interactive-live-streaming.png",
                    "region": {
                      "x": 0,
                      "y": 0,
                      "width": 100,
                      "height": 100,
                      "zOrder": 50
                    }
                  }
                ],
                "videoInputs": [
                  {
                    "rtc": {
                      "rtcChannel": "test01",
                      "rtcUid": 123,
                      "rtcToken": "<your_rtc_token>"
                    },
                    "placeholderImageUrl": "https://web-cdn.agora.io/website-files/images/new-home-2-banner-realtime-bg.jpg",
                    "region": {
                      "x": 0,
                      "y": 0,
                      "width": 320,
                      "height": 360,
                      "zOrder": 2
                    }
                  },
                  {
                    "rtc": {
                      "rtcChannel": "test01",
                      "rtcUid": 456,
                      "rtcToken": "<your_rtc_token>"
                    },
                    "region": {
                      "x": 320,
                      "y": 0,
                      "width": 320,
                      "height": 320,
                      "zOrder": 2
                    }
                  }
                ],
                "outputs": [
                  {
                    "rtc": {
                      "rtcChannel": "test02",
                      "rtcUid": 1000,
                      "rtcToken": "<your_rtc_token>"
                    },
                    "audioOption": {
                      "profileType": "AUDIO_PROFILE_MUSIC_STANDARD"
                    },
                    "videoOption": {
                      "fps": 30,
                      "codec": "H264",
                      "bitrate": 800,
                      "width": 960,
                      "height": 48
                    }
                  }
                ]
              }
            }
          }
        }
      }'
```

### Python

```python
import requests
    import json

    url = "https://api.sd-rtn.com/v1/projects/:appId/rtsc/cloud-transcoder/builderTokens"
    headers = {
        "Authorization": "Basic <credentials>",
        "Content-Type": "<string>"
    }

    data = {
        "instanceId": "abc13328",
        "services": {
            "cloudTranscoder": {
                "serviceType": "cloudTranscoderV2",
                "config": {
                    "transcoder": {
                        "idleTimeout": 300,
                        "audioInputs": [
                            {
                                "rtc": {
                                    "rtcChannel": "test01",
                                    "rtcUid": 123,
                                    "rtcToken": "<your_rtc_token>"
                                }
                            },
                            {
                                "rtc": {
                                    "rtcChannel": "test01",
                                    "rtcUid": 456,
                                    "rtcToken": "<your_rtc_token>"
                                }
                            }
                        ],
                        "canvas": {
                            "width": 960,
                            "height": 480,
                            "color": 0,
                            "backgroundImage": "https://web-cdn.agora.io/website-files/images/new-home-2-banne-online-karaoke-bg.jpg",
                            "fillMode": "FIT"
                        },
                        "waterMarks": [
                            {
                                "imageUrl": "https://web-cdn.agora.io/website-files/images/advantage-interactive-live-streaming.png",
                                "region": {
                                    "x": 0,
                                    "y": 0,
                                    "width": 100,
                                    "height": 100,
                                    "zOrder": 50
                                }
                            }
                        ],
                        "videoInputs": [
                            {
                                "rtc": {
                                    "rtcChannel": "test01",
                                    "rtcUid": 123,
                                    "rtcToken": "<your_rtc_token>"
                                },
                                "placeholderImageUrl": "https://web-cdn.agora.io/website-files/images/new-home-2-banner-realtime-bg.jpg",
                                "region": {
                                    "x": 0,
                                    "y": 0,
                                    "width": 320,
                                    "height": 360,
                                    "zOrder": 2
                                }
                            },
                            {
                                "rtc": {
                                    "rtcChannel": "test01",
                                    "rtcUid": 456,
                                    "rtcToken": "<your_rtc_token>"
                                },
                                "region": {
                                    "x": 320,
                                    "y": 0,
                                    "width": 320,
                                    "height": 320,
                                    "zOrder": 2
                                }
                            }
                        ],
                        "outputs": [
                            {
                                "rtc": {
                                    "rtcChannel": "test02",
                                    "rtcUid": 1000,
                                    "rtcToken": "<your_rtc_token>"
                                },
                                "audioOption": {
                                    "profileType": "AUDIO_PROFILE_MUSIC_STANDARD"
                                },
                                "videoOption": {
                                    "fps": 30,
                                    "codec": "H264",
                                    "bitrate": 800,
                                    "width": 960,
                                    "height": 480
                                }
                            }
                        ]
                    }
                }
            }
        }
    }

    response = requests.post(url, headers=headers, data=json.dumps(data))

    print(response.status_code)
    print(response.json())
```

### Node.js

```javascript
const axios = require('axios');

    const url = 'https://api.sd-rtn.com/v1/projects/:appId/rtsc/cloud-transcoder/builderTokens';
    const headers = {
      'Authorization': 'Basic <credentials>',
      'Content-Type': '<string>'
    };

    const data = {
      instanceId: "abc13328",
      services: {
        cloudTranscoder: {
          serviceType: "cloudTranscoderV2",
          config: {
            transcoder: {
              idleTimeout: 300,
              audioInputs: [
                {
                  rtc: {
                    rtcChannel: "test01",
                    rtcUid: 123,
                    rtcToken: "<your_rtc_token>"
                  }
                },
                {
                  rtc: {
                    rtcChannel: "test01",
                    rtcUid: 456,
                    rtcToken: "<your_rtc_token>"
                  }
                }
              ],
              canvas: {
                width: 960,
                height: 480,
                color: 0,
                backgroundImage: "https://web-cdn.agora.io/website-files/images/new-home-2-banne-online-karaoke-bg.jpg",
                fillMode: "FIT"
              },
              waterMarks: [
                {
                  imageUrl: "https://web-cdn.agora.io/website-files/images/advantage-interactive-live-streaming.png",
                  region: {
                    x: 0,
                    y: 0,
                    width: 100,
                    height: 100,
                    zOrder: 50
                  }
                }
              ],
              videoInputs: [
                {
                  rtc: {
                    rtcChannel: "test01",
                    rtcUid: 123,
                    rtcToken: "<your_rtc_token>"
                  },
                  placeholderImageUrl: "https://web-cdn.agora.io/website-files/images/new-home-2-banner-realtime-bg.jpg",
                  region: {
                    x: 0,
                    y: 0,
                    width: 320,
                    height: 360,
                    zOrder: 2
                  }
                },
                {
                  rtc: {
                    rtcChannel: "test01",
                    rtcUid: 456,
                    rtcToken: "<your_rtc_token>"
                  },
                  region: {
                    x: 320,
                    y: 0,
                    width: 320,
                    height: 320,
                    zOrder: 2
                  }
                }
              ],
              outputs: [
                {
                  rtc: {
                    rtcChannel: "test02",
                    rtcUid: 1000,
                    rtcToken: "<your_rtc_token>"
                  },
                  audioOption: {
                    profileType: "AUDIO_PROFILE_MUSIC_STANDARD"
                  },
                  videoOption: {
                    fps: 30,
                    codec: "H264",
                    bitrate: 800,
                    width: 960,
                    height: 480
                  }
                }
              ]
            }
          }
        }
      }
    };

    axios.post(url, data, { headers })
      .then(response => {
        console.log('Status:', response.status);
        console.log('Data:', response.data);
      })
      .catch(error => {
        console.error('Error:', error.response ? error.response.data : error.message);
      });
```


### Response

- If the returned status code is `200`, the request was successful. The response body contains the result of the request.

- If the returned status code is not `200`, the request failed.


## Responses

### 200

The request succeeded and returned a builder token.

- `createTs` (number) - Unix timestamp (seconds) when the `builderToken` was generated
- `instanceId` (string) - The user-specified instance ID.
- `tokenName` (string) - The value of the `builderToken`. Use this value when calling other methods for this instance.
### default

The request failed.

- `message` (string) - Describes why the request failed.

### Reference

Note the following guidelines when using a `builderToken`:

- After calling this endpoint successfully, you receive a `builderToken` in the response body. You can use a `builderToken` for a single Cloud Transcoding task.
- The validity period of a `builderToken` for creating Cloud Transcoding is 5 minutes. To ensure successful Cloud Transcoding, best practice is to initiate the corresponding `Create` request within 2 seconds after each `Acquire` response is received.
- Making batch `Create` requests after batch `builderToken` requests may cause the request to fail.

**Output destination constraints**

- A single transcoding task cannot push to both a CDN address and an RTC channel simultaneously. To push to both destinations, create two separate tasks.
- If the audio or video configurations differ between the two destinations, create two separate tasks.
- To push to multiple CDN addresses, include all destination addresses within a single `outputs` object.
- Each transcoding task can push to only one RTC channel. To push to two different RTC channels, create two separate tasks.


## Response examples

### 200

```json
{
  "createTs": 1661324606,
  "instanceId": "abc13328",
  "tokenName": "xUwUbQf9ZxxxxxtLslGnDg0lk8RYaUE0***"
}
```
### default

```json
{
  "message": "Describes why the request failed."
}
```
