Base-URL for our API is https://api.southcloud.tv/v1/ (note the 1 for version 1 behind the /)
All requests to the API shall be HTTP/1.1 GET
Please make sure to use the API with https only.
Most requests require a API Login & API Key, you can find both in the User Panel at the "User Settings" Tab.
Response is json, structure is as follows:
{
"status": <status-code>,
"msg": "<informational message. might vary, use the status code in your code!>",
"result": <result of the request. varies depending on the request>
}
200: Everything is OK. Request succeeded
400: Bad request (e.g. wrong parameters)
403: Permission denied (wrong api login/key, action on a file which does not belong to you, ...)
404: File not found
451: Unavailable For Legal Reasons
509: Bandwidth usage exceeded. Please try again later or use Browser Download. (you might see this during peak hours)
50x: Server errors. You should not see this, but be prepared.
This message gives more detailed information in case there is an error.
You can use this for displaying it to the user, but please don't use it for checking if the request succeeded. That's what the status code is for.
holds the response of the request if succeeded. Might hold an array of data or just a boolean true/false, depending on the request
Get an Upload URL
Uploads shall be POSTed to the upload URL returned by our API and shall be multipart/form-data encoded. Example with curl:
curl -F file=@/path/to/file.mp4 https://up.southcloud.tv/files/v1/upload/13Tr4XxMNq7CDX
https://api.southcloud.tv/v1/file/upload?login={login}&key={key}&folder={folder}
Name | Description | Example | Required |
---|---|---|---|
login | API-Login | eU75cHGPFB | yes |
key | API-Key / API-Password | 729v75nzfgb0vI12 | yes |
folder | Folder-ID to upload to | 1234 | no |
200 (OK)
Content-Type: application/json
{
"status": 200,
"msg": "OK",
"result": {
"url": "https://up.southcloud.tv/files/v1/upload/13Tr4XxMNq7CDX",
"valid_until": "2023-01-09 00:02:50"
}
}
Remote Uploading a file
https://api.southcloud.tv/v1/remotedl/add?login={login}&key={key}&url={url}&folder={folder}&headers={headers}
Name | Description | Example | Required |
---|---|---|---|
login | API-Login | eU75cHGPFB | yes |
key | API-Key / API-Password | 729v75nzfgb0vI12 | yes |
url | Remote URL | http://google.com/favicon.ico | yes |
folder | Folder-ID to upload to | 1234 | no |
headers | additional HTTP headers, separated by newline (e.g. Cookies or HTTP Basic-Auth) | Mozilla/5.0 (Windows; Windows NT 6.1; WOW64; en-US) AppleWebKit/601.3 (KHTML, like Gecko) Chrome/52.0.2760.111 Safari/534 | no |
200 (OK)
Content-Type: application/json
{
"status": 200,
"msg": "OK",
"result": {
"id": "nsJ81Bph4lrW",
"folderid": "wp5fc6mI794f"
}
}
Check Status of Remote Upload
https://api.southcloud.tv/v1/remotedl/status?login={login}&key={key}&limit={limit}&id={id}
Name | Description | Example | Required |
---|---|---|---|
login | API-Login | eU75cHGPFB | yes |
key | API-Key / API-Password | 729v75nzfgb0vI12 | yes |
limit | Maximum number of results (Default: 5, Maximum: 100) | 5 | no |
id | Remote Upload ID | 1234 | no |
200 (OK)
Content-Type: application/json
{
"status": 200,
"msg": "OK",
"result": [
{
"id": "AXFkG4S8So",
"folderid": "0",
"remoteurl": "https://mp4files.com/rabbit.mp4",
"status": "new",
"added": "2023-03-29 06:32:40",
"last_update": "2023-03-29 06:32:40",
"extid": false,
"url": false
},
{
"id": "SElXcB7QkG",
"folderid": "0",
"remoteurl": "https://video.org/files/pig.mp4",
"status": "downloading",
"added": "2023-03-28 09:02:26",
"last_update": "2023-03-28 09:02:26",
"extid": false,
"url": false
},
{
"id": "mE6SAc6Nx6",
"folderid": "0",
"remoteurl": "https://example.com/video.mp4",
"status": "finished",
"added": "2023-03-28 09:02:26",
"last_update": "2023-03-28 09:02:26",
"extid": false,
"url": false
},
{
"id": "dgGL8GXUXh",
"folderid": "0",
"remoteurl": "https://example.com/stream.mp4",
"status": "error",
"added": "2023-06-12 09:02:26",
"last_update": "2023-06-12 09:02:26",
"extid": false,
"url": false
}
]
}
Shows the content of your folders
https://api.southcloud.tv/v1/file/listfolder?login={login}&key={key}&folder={folder}
Name | Description | Example | Required |
---|---|---|---|
login | API-Login | eU75cHGPFB | yes |
key | API-Key / API-Password | 729v75nzfgb0vI12 | yes |
folder | Folder-ID | 5 | no |
200 (OK)
Content-Type: application/json
{
"status": 200,
"msg": "OK",
"result": {
"folders": [
{
"id": "n8dM3TIn3u6400",
"name": "video"
},
{
"id": "wpj796Ps3eiqao",
"name": "sub"
}
],
"files": [
{
"name": "big_buck_bunny.mp4",
"folder_id": "n8dM3TIn3u6400",
"md5": "2a74c4181c65f6b86d452d955ca89d18",
"size": "33129367",
"status": "active",
"encode_status": "pending",
"content_type": "mp4",
"updated_at": 1687538702,
"download_count": 0,
"link": "https://southcloud.tv/v/zA8uE1uwNN4639/big_buck_bunny.mp4",
"linkextid": "zA8uE1uwNN4639"
},
{
"name": "Sintel.2010.1080p.mkv",
"folder_id": "n8dM3TIn3u6400",
"md5": "bcce86ad76f0daf39ba7ce39a40a575d",
"size": "30639964",
"status": "active",
"encode_status": "encoding",
"content_type": "mkv",
"updated_at": 1687452302,
"download_count": 0,
"link": "https://southcloud.tv/v/5hf8v7dznI1fnp/Sintel.2010.1080p.mkv",
"linkextid": "5hf8v7dznI1fnp"
},
{
"name": "SampleVideo_360x240_30mb.mp4",
"folder_id": "n8dM3TIn3u6400",
"md5": "f9480cb83cd96eb5ce95df0fba58f9e0",
"size": "31539436",
"status": "active",
"encode_status": "finished",
"content_type": "mp4",
"updated_at": 1687365902,
"download_count": 0,
"link": "https://southcloud.tv/v/Z39Jo0W0jdXyyl/SampleVideo_360x240_30mb.mp4",
"linkextid": "Z39Jo0W0jdXyyl"
},
{
"name": "example.mp4",
"folder_id": "n8dM3TIn3u6400",
"md5": "994970c3a79168f9b675858556da491b",
"size": "30376392",
"status": "disable",
"encode_status": "error",
"content_type": "mp4",
"updated_at": 1687279502,
"download_count": 0,
"link": "https://southcloud.tv/v/SP8Ods48BaltJA/example.mp4",
"linkextid": "SP8Ods48BaltJA"
}
]
}
}
Set a new name for a folders
https://api.southcloud.tv/v1/file/renamefolder?login={login}&key={key}&folder={folder}&name={name}
Name | Description | Example | Required |
---|---|---|---|
login | API-Login | eU75cHGPFB | yes |
key | API-Key / API-Password | 729v75nzfgb0vI12 | yes |
folder | Folder-ID | 5 | yes |
name | new Folder-Name | my%20new%20foldername | yes |
200 (OK)
Content-Type: application/json
{
"status": 200,
"msg": "OK",
"result": true
}
Set a new name for a file
https://api.southcloud.tv/v1/file/rename?login={login}&key={key}&file={file}&name={name}
Name | Description | Example | Required |
---|---|---|---|
login | API-Login | eU75cHGPFB | yes |
key | API-Key / API-Password | 729v75nzfgb0vI12 | yes |
file | File ID | UPPjeAk--30 | yes |
name | new File-Name | my_video | yes |
200 (OK)
Content-Type: application/json
{
"status": 200,
"msg": "OK",
"result": true
}
Remove one of your files
https://api.southcloud.tv/v1/file/delete?login={login}&key={key}&file={file}
Name | Description | Example | Required |
---|---|---|---|
login | API-Login | eU75cHGPFB | yes |
key | API-Key / API-Password | 729v75nzfgb0vI12 | yes |
file | File ID | UPPjeAk--30 | yes |
200 (OK)
Content-Type: application/json
{
"status": 200,
"msg": "OK",
"result": true
}
Get an Upload URL
Uploads shall be POSTed to the upload URL returned by our API and shall be multipart/form-data encoded. Example with curl:
curl -F file=@/path/to/file.srt https://cc.southcloud.tv/subtitles/v1/upload/5b0cfe8e95985
https://api.southcloud.tv/v1/subtitle/upload?login={login}&key={key}&file={file}&language={language}
Name | Description | Example | Required |
---|---|---|---|
login | API-Login | eU75cHGPFB | yes |
key | API-Key / API-Password | 729v75nzfgb0vI12 | yes |
file | File-ID to upload to | 1234 | yes |
language | Subtitle language | English | yes List language |
200 (OK)
Content-Type: application/json
{
"status": 200,
"msg": "OK",
"result": {
"data": {
"url": "https://cc.southcloud.tv/subtitles/v1/upload/5b0cfe8e95985",
"valid_until": "2023-05-29 09:17:34"
}
}
}
Shows file's subtitles
https://api.southcloud.tv/v1/subtitle/list?login={login}&key={key}&file={file}
Name | Description | Example | Required |
---|---|---|---|
login | API-Login | eU75cHGPFB | yes |
key | API-Key / API-Password | 729v75nzfgb0vI12 | yes |
file | File-ID | AYgHe95d1E4 | yes |
200 (OK)
Content-Type: application/json
{
"status": 200,
"msg": "OK",
"result": [
{
"id": "902R7BJC0LWlY6",
"language": "Afar",
"created_at": "2023-03-27 23:40:55",
"file_id": "AYgHe95d1E4"
},
{
"id": "dCbbodkX2mBKn4",
"language": "English",
"created_at": "2023-03-27 23:40:55",
"file_id": "AYgHe95d1E4"
}
]
}