Build the workflows you need without worrying about security. We don’t store any document data, and our API endpoints are served through encrypted connections.
Easy Integration
Get up and running in hours, not weeks. Access well-documented APIs and code samples that make integrating with your existing workflows a snap.
Robust and Flexible
With access to more than 30 tools, you can process one document in multiple ways by using API credits. Generate PDF from HTML, convert Word, Excel, PowerPoint and image files to PDF, and more.
Simple and Transparent Pricing
Select a package that suits your needs according to the number of credits you wish to spend. Each API tool and action has a specific credit cost.
Try It Out
This example will download a file from a URL and convert it to a PDF.
// This code requires Node.js. Do not run this code directly in a web browser.const axios =require('axios')const FormData =require('form-data')const fs =require('fs')const body =JSON.stringify({parts:[{file:{url:"https://www.nutrient.io/api/assets/downloads/samples/docx/document.docx"}}]});(async()=>{try{const response =await axios.post('https://api.nutrient.io/build', body,{headers:{'Content-Type':'application/json','Authorization':'Bearer your_api_key_here'},responseType:"stream"})
response.data.pipe(fs.createWriteStream("result.pdf"))}catch(e){const errorString =awaitstreamToString(e.response.data)
console.log(errorString)}})()functionstreamToString(stream){const chunks =[]returnnewPromise((resolve, reject)=>{
stream.on("data",(chunk)=> chunks.push(Buffer.from(chunk)))
stream.on("error",(err)=>reject(err))
stream.on("end",()=>resolve(Buffer.concat(chunks).toString("utf8")))})}
import requests
import json
body = json.dumps({'parts':[{'file':{'url':'https://www.nutrient.io/api/assets/downloads/samples/docx/document.docx'}}]})
response = requests.request('POST','https://api.nutrient.io/build',
headers ={'Content-Type':'application/json','Authorization':'Bearer your_api_key_here'},
data = body,
stream =True)if response.ok:withopen('result.pdf','wb')as fd:for chunk in response.iter_content(chunk_size=8096):
fd.write(chunk)else:print(response.text)
exit()