Shell HTTP JavaScript Ruby Python PHP Java Go

FreeConvert.com API v1.0.0

Scroll down for code samples, example requests and responses. Select a language for code samples from the tabs above or the mobile navigation menu.

Welcome to FreeConvert.com API V1! On this documentation you will find how to send API requests to convert, merge, or optimize your files using FreeConvert.com.

Our API uses API keys to authenticate requests. You can view and manage your API keys in the User Dashboard.

Your API keys can be used to consume your account credits, so be sure to keep them secure! Do not share your secret API keys in publicly accessible areas such as GitHub, client-side code, and so forth.

All API requests must be made over HTTPS. Calls made over plain HTTP will fail. API requests without authentication will also fail.

Base URLs:

Email: Support

Authentication

User

Current User

Code samples

# You can also use wget
curl -X GET https://api.freeconvert.com/v1/account/me \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

GET https://api.freeconvert.com/v1/account/me HTTP/1.1
Host: api.freeconvert.com
Accept: application/json


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://api.freeconvert.com/v1/account/me',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get 'https://api.freeconvert.com/v1/account/me',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('https://api.freeconvert.com/v1/account/me', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => 'application/json',
    'Authorization' => 'Bearer {access-token}',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','https://api.freeconvert.com/v1/account/me', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("https://api.freeconvert.com/v1/account/me");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://api.freeconvert.com/v1/account/me", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /account/me

Show the current user information

Example responses

200 Response

{
  "id": "string",
  "email": "string",
  "created_at": "string",
  "credit": 0
}

Responses

Status Meaning Description Schema
200 OK Successful user lookup, returns a list of attributes for the user in the response body. Inline

Jobs

List jobs

Code samples

# You can also use wget
curl -X GET https://api.freeconvert.com/v1/process/jobs \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

GET https://api.freeconvert.com/v1/process/jobs HTTP/1.1
Host: api.freeconvert.com
Accept: application/json


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://api.freeconvert.com/v1/process/jobs',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get 'https://api.freeconvert.com/v1/process/jobs',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('https://api.freeconvert.com/v1/process/jobs', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => 'application/json',
    'Authorization' => 'Bearer {access-token}',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','https://api.freeconvert.com/v1/process/jobs', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("https://api.freeconvert.com/v1/process/jobs");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://api.freeconvert.com/v1/process/jobs", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /process/jobs

Get a list of all jobs for the current user

Parameters

Name In Type Required Description
status query string false List jobs matching the specified status. Possible statuses are [created, processing, completed, failed]
tag query string false Show a list of jobs containing the specified tag.
include query string false include tasks of each job in the job list.
per_page query integer false Number of jobs per page, defaults to 50. Limited at 200.
page query integer false If the list of jobs include multiple pages, this specify which page to show.

Example responses

200 Response

{
  "docs": [
    {
      "id": "5ff3e22059136b0023324b1f",
      "tag": "my-job",
      "createdAt": "2016-08-29T09:12:33.001Z",
      "updatedAt": "2016-08-29T09:12:33.001Z",
      "endedAt": "2016-08-29T09:12:33.001Z",
      "status": "created",
      "tasks": [
        {
          "name": "import-1",
          "operation": "import/upload",
          "status": "processing",
          "ignoreError": false,
          "endedAt": null,
          "job": "5ff3e22059136b0023324b1f",
          "payload": {
            "redirect": "https://example.com"
          },
          "createdAt": "2021-01-05T03:50:56.067Z",
          "updatedAt": "2021-01-05T03:50:56.115Z",
          "server": "local.freeconvert.com",
          "result": {
            "form": {
              "url": "https://local.freeconvert.com/api/upload/5ff3e7337e69c10060706883",
              "parameters": {
                "expires": 1609834355208,
                "size_limit": 5368709120,
                "max_file_count": 1,
                "signature": "46d0fab9c3534661"
              }
            }
          },
          "id": "5ff3e22059136b0023324b20"
        },
        {
          "name": "convert-1",
          "operation": "convert",
          "status": "processing",
          "ignoreError": false,
          "endedAt": null,
          "job": "5ff3e22059136b0023324b1f",
          "payload": {
            "input_format": "jpg",
            "output_format": "png",
            "options": {
              "quality": 75
            }
          },
          "dependsOn": [
            "5ff3e22059136b0023324b20"
          ],
          "createdAt": "2021-01-05T03:50:56.067Z",
          "updatedAt": "2021-01-05T03:50:56.115Z",
          "server": "local.freeconvert.com",
          "id": "5ff3e22059136b0023324b20"
        },
        {
          "name": "export-1",
          "operation": "export/url",
          "status": "processing",
          "ignoreError": false,
          "endedAt": null,
          "job": "5ff3e22059136b0023324b1f",
          "payload": {
            "filename": "some.pdf",
            "archive_multiple_files": true
          },
          "dependsOn": [
            "5fcb12f03f51983f4074dfb3",
            "5fcb12f03f51983f4074dfb4"
          ],
          "createdAt": "2021-01-05T03:50:56.067Z",
          "updatedAt": "2021-01-05T03:50:56.115Z",
          "server": "local.freeconvert.com",
          "id": "5ff3e22059136b0023324b20"
        }
      ]
    }
  ],
  "totalDocs": 150,
  "limit": 10,
  "totalPages": 15,
  "page": 1,
  "pagingCounter": 16,
  "hasPrevPage": false,
  "hasNextPage": true,
  "prevPage": null,
  "nextPage": 2
}

Responses

Status Meaning Description Schema
200 OK Successful jobs lookup, returns a list of jobs in the response body. You can get more details on the response format by referring to Show a Job endpoint Inline
400 Bad Request Invalid input parameters. None
401 Unauthorized Access token is missing or invalid None
429 Too Many Requests Too many requests. None

Create jobs

Code samples

# You can also use wget
curl -X POST https://api.freeconvert.com/v1/process/jobs \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

POST https://api.freeconvert.com/v1/process/jobs HTTP/1.1
Host: api.freeconvert.com
Content-Type: application/json
Accept: application/json

const inputBody = '{
  "tag": "custom-tag",
  "tasks": {
    "my-upload-1": {
      "operation": "import/upload"
    },
    "convert-task-1": {
      "operation": "convert",
      "input": "my-upload-1",
      "output_format": "png"
    },
    "export-task-1": {
      "operation": "export/url",
      "input": "convert-task-1",
      "filename": "output-file.png"
    }
  }
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://api.freeconvert.com/v1/process/jobs',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post 'https://api.freeconvert.com/v1/process/jobs',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('https://api.freeconvert.com/v1/process/jobs', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Content-Type' => 'application/json',
    'Accept' => 'application/json',
    'Authorization' => 'Bearer {access-token}',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','https://api.freeconvert.com/v1/process/jobs', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("https://api.freeconvert.com/v1/process/jobs");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://api.freeconvert.com/v1/process/jobs", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /process/jobs

Creates a new job along with all of its tasks. A job cretaion request must include at least one task.

Body parameter

{
  "tag": "custom-tag",
  "tasks": {
    "my-upload-1": {
      "operation": "import/upload"
    },
    "convert-task-1": {
      "operation": "convert",
      "input": "my-upload-1",
      "output_format": "png"
    },
    "export-task-1": {
      "operation": "export/url",
      "input": "convert-task-1",
      "filename": "output-file.png"
    }
  }
}

Parameters

Name In Type Required Description
body body object false EXAMPLE REQUEST
» tag body string false An abitrary string which has no effect. It can be used to identify a job with an ID in your system/application.
» tasks body object true A job consists of one or more tasks. For example, the example shown inludes an import, conversion, and a export task. Task names should only contain alphanumerals, dash (-), and underscore (_).
»» operation body string true Specify the endpoint for the given task. For example, import/upload, convert, export/s3...etc.
»» input body any false Specify the names of the input tasks for the task. For example, in a convert task, you can enter the import task's name to convert that specific imported file. You can also enter multiple input task names in an array.
»»» anonymous body string false none
»»» anonymous body [string] false none
»» ignore_error body boolean false By default, the job will fail if one of the tasks within it fails. You can ignore failure of specific tasks with this property.
»» Other body string false List of available properties for a task depending on the task's operation.

Example responses

201 Response

{
  "id": "5ff3e22059136b0023324b1f",
  "tag": "my-job",
  "createdAt": "2016-08-29T09:12:33.001Z",
  "updatedAt": "2016-08-29T09:12:33.001Z",
  "endedAt": "2016-08-29T09:12:33.001Z",
  "status": "created",
  "tasks": [
    {
      "name": "import-1",
      "operation": "import/upload",
      "status": "processing",
      "ignoreError": false,
      "endedAt": null,
      "job": "5ff3e22059136b0023324b1f",
      "payload": {
        "redirect": "https://example.com"
      },
      "createdAt": "2021-01-05T03:50:56.067Z",
      "updatedAt": "2021-01-05T03:50:56.115Z",
      "server": "local.freeconvert.com",
      "result": {
        "form": {
          "url": "https://local.freeconvert.com/api/upload/5ff3e7337e69c10060706883",
          "parameters": {
            "expires": 1609834355208,
            "size_limit": 5368709120,
            "max_file_count": 1,
            "signature": "46d0fab9c3534661"
          }
        }
      },
      "id": "5ff3e22059136b0023324b20"
    },
    {
      "name": "convert-1",
      "operation": "convert",
      "status": "processing",
      "ignoreError": false,
      "endedAt": null,
      "job": "5ff3e22059136b0023324b1f",
      "payload": {
        "input_format": "jpg",
        "output_format": "png",
        "options": {
          "quality": 75
        }
      },
      "dependsOn": [
        "5ff3e22059136b0023324b20"
      ],
      "createdAt": "2021-01-05T03:50:56.067Z",
      "updatedAt": "2021-01-05T03:50:56.115Z",
      "server": "local.freeconvert.com",
      "id": "5ff3e22059136b0023324b20"
    },
    {
      "name": "export-1",
      "operation": "export/url",
      "status": "processing",
      "ignoreError": false,
      "endedAt": null,
      "job": "5ff3e22059136b0023324b1f",
      "payload": {
        "filename": "some.pdf",
        "archive_multiple_files": true
      },
      "dependsOn": [
        "5fcb12f03f51983f4074dfb3",
        "5fcb12f03f51983f4074dfb4"
      ],
      "createdAt": "2021-01-05T03:50:56.067Z",
      "updatedAt": "2021-01-05T03:50:56.115Z",
      "server": "local.freeconvert.com",
      "id": "5ff3e22059136b0023324b20"
    }
  ]
}

Responses

Status Meaning Description Schema
201 Created Job succesfully created. Returns details of the created job as per the Show jobs endpoint. Job
400 Bad Request invalid input, object invalid None
429 Too Many Requests Too many requests. None

Show a Job

Code samples

# You can also use wget
curl -X GET https://api.freeconvert.com/v1/process/jobs/{jobId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

GET https://api.freeconvert.com/v1/process/jobs/{jobId} HTTP/1.1
Host: api.freeconvert.com
Accept: application/json


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://api.freeconvert.com/v1/process/jobs/{jobId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get 'https://api.freeconvert.com/v1/process/jobs/{jobId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('https://api.freeconvert.com/v1/process/jobs/{jobId}', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => 'application/json',
    'Authorization' => 'Bearer {access-token}',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','https://api.freeconvert.com/v1/process/jobs/{jobId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("https://api.freeconvert.com/v1/process/jobs/{jobId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://api.freeconvert.com/v1/process/jobs/{jobId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /process/jobs/{jobId}

Show details of a job using its job ID.

Parameters

Name In Type Required Description
jobId path string(ObjectID) true ID of the job to show

Example responses

200 Response

{
  "id": "5ff3e22059136b0023324b1f",
  "tag": "my-job",
  "createdAt": "2016-08-29T09:12:33.001Z",
  "updatedAt": "2016-08-29T09:12:33.001Z",
  "endedAt": "2016-08-29T09:12:33.001Z",
  "status": "created",
  "tasks": [
    {
      "name": "import-1",
      "operation": "import/upload",
      "status": "processing",
      "ignoreError": false,
      "endedAt": null,
      "job": "5ff3e22059136b0023324b1f",
      "payload": {
        "redirect": "https://example.com"
      },
      "createdAt": "2021-01-05T03:50:56.067Z",
      "updatedAt": "2021-01-05T03:50:56.115Z",
      "server": "local.freeconvert.com",
      "result": {
        "form": {
          "url": "https://local.freeconvert.com/api/upload/5ff3e7337e69c10060706883",
          "parameters": {
            "expires": 1609834355208,
            "size_limit": 5368709120,
            "max_file_count": 1,
            "signature": "46d0fab9c3534661"
          }
        }
      },
      "id": "5ff3e22059136b0023324b20"
    },
    {
      "name": "convert-1",
      "operation": "convert",
      "status": "processing",
      "ignoreError": false,
      "endedAt": null,
      "job": "5ff3e22059136b0023324b1f",
      "payload": {
        "input_format": "jpg",
        "output_format": "png",
        "options": {
          "quality": 75
        }
      },
      "dependsOn": [
        "5ff3e22059136b0023324b20"
      ],
      "createdAt": "2021-01-05T03:50:56.067Z",
      "updatedAt": "2021-01-05T03:50:56.115Z",
      "server": "local.freeconvert.com",
      "id": "5ff3e22059136b0023324b20"
    },
    {
      "name": "export-1",
      "operation": "export/url",
      "status": "processing",
      "ignoreError": false,
      "endedAt": null,
      "job": "5ff3e22059136b0023324b1f",
      "payload": {
        "filename": "some.pdf",
        "archive_multiple_files": true
      },
      "dependsOn": [
        "5fcb12f03f51983f4074dfb3",
        "5fcb12f03f51983f4074dfb4"
      ],
      "createdAt": "2021-01-05T03:50:56.067Z",
      "updatedAt": "2021-01-05T03:50:56.115Z",
      "server": "local.freeconvert.com",
      "id": "5ff3e22059136b0023324b20"
    }
  ]
}

Responses

Status Meaning Description Schema
200 OK Successful lookup. Job details returned in the response body. Job
400 Bad Request Bad input parameter None
429 Too Many Requests Too many requests. None

Delete a job

Code samples

# You can also use wget
curl -X DELETE https://api.freeconvert.com/v1/process/jobs/{jobId} \
  -H 'Authorization: Bearer {access-token}'

DELETE https://api.freeconvert.com/v1/process/jobs/{jobId} HTTP/1.1
Host: api.freeconvert.com


const headers = {
  'Authorization':'Bearer {access-token}'
};

fetch('https://api.freeconvert.com/v1/process/jobs/{jobId}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete 'https://api.freeconvert.com/v1/process/jobs/{jobId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('https://api.freeconvert.com/v1/process/jobs/{jobId}', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Authorization' => 'Bearer {access-token}',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('DELETE','https://api.freeconvert.com/v1/process/jobs/{jobId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("https://api.freeconvert.com/v1/process/jobs/{jobId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("DELETE");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "https://api.freeconvert.com/v1/process/jobs/{jobId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

DELETE /process/jobs/{jobId}

Deleting a job would delete all the tasks and files of that job.

All files that belongs to a task within a job are automatically deleted 4 hours after task creation. Job entries are deleted after 24 hours of creation.

Parameters

Name In Type Required Description
jobId path string(ObjectID) true ID of the job to delete.

Responses

Status Meaning Description Schema
204 No Content Job succesfully deleted (empty response body). None
400 Bad Request Bad input parameter. None
429 Too Many Requests Too many requests. None

Wait for job

Code samples

# You can also use wget
curl -X GET https://api.freeconvert.com/v1/process/jobs/{jobId}/wait \
  -H 'Authorization: Bearer {access-token}'

GET https://api.freeconvert.com/v1/process/jobs/{jobId}/wait HTTP/1.1
Host: api.freeconvert.com


const headers = {
  'Authorization':'Bearer {access-token}'
};

fetch('https://api.freeconvert.com/v1/process/jobs/{jobId}/wait',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get 'https://api.freeconvert.com/v1/process/jobs/{jobId}/wait',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('https://api.freeconvert.com/v1/process/jobs/{jobId}/wait', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Authorization' => 'Bearer {access-token}',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','https://api.freeconvert.com/v1/process/jobs/{jobId}/wait', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("https://api.freeconvert.com/v1/process/jobs/{jobId}/wait");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://api.freeconvert.com/v1/process/jobs/{jobId}/wait", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /process/jobs/{jobId}/wait

Block the request until the job status is success or failed.

This method is not recommended since your system may timeout the request for jobs that takes a long time to complete (i.e. large video conversions). Please note that we may also queue your jobs when our systems are busy.

Instead, use webhooks to receive notification of job completion or error.

Parameters

Name In Type Required Description
jobId path string(ObjectID) true ID of job to wait for

Responses

Status Meaning Description Schema
200 OK Returns the completed or failed job details. None
400 Bad Request bad input parameter None
429 Too Many Requests Too many requests. None

Tasks

List tasks

Code samples

# You can also use wget
curl -X GET https://api.freeconvert.com/v1/process/tasks \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

GET https://api.freeconvert.com/v1/process/tasks HTTP/1.1
Host: api.freeconvert.com
Accept: application/json


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://api.freeconvert.com/v1/process/tasks',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get 'https://api.freeconvert.com/v1/process/tasks',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('https://api.freeconvert.com/v1/process/tasks', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => 'application/json',
    'Authorization' => 'Bearer {access-token}',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','https://api.freeconvert.com/v1/process/tasks', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("https://api.freeconvert.com/v1/process/tasks");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://api.freeconvert.com/v1/process/tasks", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /process/tasks

Get a list of all tasks for the current user with their payload, results, and status.

Parameters

Name In Type Required Description
status query string false List tasks matching the specified status [created, processing, completed, canceled, failed, deleted]
operation query string false FIlter the list to only show tasks with a given operation (for example, import/url, convert...etc.)
job query string false Show a list of tasks for the specified job id.
per_page query integer false Number of tasks per page, defaults to 50. Limited at 200.
page query integer false If the list of tasks include multiple pages, this specify which page to show.

Example responses

200 Response

{
  "docs": [
    {
      "name": "import-1",
      "operation": "import/upload",
      "status": "processing",
      "ignoreError": false,
      "endedAt": null,
      "job": "5ff3e22059136b0023324b1f",
      "payload": {
        "redirect": "https://example.com"
      },
      "createdAt": "2021-01-05T03:50:56.067Z",
      "updatedAt": "2021-01-05T03:50:56.115Z",
      "server": "local.freeconvert.com",
      "result": {
        "form": {
          "url": "https://local.freeconvert.com/api/upload/5ff3e7337e69c10060706883",
          "parameters": {
            "expires": 1609834355208,
            "size_limit": 5368709120,
            "max_file_count": 1,
            "signature": "46d0fab9c3534661"
          }
        }
      },
      "id": "5ff3e22059136b0023324b20"
    },
    {
      "name": "convert-1",
      "operation": "convert",
      "status": "processing",
      "ignoreError": false,
      "endedAt": null,
      "job": "5ff3e22059136b0023324b1f",
      "payload": {
        "input_format": "jpg",
        "output_format": "png",
        "options": {
          "quality": 75
        }
      },
      "dependsOn": [
        "5ff3e22059136b0023324b20"
      ],
      "createdAt": "2021-01-05T03:50:56.067Z",
      "updatedAt": "2021-01-05T03:50:56.115Z",
      "server": "local.freeconvert.com",
      "id": "5ff3e22059136b0023324b20"
    },
    {
      "name": "export-1",
      "operation": "export/url",
      "status": "processing",
      "ignoreError": false,
      "endedAt": null,
      "job": "5ff3e22059136b0023324b1f",
      "payload": {
        "filename": "some.pdf",
        "archive_multiple_files": true
      },
      "dependsOn": [
        "5fcb12f03f51983f4074dfb3",
        "5fcb12f03f51983f4074dfb4"
      ],
      "createdAt": "2021-01-05T03:50:56.067Z",
      "updatedAt": "2021-01-05T03:50:56.115Z",
      "server": "local.freeconvert.com",
      "id": "5ff3e22059136b0023324b20"
    }
  ],
  "totalDocs": 150,
  "limit": 10,
  "totalPages": 15,
  "page": 1,
  "pagingCounter": 16,
  "hasPrevPage": false,
  "hasNextPage": true,
  "prevPage": null,
  "nextPage": 2
}

Responses

Status Meaning Description Schema
200 OK Successful tasks lookup, returns a list of tasks in the response body. Inline
400 Bad Request Invalid input parameters. None
429 Too Many Requests Too many requests. None

Show a Task

Code samples

# You can also use wget
curl -X GET https://api.freeconvert.com/v1/process/tasks/{taskId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

GET https://api.freeconvert.com/v1/process/tasks/{taskId} HTTP/1.1
Host: api.freeconvert.com
Accept: application/json


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://api.freeconvert.com/v1/process/tasks/{taskId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get 'https://api.freeconvert.com/v1/process/tasks/{taskId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('https://api.freeconvert.com/v1/process/tasks/{taskId}', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => 'application/json',
    'Authorization' => 'Bearer {access-token}',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','https://api.freeconvert.com/v1/process/tasks/{taskId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("https://api.freeconvert.com/v1/process/tasks/{taskId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://api.freeconvert.com/v1/process/tasks/{taskId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /process/tasks/{taskId}

Show details of a task using its task Id.

Parameters

Name In Type Required Description
taskId path string(ObjectID) true ID of the task to show.
include query string false Use this option to include payload, dependsOn, and job details in the result. You can seperate multiple inlude values with a comma.

Example responses

200 Response

{
  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  "operation": "convert",
  "status": "completed",
  "payload": {
    "options": {
      "quality": 75
    }
  },
  "ignoreError": false,
  "job": "4bbaedb0-902b-4b27-8218-8f40d3470a54",
  "result": {
    "url": "http://example.com/output.ext"
  },
  "endedAt": "2016-08-29T09:12:33.001Z",
  "dependsOn": [
    {
      "name": "import-1",
      "operation": "import/upload",
      "status": "processing",
      "ignoreError": false,
      "endedAt": null,
      "job": "5ff3e22059136b0023324b1f",
      "payload": {
        "redirect": "https://example.com"
      },
      "createdAt": "2021-01-05T03:50:56.067Z",
      "updatedAt": "2021-01-05T03:50:56.115Z",
      "server": "local.freeconvert.com",
      "id": "5ff3e22059136b0023324b20"
    }
  ],
  "conversionMinutes": 1,
  "createdAt": "2016-08-29T09:12:33.001Z",
  "updatedAt": "2016-08-29T09:12:33.001Z"
}

Responses

Status Meaning Description Schema
200 OK Successful lookup. Task details are returned in the response body (as per Show a Task endpoint). Task
400 Bad Request bad input parameter None
429 Too Many Requests Too many requests. None

Delete a task

Code samples

# You can also use wget
curl -X DELETE https://api.freeconvert.com/v1/process/tasks/{taskId} \
  -H 'Authorization: Bearer {access-token}'

DELETE https://api.freeconvert.com/v1/process/tasks/{taskId} HTTP/1.1
Host: api.freeconvert.com


const headers = {
  'Authorization':'Bearer {access-token}'
};

fetch('https://api.freeconvert.com/v1/process/tasks/{taskId}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete 'https://api.freeconvert.com/v1/process/tasks/{taskId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('https://api.freeconvert.com/v1/process/tasks/{taskId}', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Authorization' => 'Bearer {access-token}',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('DELETE','https://api.freeconvert.com/v1/process/tasks/{taskId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("https://api.freeconvert.com/v1/process/tasks/{taskId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("DELETE");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "https://api.freeconvert.com/v1/process/tasks/{taskId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

DELETE /process/tasks/{taskId}

Deleting a task also deletes its files.

All tasks are automatically removed after 24 hours of creation. Files from a task are deleted 4 hours after the task creation.

Parameters

Name In Type Required Description
taskId path string(ObjectID) true ID of the task to delete.

Responses

Status Meaning Description Schema
204 No Content Task successfully deleted (empty response body). None
400 Bad Request Bad input parameter. None
429 Too Many Requests Too many requests. None

Wait for task

Code samples

# You can also use wget
curl -X GET https://api.freeconvert.com/v1/process/tasks/{taskId}/wait \
  -H 'Authorization: Bearer {access-token}'

GET https://api.freeconvert.com/v1/process/tasks/{taskId}/wait HTTP/1.1
Host: api.freeconvert.com


const headers = {
  'Authorization':'Bearer {access-token}'
};

fetch('https://api.freeconvert.com/v1/process/tasks/{taskId}/wait',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get 'https://api.freeconvert.com/v1/process/tasks/{taskId}/wait',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('https://api.freeconvert.com/v1/process/tasks/{taskId}/wait', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Authorization' => 'Bearer {access-token}',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','https://api.freeconvert.com/v1/process/tasks/{taskId}/wait', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("https://api.freeconvert.com/v1/process/tasks/{taskId}/wait");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://api.freeconvert.com/v1/process/tasks/{taskId}/wait", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /process/tasks/{taskId}/wait

Block the request until the task status is success or failed.

This method is not recommended since your system may timeout the request for tasks that takes a long time to complete (i.e. large video conversions). We may also queue your tasks when our systems are busy.

Instead, use webhooks to receive notification of task completion or error.

Parameters

Name In Type Required Description
taskId path string(ObjectID) true ID of task to wait for

Responses

Status Meaning Description Schema
200 OK Returns the completed or failed task details (status, operation...etc) None
400 Bad Request Bad input parameter None
429 Too Many Requests Too many requests. None

Cancel a task

Code samples

# You can also use wget
curl -X POST https://api.freeconvert.com/v1/process/tasks/{taskId}/cancel \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

POST https://api.freeconvert.com/v1/process/tasks/{taskId}/cancel HTTP/1.1
Host: api.freeconvert.com
Accept: application/json


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://api.freeconvert.com/v1/process/tasks/{taskId}/cancel',
{
  method: 'POST',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post 'https://api.freeconvert.com/v1/process/tasks/{taskId}/cancel',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('https://api.freeconvert.com/v1/process/tasks/{taskId}/cancel', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => 'application/json',
    'Authorization' => 'Bearer {access-token}',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','https://api.freeconvert.com/v1/process/tasks/{taskId}/cancel', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("https://api.freeconvert.com/v1/process/tasks/{taskId}/cancel");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://api.freeconvert.com/v1/process/tasks/{taskId}/cancel", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /process/tasks/{taskId}/cancel

Cancel a task that has a status of created or processing. If you cancel a task, all tasks that depends on it AND has ignoreError set to false will also fail.

Parameters

Name In Type Required Description
taskId path string(ObjectID) true ID of task to cancel

Example responses

200 Response

{
  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  "operation": "convert",
  "status": "completed",
  "payload": {
    "options": {
      "quality": 75
    }
  },
  "ignoreError": false,
  "job": "4bbaedb0-902b-4b27-8218-8f40d3470a54",
  "result": {
    "url": "http://example.com/output.ext"
  },
  "endedAt": "2016-08-29T09:12:33.001Z",
  "dependsOn": [
    {
      "name": "import-1",
      "operation": "import/upload",
      "status": "processing",
      "ignoreError": false,
      "endedAt": null,
      "job": "5ff3e22059136b0023324b1f",
      "payload": {
        "redirect": "https://example.com"
      },
      "createdAt": "2021-01-05T03:50:56.067Z",
      "updatedAt": "2021-01-05T03:50:56.115Z",
      "server": "local.freeconvert.com",
      "id": "5ff3e22059136b0023324b20"
    }
  ],
  "conversionMinutes": 1,
  "createdAt": "2016-08-29T09:12:33.001Z",
  "updatedAt": "2016-08-29T09:12:33.001Z"
}

Responses

Status Meaning Description Schema
200 OK Returns the updated task details (status, operation...etc) Task
400 Bad Request Bad input parameter None
429 Too Many Requests Too many requests. None

List operations

Code samples

# You can also use wget
curl -X GET https://api.freeconvert.com/v1/query/view/options?operation=string&input_format=string \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

GET https://api.freeconvert.com/v1/query/view/options?operation=string&input_format=string HTTP/1.1
Host: api.freeconvert.com
Accept: application/json


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://api.freeconvert.com/v1/query/view/options?operation=string&input_format=string',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get 'https://api.freeconvert.com/v1/query/view/options',
  params: {
  'operation' => 'string',
'input_format' => 'string'
}, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('https://api.freeconvert.com/v1/query/view/options', params={
  'operation': 'string',  'input_format': 'string'
}, headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => 'application/json',
    'Authorization' => 'Bearer {access-token}',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','https://api.freeconvert.com/v1/query/view/options', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("https://api.freeconvert.com/v1/query/view/options?operation=string&input_format=string");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://api.freeconvert.com/v1/query/view/options", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /query/view/options

List all possible operations by extention types

Parameters

Name In Type Required Description
operation query string true type of operation
input_format query string true input extension

Example responses

200 Response

{
  "type": "document",
  "targets": {
    "image": [
      {
        "name": "PNG",
        "slug": "png",
        "ext": "png",
        "type": "image",
        "device": false
      },
      {
        "name": "BMP",
        "slug": "bmp",
        "ext": "bmp",
        "type": "image",
        "device": false
      },
      {
        "name": "WebP",
        "slug": "webp",
        "ext": "webp",
        "type": "image",
        "device": false
      },
      {
        "name": "JPG",
        "slug": "jpg",
        "ext": "jpg",
        "type": "image",
        "device": false
      },
      {
        "name": "SVG",
        "slug": "svg",
        "ext": "svg",
        "type": "image",
        "device": false
      },
      {
        "name": "GIF",
        "slug": "gif",
        "ext": "gif",
        "type": "image",
        "device": false
      },
      {
        "name": "TIFF",
        "slug": "tiff",
        "ext": "tiff",
        "type": "image",
        "device": false
      },
      {
        "name": "EPS",
        "slug": "eps",
        "ext": "eps",
        "type": "image",
        "device": false
      }
    ],
    "document": [
      {
        "name": "DOCX",
        "slug": "docx",
        "ext": "docx",
        "type": "document",
        "device": false
      },
      {
        "name": "DOC",
        "slug": "doc",
        "ext": "doc",
        "type": "document",
        "device": false
      },
      {
        "name": "WORD",
        "slug": "word",
        "ext": "docx",
        "type": "document",
        "device": false
      },
      {
        "name": "HTML",
        "slug": "html",
        "ext": "html",
        "type": "document",
        "device": false
      },
      {
        "name": "ODT",
        "slug": "odt",
        "ext": "odt",
        "type": "document",
        "device": false
      },
      {
        "name": "PS",
        "slug": "ps",
        "ext": "ps",
        "type": "document",
        "device": false
      },
      {
        "name": "RTF",
        "slug": "rtf",
        "ext": "rtf",
        "type": "document",
        "device": false
      },
      {
        "name": "TXT",
        "slug": "txt",
        "ext": "txt",
        "type": "document",
        "device": false
      },
      {
        "name": "PDF",
        "slug": "pdf",
        "ext": "pdf",
        "type": "document",
        "device": false
      }
    ],
    "ebook": [
      {
        "name": "AZW3",
        "slug": "azw3",
        "ext": "azw3",
        "type": "ebook",
        "device": false
      },
      {
        "name": "EPUB",
        "slug": "epub",
        "ext": "epub",
        "type": "ebook",
        "device": false
      },
      {
        "name": "MOBI",
        "slug": "mobi",
        "ext": "mobi",
        "type": "ebook",
        "device": false
      }
    ]
  }
}

Responses

Status Meaning Description Schema
200 OK successfully get list of possible operation None

Import Files

Upload

Code samples

# You can also use wget
curl -X POST https://api.freeconvert.com/v1/process/import/upload \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

POST https://api.freeconvert.com/v1/process/import/upload HTTP/1.1
Host: api.freeconvert.com
Content-Type: application/json
Accept: application/json

const inputBody = '{
  "redirect": "https://example.com"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://api.freeconvert.com/v1/process/import/upload',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post 'https://api.freeconvert.com/v1/process/import/upload',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('https://api.freeconvert.com/v1/process/import/upload', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Content-Type' => 'application/json',
    'Accept' => 'application/json',
    'Authorization' => 'Bearer {access-token}',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','https://api.freeconvert.com/v1/process/import/upload', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("https://api.freeconvert.com/v1/process/import/upload");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://api.freeconvert.com/v1/process/import/upload", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /process/import/upload

Creates an upload task to submit one file to FreeConvert.com. You can also use this method to directly send your user's files to FreeConvert without storing them on your application.

For example, you could use the form object in the result key of the response to allow browser-based file uploading.

Here is an example on how to utilize the url and other post parameters from our response to create a file upload form.

IMPORTANT post parameters are dynamically generated. Do not hardcode them in your application.

IMPORTANT post parameters (both keys and values) are dynamically generated. Do not hardcode them in your application.

Task status change to completed as soon as the upload finishes.

Body parameter

{
  "redirect": "https://example.com"
}

Parameters

Name In Type Required Description
body body object false none
» redirect body string false none

Example responses

201 Response

{
  "status": "processing",
  "ignoreError": false,
  "endedAt": null,
  "job": "5ff3e22059136b0023324b1f",
  "payload": {
    "redirect": "https://example.com"
  },
  "operation": "import/upload",
  "createdAt": "2021-01-05T03:50:56.067Z",
  "updatedAt": "2021-01-05T03:50:56.115Z",
  "server": "local.freeconvert.com",
  "result": {
    "form": {
      "url": "https://local.freeconvert.com/api/upload/5ff3e7337e69c10060706883",
      "parameters": {
        "expires": 1609834355208,
        "size_limit": 5368709120,
        "max_file_count": 1,
        "signature": "46d0fab9c3534661"
      }
    }
  },
  "id": "5ff3e22059136b0023324b20"
}

Responses

Status Meaning Description Schema
201 Created File successfully imported. None
400 Bad Request invalid input, object invalid None

URL

Code samples

# You can also use wget
curl -X POST https://api.freeconvert.com/v1/process/import/url \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

POST https://api.freeconvert.com/v1/process/import/url HTTP/1.1
Host: api.freeconvert.com
Content-Type: application/json
Accept: application/json

const inputBody = '{
  "url": "https://example.com/some.jpg",
  "filename": "some.jpg",
  "header": {
    "options": "data"
  }
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://api.freeconvert.com/v1/process/import/url',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post 'https://api.freeconvert.com/v1/process/import/url',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('https://api.freeconvert.com/v1/process/import/url', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Content-Type' => 'application/json',
    'Accept' => 'application/json',
    'Authorization' => 'Bearer {access-token}',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','https://api.freeconvert.com/v1/process/import/url', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("https://api.freeconvert.com/v1/process/import/url");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://api.freeconvert.com/v1/process/import/url", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /process/import/url

Creates a new task to import a file into FreeConvert from an URL

Body parameter

{
  "url": "https://example.com/some.jpg",
  "filename": "some.jpg",
  "header": {
    "options": "data"
  }
}

Parameters

Name In Type Required Description
body body object false none
» url body string true ==
» filename body string false none
» header body object false none

Example responses

201 Response

{
  "status": "processing",
  "ignoreError": false,
  "endedAt": null,
  "job": "5ff3e22059136b0023324b1f",
  "payload": {
    "url": "https://example.com",
    "filename": "some.jpg",
    "header": {
      "options": "data"
    }
  },
  "operation": "import/url",
  "createdAt": "2021-01-05T03:50:56.067Z",
  "updatedAt": "2021-01-05T03:50:56.115Z",
  "server": "local.freeconvert.com",
  "id": "5ff3e22059136b0023324b20"
}

Responses

Status Meaning Description Schema
201 Created Task succesfully created. Returns details of the created task as per the show tasks None
400 Bad Request invalid input, object invalid None

Convert

Convert task

Code samples

# You can also use wget
curl -X POST https://api.freeconvert.com/v1/process/convert \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

POST https://api.freeconvert.com/v1/process/convert HTTP/1.1
Host: api.freeconvert.com
Content-Type: application/json
Accept: application/json

const inputBody = '{
  "input": "5fcb12f03f51983f4074dfb3",
  "input_format": "jpg",
  "output_format": "png",
  "options": {
    "quality": 75
  }
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://api.freeconvert.com/v1/process/convert',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post 'https://api.freeconvert.com/v1/process/convert',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('https://api.freeconvert.com/v1/process/convert', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Content-Type' => 'application/json',
    'Accept' => 'application/json',
    'Authorization' => 'Bearer {access-token}',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','https://api.freeconvert.com/v1/process/convert', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("https://api.freeconvert.com/v1/process/convert");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://api.freeconvert.com/v1/process/convert", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /process/convert

Creates a task to convert one input file from an input_format to outut_format

Body parameter

{
  "input": "5fcb12f03f51983f4074dfb3",
  "input_format": "jpg",
  "output_format": "png",
  "options": {
    "quality": 75
  }
}

Parameters

Name In Type Required Description
body body object false none
» input body string false none
» input_format body string false none
» output_format body string false none
» options body object false none

Example responses

201 Response

{
  "status": "processing",
  "ignoreError": false,
  "endedAt": null,
  "job": "5ff3e22059136b0023324b1f",
  "payload": {
    "input_format": "jpg",
    "output_format": "png",
    "options": {
      "quality": 75
    }
  },
  "dependsOn": [
    "5ff3e22059136b0023324b20"
  ],
  "operation": "convert",
  "createdAt": "2021-01-05T03:50:56.067Z",
  "updatedAt": "2021-01-05T03:50:56.115Z",
  "server": "local.freeconvert.com",
  "id": "5ff3e22059136b0023324b20"
}

Responses

Status Meaning Description Schema
201 Created == None
400 Bad Request invalid input, object invalid None

Compress

Compress task

Code samples

# You can also use wget
curl -X POST https://api.freeconvert.com/v1/process/compress \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

POST https://api.freeconvert.com/v1/process/compress HTTP/1.1
Host: api.freeconvert.com
Content-Type: application/json
Accept: application/json

const inputBody = '{
  "input": "5fcb12f03f51983f4074dfb3",
  "input_format": "jpg",
  "output_format": "png",
  "options": {
    "quality": 75
  }
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://api.freeconvert.com/v1/process/compress',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post 'https://api.freeconvert.com/v1/process/compress',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('https://api.freeconvert.com/v1/process/compress', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Content-Type' => 'application/json',
    'Accept' => 'application/json',
    'Authorization' => 'Bearer {access-token}',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','https://api.freeconvert.com/v1/process/compress', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("https://api.freeconvert.com/v1/process/compress");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://api.freeconvert.com/v1/process/compress", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /process/compress

Creates a task to compress one input file

Body parameter

{
  "input": "5fcb12f03f51983f4074dfb3",
  "input_format": "jpg",
  "output_format": "png",
  "options": {
    "quality": 75
  }
}

Parameters

Name In Type Required Description
body body object false none
» input body string false none
» input_format body string false none
» filename body string false none
» options body object false none

Example responses

201 Response

{
  "status": "processing",
  "ignoreError": false,
  "endedAt": null,
  "job": "5ff3e22059136b0023324b1f",
  "payload": {
    "input_format": "pdf",
    "filename": "sample.pdf",
    "options": {
      "pdf_compression_level": "strong",
      "pdf_convert_to_gray": true
    }
  },
  "dependsOn": [
    "5ff3e22059136b0023324b20"
  ],
  "operation": "compress",
  "createdAt": "2021-01-05T03:50:56.067Z",
  "updatedAt": "2021-01-05T03:50:56.115Z",
  "server": "local.freeconvert.com",
  "id": "5ff3e22059136b0023324b20"
}

Responses

Status Meaning Description Schema
201 Created == None
400 Bad Request invalid input, object invalid None

Merge

Merge task

Code samples

# You can also use wget
curl -X POST https://api.freeconvert.com/v1/process/merge \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

POST https://api.freeconvert.com/v1/process/merge HTTP/1.1
Host: api.freeconvert.com
Content-Type: application/json
Accept: application/json

const inputBody = '{
  "input": [
    "5fcb12f03f51983f4074dfb3",
    "5fcb12f03f51983f4074dfb4"
  ],
  "output_format": "pdf",
  "filename": "some.pdf",
  "options": {
    "option_key": "option_value"
  }
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://api.freeconvert.com/v1/process/merge',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post 'https://api.freeconvert.com/v1/process/merge',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('https://api.freeconvert.com/v1/process/merge', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Content-Type' => 'application/json',
    'Accept' => 'application/json',
    'Authorization' => 'Bearer {access-token}',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','https://api.freeconvert.com/v1/process/merge', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("https://api.freeconvert.com/v1/process/merge");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://api.freeconvert.com/v1/process/merge", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /process/merge

Use this endpoint to merge two or more files. For example, you can convert multiple JPG or PNG files to a single PDF or GIF file.

Body parameter

{
  "input": [
    "5fcb12f03f51983f4074dfb3",
    "5fcb12f03f51983f4074dfb4"
  ],
  "output_format": "pdf",
  "filename": "some.pdf",
  "options": {
    "option_key": "option_value"
  }
}

Parameters

Name In Type Required Description
body body object false none
» input body [string] false none
» output_format body string false none
» filename body string false none
» options body object false none

Example responses

201 Response

{
  "status": "processing",
  "ignoreError": false,
  "endedAt": null,
  "job": "5ff3e22059136b0023324b1f",
  "payload": {
    "output_format": "pdf",
    "filename": "some.pdf",
    "options": {
      "option_key": "option_value"
    }
  },
  "dependsOn": [
    "5fcb12f03f51983f4074dfb3",
    "5fcb12f03f51983f4074dfb4"
  ],
  "operation": "merge",
  "createdAt": "2021-01-05T03:50:56.067Z",
  "updatedAt": "2021-01-05T03:50:56.115Z",
  "server": "local.freeconvert.com",
  "id": "5ff3e22059136b0023324b20"
}

Responses

Status Meaning Description Schema
201 Created == None
400 Bad Request invalid input, object invalid None

URL Export

URL export task

Code samples

# You can also use wget
curl -X POST https://api.freeconvert.com/v1/process/export/url \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

POST https://api.freeconvert.com/v1/process/export/url HTTP/1.1
Host: api.freeconvert.com
Content-Type: application/json
Accept: application/json

const inputBody = '{
  "input": [
    "5fcb12f03f51983f4074dfb3",
    "5fcb12f03f51983f4074dfb4"
  ],
  "filename": "some.zip",
  "archive_multiple_files": true
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://api.freeconvert.com/v1/process/export/url',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post 'https://api.freeconvert.com/v1/process/export/url',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('https://api.freeconvert.com/v1/process/export/url', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Content-Type' => 'application/json',
    'Accept' => 'application/json',
    'Authorization' => 'Bearer {access-token}',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','https://api.freeconvert.com/v1/process/export/url', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("https://api.freeconvert.com/v1/process/export/url");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://api.freeconvert.com/v1/process/export/url", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /process/export/url

Creates a temporary URL to download the file (Please note that files are automatically deleted 4-hours after the task creation). Files can also be manually deleted by deleting the task.

Body parameter

{
  "input": [
    "5fcb12f03f51983f4074dfb3",
    "5fcb12f03f51983f4074dfb4"
  ],
  "filename": "some.zip",
  "archive_multiple_files": true
}

Parameters

Name In Type Required Description
body body object false none
» input body [string] false The ID of the task to create temporary URLs for. Multiple task IDs can be provided as an array.
» filename body string false none
» archive_multiple_files body boolean false By default multiple files are exported individually, enabling this option will create a single ZIP file URL for all of the exported files.

Example responses

201 Response

{
  "status": "processing",
  "ignoreError": false,
  "endedAt": null,
  "job": "5ff3e22059136b0023324b1f",
  "payload": {
    "filename": "some.pdf",
    "archive_multiple_files": true
  },
  "dependsOn": [
    "5fcb12f03f51983f4074dfb3",
    "5fcb12f03f51983f4074dfb4"
  ],
  "operation": "export/url",
  "createdAt": "2021-01-05T03:50:56.067Z",
  "updatedAt": "2021-01-05T03:50:56.115Z",
  "server": "example.freeconvert.com",
  "id": "5ff3e22059136b0023324b20"
}

Responses

Status Meaning Description Schema
201 Created Returns the newly created task object None
400 Bad Request invalid input, object invalid None

Webhooks

Webhook lets you receive status updates for your jobs and tasks. You can create webhooks using the User Dashboard

Events

event description
job.created Emitted upon creating a new job
job.success Emitted when a job completes successfully.
job.failed Emits when a job has failed.

In all 3 cases, the payload includes the Job. See an example on the right side.

Failing Webhooks

If your webhook endpoint returns a 4XX or 5XX HTTP status code, we will re-try sending the webhook event up to 3 times (in 30-minute intervals. If you have enabled the "Webhook unreachable" notification from your user dashboard, we will also send you an email when a webhook fails.

If the webhook endpoint returns 410 status code, we will automatically disable this webhook. You can always re-enable it manually from the User Dashboard.

Signing Webhooks

For verifying that the webhook is actually coming from FreeConvert.com, you should validate it. When we send a webhook, we cryptographically sign it using a unique signing secret use this key to make sure the webhook is coming from us. You can get this secret by clicking the edit icon next to your webhook.

The FreeConvert-Signature header contains a hash-based message authentication code (HMAC) with SHA-256. Here is a PHP example on how to calculate this signature for validation:

$signature = hash_hmac('sha256', $payload, $signingSecret);

$signingSecret can be found in the user dashboard's webhook settings (Click show on the SECRET column of the webhook). $payload is the full request body (the JSON string) that we sent to your webhook endpoint.

List Webhooks

Code samples

# You can also use wget
curl -X GET https://notification.freeconvert.com/webhooks \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

GET https://notification.freeconvert.com/webhooks HTTP/1.1
Host: api.freeconvert.com
Accept: application/json


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://notification.freeconvert.com/webhooks',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get 'https://notification.freeconvert.com/webhooks',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('https://notification.freeconvert.com/webhooks', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => 'application/json',
    'Authorization' => 'Bearer {access-token}',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','https://notification.freeconvert.com/webhooks', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("https://notification.freeconvert.com/webhooks");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://notification.freeconvert.com/webhooks", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET https://notification.freeconvert.com/webhooks

Lists all webhooks for the user

Parameters

Name In Type Required Description
url query string false List webhooks matching the specified url.
per_page query integer false Number of webhooks per page, defaults to 50. Limited at 200.
page query integer false If the list of webhooks include multiple pages, this specify which page to show.

Example responses

200 Response

{
  "docs": [
    {
      "id": "5ff3e22059136b0023424b20",
      "name": "example-webhook",
      "status": "active",
      "events": [
        "job.created",
        "job.finished"
      ],
      "url": "http://your-domain.com/webhook-url",
      "signingSecret": "XXXXXXXXXXXX",
      "createdAt": "2020-07-17T07:14:56.004Z",
      "updatedAt": "2020-08-29T07:15:23.005Z",
      "lastErrorAt": "2020-07-21T02:16:03.000Z",
      "lastResponseCode": "NETWORK_ERROR",
      "links": {
        "self": "http://api.freeconvert.comhttps://notification.freeconvert.com/webhooks/5ff3e22059136b0023424b20"
      }
    }
  ],
  "totalDocs": 150,
  "limit": 10,
  "totalPages": 15,
  "page": 1,
  "pagingCounter": 16,
  "hasPrevPage": false,
  "hasNextPage": true,
  "prevPage": null,
  "nextPage": 2
}

Responses

Status Meaning Description Schema
200 OK Successful jobs lookup, returns a list of jobs in the response body. You can get more details on the response format by referring to Show a Job endpoint Inline
400 Bad Request Invalid input parameters. None
401 Unauthorized Access token is missing or invalid None
429 Too Many Requests Too many requests. None

Create a Webhook

Code samples

# You can also use wget
curl -X POST https://notification.freeconvert.com/webhooks \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

POST https://notification.freeconvert.com/webhooks HTTP/1.1
Host: api.freeconvert.com
Content-Type: application/json
Accept: application/json

const inputBody = '{
  "url": "string",
  "events": [
    "job.created"
  ]
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://notification.freeconvert.com/webhooks',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post 'https://notification.freeconvert.com/webhooks',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('https://notification.freeconvert.com/webhooks', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Content-Type' => 'application/json',
    'Accept' => 'application/json',
    'Authorization' => 'Bearer {access-token}',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','https://notification.freeconvert.com/webhooks', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("https://notification.freeconvert.com/webhooks");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://notification.freeconvert.com/webhooks", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST https://notification.freeconvert.com/webhooks

Create a webhook to receive task/job updates in your application.

Body parameter

{
  "url": "string",
  "events": [
    "job.created"
  ]
}

Parameters

Name In Type Required Description
body body object false none
» url body string false URL to send notifications to.
» events body [string] false Select notification events to be sent via the webhook.

Example responses

201 Response

{
  "id": "5ff3e22059136b0023424b20",
  "name": "example-webhook",
  "status": "active",
  "events": [
    "job.created",
    "job.finished"
  ],
  "url": "http://your-domain.com/webhook-url",
  "signingSecret": "XXXXXXXXXXXX",
  "createdAt": "2020-07-17T07:14:56.004Z",
  "updatedAt": "2020-08-29T07:15:23.005Z",
  "lastErrorAt": "2020-07-21T02:16:03.000Z",
  "lastResponseCode": "NETWORK_ERROR",
  "links": {
    "self": "http://api.freeconvert.comhttps://notification.freeconvert.com/webhooks/5ff3e22059136b0023424b20"
  }
}

Responses

Status Meaning Description Schema
201 Created Returns the created webhook. Please see example on the right. Webhook
400 Bad Request invalid input, object invalid None
429 Too Many Requests Too many requests. None

Delete a Webhook

Code samples

# You can also use wget
curl -X DELETE https://notification.freeconvert.com/webhooks/{webhookId} \
  -H 'Authorization: Bearer {access-token}'

DELETE https://notification.freeconvert.com/webhooks/{webhookId} HTTP/1.1
Host: api.freeconvert.com


const headers = {
  'Authorization':'Bearer {access-token}'
};

fetch('https://notification.freeconvert.com/webhooks/{webhookId}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete 'https://notification.freeconvert.com/webhooks/{webhookId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('https://notification.freeconvert.com/webhooks/{webhookId}', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Authorization' => 'Bearer {access-token}',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('DELETE','https://notification.freeconvert.com/webhooks/{webhookId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("https://notification.freeconvert.com/webhooks/{webhookId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("DELETE");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "https://notification.freeconvert.com/webhooks/{webhookId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

DELETE https://notification.freeconvert.com/webhooks/{webhookId}

Delete a specific webhook.

Parameters

Name In Type Required Description
webhookId path string(ObjectID) true ID of the webhook to delete.

Responses

Status Meaning Description Schema
204 No Content Webhook succesfully deleted (empty response body). None
400 Bad Request Bad input parameter. None
429 Too Many Requests Too many requests. None

Socket

Code samples

const socket = io("https://notification.freeconvert.com", {
    transports: ['websocket'],
    path: "/socket.io"
    auth: {
      `token`
    }
});
//for subscribe job and task
socket.emit("subscribe", `job.{jobId}`);
socket.emit("subscribe", `task.{taskId}`);

//for unsubscribe job and task
socket.emit("unsubscribe", `job.{jobId}`);
socket.emit("unsubscribe", `task.{taskId}`);

socket.on("task_started", (data) => {
    console.log("task_started", data);
});

socket.on("job_started", (data) => {
    console.log("job_started", data);
});

If you would like to receive real-time updates of your tasks and jobs, you can use FreeConvert.com Socket API. The hostname for Socket.io updates is notification.freeconvert.com. Socket.io clients are available in Javascript and many other languages.

To join a channel, you must authorize using the Authorization: Bearer API_KEY as shown to the right.

Websocket Channels & Events

Channel description available event
job.{jobId} Get job update related event job_started job_failed job_completed
task.{taskId} Task related all event task_started task_completed task_failed task_min_update
user.{userId}.jobs User job releted event job_started job_failed job_completed
user.{userId}.tasks User task releted event task_started task_completed task_failed task_min_update

Schemas

Job

{
  "id": "5ff3e22059136b0023324b1f",
  "tag": "my-job",
  "createdAt": "2016-08-29T09:12:33.001Z",
  "updatedAt": "2016-08-29T09:12:33.001Z",
  "endedAt": "2016-08-29T09:12:33.001Z",
  "status": "created",
  "tasks": [
    {
      "name": "import-1",
      "operation": "import/upload",
      "status": "processing",
      "ignoreError": false,
      "endedAt": null,
      "job": "5ff3e22059136b0023324b1f",
      "payload": {
        "redirect": "https://example.com"
      },
      "createdAt": "2021-01-05T03:50:56.067Z",
      "updatedAt": "2021-01-05T03:50:56.115Z",
      "server": "local.freeconvert.com",
      "result": {
        "form": {
          "url": "https://local.freeconvert.com/api/upload/5ff3e7337e69c10060706883",
          "parameters": {
            "expires": 1609834355208,
            "size_limit": 5368709120,
            "max_file_count": 1,
            "signature": "46d0fab9c3534661"
          }
        }
      },
      "id": "5ff3e22059136b0023324b20"
    },
    {
      "name": "convert-1",
      "operation": "convert",
      "status": "processing",
      "ignoreError": false,
      "endedAt": null,
      "job": "5ff3e22059136b0023324b1f",
      "payload": {
        "input_format": "jpg",
        "output_format": "png",
        "options": {
          "quality": 75
        }
      },
      "dependsOn": [
        "5ff3e22059136b0023324b20"
      ],
      "createdAt": "2021-01-05T03:50:56.067Z",
      "updatedAt": "2021-01-05T03:50:56.115Z",
      "server": "local.freeconvert.com",
      "id": "5ff3e22059136b0023324b20"
    },
    {
      "name": "export-1",
      "operation": "export/url",
      "status": "processing",
      "ignoreError": false,
      "endedAt": null,
      "job": "5ff3e22059136b0023324b1f",
      "payload": {
        "filename": "some.pdf",
        "archive_multiple_files": true
      },
      "dependsOn": [
        "5fcb12f03f51983f4074dfb3",
        "5fcb12f03f51983f4074dfb4"
      ],
      "createdAt": "2021-01-05T03:50:56.067Z",
      "updatedAt": "2021-01-05T03:50:56.115Z",
      "server": "local.freeconvert.com",
      "id": "5ff3e22059136b0023324b20"
    }
  ]
}

Properties

Name Type Required Restrictions Description
id string(uuid) false read-only ID of the job
tag string false none An abitrary string which has no effect. It can be used to identify a job with an ID in your system/application.
createdAt string(date-time) false read-only Timestamp of the creation of the job (ISO8601)
updatedAt string(date-time) false read-only ISO8601 timestamp of the last update of job.
endedAt string(date-time) false read-only Timestamp of when the job completed or failed (ISO8601)
status string false read-only Status of the Job. Possible values are [created, ready, queued, processing, success, failed]
tasks [Task] true none none

Enumerated Values

Property Value
status created
status ready
status queued
status processing
status success
status failed

Task

{
  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  "operation": "convert",
  "status": "completed",
  "payload": {
    "options": {
      "quality": 75
    }
  },
  "ignoreError": false,
  "job": "4bbaedb0-902b-4b27-8218-8f40d3470a54",
  "result": {
    "url": "http://example.com/output.ext"
  },
  "endedAt": "2016-08-29T09:12:33.001Z",
  "dependsOn": [
    {
      "name": "import-1",
      "operation": "import/upload",
      "status": "processing",
      "ignoreError": false,
      "endedAt": null,
      "job": "5ff3e22059136b0023324b1f",
      "payload": {
        "redirect": "https://example.com"
      },
      "createdAt": "2021-01-05T03:50:56.067Z",
      "updatedAt": "2021-01-05T03:50:56.115Z",
      "server": "local.freeconvert.com",
      "id": "5ff3e22059136b0023324b20"
    }
  ],
  "conversionMinutes": 1,
  "createdAt": "2016-08-29T09:12:33.001Z",
  "updatedAt": "2016-08-29T09:12:33.001Z"
}

Properties

Name Type Required Restrictions Description
id string(uuid) false read-only ID of the task.
operation string true none Name of the operation. For example, to upload a file to FreeConvert using the URL upload method requires a task with operation import/url. Possible operations are [ import/upload, import/url, convert, compress, merge, archieve, export/url ]
status string false read-only Status of the task. Can be one of [created, processing, completed, failed, canceled, deleted].
payload object false none Payload sent by you for the task. Payload depends on the type of operation of the task.
ignoreError boolean false none If this task should be ignored if failed.
job string(uuid) false none The Job ID the task belongs to.
result object false read-only Shows the result of the task. If the task has succesfully finished, result property will list the created file(s) here.
endedAt string(date-time) false read-only Timestamp of when the task finished. Format ISO8601.
dependsOn [Task] false none List the task(s) this task depends on. For example, a convert task may list an upload task as a dependency. Only available if the include parameter is set to dependsOn.
conversionMinutes number false read-only Total conversion minutes used by the task. Only conversion and optimizing task conversion minutes are counted towards your account usage.
createdAt string(date-time) false read-only Timestamp of when the task is created. Format ISO8601.
updatedAt string(date-time) false read-only Timestamp of when the task was last updated. Format ISO8601.

Enumerated Values

Property Value
operation import/upload
operation import/url
operation convert
operation compress
operation merge
operation archieve
operation export/url
status created
status processing
status completed
status canceled
status failed
status deleted
status canceled
status deleted

Webhook

{
  "id": "5ff3e22059136b0023424b20",
  "name": "example-webhook",
  "status": "active",
  "events": [
    "job.created",
    "job.finished"
  ],
  "url": "http://your-domain.com/webhook-url",
  "signingSecret": "XXXXXXXXXXXX",
  "createdAt": "2020-07-17T07:14:56.004Z",
  "updatedAt": "2020-08-29T07:15:23.005Z",
  "lastErrorAt": "2020-07-21T02:16:03.000Z",
  "lastResponseCode": "NETWORK_ERROR",
  "links": {
    "self": "http://api.freeconvert.comhttps://notification.freeconvert.com/webhooks/5ff3e22059136b0023424b20"
  }
}

Properties

Name Type Required Restrictions Description
id string(uuid) false read-only ID of the webhook
name string false none Name of the webhook
status string false none Status of the webhook [active, inactive]
events [string] false none Events for which this webhook will be notified for
url string false none Webhook URL
signingSecret string false read-only Webhook signing secret
createdAt string(date-time) false read-only Timestamp of when the webhook is created. Format ISO8601.
updatedAt string(date-time) false read-only Timestamp of when the webhook was last updated. Format ISO8601.
lastErrorAt string(date-time) false read-only Timestamp of when the webhook was last rejected. Format ISO8601.
lastResponseCode string(date-time) false read-only Last error message received timestamp when sending the webhook.
links object false none none

Enumerated Values

Property Value
status active
status inactive