Uploading files

Multiple file uploads

To understand how multiple file upload works, first read Send a job uploading a file.

What the API normally does when you upload a file is:

  • Store the file
  • Start processing the job with that file
  • Stop accepting more file uploads

To upload multiple files to a job, create a job as in the first step of Send a job uploading a file, but this time add the process key.

By setting the process field to false, the API will not process the job, even if it receives a file upload.

This way, you can repeat the POST request with different file contents as explained in Send a job uploading a file.

Processing jobs

At this point, all the files that you wanted to upload should be uploaded. Now, the API needs to know that the job can be processed.

This is done by sending a PATCH request to the job endpoint. Send the process key as false and specifying your job id in the url. Consider the following example.

After the request is sent, you will get a response similar to the following. Note the status processing.

{
    "id": "9f7cc24d-239a-432f-aa6e-1a98aa24a34e",
    "token": "xxxxxxx119c487e6f53df33c8d653aa0",
    "type": "job",
    "status": {
        "code": "processing",
        "info": "The file is currently being processed."
    },
    "errors": [],
    "process": true,
    ... extra information ...
    "server": "https://www5.api2convert.com/v2/dl/web2",
    "spent": 0,
    "created_at": "2017-08-16T17:06:11",
    "modified_at": "2017-08-16T17:09:58"
}

Chunked Uploads

It is possible to do a chunked upload to our servers. To do this, simply post the chunks to the same URL as described in Send a job uploading a file.

To be able to do the upload in chunks, you have to send the following headers with every chunk:

  • x-oc-upload-uuid
    • Put your unique, randomly generated identifier here. This can be any string, even a numeric index, but it has to be unique across the job.
  • Content-Range
    • The content range of the current chunk in the following format: start-end/total
      • Example: Content-Range:bytes 0-1048575/5230812 for the first 1MB chunk of an approximately 5MB file