--- title: "Upload recording file" slug: "media-livestation-recording-recordingupload" tags: ["Live Station"] updated: 2026-09-17T10:12:40Z published: 2026-09-17T10:12:40Z canonical: "api.ncloud-docs.com/media-livestation-recording-recordingupload" --- > ## Documentation Index > Fetch the complete documentation index at: https://api.ncloud-docs.com/llms.txt > Use this file to discover all available pages before exploring further. # Upload recording file Available in Classic and VPC Upload temporarily saved recording file to Object Storage Note Temporarily saved recording files are only stored for 3 days, they're permanently deleted after 3 days. To help you keep your recordings forever without having to upload them separately, we recommend enabling recordings to be saved automatically when you create a channel and specifying a bucket to store them in. ## Request This section describes the request format. The method and URI are as follows: | Method | URI | | --- | --- | | POST | /api/v2/buckets/{bucketName}/upload | ### Request headers For information about the headers common to all Live Station APIs, see [Live Station request headers](/docs/en/media-livestation#%EC%9A%94%EC%B2%AD%ED%97%A4%EB%8D%94). ### Request path parameters You can use the following path parameters with your request: | Field | Type | Required | Description | | --- | --- | --- | --- | | `bucketName` | String | Required | Object Storage bucket name - See [ListBuckets](/docs/en/storage-objectstorage-listbuckets). | ### Request body You can include the following data in the body of your request: | Field | Type | Required | Description | | --- | --- | --- | --- | | `recordIds` | Array | Required | Recording file ID list - See [Get recording file list](/docs/en/media-livestation-recording-recordinglist). - Uploadable file status: `TRANSFER_READY`, `TRANSFER_FAIL` | | `accessControl` | String | Optional | Recording file storage bucket disclosure scope - `PRIVATE` (default) \| `PUBLIC_READ` - `PRIVATE`: Private - `PUBLIC_READ`: Public - If you integrate with a CDN to provide VOD service, enter `PUBLIC_READ`. | ### Request example The request example is as follows: ``` curl --location --request POST 'https://livestation.apigw.ntruss.com/api/v2/buckets/bucket000/upload' \ --header 'x-ncp-apigw-timestamp: {Timestamp}' \ --header 'x-ncp-iam-access-key: {Access Key}' \ --header 'x-ncp-apigw-signature-v2: {API Gateway Signature}' \ --header 'Content-Type: application/json' \ --header 'x-ncp-region_code: KR' \ --data '{ "recordIds": [ 270****, 270**** ], "accessControl": "PRIVATE" }' ``` ## Response This section describes the response format. ### Response body The response body includes the following data: | Field | Type | Required | Description | | --- | --- | --- | --- | | `content` | Object | - | Response result | | `content.bucketName` | String | - | Recording video file storage bucket name | | `content.accessControl` | String | - | Recording file storage bucket disclosure scope - `PRIVATE` \| `PUBLIC_READ` - `PRIVATE`: Private - `PUBLIC_READ`: Public | | `content.uploadedRecords` | Object | - | Recording file list | | `content.uploadedRecords.{recordId}` | Object | - | Recording file details - `{recordId}`: Recording file ID | | `content.uploadedRecords.{recordId}.recordFileName` | String | - | File name | | `content.uploadedRecords.{recordId}.recordType` | String | - | Recording file type - `MP4` \| `HLS` | | `content.uploadedRecords.{recordId}.status` | String | - | File status - `RECORDING` \| `PROCESSING` \| `PROCESSING_FAIL` \| `TRANSFER_READY` \| `TRANSFER` \| `TRANSFER_FINISH` \| `TRANSFER_FAIL` \| `DELETED` - `RECORDING`: Recording - `PROCESSING`: Processing - `PROCESSING_FAIL`: Processing failed - `TRANSFER_READY`: Transfer pending - `TRANSFER`: Transferring - `TRANSFER_FINISH`: Transfer completed - `TRANSFER_FAIL`: Transfer failed - `DELETED`: Deleted | | `content.uploadedRecords.{recordId}.uploadPath` | String | - | Directory path | | `content.uploadedRecords.{recordId}.objectStorageUrl` | String | - | Recording URL | ### Response status codes For information about the HTTP status codes common to all Live Station APIs, see [Live Station response status codes](/docs/en/media-livestation#%EC%9D%91%EB%8B%B5%EC%83%81%ED%83%9C%EC%BD%94%EB%93%9C). ### Response example The response example is as follows: ``` { "content": { "bucketName": "bucket000", "accessControl": "PRIVATE", "uploadedRecords": { "270****": { "recordFileName": "362418-1307180-20250818****.mp4", "recordType": "MP4", "status": "TRANSFER", "uploadPath": "live-station/record/ls-20250818******-KRXat/362418-1307180-20250818****.mp4", "objectStorageUrl": "https://kr.object.ncloudstorage.com/bucket000/live-station/record/ls-20250818******-KRXat/362418-1307180-20250818****.mp4" }, "270****": { "recordFileName": "720p-9-16/playlist.m3u8", "recordType": "HLS", "status": "TRANSFER", "uploadPath": "live-station/record/ls-20250818******-KRXat/720p-9-16/1307180", "objectStorageUrl": "https://kr.object.ncloudstorage.com/bucket000/live-station/record/ls-20250818******-KRXat/720p-9-16/1307180/playlist.m3u8" } } } } ```