Please note: This API has been adapted to match the specification from other services. However there are small differences, be aware of them!
Base-URL for our API is https://api.nupload.me
All requests to the API shall be HTTP GET
or POST
Please make sure to use the API with https
only, http
requests will result in a HTTP 302
redirect to https
.
Most requests require an API Login & API Key, you can find both in the User Panel at the "Account 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. (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
Everything account related (total used storage, reward, ...)
https://api.nupload.me/account/info?login={login}&key={key}
Name | Description | Example | Required |
---|---|---|---|
login | API-Login | y7bhafa3bxfxudzk | yes |
key | API-Key / API-Password | dq6hzjewe27bmwdn | yes |
200 (OK)
Content-Type: application/json
{
"status": 200,
"msg": "OK",
"result": {
"apiid": "<your api key>",
"email": "[email protected]",
"signup_at": "2019-12-31 23:59:59",
}
}
preparing a Download
https://api.nupload.me/file/dlticket?file={file}&login={login}&key={key}
Name | Description | Example | Required |
---|---|---|---|
file | File-ID | wg8ad12d3QiJRXG | yes |
login | API-Login | y7bhafa3bxfxudzk | no |
key | API-Key / API-Password | dq6hzjewe27bmwdn | no |
200 (OK)
Content-Type: application/json
{
"status": 200,
"msg": "OK",
"result": {
"ticket": "wg8ad12d3QiJRXG~~1585532987430~n~~0~q75Z2aJg-TYfQgxz8",
"wait_time": 10,
"valid_until": "2019-12-31 23:59:59"
}
}
get a download link by using download ticket
https://api.nupload.me/file/dl?file={file}&ticket={ticket}&captcha_response={captcha_response}
Name | Description | Example | Required |
---|---|---|---|
file | File-ID | 1585532987430 | yes |
ticket | previously generated download ticket | wg8ad12d3QiJRXG~~1440353112~n~~0~q75Z2aJg-TYfQgxz8 | yes |
200 (OK)
Content-Type: application/json
{
"status": 200,
"msg": "OK",
"result": {
"name": "Vlog1220-Sidney.mp4",
"size": 12345,
"url": "https://tapecontent.net/Vlog1220-Sidney.mp4",
}
}
check the status of a file, e.g. if the file exists
https://api.nupload.me/file/info?file={file}&login={login}&key={key}
Name | Description | Example | Required |
---|---|---|---|
file | File-ID(s), single file or comma-separated (max. 100) | wg8ad12d3QiJRXG,wg8ad12d3QiJRXG4,wg8ad12d3QiJRXG5,wg8ad12d3QiJRXG6 | yes |
login | API-Login | y7bhafa3bxfxudzk | no |
key | API-Key / API-Password | dq6hzjewe27bmwdn | no |
200 (OK)
Content-Type: application/json
{
"status": 200,
"msg": "OK",
"result": {
"wg8ad12d3QiJRXG3": {
"id": "wg8ad12d3QiJRXG3",
"name": "MyMinecraftLetsPlay.mp4",
"size": 1234,
"type": "video/mp4",
"converted": true,
"status": 200
},
"ag8ad12d3QiJRXG4": {
"id": "ag8ad12d3QiJRXG5",
"name": "OutfitOfTheDay21.mp4",
"size": 12346,
"type": "video/mp4",
"converted": true,
"status": 200
},
"bg8ad12d3QiJRXG9": {
"id": "bg8ad12d3QiJRXG9",
"name": "Travel with Me - Episode 128",
"size": 1234567,
"type": "video/mp4",
"converted": true,
"status": 200
},
"yg8ad12d3QiJRXG1": {
"id": "yg8ad12d3QiJRXG1",
"name": "Reaction Video",
"size": 12345,
"type": "video/mp4",
"converted": true,
"status": 200
},
}
}
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 file1=@/path/to/file.txt https://tapecontent.net/xfsproupload/wg8ad12d3QiJRXG
https://api.nupload.me/file/ul?login={login}&key={key}&folder={folder}&sha256={sha256}&httponly={httponly}
Name | Description | Example | Required |
---|---|---|---|
login | API-Login | y7bhafa3bxfxudzk | no |
key | API-Key / API-Password | dq6hzjewe27bmwdn | no |
folder | Folder-ID to upload to | 1234 | no |
sha256 | Expected sha256
If sha256 of uploaded file doesn't match this value, upload fails |
ca247fe30e68d516a54e7a57247724617c345daa88168f6264f756d7125ee9eb | no |
httponly | If this is set to true, use only http upload links | <not set> | no |
200 (OK)
Content-Type: application/json
{
"status": 200,
"msg": "OK",
"result": {
"url": "https://tapecontent.net/xfsupload/wg8ad12d3QiJRXG",
"valid_until": "2019-12-31 23:59:59"
}
}
Remote Uploading a file
https://api.nupload.me/remotedl/add?login={login}&key={key}&url={url}&folder={folder}&headers={headers}amp;name={name}
Name | Description | Example | Required |
---|---|---|---|
login | API-Login | y7bhafa3bxfxudzk | yes |
key | API-Key / API-Password | dq6hzjewe27bmwdn | yes |
url | Remote URL | https://vid.me/myvideo123 | yes |
folder | Folder-ID to upload to | LnvnE51P5gc | no |
headers | additional HTTP headers, separated by newline (e.g. Cookies or HTTP Basic-Auth) | Cookie: key=value | no |
Name | Custom Name for new File (optional, will get default name if not set)) | MyNewMovie.mp4 | no |
200 (OK)
Content-Type: application/json
{
"status": 200,
"msg": "OK",
"result": {
"id": "rbAarvRPXdYbaxY",
"folderid": "LnvnE51P5gc"
}
}
Removing/Cancelling a remote upload
https://api.nupload.me/remotedl/remove?login={login}&key={key}&id={id}
Name | Description | Example | Required |
---|---|---|---|
login | API-Login | y7bhafa3bxfxudzk | yes |
key | API-Key / API-Password | dq6hzjewe27bmwdn | yes |
id | Remote Upload ID (or put in "all" to remove all remote uploads) | rbAarvRPXdYbaxY or "all" | yes |
200 (OK)
Content-Type: application/json
{
"status": 200,
"msg": "OK",
"result": true
}
Check Status of Remote Upload
https://api.nupload.me/remotedl/status?login={login}&key={key}&limit={limit}&id={id}
Name | Description | Example | Required |
---|---|---|---|
login | API-Login | y7bhafa3bxfxudzk | yes |
key | API-Key / API-Password | dq6hzjewe27bmwdn | yes |
id | Remote Upload ID | LnvnE51P5gc | yes |
200 (OK)
Content-Type: application/json
{
"status": 200,
"msg": "OK",
"result": {
"LnvnE51P5gc": {
"id": "LnvnE51P5gc",
"remoteurl": "https://vid.me/myvideo123",
"status": "new",
"bytes_loaded": null,
"bytes_total": null,
"folderid": "LnvnE51P5gc",
"added": "2019-12-31 23:59:59",
"last_update": "2019-12-31 23:59:59",
"extid": false,
"url": false
},
}
}
Shows the content of your folders
https://api.nupload.me/file/listfolder?login={login}&key={key}&folder={folder}
Name | Description | Example | Required |
---|---|---|---|
login | API-Login | y7bhafa3bxfxudzk | yes |
key | API-Key / API-Password | dq6hzjewe27bmwdn | yes |
folder | Folder-ID | 5 | no |
200 (OK)
Content-Type: application/json
{
"status": 200,
"msg": "OK",
"result": {
"folders": [
{
"id": "B-qlJkdHFeo",
"name": "Subfolder"
}
],
"files": [
{
"name": "MyMinecraftLetsPlay.mp4",
"size": 7040842,
"link": "https://nupload.me/v/rbAarvRPXdYbaxY/MyMinecraftLetsPlay.mp4",
"created_at": 1585532987430,
"downloads": 0,
"linkid": "rbAarvRPXdYbaxY",
"convert": "converted"
}
]
}
}
Creates a new Folder
https://api.nupload.me/file/createfolder?login={login}&key={key}&name={name}&pid={parent}
Name | Description | Example | Required |
---|---|---|---|
login | API-Login | y7bhafa3bxfxudzk | yes |
key | API-Key / API-Password | dq6hzjewe27bmwdn | yes |
name | Name of new Folder | My New Folder Name | no |
pid | Parent Folder ID (if not set root folder will be used) | B-qlJkdHFeo | no |
200 (OK)
Content-Type: application/json
{
"status": 200,
"msg": "OK",
"result": {
"folderid": "LnvnE51P5gc"
}
}
Renames a Folder
https://api.nupload.me/file/renamefolder?login={login}&key={key}&folder={folder}&name={name}
Name | Description | Example | Required |
---|---|---|---|
login | API-Login | y7bhafa3bxfxudzk | yes |
key | API-Key / API-Password | dq6hzjewe27bmwdn | yes |
folder | Folder ID to rename | LnvnE51P5gc | yes |
name | New Name | My new Name | yes |
200 (OK)
Content-Type: application/json
{
"status": 200,
"msg": "OK",
"result": true
}
Deletes a Folder with all subfolders and all files in it. Be careful!
https://api.nupload.me/file/deletefolder?login={login}&key={key}&folder={folder}
Name | Description | Example | Required |
---|---|---|---|
login | API-Login | y7bhafa3bxfxudzk | yes |
key | API-Key / API-Password | dq6hzjewe27bmwdn | yes |
folder | Folder ID to delete | LnvnE51P5gc | yes |
200 (OK)
Content-Type: application/json
{
"status": 200,
"msg": "OK",
"result": true
}
Renames a File
https://api.nupload.me/file/rename?login={login}&key={key}&file={file}&name={name}
Name | Description | Example | Required |
---|---|---|---|
login | API-Login | y7bhafa3bxfxudzk | yes |
key | API-Key / API-Password | dq6hzjewe27bmwdn | yes |
file | File ID to rename | wg8ad12d3QiJRXG | yes |
name | New Name | newname.mp4 | yes |
200 (OK)
Content-Type: application/json
{
"status": 200,
"msg": "OK",
"result": true
}
Moves a File into a different folder
https://api.nupload.me/file/move?login={login}&key={key}&file={file}&folder={folder}
Name | Description | Example | Required |
---|---|---|---|
login | API-Login | y7bhafa3bxfxudzk | yes |
key | API-Key / API-Password | dq6hzjewe27bmwdn | yes |
file | File ID to move | wg8ad12d3QiJRXG | yes |
folder | Folder to move in | LnvnE51P5gc | yes |
200 (OK)
Content-Type: application/json
{
"status": 200,
"msg": "OK",
"result": true
}
Removes a file
https://api.nupload.me/file/delete?login={login}&key={key}&file={file}
Name | Description | Example | Required |
---|---|---|---|
login | API-Login | y7bhafa3bxfxudzk | yes |
key | API-Key / API-Password | dq6hzjewe27bmwdn | yes |
file | File ID to delete | wg8ad12d3QiJRXG | yes |
200 (OK)
Content-Type: application/json
{
"status": 200,
"msg": "OK",
"result": true
}
It lists all running converts with their progress
https://api.nupload.me/file/runningconverts?login={login}&key={key}
Name | Description | Example | Required |
---|---|---|---|
login | API-Login | y7bhafa3bxfxudzk | yes |
key | API-Key / API-Password | dq6hzjewe27bmwdn | yes |
200 (OK)
Content-Type: application/json
{
"status": 200,
"msg": "OK",
"result":[
{
"name":"streamtape.mp4",
"folderid":"0",
"status":"new",
"progress":0,
"retries":0,
"link":"https://nupload.me/v/XklyYLYAZZZDZW/streamtape.mp4",
"linkid":"XklyYLYAZZZDZW"
},
{
"name":"Blender.mp4",
"folderid":"",
"status":"pending",
"progress":0.75,
"retries":0,
"link":"https://nupload.me/v/B4GaCbJAAAyBxb/Blender.mp4",
"linkid":"B4GaCbJAAAyBxb"
}
]
}
It lists all converts which failed. Contact us if you have a valid video which does not convert on our side.
https://api.nupload.me/file/failedconverts?login={login}&key={key}
Name | Description | Example | Required |
---|---|---|---|
login | API-Login | y7bhafa3bxfxudzk | yes |
key | API-Key / API-Password | dq6hzjewe27bmwdn | yes |
200 (OK)
Content-Type: application/json
{
"status": 200,
"msg": "OK",
"result":[
{
"name":"streamtape.mp4",
"folderid":"0",
"status":"error",
"progress":0,
"retries":2,
"link":"https://nupload.me/v/XklyYLYAZZZDZW/streamtape.mp4",
"linkid":"XklyYLYAZZZDZW"
}
]
}
Shows the video Thumbnail
https://api.nupload.me/file/getsplash?login={login}&key={key}&file={file}
Name | Description | Example | Required |
---|---|---|---|
login | API-Login | y7bhafa3bxfxudzk | yes |
key | API-Key / API-Password | dq6hzjewe27bmwdn | yes |
file | File-ID | wg8ad12d3QiJRXG | yes |
200 (OK)
Content-Type: application/json
{
"status": 200,
"msg": "OK",
"result": "https://thumb.tapecontent.net/thumb/wg8ad12d3QiJRXG/thumb.jpg"
}
You can control an Stramtape.com embed using the Player.js Open Standard.
For more details how you can interact with an embed on the client-side using JavaScript see the API Docs of Player.js.
With the Player.js API you can e.g. control the playback and volume of a video.
Don't like our default color? Or you prefer a red player for your christmas video on your blog? While we do not recommend changing the color, you are free to do so!
Just pass RGB Color values like this to your URL (works for embed & video links):https://nupload.me/e/wg8ad12d3QiJRXG?color=26,194,102
The example uses the player color rgb(26,194,102), which is green.
You have a multilingual audience? You can also load subtitles dynamically from URL(s):
https://nupload.me/e/wg8ad12d3QiJRXG?c1_label=FR&c1_file=http://yoursubtitle.com/file.srtYou can add multiple subtitles with this method (just count from 1 upwards). Both .srt and .vtt formats are supported.
<iframe name="subs:http://yoursubtitle.com/file.srt" src="https://nupload.me/e/wg8ad12d3QiJRXG" allowfullscreen> </iframe>Only one subtitle file is supported with this method. Both .srt and .vtt formats are supported.
https://nupload.me/e/wg8ad12d3QiJRXG?subtitle_json=http://yoursubtitle.com/def.jsonThe structure of the Subtitle Definition JSON should look like this (has same attribute names as HTML5 TextTrack Element):
[ {"src":"http://yoursubtitle.com/file.vtt", "label":"Language1", default: true}, {"src":"http://yoursubtitle.com/file2.vtt", "label":"Language2"} ]The default attribute is optional and is "false" if you do not set it. You must also set appropiate CORS Headers (e.g. Access-Control-Allow-Origin) as the viewers browser will fetch the JSON file. You also have to use VTT format.
You are tweaking your thumbnails to improve your conversion rates? Or you have another use case where you want to use a dynamically generated Thumbnail? No Problem:
Just pass your custom thumbnail URL into the query string (works for embed & video links):https://nupload.me/e/wg8ad12d3QiJRXG?thumb=http://myimage.com/thumb.jpg