File uploading via the API (Preferred)

File uploading with the API is a 3 step process:

1. Generate the link:

Send a GET request to the presigned URL with the file details:

  • fileName
  • fileSize

This will return a ref ID and a URL for uploading.

Endpoint: http://YOURSITE/projects/api/v1/pendingfiles/presignedurl.json?fileName=test.txt&fileSize=1024


  "ref": "tf_...",
  "url": ""

2. Upload the file:

Send a PUT request to the link above, with the ‘file’ in the body of the request. Along with this, you need the following hearders:

  • X-Amz-Acl: public-read
  • Content-Length: file-size
  • Host: host-from-the-generate-link

Coding Example

curl -v -i -X PUT --data-binary "@test.txt" --header "X-Amz-Acl: public-read" --header "Host:" --header "Content-Length: 1024"

If successful you should get a 200 response.

3. Finalize the file upload:

You can now use the ref ID from the first GET request to attach it to an object eg. task.

To attach to a task: PUT: /tasks/ID.json

  "todo-item": {
    "pendingFileAttachments": "tf_..."

Step 3 here follows this step.


If you have any feedback or suggestions, feel free to contact us at