Skip to main content

KakaoCloud Object Storage is compatible with the Swift API.

Prerequisite

API endpoint URL After checking the region information, you can call the Object Storage API endpoint URL.

Object Storage API endpoint URL format
https://objectstorage.{region_name}.kakaocloud.com

List supported features

List supported Swift APIs

info

"KakaoCloud complies with the OpenStack Swift API specification, but for service stability and security, some parameters are restricted or provided with fixed default values. We recommend using primarily the parameters described below."

Swift namingDescription
Head ContainerCheck whether a container exists
List ContainersRetrieve the list of containers in the account
List CapabilityRetrieve the list of features/permissions available to the account (extension)
Create ContainerCreate a new container
Delete ContainerDelete a container
Update Container MetadataModify container metadata
Get ObjectDownload an object
Head ObjectRetrieve object metadata
List ObjectsRetrieve the list of objects in a container
Create ObjectUpload an object
Update Object MetadataModify object metadata
Delete ObjectDelete an object
Copy ObjectCopy an object
Initiate Multipart UploadInitialize multipart upload
Upload PartUpload a multipart part
List PartsRetrieve the list of uploaded parts
List Multipart UploadsRetrieve the list of in-progress multipart uploads
Abort Multipart UploadAbort multipart upload
Complete Multipart UploadComplete multipart upload
Create SLO ManifestUpload a Static Large Object (SLO) manifest
Create DLO ManifestUpload a Dynamic Large Object (DLO) manifest
Get Object Temp URLIssue a temporary URL that can access the object (extension)

Use Swift API guide

Head Container

API call method
MethodRequest URL
HEADhttps://objectstorage.{Region_Name}.kakaocloud.com/v1/{Account}/{Bucket_Name}
Request Syntax
Head Container Request Syntax
curl --request HEAD --location 'https://objectstorage.{Region_Name}.kakaocloud.com/v1/{Account}/{Bucket_Name}' \
--header 'X-Auth-Token: {x-auth-token}'
--header 'Content-Type: application/json'
Path Parameters
VariableDescription
Region_NameService region name (example: kr-central-2)
AccountUnique ID of the project
Bucket_NameTarget bucket name
Request Header
RequestTypeRequiredDescription
X-Auth-TokenStringRequired  User authentication token
Content-TypeStringRequired  Fixed to application/json
Request Body

This request does not have a body value.

Response Syntax

If the operation succeeds, the service returns an HTTP 200 response.

Response Header
RequestTypeDescription
X-Container-Object-CountIntegerTotal number of objects in the bucket
X-Container-Bytes-UsedIntegerLogical total size of objects stored in the bucket (Byte)
X-Container-Bytes-Used-ActualIntegerActual physical total size occupied on disk including replicas (Replication), etc. (Byte)
X-Storage-PolicyStringName of the storage policy applied to the bucket (example: Policy-0)
X-TimestampFloatUnix timestamp when the bucket was created or last modified
X-Trans-IdStringUnique transaction identifier for request processing (used for incident response)
X-Openstack-Request-IdStringUnique request ID assigned by the OpenStack service
Content-TypeStringFormat of the response data (usually text/plain; charset=utf-8)
Status code
HTTP StatusResponseDescription
200SuccessSuccess
401UnauthorizedAuthentication failed
403ForbiddenNo permission
404Not foundBucket not found

List Containers

Retrieve the list of all buckets created in the project.

API call method

MethodRequest URL
GET   https://objectstorage.{Region_Name}.kakaocloud.com/v1/{Account}
Request Syntax
List Containers Request Syntax
curl --request GET --location 'https://objectstorage.{Region_Name}.kakaocloud.com/v1/{Account}/' \
--header 'X-Auth-Token: {x-auth-token}'
--header 'Content-Type: application/json'
Path Parameters
VariableDescription
Region_NameService region name (example: kr-central-2)
AccountUnique ID of the project
Request Header
RequestTypeRequiredDescription
X-Auth-TokenStringRequired  User authentication token
Content-TypeStringRequired  Fixed to application/json
Request Body

This request does not have a body value.

Response Syntax

If the operation succeeds, the service returns an HTTP 200 response.

ListBuckets Response Syntax
[
my-bucket-01
my-bucket-02
my-bucket-03
my-bucket-04
my-bucket-05
]
Response Header
RequestDescription
X-Account-Container-CountTotal number of buckets (Containers) created in the project (Account)
X-Account-Object-CountTotal sum of all objects stored in all buckets in the project
X-Account-Bytes-UsedLogical total size of all objects in the project Sum of the original file sizes uploaded by the user (unit: Byte)
X-Account-Bytes-Used-ActualActual physical total size occupied by all objects in the project Replication capacity for data protection (unit: Byte)
X-Account-Storage-Policy-Default-Placement-Container-CountNumber of buckets to which the 'Default-Placement' policy is applied
X-Account-Storage-Policy-Default-Placement-Object-CountTotal number of objects in buckets with the 'Default-Placement' policy applied
X-Account-Storage-Policy-Default-Placement-Bytes-UsedLogical total usage in the 'Default-Placement' policy environment
X-Account-Storage-Policy-Default-Placement-Bytes-Used-ActualActual physical total occupied size in the 'Default-Placement' policy environment
X-TimestampUnix timestamp when the project information was last modified or the statistics were updated
X-Trans-IdUnique transaction identifier assigned by the system for the request Used for log tracing when an error occurs
X-Openstack-Request-IdUnique request ID assigned by the OpenStack infrastructure

ListCapability

Retrieve the list of Object Storage features and permissions available to the project.

API call method

MethodRequest URL
GET   https://objectstorage.{Region_Name}.kakaocloud.com/info
Request Syntax
ListCapability Request Syntax
curl --request GET --location 'https://objectstorage.{Region_Name}.kakaocloud.com/info'
Path Parameters
VariableDescription
Region_NameService region name (example: kr-central-2)
Request Header

This request may not require a separate authentication header. (Depends on configuration)

Request Body

This request does not have a body value.

Response Syntax

If the operation succeeds, the service returns an HTTP 200 response.

ListCapability Response Syntax
{
"swift": {
"version": "objectstorage-api-v2.0.21-126",
"Account_listing_limit": 1000,
"max_meta_length": 4096,
"min_meta_value_length": 0,
"max_meta_value_length": 512,
"container_listing_limit": 1000,
"max_file_size": 5368709120,
"max_object_name_length": 396,
"min_object_name_length": 1,
"min_meta_name_length": 2,
"max_meta_name_length": 64,
"max_Account_name_length": 32,
"min_container_name_length": 4,
"max_container_name_length": 63,
"policies": [
{
"name": "default-placement",
"default": true
}
]
},
"tempurl": {
"methods": [
"GET"
]
},
"slo": {
"max_manifest_segments": 1000,
"min_segment_size": 1,
"max_manifest_size": 8392704
},
"tempauth": {}
}
Response Element
RequestTypeDescription
versionStringCurrent version of the Object Storage API
Account_listing_limitIntegerMaximum number of bucket lists that can be retrieved in a single request (1,000)
max_file_sizeIntegerMaximum file size that can be processed in a single upload (unit: Byte, approximately 5 GB)
max_meta_name_lengthIntegerMaximum length of the metadata key name (64 characters)
max_meta_value_lengthIntegerMaximum length of the metadata value (512 characters)
max_meta_lengthIntegerMaximum total length of all metadata (4,096 characters)
max_object_name_lengthIntegerMaximum allowed length of the object name (Key) (396 characters)
min_container_name_lengthIntegerMinimum length of the bucket name (4 characters)
max_container_name_lengthIntegerMaximum length of the bucket name (63 characters)
policiesArrayList of supported storage policies
policies.nameStringName of the policy (example: default-placement)
policies.defaultBooleanWhether the policy is applied by default
tempurlObjectInformation related to the temporary URL issuance feature
methodsArrayList of HTTP methods allowed through the temporary URL (example: GET)
sloObjectConstraints related to Static Large Object (SLO)
max_manifest_segmentsIntegerMaximum number of parts that can be included in one SLO manifest (1,000)
min_segment_sizeIntegerMinimum size of a part when configuring SLO (1 Byte)
max_manifest_sizeIntegerMaximum size of the SLO manifest file itself (Byte)
tempauthObjectObject indicating whether the temporary authentication module is enabled

Create Container

Create a new bucket.

API call method

MethodRequest URL
PUT   https://objectstorage.{Region_Name}.kakaocloud.com/v1/{Account}/{Bucket_Name}
Request Syntax
Create Container Request Syntax
curl --request PUT --location 'https://objectstorage.{Region_Name}.kakaocloud.com/v1/{Account}/{Bucket_Name}' \
--header 'X-Auth-Token: {x-auth-token}'
--header 'Content-Type: application/json'
Path Parameters
VariableDescription
Region_NameService region name (example: kr-central-2)
AccountUnique ID of the project
Bucket_NameTarget bucket name
Request Header
RequestTypeRequiredDescription
X-Auth-TokenStringRequired  User authentication token
Content-TypeStringRequired  Fixed to application/json
Request Body

This request does not have a body value.

Response Syntax

If the operation succeeds, the service returns an HTTP 201 response.

Delete Container

Delete a bucket.

API call method

MethodRequest URL
DELETE   https://objectstorage.{Region_Name}.kakaocloud.com/v1/{Account}/{Bucket_Name}
Request Syntax
Delete Container Request Syntax
curl --request DELETE --location 'https://objectstorage.{Region_Name}.kakaocloud.com/v1/{Account}/{Bucket_Name}' \
--header 'X-Auth-Token: {x-auth-token}'
--header 'Content-Type: application/json'
Path Parameters
VariableDescription
Region_NameService region name (example: kr-central-2)
AccountUnique ID of the project
Bucket_NameTarget bucket name
Request Header
RequestTypeRequiredDescription
X-Auth-TokenStringRequired  User authentication token
Content-TypeStringRequired  Fixed to application/json
Request Body

This request does not have a body value.

Response Syntax

If the operation succeeds, the service returns an HTTP 204 No Content response.

Update Container Metadata

Create, modify, or delete bucket metadata.

API call method

MethodRequest URL
POST   https://objectstorage.{Region_Name}.kakaocloud.com/v1/{Account}/{Bucket_Name}
Request Syntax
Update Container Metadata Request Syntax
curl --request POST --location 'https://objectstorage.{Region_Name}.kakaocloud.com/v1/{Account}/{Bucket_Name}' \
--header 'X-Auth-Token: {x-auth-token}'
--header 'Content-Type: application/json'
Path Parameters
VariableDescription
Region_NameService region name (example: kr-central-2)
AccountUnique ID of the project
Bucket_NameTarget bucket name
Request Header
RequestTypeRequiredDescription
X-Auth-TokenStringRequired  User authentication token
Content-TypeStringRequired  Fixed to application/json
X-Container-Meta-keyStringOptional  Metadata value Value
ex) key = metadata key name, Value = metadata value
X-Remove-Container-Meta-keyStringOptional  Delete metadata
Request Body

This request does not have a body value.

Response Syntax

If the operation succeeds, the service returns an HTTP 204 No Content response.

Get Object

Download an object.

API call method

MethodRequest URL
GET   https://objectstorage.{Region_Name}.kakaocloud.com/v1/{Account}/{Bucket_Name}/{Object_Key}
Request Syntax
Get Object Request Syntax
curl --request GET --location 'https://objectstorage.{Region_Name}.kakaocloud.com/v1/{Account}/{Bucket_Name}/{Object_Key}' \
--header 'X-Auth-Token: {x-auth-token}'
--header 'Content-Type: application/json'
Path Parameters
VariableDescription
Region_NameService region name (example: kr-central-2)
AccountUnique ID of the project
Bucket_NameTarget bucket name
Object_KeyUnique key of the object (including path)
Request Header
RequestTypeRequiredDescription
X-Auth-TokenStringRequired  User authentication token
Content-TypeStringRequired  Fixed to application/json
Request Body

This request does not have a body value.

Response Syntax

If the operation succeeds, the service returns an HTTP 200 response. Loads the requested object.

Response Header
RequestDescription
DateResponse creation time
Content-TypeFormat of the content contained in the body
Content-LengthObject size
ConnectionWhether the connection is reused
Accept-RangesThe client can request a portion of the file in bytes
EtagIdentifier used by the web server to identify whether the content or metadata of the resource has changed
Last-ModifiedLast modified date
X-Object-Storage-ClassInteger
X-Openstack-Request-IdString
X-Trans-IdString
X-Rgw-Object-TypeString

Head Object

Retrieve object head information.

API call method

MethodRequest URL
HEAD   https://objectstorage.{Region_Name}.kakaocloud.com/v1/{Account}/{Bucket_Name}/{Object_Key}
Request Syntax
Head Object Request Syntax
curl --request HEAD --location 'https://objectstorage.{Region_Name}.kakaocloud.com/v1/{Account}/{Bucket_Name}/{Object_Key}' \
--header 'X-Auth-Token: {x-auth-token}'
--header 'Content-Type: application/json'
Path Parameters
VariableDescription
Region_NameService region name (example: kr-central-2)
AccountUnique ID of the project
Bucket_NameTarget bucket name
Object_KeyUnique key of the object (including path)
Request Header
RequestTypeRequiredDescription
X-Auth-TokenStringRequired  User authentication token
Content-TypeStringRequired  Fixed to application/json
Request Body

This request does not have a body value.

Response Syntax

If the operation succeeds, the service returns an HTTP 200 response.

Response Header
RequestDescription
DateResponse creation time
Content-TypeFormat of the content contained in the body
Content-LengthObject size
ConnectionWhether the connection is reused
Accept-RangesThe client can request a portion of the file in bytes
EtagIdentifier used by the web server to identify whether the content or metadata of the resource has changed
Last-ModifiedLast modified date
X-Object-Storage-ClassInteger
X-Openstack-Request-IdString
X-Trans-IdString
X-Rgw-Object-TypeString

List Objects

Retrieve the list of objects (files, folders) stored in a bucket.

API call method

MethodRequest URL
GET   https://objectstorage.{Region_Name}.kakaocloud.com/v1/{Account}/{Bucket_Name}?format=json
Request Syntax
List Containers Request Syntax
curl --request GET --location 'https://objectstorage.{Region_Name}.kakaocloud.com/v1/{Account}/{Bucket_Name}?format=json' \
--header 'X-Auth-Token: {x-auth-token}'
--header 'Content-Type: application/json'
Path Parameters
VariableDescription
Region_NameService region name (example: kr-central-2)
AccountUnique ID of the project
Bucket_NameTarget bucket name
Request Query
RequestTypeRequiredDescription
prefixQueryOptionalDirectory path
- Example: image/small
delimiterQueryOptionalIf delimiter is used as the key, enter /
limitQueryOptionalNumber of items
- Default: 1000 (up to 1,000 items can be retrieved)
markerQueryOptionalSearch condition
- (Object name > Marker )
formatQueryOptionalFormat to receive the response
- plain(default)
- json
- xml
Request Header
RequestTypeRequiredDescription
X-Auth-TokenStringRequired  User authentication token
Content-TypeStringRequired  Fixed to application/json
Request Body

This request does not have a body value.

Response Syntax

If the operation succeeds, the service returns an HTTP 200 response.

List Objects Response Syntax
[
{
"name": "apple1.JPG",
"hash": "4fabff2e18b68ae780cf0bc54d1fec82",
"bytes": 1699756,
"content_type": "image/jpeg",
"last_modified": "2026-02-19T04:44:38.302Z"
},
]
Response Elements
ResponseTypeDescription
nameStringObject name
content_typeStringReturns the Content-Type value entered when the object was PUT
- Type: directory / image / generic binary, etc.
bytesintObject size
hashStringUnique file value
last_modifiedStringLast modified date and time
- Format: RFC3339 - Example: 2020-07-01T00:00:00Z
subdirStringOnly this value is provided in the case of a pseudo-directory

Create Object

Upload an object to a bucket.

API call method

MethodRequest URL
PUT   https://objectstorage.{Region_Name}.kakaocloud.com/v1/{Account}/{Bucket_Name}/{Object_Key}
Request Syntax
Create Object Request Syntax
curl --request PUT --location 'https://objectstorage.{Region_Name}.kakaocloud.com/v1/{Account}/{Bucket_Name}/{Object_Key}' \
--header 'X-Auth-Token: {x-auth-token}'
--header 'Content-Type: application/json'
--data-binary {local_file_part_path}
Path Parameters
VariableDescription
Region_NameService region name (example: kr-central-2)
AccountUnique ID of the project
Bucket_NameTarget bucket name
Object_KeyUnique key of the object (including path)
Request Header
RequestTypeRequiredDescription
X-Auth-TokenStringRequired  User authentication token
Content-TypeStringOptionalIf the object being Put (uploaded) is a file, enter the mime type string
- If the content type is not entered during Put (upload), Object Storage internally treats the type of the currently uploaded file as application/octet-stream
X-Object-Meta-{name}StringOptionalBucket metadata, where the user-defined metadata name is entered in {name}
Content-LengthintOptionalContent length
Transfer-EncodingStringOptionalEncoding method
- chunked : a method of transferring data divided into a series of chunks, and if the chunked value is specified, the Content-Length Header must not be sent
- compress : compression method using the LZW algorithm
- deflate : compression method using the deflate algorithm
- gzip : compression method using the LZ77 algorithm
- identity : transfer method without compression or modification
Request Body

Object data. (This is the actual data being uploaded.)
Transfer the file stream (Byte Stream) directly in the body.

Response Syntax

If the operation succeeds, the service returns an HTTP 200 response.

Update Object Metadata

Create, modify, or delete object metadata.

API call method

MethodRequest URL
POST   https://objectstorage.{Region_Name}.kakaocloud.com/v1/{Account}/{Bucket_Name}/{Object_Key}
Request Syntax
Update Object Metadata Request Syntax
curl --request POST --location 'https://objectstorage.{Region_Name}.kakaocloud.com/v1/{Account}/{Bucket_Name}/{Object_Key}' \
--header 'X-Auth-Token: {x-auth-token}'
--header 'Content-Type: application/json'
Path Parameters
VariableDescription
Region_NameService region name (example: kr-central-2)
AccountUnique ID of the project
Bucket_NameTarget bucket name
Object_KeyUnique key of the object (including path)
Request Header
RequestTypeRequiredDescription
X-Auth-TokenStringRequired  User authentication token
Content-TypeStringOptionalIf the object being Put (uploaded) is a file, enter the mime type string
- If the content type is not entered during Put (upload), Object Storage internally treats the type of the currently uploaded file as application/octet-stream
X-Object-Meta-{name}StringOptionalBucket metadata, where the user-defined metadata name is entered in {name}
Content-LengthintOptionalContent length
Request Body

This request does not have a body value.

Response Syntax

If the operation succeeds, the service returns an HTTP 200 response.

Delete Object

Delete an object.

API call method

MethodRequest URL
DELETE   https://objectstorage.{Region_Name}.kakaocloud.com/v1/{Account}/{Bucket_Name}/{Object_Key}
Request Syntax
Delete Object Request Syntax
curl --request DELETE --location 'https://objectstorage.{Region_Name}.kakaocloud.com/v1/{Account}/{Bucket_Name}/{Object_Key}' \
--header 'X-Auth-Token: {x-auth-token}'
--header 'Content-Type: application/json'
Path Parameters
VariableDescription
Region_NameService region name (example: kr-central-2)
AccountUnique ID of the project
Bucket_NameTarget bucket name
Object_KeyUnique key of the object (including path)
Request Query
RequestTypeRequiredDescription
multipart-manifestQueryRequired  Enter the delete value to specify deleting all connected segments together.
Request Header
RequestTypeRequiredDescription
X-Auth-TokenStringRequired  User authentication token
Content-TypeStringRequired  Fixed to application/json
Request Body

This request does not have a body value.

Response Syntax

If the operation succeeds, the service returns an HTTP 204 response.

Copy Object

Copy an object.

API call method

MethodRequest URL
PUT   https://objectstorage.{Region_Name}.kakaocloud.com/v1/{Account}/{dest_Bucket_Name}/{dest_Object_Key}
Request Syntax
Copy Object Request Syntax
curl --request PUT --location 'https://objectstorage.{Region_Name}.kakaocloud.com/v1/{Account}/{dest_Bucket_Name}/{dest_Object_Key}' \
--header 'X-Auth-Token: {x-auth-token}' \
--header 'Content-Length: 0' \
--header 'X-Copy-From: /{src_bucket_name}/{src_object_key}'
Path Parameters
VariableDescription
Region_NameService region name (example: kr-central-2)
AccountUnique ID of the project
dest_Bucket_NameName of the target (destination) bucket where the copied object will be stored
dest_Object_KeyUnique key (including path) of the target (destination) object to be newly created by copying
Request Header
RequestTypeRequiredDescription
X-Auth-TokenStringRequired  User authentication token
Content-LengthStringRequired  Fixed to application/json
X-Fresh-MetadataStringOptional  If set to True, the source metadata is not copied and only the new metadata included in the request is applied
X-Copy-FromStringRequired  Path of the source object
Request Body

This request does not have a body value.

Response Syntax

If the operation succeeds, the service returns an HTTP 201 response.

Initiate Multipart Upload

Initialize multipart upload for large object upload.
This request must succeed before a unique UploadId can be issued to upload file parts.

API call method

MethodRequest URL
POST   https://objectstorage.{Region_Name}.kakaocloud.com/v1/{Account}/{Bucket_name}/{Object_Key}?uploads
Request Syntax
Initiate Multipart Upload Request Syntax
curl --request POST --location `https://objectstorage.{Region_Name}.kakaocloud.com/v1/{Account}/{Bucket_name}/{Object_Key}?uploads` \
--header 'X-Auth-Token: {x-auth-token}' \
--header 'Content-Type: application/json'
Path Parameters
VariableDescription
Region_NameService region name (example: kr-central-2)
AccountUnique ID of the project
Bucket_NameTarget bucket name
Object_KeyUnique key of the object (including path)
Request Header
RequestTypeRequiredDescription
X-Auth-TokenStringRequired  User authentication token
Content-TypeStringRequired  Fixed to application/json
Request Body

This request does not have a body value.

Response Syntax

If the operation succeeds, the service returns an HTTP 200 response.

DeleteObjects Response Syntax
    <?xml version="1.0" encoding="UTF-8"?>
<InitiateMultipartUploadResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Tenant>String</Tenant>
<Bucket>String</Bucket>
<Key>String</Key>
<UploadId>String</UploadId>
</InitiateMultipartUploadResult>
Response Elements
ResponseDescription
TenantProject ID
BucketBucket name where the upload is in progress
KeyName (Path) of the object to be uploaded
UploadIdUnique ID that identifies the multipart upload. Used when calling UploadPart and CompleteMultipartUpload

Upload Part

Upload a large object divided into multiple parts.
After all parts are uploaded, you must call CompleteMultipartUpload to combine them into a single object.

API call method

MethodRequest URL
PUT   https://objectstorage.{Region_Name}.kakaocloud.com/v1/{Account}/{Bucket_Name}/{Object_Key}?partNumber={n}&uploadId={Upload_Id}
Request Syntax
Upload Part Request Syntax
curl --request PUT --location 'https://objectstorage.{Region_Name}.kakaocloud.com/v1/{Account}/{Bucket_Name}/{Object_Key}?partNumber={n}&uploadId={Upload_Id}' \
--header 'X-Auth-Token: {x-auth-token}' \
--header 'Content-Type: application/octet-stream' \
--upload-file {local_file_part_path}
Path Parameters

| Path | Description | | --- | --- | --- | --- | | Region_Name | Service region name (example: kr-central-2) | | Account | Unique ID of the project | | Bucket_Name | Bucket name | | Object_Key | Unique key of the object (including path) |

Request Query
RequestTypeRequiredDescription
uploadIdQueryRequired  Unique upload ID of the large object returned from Initiate Multipart Upload
partNumberQueryRequired  Part number of the current file part being uploaded in the large object (1~10000)
Request Header
RequestTypeRequiredDescription
X-Auth-TokenStringRequired  User authentication token
Content-TypeStringRequired  Fixed to application/octet-stream
Request Body

Object data. (This is the actual data being uploaded.)
Transfer the file stream (Byte Stream) directly in the body.

Response Syntax

If the operation succeeds, the service returns an HTTP 201 response.

Response Header
RequestDescription
DateResponse creation time
EtagIdentifier used by the web server to identify whether the content or metadata of the resource has changed
X-Trans-IdString
X-Openstack-Request-IdString

List Part

Retrieve the list of parts successfully uploaded for a specific multipart upload.

API call method

MethodRequest URL
GET   https://objectstorage.{Region_Name}.kakaocloud.com/v1/{Account}/{Bucket_Name}/{Object_Key}?uploadId={Upload_Id}
Request Syntax
List Part Request Syntax
curl --request GET --location 'https://objectstorage.{Region_Name}.kakaocloud.com/v1/{Account}/{Bucket_Name}/{Object_Key}?uploadId={Upload_Id}' \
--header 'X-Auth-Token: {x-auth-token}' \
Path Parameters
PathDescription
Region_NameService region name (example: kr-central-2)
AccountUnique ID of the project
Bucket_NameBucket name
Object_KeyUnique key of the object (including path)
Request Query
RequestTypeRequiredDescription
uploadIdQueryRequired  Unique upload ID of the large object returned from Initiate Multipart Upload
Request Header
RequestTypeRequiredDescription
X-Auth-TokenStringRequired  User authentication token
Request Body

This request does not have a body value.

Response Syntax

If the operation succeeds, the service returns an HTTP 200 response.

Response Header
RequestDescription
DateResponse creation time
EtagIdentifier used by the web server to identify whether the content or metadata of the resource has changed
X-Trans-IdString
X-Openstack-Request-IdString

List Multipart Uploads

Retrieve the list of all incomplete and in-progress multipart uploads in a specific bucket.

API call method

MethodRequest URL
GET   https://objectstorage.{Region_Name}.kakaocloud.com/v1/{Account}/{Bucket_Name}/{Object_Key}?uploads
Request Syntax
List Multipart Uploads Request Syntax
curl --request GET --location `https://objectstorage.{Region_Name}.kakaocloud.com/v1/{Account}/{Bucket_Name}/{Object_Key}?uploads` \
--header 'X-Auth-Token: {x-auth-token}' \
Path Parameters
PathDescription
Region_NameService region name (example: kr-central-2)
AccountUnique ID of the project
Bucket_NameBucket name
Object_KeyUnique key of the object (including path)
Request Header
RequestTypeRequiredDescription
X-Auth-TokenStringRequired  User authentication token
Request Body

This request does not have a body value.

Response Syntax

If the operation succeeds, the service returns an HTTP 200 response.

List Multipart Uploads Response Syntax
  <?xml version="1.0" encoding="UTF-8"?>
<ListMultipartUploadsResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Tenant>String</Tenant>
<Bucket>String</Bucket>
<NextKeyMarker>String</NextKeyMarker>
<NextUploadIdMarker>String</NextUploadIdMarker>
<MaxUploads>Integer</MaxUploads>
<IsTruncated>Boolean</IsTruncated>
<Upload>
<Key>String</Key>
<UploadId>String</UploadId>
<Initiator>
<ID>String</ID>
<DisplayName>String</DisplayName>
</Initiator>
<Owner>
<ID>String</ID>
<DisplayName>String</DisplayName>
</Owner>
<StorageClass>String</StorageClass>
<Initiated>Timestamp</Initiated>
</Upload>
</ListMultipartUploadsResult>
Response Elements
ResponseTypeDescription
TenantStringProject ID
BucketStringBucket name
NextKeyMarkerStringValue to use for the key-marker request parameter in the next request
NextUploadIdMarkerStringValue to use for the upload-id-marker request parameter in the next request
MaxUploadsIntegerMaximum number of multipart uploads
IsTruncatedStringWhether the part list is truncated
KeyStringObject key to upload
UploadIdStringMultipart upload ID
IDStringProject ID
DisplayNameStringProject name
StorageClassStringStorage class
InitiatedTimestampMultipart upload start date and time

Abort Multipart Upload

Abort an in-progress multipart upload and delete all uploaded parts.
The aborted UploadId can no longer be used.

API call method

MethodRequest URL
DELETE   https://objectstorage.{Region_Name}.kakaocloud.com/v1/{Account}/{Bucket_Name}/{Object_Key}?uploadId={upload_id}
Request Syntax
Abort Multipart Upload Request Syntax
curl --request DELETE --location `https://objectstorage.{Region_Name}.kakaocloud.com/v1/{Account}/{Bucket_Name}/{Object_Key}?uploadId={upload_id}` \
--header 'X-Auth-Token: {x-auth-token}' \
Path Parameters
PathDescription
Region_NameService region name (example: kr-central-2)
AccountUnique ID of the project
Bucket_NameBucket name
Object_KeyUnique key of the object (including path)
Request Query
RequestTypeRequiredDescription
uploadIdQueryRequired  Unique upload ID of the large object returned from Initiate Multipart Upload
Request Header
RequestTypeRequiredDescription
X-Auth-TokenStringRequired  User authentication token
Content-TypeStringRequired  Fixed to application/json
Request Body

This request does not have a body value.

Response Syntax

If the operation succeeds, the service returns an HTTP 204 response.

CompleteMultipartUpload

API call method

MethodRequest URL
POST   https://objectstorage.{Region_Name}.kakaocloud.com/v1/{Account}/{Bucket_Name}/{Object_Key}?uploadId={upload_id}
Request Syntax
CompleteMultipartUpload Request Syntax
curl --request POST --location `https://objectstorage.{Region_Name}.kakaocloud.com/v1/{Account}/{Bucket_Name}/{Object_Key}?uploadId={upload_id}` \
--header 'X-Auth-Token: {x-auth-token}' \
--header 'Content-Type: application/json' \
--data '<CompleteMultipartUpload>
<Part>
<PartNumber>1</PartNumber>
<ETag>"897a0f868d69985acdbf1e9f9d6f3603"</ETag>
</Part>
</CompleteMultipartUpload>'
Path Parameters
PathDescription
Region_NameService region name (example: kr-central-2)
AccountUnique ID of the project
Bucket_NameBucket name
Object_KeyUnique key of the object (including path)
Request Query
RequestTypeRequiredDescription
uploadIdQueryRequired  Unique upload ID of the large object returned from Initiate Multipart Upload
Request Header
RequestTypeRequiredDescription
X-Auth-TokenStringRequired  User authentication token
Content-TypeStringRequired  Fixed to application/json
Request Body
CompleteMultipartUpload Response Syntax
<CompleteMultipartUpload>
<Part>
<ETag>String</ETag>
<PartNumber>Integer</PartNumber>
</Part>
...
</CompleteMultipartUpload>
Request Elements
RequestTypeRequiredDescription
ETagStringOptionalHash value of the object
PartNumberIntegerOptionalPart identifier number (positive integer between 1 and 10,000)
Response Syntax

If the operation succeeds, the service returns an HTTP 200 response.

SLO(Static Large Object) method

The SLO method uploads segments by splitting them as with DLO, but differs in that there is no segment naming restriction and the sizes do not have to be the same. Also, the manifest must be uploaded last. The SLO Manifest Object must be entered by listing the Segment Object entries in order. Currently, KC Object Storage supports up to 1,000 Segment Objects in one manifest.

When you send a request to create an SLO Manifest Object, it checks whether each Segment Object exists at the specified path and whether the etag value and Segment object size match. If the information does not match, the Manifest Object is not created. In addition, the integrity of the Segment Object is guaranteed through the etag in the manifest.

  1. Split a single large object into segments of the size desired by the user.
  2. Upload each segment to a bucket for which you have access permission. It does not have to be the same bucket, but it must be a bucket in a project (Account) for which you have access permission.
  3. Upload the SLO Manifest Object by entering the manifest containing the Path, Etag, and Size of the uploaded Segment objects in the body.
Notice

For detailed examples of the manifest, refer to https://objectstorage.kr-central-2.kakaocloud.com/info.

Create SLO Manifest

Create a static large object (SLO) by uploading a JSON manifest file containing information about the uploaded segments (parts).

API call method

MethodRequest URL
PUT   https://objectstorage.{Region_Name}.kakaocloud.com/v1/{Account}/{Bucket_Name}/{SLO Manifest Object}?multipart-manifest=put
Request Syntax
Create SLO Manifest Request Syntax
curl --request PUT --location `https://objectstorage.{Region_Name}.kakaocloud.com/v1/{Account}/{Bucket_Name}/{SLO Manifest Object}?multipart-manifest=put` \
--header 'X-Auth-Token: {x-auth-token}' \
--header 'Content-Type: application/json' \
--data '[
{
"path": "{Bucket_Name}/{Segment Object}",
"etag": "{Segment Object Etag}}",
"size_bytes": {Segment Object Size}
},
{
"path": "{Bucket_Name}/{Segment Object}",
"etag": "{Segment Object Etag}}",
"size_bytes": {Segment Object Size}
},
{
"path": "{Bucket_Name}/{Segment Object}",
"etag": "{Segment Object Etag}}",
"size_bytes": {Segment Object Size}
}
]'
Path Parameters
PathDescription
Region_NameService region name (example: kr-central-2)
AccountUnique ID of the project
Bucket_NameBucket name
SLO Manifest ObjectManifest object name
Request Header
RequestTypeRequiredDescription
X-Auth-TokenStringRequired  User authentication token
Content-TypeStringRequired  Fixed to application/json
Request Body
Create SLO Manifest Response Syntax
[
{
"path": "jay-cool-1/video_part_aa",
"etag": "841aa70a236b55d22260aa4defe699cf",
"size_bytes": 52428800
},
{
"path": "jay-cool-1/video_part_ab",
"etag": "30c4e8955088e398b2b87d52554d3f90",
"size_bytes": 23052099
}
...
]

Request Elements
RequestTypeRequiredDescription
PathStringRequiredEnter in the Path/Segment Object format
- Path: path to upload the object
- Segment Object: segment object under the path
ETagStringRequiredHash value of the object
size_bytesIntegerRequiredSize of the Segment Object
Notice

When entering etag and size_bytes during Manifest PUT, if the values do not match the etag and size_bytes values of the previously uploaded segment object, an error occurs

Response Syntax

If the operation succeeds, the service returns an HTTP 201 response.

Create DLO Manifest

Create a manifest file that groups objects with a specific prefix into one large object.

API call method

MethodRequest URL
PUT   https://objectstorage.{Region_Name}.kakaocloud.com/v1/{Account}/{Bucket_Name}/{DLO Manifest Object}
Request Syntax
Create DLO Manifest Request Syntax
curl --request PUT --location `https://objectstorage.{Region_Name}.kakaocloud.com/v1/{Account}/{Bucket_Name}/{DLO Manifest Object}` \
--header 'X-Auth-Token: {x-auth-token}' \
--header 'X-Object-Manifest: {Bucket_Name}/{Segment_Object_Prefix}' \
--header 'Content-Length: 0'
Path Parameters
PathDescription
Region_NameService region name (example: kr-central-2)
AccountUnique ID of the project
Bucket_NameBucket name
Object_KeyUnique key of the object (including path)
Request Header
RequestTypeRequiredDescription
X-Auth-TokenStringRequired  User authentication token
X-Object-ManifestStringRequired  Specify {bucket name}/{prefix} where the segment files are located.
- Ascending sequence number naming is required (example: segment_0001 ... segment_0002 )
Response Syntax

If the operation succeeds, the service returns an HTTP 201 response.

Get Object Temp URL

Create temp URL for Object download

Create a temp URL for object download.
A user who has access permission to the object creates a download temp URL valid for a specific period. temp_url_expires is used as the expiration time so that the object can be downloaded until the time specified by the user.

API call method

MethodRequest URL
GET   https://objectstorage.{Region_Name}.kakaocloud.com/v1/{Account}/{Bucket_Name}/{Object_Key}?temp_url&temp_url_expires={temp_url_expires}
Request Syntax
Create temp URL for Object download Request Syntax
curl --request GET --location `https://objectstorage.{Region_Name}.kakaocloud.com/v1/{Account}/{Bucket_Name}/{Object_Key}?temp_url&temp_url_expires={temp_url_expires}` \
--header 'X-Auth-Token: {x-auth-token}'
--header 'Content-Type: application/json'
Path Parameters
VariableDescription
Region_NameService region name (example: kr-central-2)
AccountUnique ID of the project
Bucket_NameTarget bucket name
Object_KeyUnique key of the object (including path)
Request Header
RequestTypeRequiredDescription
X-Auth-TokenStringRequired  User authentication token
Content-TypeStringRequired  Fixed to application/json
Request Query
RequestTypeRequiredDescription
temp_urlStringRequired  Key indicating a TempUrl issuance request
temp_url_expirestimestampRequired  Valid time of the issued TempUrl
- Unit: sec
Request Body

This request does not have a body value.

Response Syntax

If the operation succeeds, the service returns an HTTP 200 response.

Response Body
Get Object Temp URL response Syntax
    {
"url": "/v1/{project_id}/object-reg-test-1/test.txt?temp_url_sig={temp_url_sig}&temp_url_expires={temp_url_expires}",
"sig": "{sig}"
}
Response Elements
ResponseTypeDescription
urlstringTemporary URL that can download the object within the expire time
sigstringSignature of the URL, valid within the expire time of the object

Download Object using Temp URL

Download an object using a Temp URL.
By using the created Temp URL, you can download the object during the valid time requested when it was issued.
When using a Temp URL, the object can be downloaded without X-Auth-Token, so the issuer of the Temp URL must deliver it only to trusted users.

API call method

MethodRequest URL
GET   https://objectstorage.{Region_Name}.kakaocloud.com/v1/{Account}/{Bucket_Name}/{Object_Key}?temp_url&temp_url_expires={temp_url_expires}
Request Syntax
Download Object using Temp URL Request Syntax
curl --request GET --location `https://objectstorage.{Region_Name}.kakaocloud.com/v1/{Account}/{Bucket_Name}/{Object_Key}?temp_url_sig={temp_url_sig}&temp_url_expires={temp_url_expires}` \
--header 'X-Auth-Token: {x-auth-token}'
--header 'Content-Type: application/json'
Path Parameters
VariableDescription
Region_NameService region name (example: kr-central-2)
AccountUnique ID of the project
Bucket_NameTarget bucket name
Object_KeyUnique key of the object (including path)
Request Query
RequestTypeRequiredDescription
temp_url_sigQueryRequired  Signature information from the issued Temp URL response
temp_url_expiresQueryRequired  Valid time information from the issued Temp URL response
- Unit: Unix epoch time
filenameQueryOptionalCustom file name to use when downloading the object from the browser
- UTF-8 percent-encoded string
Request Header
RequestTypeRequiredDescription
X-Auth-TokenStringRequired  User authentication token
Content-TypeStringRequired  Fixed to application/json
Request Body

This request does not have a body value.

Response Syntax

If the operation succeeds, the service returns an HTTP 200 response. Loads the requested object.

Common status codes

HTTP StatusResponse contentDescription
200     OKSuccess
204     No ContentSuccess
400BadRequestRequest information error
401UnauthorizedAuthentication failed
403ForbiddenNo permission
404Not FoundRequested resource not found
409ConflictsConflict