Uploading Files POST Method

File upload permissions#

Only the secret keys having the FILE_UPLOAD permission will be able to upload files.

PermissionValid
FILE_UPLOADAuthorized
FILE_LISTDenied
FILE_FETCHDenied
CONFIG_CHANGEDenied

Parameters#

dir (optional) : /path/to/folder (default: /).

Specify the folder where you want to upload the file. If the folder doesn't exist, it will be created.

upload_mode (optional) : safe | try_safe[-xxxms] | quick (default: safe).

There are several to upload your file.

safe The request is blocking and the response is returned after the file is being successfully stored in at least one datacenter .

try_safe[-xxxms] (default: 2000ms) The request is blocking for the duration of the timeout parameter or until the file is being successfully stored in at least one datacenter - whichever comes first.

quick Returns the response as soon as the server receives the API call. This method is unreliable as the actual storage process takes place after the response is being returned and you cannot get an acknowledgement from the backend storage.

We provide many yet-undocumented features such as hooks, stats APIs, post-process APIs (resize images, encode/decode data, gzip a text file...).

Feel free to spam our support, we'll be really happy to help (and add new features as well!).

File upload REST API using the POST method#

POST /v1/upload

The POST method accepts files up to 500MB. If you want to upload larger file please refer to the PUT method at the bottom of this page.

There are 3 ways to upload your file(s) using the POST method#

U1 : Attach your file(s) in the body of a multipart/form-data request

This is the most common way to upload a file and allows easy integration with HTML forms. The file(s) should be attached in the file parameter. The following example shows what the request should look like with cURL:

curl --request POST \
  --url 'https://example.api.airstore.io/v1/upload?dir=/folder' \
  --header 'content-type: multipart/form-data; boundary=---011000010111000001101001' \
  --header 'x-airstore-secret-key: ebba5ece8757438cb3acf9a9ef7ba07a' \
  --form file=@yourfile.txt

U2 : Upload remotely hosted files by providing their URLs

We will download the content of the URL and upload it to Airstore. You can provide the URLs inside a JSON object:

curl --request POST \
  --url 'https://example.api.airstore.io/v1/upload?dir=/folder' \
  --header 'content-type: application/json' \
  --header 'x-airstore-secret-key:  ebba5ece8757438cb3acf9a9ef7ba07a' \
  --data '{
    "files_urls": ["http://sample.li/boat.jpg"]
}'
host: "https://example.api.airstore.io" path: "/v1/upload" theme: clouds-midnight method: POST headers: X-Airstore-Secret-Key: ebba5ece8757438cb3acf9a9ef7ba07a Content-type: application/json parameters: dir: /folder body: | { "files_urls": ["http://sample.li/boat.jpg"] }

You can also provide URLs via a multipart/form-data HTML form:

curl 'http://example.api.airstore.io/v1/upload?dir=/company_test/project_test' -X POST \
-H 'X-Airstore-Secret-Key: ebba5ece8757438cb3acf9a9ef7ba07a' \
-H 'Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryBCNMSLhuoNpJpGCC' \
--data-binary $'------WebKitFormBoundaryBCNMSLhuoNpJpGCC\r\nContent-Disposition: form-data; name="files_urls[]"\r\n\r\n[http://sample.li/birds.jpg\r\n------WebKitFormBoundaryBCNMSLhuoNpJpGCC--\r\n](http://sample.li/birds.jpg\r\n------WebKitFormBoundaryBCNMSLhuoNpJpGCC--\r\n)' \
--compressed

You can provide up to 20 URLs in a single request. Any surplus will not be taken into account.

U3 : Upload files encoded in base64

We will decode the base64 string and put it into Airstore. It can be used both for binary and text data.

curl --request POST \
  --url 'https://example.api.airstore.io/v1/upload?dir=/folder' \
  --header 'content-type: application/json' \
  --header 'x-airstore-secret-key:  ebba5ece8757438cb3acf9a9ef7ba07a' \
  --data '{
    "name": "new_image_from_base64.png",
    "data": "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iOHlZyCGYAExBAuIIVhADMECYggWEEOwgBiCBcQQLCCGYAExBAuIIVhADMECYggWEEOwgBiCBcQQLCCGYAExBAuIIVhADMECYggWEEOwgBiCBcQQLCCGYAExBAuIIVhADMECYggWEEOwgBiCBcQQLCCGYAExBAuIIVhADMECYggWEEOwgBiCBcQQLCCGYAExBAuIIVhADMECYggWEEOwgBiCBcQQLCCGYAExBAuIIVhADMECYggWEEOwgBiCBcQQLCCGYAExBAuIIVhADMECYggWEEOwgBiCBcQQLCCGYAExBAuIIVhADMECYggWEEOwgBiCBcQQLCCGYAExBAuIIVhADMECYggWEEOwgBiCBcQQLCCGYAExBAuIIVhADMECYggWEEOwgBiCBcQQLCCGYAExBAuIIVhADMECYggWEEOwgBiCBcQQLCCGYAExBAuIIVhADMECYggWEEOwgBiCBcQQLCCGYAExBAuIIVhADMECYggWEEOwgBiCBcQQLCCGYAExBAuIIVhADMECYggWEEOwgBiCBcQQLCCGYAExBAuIIVhADMECYggWEEOwgBiCBcQQLCCGYAExBAuIIVhADMECYggWEEOwgBiCBcQQLCCGYAExBAuIIVhADMECYggWEEOwgBiCBcQQLCCGYAExBAuIIVhADMECYggWEEOwgBiCBcQQLCCGYAExBAuIIVhADMECYggWEEOwgBiCBcQQLCCGYAExBAuIIVhADMECYggWEEOwgBiCBcT4fwvd8vhlstsNAAAAAElFTkSuQmCC",
    "postactions": "decode_base64"
}'
host: "https://example.api.airstore.io" path: "/v1/upload" theme: clouds-midnight method: POST headers: X-Airstore-Secret-Key: ebba5ece8757438cb3acf9a9ef7ba07a Content-type: application/json parameters: dir: /folder body: | { "name": "new_image_from_base64.png", "data": "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iOHlZyCGYAExBAuIIVhADMECYggWEEOwgBiCBcQQLCCGYAExBAuIIVhADMECYggWEEOwgBiCBcQQLCCGYAExBAuIIVhADMECYggWEEOwgBiCBcQQLCCGYAExBAuIIVhADMECYggWEEOwgBiCBcQQLCCGYAExBAuIIVhADMECYggWEEOwgBiCBcQQLCCGYAExBAuIIVhADMECYggWEEOwgBiCBcQQLCCGYAExBAuIIVhADMECYggWEEOwgBiCBcQQLCCGYAExBAuIIVhADMECYggWEEOwgBiCBcQQLCCGYAExBAuIIVhADMECYggWEEOwgBiCBcQQLCCGYAExBAuIIVhADMECYggWEEOwgBiCBcQQLCCGYAExBAuIIVhADMECYggWEEOwgBiCBcQQLCCGYAExBAuIIVhADMECYggWEEOwgBiCBcQQLCCGYAExBAuIIVhADMECYggWEEOwgBiCBcQQLCCGYAExBAuIIVhADMECYggWEEOwgBiCBcQQLCCGYAExBAuIIVhADMECYggWEEOwgBiCBcQQLCCGYAExBAuIIVhADMECYggWEEOwgBiCBcQQLCCGYAExBAuIIVhADMECYggWEEOwgBiCBcQQLCCGYAExBAuIIVhADMECYggWEEOwgBiCBcQQLCCGYAExBAuIIVhADMECYggWEEOwgBiCBcQQLCCGYAExBAuIIVhADMECYggWEEOwgBiCBcQQLCCGYAExBAuIIVhADMECYggWEEOwgBiCBcT4fwvd8vhlstsNAAAAAElFTkSuQmCC", "postactions": "decode_base64" }

Each file has its own metadata (such as tags or date) which can be customized. It is also possible to search using this metadata, even if you have millions of files. This feature is still undocumented. Please, contact us if you are interested.

File upload REST API using the PUT method#

PUT /v1/upload

The PUT method is useful for uploading files bigger than 500MB.

PUT specific parameters#

filename (required) : name.jpg

The filename parameter is required and specific to the PUT method. It specifies the filename in the storage.

Upload a file using the PUT method#

curl --request PUT \
  --url 'https://example.api.airstore.io/v1/upload?dir=/folder&filename=test.jpg' \
  --header 'content-type: application/octet-stream' \
  --header 'x-airstore-secret-key:  ebba5ece8757438cb3acf9a9ef7ba07a' \
  -T /path/to/file

API Response#

Response from the Upload API is returned as JSON object. The 2 cases are :

Success

When a file was properly uploaded, the status property is set to success, and there is a bunch of useful information (such as public file url) in the file object:

{
    "status": "success",
    "file": {
        "size": 3291,
        "meta": {},
        "properties": {},
        "type": "image/png",
        "name": "test.png",
        "uuid": "7f6a624b-03bc-5560-b61d-a81766143375",
        "url_permalink": "https://example.api.airstore.io/v1/get/_/7f6a624b-03bc-5560-b61d-a81766143375/test.png",
        "url_public": "https://example.airstore.io/folder/test.png"
    },
    "info": {
        "company_uuid": "7062f363-39f8-423d-b150-6de2c89b8027",
        "files_count": 0,
        "trace": "6ASFDRYaelastic604-scal3fl3x8n",
        "uploaded_files": 1,
        "version": "c3005f8",
        "project_uuid": "fd2e3b67-d412-4e2c-b234-dbf8a48f279e",
        "input_info": {
            "name": "new_image_from_base64.png",
            "data": "iVBORw0KGgoAAAANSUhEUgAAAZAAAAGQCAIAAAAP3aGbAAAAA3...hADMECYggWEEOwgBiCBcT4fwvd8vhlstsNAAAAAElFTkSuQmCC",
            "postactions": "decode_base64"
        }
    }
}

Error

Error responses are composed of an error code, a message (msg) and a hint that might point to different solutions.

{
    "status": "error",
    "code": "ERR_UNPROCESSABLE_ENTITY",
    "msg": "Sorry, we could not process the upload because the input does not look correct! Please check the parsing and try again",
    "hint": "Please check the docs: http://docs.airstore.io/"
}

{
    "status": "error",
    "code": "ERR_UNAUTHORIZED",
    "msg": "Invalid secret key",
    "hint": "Provide valid secret key."
}

...