Merge to PDF API

The CloudConvert API merges nearly any input format into a single PDF file.

Try it Out API Documentation

Merge PDFs

The CloudConvert API combines any type of files into a single PDF file. This takes away the hassle of manually converting the files to PDF before merging them. The API handles even hundreds of input files at once.

Convert to PDF

You can throw any format at us and we will handle it! CloudConvert automatically converts any document or image format before merging it into a single PDF file. You can select input format from the dropdown above to check support.

Async or Sync

By default, the CloudConvert API converts your files asynchronously and we notify you via webhooks when we are done. Depending on your needs there is also a synchronous API to convert files on-the-fly.

Storage Integration

CloudConvert directly fetches the input files from your object storage and then stores the output file at the same place. We are integrated with your existing and trusted storage provider, such as S3, Azure, Google Cloud or many others.

Custom Workflows

Our API uses the concept of Jobs and allows to do multiple operations with one single API call. For example, it is possible to convert the same file to multiple output formats, adding a watermark and creating a thumbnail with one single Job!

Developer Friendly

Our extensive API Documentation helps to get you started quickly. There is a Job Builder which generates ready-to-use request payloads and code snippets for you. We do provide free and timely support, directly from the builders of CloudConvert.

Raw Request PHP node.js Ruby Python Java .NET

POST https://sync.api.cloudconvert.com/v2/jobs
{
  "tasks": {
    "import-first-file": {
      "operation": "import/url",
      "url": "https://my.url/file1.pdf"
    },
    "import-second-file": {
      "operation": "import/url",
      "url": "https://my.url/file2.docx"
    },
    "merge-my-files": {
      "operation": "merge",
      "input": [
        "import-first-file",
        "import-second-file"
      ],
      "output_format": "pdf"
    },
    "export-my-file": {
      "operation": "export/url",
      "input": "merge-my-files"
    }
  },
  "redirect": true
}
<?php
$job = (new Job())
    ->addTask(
        (new Task('import/url', 'import-first-file'))
            ->set('url', 'https://my.url/file1.pdf')
    )
    ->addTask(
        (new Task('import/url', 'import-second-file'))
            ->set('url', 'https://my.url/file2.docx')
    )
    ->addTask(
        (new Task('merge', 'merge-my-files'))
            ->set('input', ['import-first-file', 'import-second-file'])
            ->set('output_format', 'pdf')
    )
    ->addTask(
        (new Task('export/url', 'export-my-file'))
            ->set('input', 'merge-my-files')
    );

$cloudconvert->jobs()->create($job);
let exampleJob = await cloudConvert.jobs.create({
    "tasks": {
        "import-first-file": {
            "operation": "import/url",
            "url": "https://my.url/file1.pdf"
        },
        "import-second-file": {
            "operation": "import/url",
            "url": "https://my.url/file2.docx"
        },
        "merge-my-files": {
            "operation": "merge",
            "input": [
                "import-first-file",
                "import-second-file"
            ],
            "output_format": "pdf"
        },
        "export-my-file": {
            "operation": "export/url",
            "input": "merge-my-files"
        }
    }
});

job = await cloudConvert.jobs.wait(job.id);
job = cloudconvert.jobs.create({
  tasks: [
    {
      name: "import-first-file",
      operation: "import/url",
      url: "https://my-url/file1.pdf"
    },
    {
      name: "import-second-file",
      operation: "import/url",
      url: "https://my-url/file2.docx"
    },
    {
      name: "merge-my-files",
      operation: "merge",
      input: ["import-first-file", "import-second-file"],
      output_format: "pdf"
    },
    {
      name: "export-my-file",
      operation: "export/url",
      input: "merge-my-files"
    },
  ]
})
job = cloudconvert.Job.create(payload={
     'tasks': {
        'import-first-file': {
            'operation': 'import/url',
            'url': 'https://my.url/file1.pdf'
        },
        'import-second-file': {
            'operation': 'import/url',
            'url': 'https://my.url/file2.docx'
        },
        'merge-my-files': {
            'operation': 'merge',
            'input': [
                'import-first-file',
                'import-second-file'
            ],
            'output_format': 'pdf'
        },
        'export-my-file': {
            'operation': 'export/url',
            'input': 'merge-my-files'
        }
     }
 })
final JobResponse createJobResponse = cloudConvertClient.jobs().create(
    ImmutableMap.of(
        "import-first-file",
            new UrlImportRequest()
                .setUrl("https://my.url/file1.pdf"),
        "import-second-file",
            new UrlImportRequest()
                .setUrl("https://my.url/file2.docx"),
        "merge-my-files",
            new MergeFilesTaskRequest()
                .setInput(ImmutableList.of("import-first-file", "import-second-file"))
                .setOutputFormat("pdf")
        "export-my-file",
            new UrlExportRequest()
                .setInput("merge-my-files")
    )
).getBody();
var job = await CloudConvert.CreateJobAsync(new JobCreateRequest
      {
        Tasks = new
        {
          import_first_file = new ImportUrlCreateRequest
          {
            Url = "https://my.url/file1.pdf"
          },
          import_second_file = new ImportUrlCreateRequest
          {
            Url = "https://my.url/file2.docx"
          },
          merge_my_files = new MergeCreateRequest
          {
            Input = ["import_first_file", "import_second_file"],
            Output_Format = "pdf"
          },
          export_it = new ExportUrlCreateRequest
          {
            Input = "merge_my_files"
          }
        }
      });

Use our Job Builder to generate ready-to-use requests and code snippet for the CloudConvert API.

Job Builder API Documentation
On-demand, transparent pricing

Starting at 0.00 per file

When Converting Files

Corresponds to a one-timemonthly payment of . Checkout the full pricing information.