[{"data":1,"prerenderedAt":1330},["Reactive",2],{"/guides/best-pdf-api-for-ai-agents":3},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"date":10,"dateModified":10,"author":11,"body":12,"_type":1325,"_id":1326,"_source":1327,"_file":1328,"_extension":1329},"/guides/best-pdf-api-for-ai-agents","guides",false,"","Best PDF generation APIs an AI agent can call","Nine PDF generation APIs checked from an AI agent's side: hosted MCP server, registry listing, llms.txt, one-call output, free plan and price.","2026-11-06","Cyril Nicodème",{"type":13,"children":14,"toc":1309},"root",[15,23,28,35,40,105,110,116,118,407,412,661,673,679,689,694,802,814,820,829,842,856,862,871,900,905,911,920,933,938,944,953,966,971,977,986,999,1005,1014,1019,1025,1034,1047,1204,1210,1219,1224,1245,1251,1256,1262,1276,1288],{"type":16,"tag":17,"props":18,"children":19},"element","p",{},[20],{"type":21,"value":22},"text","If your AI agent has to turn HTML or a URL into a PDF, give it PDFShift. We host an MCP server it can call with one API key, there's an OpenAPI spec for agents that don't speak MCP, and the PDF, or a link to it, comes back in the same response.",{"type":16,"tag":17,"props":24,"children":25},{},[26],{"type":21,"value":27},"Of the nine PDF APIs below, only two host an MCP server listed in the official registry: ours and Nutrient's. Nutrient's needs a person to sign in before an agent can use it.",{"type":16,"tag":29,"props":30,"children":32},"h2",{"id":31},"what-does-an-ai-agent-need-from-a-pdf-api",[33],{"type":21,"value":34},"What does an AI agent need from a PDF API?",{"type":16,"tag":17,"props":36,"children":37},{},[38],{"type":21,"value":39},"A person can sign up, read the docs and click around a dashboard. An agent can't, so a good PDF API for agents comes down to five things:",{"type":16,"tag":41,"props":42,"children":43},"ol",{},[44,56,66,85,95],{"type":16,"tag":45,"props":46,"children":47},"li",{},[48,54],{"type":16,"tag":49,"props":50,"children":51},"strong",{},[52],{"type":21,"value":53},"A hosted MCP server.",{"type":21,"value":55}," The Model Context Protocol is how Claude, ChatGPT and Cursor call outside tools. A server the vendor hosts means nothing to install and no browser to run next to the agent.",{"type":16,"tag":45,"props":57,"children":58},{},[59,64],{"type":16,"tag":49,"props":60,"children":61},{},[62],{"type":21,"value":63},"A listing in the official MCP Registry.",{"type":21,"value":65}," It's the public catalog MCP clients and directories read to find servers. Third-party wrappers get listed there too, so what counts is an entry the vendor published itself.",{"type":16,"tag":45,"props":67,"children":68},{},[69,74,76,83],{"type":16,"tag":49,"props":70,"children":71},{},[72],{"type":21,"value":73},"A machine-readable spec.",{"type":21,"value":75}," An OpenAPI spec turns into tool definitions for agents that don't use MCP, and an ",{"type":16,"tag":77,"props":78,"children":80},"code",{"className":79},[],[81],{"type":21,"value":82},"llms.txt",{"type":21,"value":84}," file tells a model where the docs are.",{"type":16,"tag":45,"props":86,"children":87},{},[88,93],{"type":16,"tag":49,"props":89,"children":90},{},[91],{"type":21,"value":92},"One API key.",{"type":21,"value":94}," A key in a header is something an agent can carry. A browser sign-in or a token you have to mint first needs a person to step in once.",{"type":16,"tag":45,"props":96,"children":97},{},[98,103],{"type":16,"tag":49,"props":99,"children":100},{},[101],{"type":21,"value":102},"Done in one call.",{"type":21,"value":104}," The agent sends the HTML and gets the PDF, or a link to it, in the same response. A job ID it has to poll is one more loop where an agent can stall or give up.",{"type":16,"tag":17,"props":106,"children":107},{},[108],{"type":21,"value":109},"Also check the limits an agent hits halfway through a task: how long one conversion may take, how big the file may be, and how long a download link lives.",{"type":16,"tag":29,"props":111,"children":113},{"id":112},"which-pdf-apis-can-an-ai-agent-call",[114],{"type":21,"value":115},"Which PDF APIs can an AI agent call?",{"type":21,"value":117},"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n",{"type":16,"tag":119,"props":120,"children":121},"table",{},[122,156],{"type":16,"tag":123,"props":124,"children":125},"thead",{},[126],{"type":16,"tag":127,"props":128,"children":129},"tr",{},[130,136,141,146,151],{"type":16,"tag":131,"props":132,"children":133},"th",{},[134],{"type":21,"value":135},"Tool",{"type":16,"tag":131,"props":137,"children":138},{},[139],{"type":21,"value":140},"Hosted MCP server",{"type":16,"tag":131,"props":142,"children":143},{},[144],{"type":21,"value":145},"Done in one call",{"type":16,"tag":131,"props":147,"children":148},{},[149],{"type":21,"value":150},"Free plan",{"type":16,"tag":131,"props":152,"children":153},{},[154],{"type":21,"value":155},"Cheapest paid plan",{"type":16,"tag":157,"props":158,"children":159},"tbody",{},[160,188,215,242,270,298,326,353,380],{"type":16,"tag":127,"props":161,"children":162},{},[163,169,174,178,183],{"type":16,"tag":164,"props":165,"children":166},"td",{},[167],{"type":21,"value":168},"PDFShift",{"type":16,"tag":164,"props":170,"children":171},{},[172],{"type":21,"value":173},"Yes",{"type":16,"tag":164,"props":175,"children":176},{},[177],{"type":21,"value":173},{"type":16,"tag":164,"props":179,"children":180},{},[181],{"type":21,"value":182},"50 credits a month",{"type":16,"tag":164,"props":184,"children":185},{},[186],{"type":21,"value":187},"$9 for 500 credits",{"type":16,"tag":127,"props":189,"children":190},{},[191,196,201,205,210],{"type":16,"tag":164,"props":192,"children":193},{},[194],{"type":21,"value":195},"Nutrient DWS API",{"type":16,"tag":164,"props":197,"children":198},{},[199],{"type":21,"value":200},"Yes, account sign-in",{"type":16,"tag":164,"props":202,"children":203},{},[204],{"type":21,"value":173},{"type":16,"tag":164,"props":206,"children":207},{},[208],{"type":21,"value":209},"50 credits a month, watermarked",{"type":16,"tag":164,"props":211,"children":212},{},[213],{"type":21,"value":214},"$75 for 1,000 credits",{"type":16,"tag":127,"props":216,"children":217},{},[218,223,227,232,237],{"type":16,"tag":164,"props":219,"children":220},{},[221],{"type":21,"value":222},"Api2Pdf",{"type":16,"tag":164,"props":224,"children":225},{},[226],{"type":21,"value":173},{"type":16,"tag":164,"props":228,"children":229},{},[230],{"type":21,"value":231},"Yes, a file URL",{"type":16,"tag":164,"props":233,"children":234},{},[235],{"type":21,"value":236},"First month's credit",{"type":16,"tag":164,"props":238,"children":239},{},[240],{"type":21,"value":241},"$1 plus usage",{"type":16,"tag":127,"props":243,"children":244},{},[245,250,255,260,265],{"type":16,"tag":164,"props":246,"children":247},{},[248],{"type":21,"value":249},"PDF Generator API",{"type":16,"tag":164,"props":251,"children":252},{},[253],{"type":21,"value":254},"Yes, access token",{"type":16,"tag":164,"props":256,"children":257},{},[258],{"type":21,"value":259},"Yes, or async",{"type":16,"tag":164,"props":261,"children":262},{},[263],{"type":21,"value":264},"14-day trial",{"type":16,"tag":164,"props":266,"children":267},{},[268],{"type":21,"value":269},"€80 a year, Creator plan",{"type":16,"tag":127,"props":271,"children":272},{},[273,278,283,288,293],{"type":16,"tag":164,"props":274,"children":275},{},[276],{"type":21,"value":277},"PDFMonkey",{"type":16,"tag":164,"props":279,"children":280},{},[281],{"type":21,"value":282},"No, a local npm server",{"type":16,"tag":164,"props":284,"children":285},{},[286],{"type":21,"value":287},"No, the job is polled",{"type":16,"tag":164,"props":289,"children":290},{},[291],{"type":21,"value":292},"20 documents a month",{"type":16,"tag":164,"props":294,"children":295},{},[296],{"type":21,"value":297},"€5 for 300 documents",{"type":16,"tag":127,"props":299,"children":300},{},[301,306,311,316,321],{"type":16,"tag":164,"props":302,"children":303},{},[304],{"type":21,"value":305},"APITemplate.io",{"type":16,"tag":164,"props":307,"children":308},{},[309],{"type":21,"value":310},"No",{"type":16,"tag":164,"props":312,"children":313},{},[314],{"type":21,"value":315},"Yes, a download URL",{"type":16,"tag":164,"props":317,"children":318},{},[319],{"type":21,"value":320},"50 PDFs a month",{"type":16,"tag":164,"props":322,"children":323},{},[324],{"type":21,"value":325},"$24 for 3,000 PDFs",{"type":16,"tag":127,"props":327,"children":328},{},[329,334,338,343,348],{"type":16,"tag":164,"props":330,"children":331},{},[332],{"type":21,"value":333},"DocRaptor",{"type":16,"tag":164,"props":335,"children":336},{},[337],{"type":21,"value":310},{"type":16,"tag":164,"props":339,"children":340},{},[341],{"type":21,"value":342},"Yes, up to 60 seconds",{"type":16,"tag":164,"props":344,"children":345},{},[346],{"type":21,"value":347},"Watermarked test documents",{"type":16,"tag":164,"props":349,"children":350},{},[351],{"type":21,"value":352},"$15 for 125 documents",{"type":16,"tag":127,"props":354,"children":355},{},[356,361,365,370,375],{"type":16,"tag":164,"props":357,"children":358},{},[359],{"type":21,"value":360},"Adobe PDF Services",{"type":16,"tag":164,"props":362,"children":363},{},[364],{"type":21,"value":310},{"type":16,"tag":164,"props":366,"children":367},{},[368],{"type":21,"value":369},"No, upload then job",{"type":16,"tag":164,"props":371,"children":372},{},[373],{"type":21,"value":374},"500 transactions a month",{"type":16,"tag":164,"props":376,"children":377},{},[378],{"type":21,"value":379},"Through Adobe's sales team",{"type":16,"tag":127,"props":381,"children":382},{},[383,388,393,397,402],{"type":16,"tag":164,"props":384,"children":385},{},[386],{"type":21,"value":387},"Gotenberg",{"type":16,"tag":164,"props":389,"children":390},{},[391],{"type":21,"value":392},"No, self-hosted",{"type":16,"tag":164,"props":394,"children":395},{},[396],{"type":21,"value":173},{"type":16,"tag":164,"props":398,"children":399},{},[400],{"type":21,"value":401},"Open source",{"type":16,"tag":164,"props":403,"children":404},{},[405],{"type":21,"value":406},"You run the servers",{"type":16,"tag":17,"props":408,"children":409},{},[410],{"type":21,"value":411},"\"Hosted MCP server\" means one the vendor runs and documents, not a third-party wrapper. Prices are billed monthly unless noted, as of November 5 and 6, 2026.",{"type":16,"tag":413,"props":414,"children":416},"guide-figure",{"caption":415},"What each tool gives an AI agent to call. Our check, November 6, 2026.",[417],{"type":16,"tag":418,"props":419,"children":428},"svg",{"viewBox":420,"xmlns":421,"role":422,"ariaLabelledBy":423,"style":426,"fontFamily":427},"0 0 560 330","http://www.w3.org/2000/svg","img",[424,425],"agents-matrix-title","agents-matrix-desc","max-width:560px;min-width:460px;display:block;margin:0 auto","DM Sans, sans-serif",[429,435,441,473,524,533,604],{"type":16,"tag":430,"props":431,"children":432},"title",{"id":424},[433],{"type":21,"value":434},"Four checks an AI agent cares about, tool by tool",{"type":16,"tag":436,"props":437,"children":438},"desc",{"id":425},[439],{"type":21,"value":440},"Grid of 9 tools against 4 checks: hosted MCP server, listed in the official MCP Registry, llms.txt, done in one call. PDFShift passes 4. Nutrient passes 4, with a sign-in for its MCP server. Api2Pdf and PDF Generator API pass 3. PDFMonkey passes 2. APITemplate.io, DocRaptor and Gotenberg pass 1. Adobe PDF Services passes 0.",{"type":16,"tag":442,"props":443,"children":447},"g",{"fontSize":444,"fill":445,"fontWeight":446},"13","#4C556D","500",[448,456,462,467],{"type":16,"tag":21,"props":449,"children":453},{"x":450,"y":451,"textAnchor":452},"235","40","middle",[454],{"type":21,"value":455},"Hosted MCP",{"type":16,"tag":21,"props":457,"children":459},{"x":458,"y":451,"textAnchor":452},"330",[460],{"type":21,"value":461},"In registry",{"type":16,"tag":21,"props":463,"children":465},{"x":464,"y":451,"textAnchor":452},"425",[466],{"type":21,"value":82},{"type":16,"tag":21,"props":468,"children":470},{"x":469,"y":451,"textAnchor":452},"515",[471],{"type":21,"value":472},"One call",{"type":16,"tag":442,"props":474,"children":477},{"fontSize":475,"fill":476},"14","#0A0C3D",[478,484,489,494,499,504,509,514,519],{"type":16,"tag":21,"props":479,"children":482},{"x":480,"y":481,"fontWeight":446},"0","79",[483],{"type":21,"value":168},{"type":16,"tag":21,"props":485,"children":487},{"x":480,"y":486},"109",[488],{"type":21,"value":195},{"type":16,"tag":21,"props":490,"children":492},{"x":480,"y":491},"139",[493],{"type":21,"value":222},{"type":16,"tag":21,"props":495,"children":497},{"x":480,"y":496},"169",[498],{"type":21,"value":249},{"type":16,"tag":21,"props":500,"children":502},{"x":480,"y":501},"199",[503],{"type":21,"value":277},{"type":16,"tag":21,"props":505,"children":507},{"x":480,"y":506},"229",[508],{"type":21,"value":305},{"type":16,"tag":21,"props":510,"children":512},{"x":480,"y":511},"259",[513],{"type":21,"value":333},{"type":16,"tag":21,"props":515,"children":517},{"x":480,"y":516},"289",[518],{"type":21,"value":360},{"type":16,"tag":21,"props":520,"children":522},{"x":480,"y":521},"319",[523],{"type":21,"value":387},{"type":16,"tag":525,"props":526,"children":532},"rect",{"x":480,"y":527,"width":528,"height":529,"rx":530,"fill":531},"58","560","30","6","rgba(108, 71, 255, 0.08)",[],{"type":16,"tag":442,"props":534,"children":536},{"fill":535},"#6C47FF",[537,543,546,549,552,556,559,562,565,569,572,575,579,582,585,589,592,596,600],{"type":16,"tag":538,"props":539,"children":542},"circle",{"cx":450,"cy":540,"r":541},"74","8",[],{"type":16,"tag":538,"props":544,"children":545},{"cx":458,"cy":540,"r":541},[],{"type":16,"tag":538,"props":547,"children":548},{"cx":464,"cy":540,"r":541},[],{"type":16,"tag":538,"props":550,"children":551},{"cx":469,"cy":540,"r":541},[],{"type":16,"tag":538,"props":553,"children":555},{"cx":450,"cy":554,"r":541},"104",[],{"type":16,"tag":538,"props":557,"children":558},{"cx":458,"cy":554,"r":541},[],{"type":16,"tag":538,"props":560,"children":561},{"cx":464,"cy":554,"r":541},[],{"type":16,"tag":538,"props":563,"children":564},{"cx":469,"cy":554,"r":541},[],{"type":16,"tag":538,"props":566,"children":568},{"cx":450,"cy":567,"r":541},"134",[],{"type":16,"tag":538,"props":570,"children":571},{"cx":464,"cy":567,"r":541},[],{"type":16,"tag":538,"props":573,"children":574},{"cx":469,"cy":567,"r":541},[],{"type":16,"tag":538,"props":576,"children":578},{"cx":450,"cy":577,"r":541},"164",[],{"type":16,"tag":538,"props":580,"children":581},{"cx":464,"cy":577,"r":541},[],{"type":16,"tag":538,"props":583,"children":584},{"cx":469,"cy":577,"r":541},[],{"type":16,"tag":538,"props":586,"children":588},{"cx":458,"cy":587,"r":541},"194",[],{"type":16,"tag":538,"props":590,"children":591},{"cx":464,"cy":587,"r":541},[],{"type":16,"tag":538,"props":593,"children":595},{"cx":469,"cy":594,"r":541},"224",[],{"type":16,"tag":538,"props":597,"children":599},{"cx":469,"cy":598,"r":541},"254",[],{"type":16,"tag":538,"props":601,"children":603},{"cx":469,"cy":602,"r":541},"314",[],{"type":16,"tag":442,"props":605,"children":607},{"fill":606,"stroke":445},"none",[608,612,615,618,621,624,627,630,633,636,639,643,646,649,652,655,658],{"type":16,"tag":538,"props":609,"children":611},{"cx":458,"cy":567,"r":610},"7",[],{"type":16,"tag":538,"props":613,"children":614},{"cx":458,"cy":577,"r":610},[],{"type":16,"tag":538,"props":616,"children":617},{"cx":450,"cy":587,"r":610},[],{"type":16,"tag":538,"props":619,"children":620},{"cx":469,"cy":587,"r":610},[],{"type":16,"tag":538,"props":622,"children":623},{"cx":450,"cy":594,"r":610},[],{"type":16,"tag":538,"props":625,"children":626},{"cx":458,"cy":594,"r":610},[],{"type":16,"tag":538,"props":628,"children":629},{"cx":464,"cy":594,"r":610},[],{"type":16,"tag":538,"props":631,"children":632},{"cx":450,"cy":598,"r":610},[],{"type":16,"tag":538,"props":634,"children":635},{"cx":458,"cy":598,"r":610},[],{"type":16,"tag":538,"props":637,"children":638},{"cx":464,"cy":598,"r":610},[],{"type":16,"tag":538,"props":640,"children":642},{"cx":450,"cy":641,"r":610},"284",[],{"type":16,"tag":538,"props":644,"children":645},{"cx":458,"cy":641,"r":610},[],{"type":16,"tag":538,"props":647,"children":648},{"cx":464,"cy":641,"r":610},[],{"type":16,"tag":538,"props":650,"children":651},{"cx":469,"cy":641,"r":610},[],{"type":16,"tag":538,"props":653,"children":654},{"cx":450,"cy":602,"r":610},[],{"type":16,"tag":538,"props":656,"children":657},{"cx":458,"cy":602,"r":610},[],{"type":16,"tag":538,"props":659,"children":660},{"cx":464,"cy":602,"r":610},[],{"type":16,"tag":17,"props":662,"children":663},{},[664,666,671],{"type":21,"value":665},"Five of the nine publish an ",{"type":16,"tag":77,"props":667,"children":669},{"className":668},[],[670],{"type":21,"value":82},{"type":21,"value":672},": PDFShift, Nutrient, Api2Pdf, PDF Generator API and PDFMonkey.",{"type":16,"tag":29,"props":674,"children":676},{"id":675},"_1-pdfshift",[677],{"type":21,"value":678},"1. PDFShift",{"type":16,"tag":17,"props":680,"children":681},{},[682,687],{"type":16,"tag":49,"props":683,"children":684},{},[685],{"type":21,"value":686},"Best for:",{"type":21,"value":688}," agents, and the apps behind them, that need a PDF or a screenshot without running a browser.",{"type":16,"tag":17,"props":690,"children":691},{},[692],{"type":21,"value":693},"People don't buy PDFs. They buy not having to run Chromium, and an agent running in someone's chat window has no machine to run it on anyway. So we host the browser and give the agent three ways in.",{"type":16,"tag":695,"props":696,"children":697},"ul",{},[698,743,776],{"type":16,"tag":45,"props":699,"children":700},{},[701,706,708,714,716,725,727,733,735,741],{"type":16,"tag":49,"props":702,"children":703},{},[704],{"type":21,"value":705},"MCP server:",{"type":21,"value":707}," ",{"type":16,"tag":77,"props":709,"children":711},{"className":710},[],[712],{"type":21,"value":713},"https://api.pdfshift.io/mcp",{"type":21,"value":715},", over Streamable HTTP. It's in the ",{"type":16,"tag":717,"props":718,"children":722},"a",{"href":719,"rel":720},"https://registry.modelcontextprotocol.io/?q=pdfshift",[721],"nofollow",[723],{"type":21,"value":724},"official MCP Registry",{"type":21,"value":726},". An agent can connect and list the tools without a key, then run them with your API key in the ",{"type":16,"tag":77,"props":728,"children":730},{"className":729},[],[731],{"type":21,"value":732},"X-API-Key",{"type":21,"value":734}," header. The ",{"type":16,"tag":77,"props":736,"children":738},{"className":737},[],[739],{"type":21,"value":740},"convert",{"type":21,"value":742}," tool turns an HTML document or a URL into a PDF, PNG, JPEG or WEBP and returns a temporary download link in the same call. The other ten work with saved HTML templates, credits, pricing and logs.",{"type":16,"tag":45,"props":744,"children":745},{},[746,751,752,758,760,766,768,774],{"type":16,"tag":49,"props":747,"children":748},{},[749],{"type":21,"value":750},"OpenAPI spec:",{"type":21,"value":707},{"type":16,"tag":77,"props":753,"children":755},{"className":754},[],[756],{"type":21,"value":757},"https://api.pdfshift.io/openapi.json",{"type":21,"value":759},", OpenAPI 3.0.3. ",{"type":16,"tag":77,"props":761,"children":763},{"className":762},[],[764],{"type":21,"value":765},"POST /v3/convert/pdf",{"type":21,"value":767}," answers with the PDF itself. Add ",{"type":16,"tag":77,"props":769,"children":771},{"className":770},[],[772],{"type":21,"value":773},"webhook",{"type":21,"value":775}," when you'd rather be called back.",{"type":16,"tag":45,"props":777,"children":778},{},[779,784,786,792,794,800],{"type":16,"tag":49,"props":780,"children":781},{},[782],{"type":21,"value":783},"For no-code agents:",{"type":21,"value":785}," a verified n8n node, plus guides for ",{"type":16,"tag":717,"props":787,"children":789},{"href":788},"/agents/lovable/",[790],{"type":21,"value":791},"Lovable",{"type":21,"value":793},", Make, Zapier and others on the ",{"type":16,"tag":717,"props":795,"children":797},{"href":796},"/agents/",[798],{"type":21,"value":799},"agents page",{"type":21,"value":801},".",{"type":16,"tag":17,"props":803,"children":804},{},[805,807,813],{"type":21,"value":806},"We render with Chromium. On the free plan you get 50 credits a month with no credit card, files up to 15 MB and a 30-second timeout. Paid plans start at $9 a month for 500 credits, have no file size limit and allow up to 15 minutes per conversion. A credit covers 5 MB of output. The full list is on the ",{"type":16,"tag":717,"props":808,"children":810},{"href":809},"/pricing/",[811],{"type":21,"value":812},"pricing page",{"type":21,"value":801},{"type":16,"tag":29,"props":815,"children":817},{"id":816},"_2-nutrient-dws-api",[818],{"type":21,"value":819},"2. Nutrient DWS API",{"type":16,"tag":17,"props":821,"children":822},{},[823,827],{"type":16,"tag":49,"props":824,"children":825},{},[826],{"type":21,"value":686},{"type":21,"value":828}," PDF generation plus OCR, redaction, signatures or format conversion from one vendor.",{"type":16,"tag":17,"props":830,"children":831},{},[832,834,840],{"type":21,"value":833},"Nutrient hosts its MCP server at ",{"type":16,"tag":77,"props":835,"children":837},{"className":836},[],[838],{"type":21,"value":839},"https://mcp.nutrient.io/mcp",{"type":21,"value":841},", and you connect it by signing in to a Nutrient account. The REST API takes an API key, and its HTML-to-PDF endpoint returns the PDF in the response.",{"type":16,"tag":17,"props":843,"children":844},{},[845,847,854],{"type":21,"value":846},"Free output carries a \"For Evaluation Purposes Only\" watermark. An HTML-to-PDF call costs half a credit, so the ",{"type":16,"tag":717,"props":848,"children":851},{"href":849,"rel":850},"https://www.nutrient.io/api/pricing/processor-api/",[721],[852],{"type":21,"value":853},"$75 Starter plan's 1,000 credits",{"type":21,"value":855}," cover 2,000 of them.",{"type":16,"tag":29,"props":857,"children":859},{"id":858},"_3-api2pdf",[860],{"type":21,"value":861},"3. Api2Pdf",{"type":16,"tag":17,"props":863,"children":864},{},[865,869],{"type":16,"tag":49,"props":866,"children":867},{},[868],{"type":21,"value":686},{"type":21,"value":870}," pay-per-use workloads that also convert Office files.",{"type":16,"tag":17,"props":872,"children":873},{},[874,876,882,884,890,892,898],{"type":21,"value":875},"Api2Pdf's MCP server has 11 tools, from ",{"type":16,"tag":77,"props":877,"children":879},{"className":878},[],[880],{"type":21,"value":881},"html_to_pdf",{"type":21,"value":883}," and ",{"type":16,"tag":77,"props":885,"children":887},{"className":886},[],[888],{"type":21,"value":889},"url_to_pdf",{"type":21,"value":891}," to merging and watermarking. It lives at ",{"type":16,"tag":77,"props":893,"children":895},{"className":894},[],[896],{"type":21,"value":897},"https://mcp.api2pdf.com/mcp",{"type":21,"value":899}," and, like ours, lists its tools without a key. It renders HTML with headless Chrome or wkhtmltopdf.",{"type":16,"tag":17,"props":901,"children":902},{},[903],{"type":21,"value":904},"Every call returns JSON with a link to the file, and the file is deleted after 24 hours. Pricing is $1 a month, plus $0.001 per MB of bandwidth and $0.00019551 per second of compute.",{"type":16,"tag":29,"props":906,"children":908},{"id":907},"_4-pdf-generator-api",[909],{"type":21,"value":910},"4. PDF Generator API",{"type":16,"tag":17,"props":912,"children":913},{},[914,918],{"type":16,"tag":49,"props":915,"children":916},{},[917],{"type":21,"value":686},{"type":21,"value":919}," documents built from saved templates and JSON data.",{"type":16,"tag":17,"props":921,"children":922},{},[923,925,931],{"type":21,"value":924},"PDF Generator API's MCP server, ",{"type":16,"tag":77,"props":926,"children":928},{"className":927},[],[929],{"type":21,"value":930},"https://mcp.pdfgeneratorapi.com/mcp",{"type":21,"value":932},", is mostly for managing templates and generating from them. It asks for an access token before it answers. The API also converts raw HTML and URLs, and it can answer at once or as a job you poll.",{"type":16,"tag":17,"props":934,"children":935},{},[936],{"type":21,"value":937},"Creator, the cheapest plan, comes with 50 credits a month and 5 templates.",{"type":16,"tag":29,"props":939,"children":941},{"id":940},"_5-pdfmonkey",[942],{"type":21,"value":943},"5. PDFMonkey",{"type":16,"tag":17,"props":945,"children":946},{},[947,951],{"type":16,"tag":49,"props":948,"children":949},{},[950],{"type":21,"value":686},{"type":21,"value":952}," templates designed in a visual editor and filled with data.",{"type":16,"tag":17,"props":954,"children":955},{},[956,958,964],{"type":21,"value":957},"PDFMonkey's MCP server is an npm package you run on your own machine (",{"type":16,"tag":77,"props":959,"children":961},{"className":960},[],[962],{"type":21,"value":963},"npx -y pdfmonkey-mcp-server",{"type":21,"value":965},") with your API key. It's listed in the registry as a package, not a hosted server. It can read your templates but can't create or edit them, so a person designs them first. Generation runs as a job: the MCP tool polls for up to three minutes, and the download link expires after an hour. There's an official n8n node, verified by n8n.",{"type":16,"tag":17,"props":967,"children":968},{},[969],{"type":21,"value":970},"The free plan can't load outside images, fonts, CSS or JavaScript.",{"type":16,"tag":29,"props":972,"children":974},{"id":973},"_6-apitemplateio",[975],{"type":21,"value":976},"6. APITemplate.io",{"type":16,"tag":17,"props":978,"children":979},{},[980,984],{"type":16,"tag":49,"props":981,"children":982},{},[983],{"type":21,"value":686},{"type":21,"value":985}," template-driven PDFs and images through Zapier, Make or n8n.",{"type":16,"tag":17,"props":987,"children":988},{},[989,991,998],{"type":21,"value":990},"APITemplate.io takes JSON for a saved template, raw HTML or a URL, and returns a download URL, at once or by webhook. The free plan includes 3 templates, and ",{"type":16,"tag":717,"props":992,"children":995},{"href":993,"rel":994},"https://apitemplate.io/pricing/",[721],[996],{"type":21,"value":997},"PDF Basic drops to $19 a month billed yearly",{"type":21,"value":801},{"type":16,"tag":29,"props":1000,"children":1002},{"id":1001},"_7-docraptor",[1003],{"type":21,"value":1004},"7. DocRaptor",{"type":16,"tag":17,"props":1006,"children":1007},{},[1008,1012],{"type":16,"tag":49,"props":1009,"children":1010},{},[1011],{"type":21,"value":686},{"type":21,"value":1013}," print layouts: books, paged reports and CSS for paged media.",{"type":16,"tag":17,"props":1015,"children":1016},{},[1017],{"type":21,"value":1018},"DocRaptor renders with Prince, not a browser. A conversion that takes longer than 60 seconds has to run as an async job, which can last up to 600 seconds. You then poll for the result, or DocRaptor calls a URL you give it.",{"type":16,"tag":29,"props":1020,"children":1022},{"id":1021},"_8-adobe-pdf-services",[1023],{"type":21,"value":1024},"8. Adobe PDF Services",{"type":16,"tag":17,"props":1026,"children":1027},{},[1028,1032],{"type":16,"tag":49,"props":1029,"children":1030},{},[1031],{"type":21,"value":686},{"type":21,"value":1033}," companies already on Adobe that need its wider PDF toolkit.",{"type":16,"tag":17,"props":1035,"children":1036},{},[1037,1039,1045],{"type":21,"value":1038},"Adobe's API creates PDFs from HTML, Office files and images. For static HTML, the input is a zip file with an ",{"type":16,"tag":77,"props":1040,"children":1042},{"className":1041},[],[1043],{"type":21,"value":1044},"index.html",{"type":21,"value":1046}," at the top and its images and CSS next to it. The flow is upload, submit a job, then fetch the result: three calls where PDFShift takes one.",{"type":16,"tag":413,"props":1048,"children":1050},{"caption":1049},"Requests an agent makes for one PDF from static HTML. From each API's docs, November 6, 2026.",[1051],{"type":16,"tag":418,"props":1052,"children":1057},{"viewBox":1053,"xmlns":421,"role":422,"ariaLabelledBy":1054,"style":426,"fontFamily":427},"0 0 560 200",[1055,1056],"agents-flow-title","agents-flow-desc",[1058,1063,1068,1083,1093,1110,1120,1148,1161,1184],{"type":16,"tag":430,"props":1059,"children":1060},{"id":1055},[1061],{"type":21,"value":1062},"One request with PDFShift, three with Adobe PDF Services",{"type":16,"tag":436,"props":1064,"children":1065},{"id":1056},[1066],{"type":21,"value":1067},"PDFShift: the agent sends one POST to /v3/convert/pdf with the HTML and gets the PDF back. Adobe PDF Services: the agent uploads a zip of the HTML, submits a job, then fetches the job result to get the PDF.",{"type":16,"tag":442,"props":1069,"children":1070},{"fontSize":475,"fill":476,"fontWeight":446},[1071,1077],{"type":16,"tag":21,"props":1072,"children":1074},{"x":480,"y":1073},"22",[1075],{"type":21,"value":1076},"PDFShift: 1 request",{"type":16,"tag":21,"props":1078,"children":1080},{"x":480,"y":1079},"122",[1081],{"type":21,"value":1082},"Adobe PDF Services: 3 requests",{"type":16,"tag":442,"props":1084,"children":1086},{"fill":1085,"stroke":535},"rgba(108, 71, 255, 0.1)",[1087],{"type":16,"tag":525,"props":1088,"children":1092},{"x":480,"y":1089,"width":1090,"height":1091,"rx":541},"36","250","44",[],{"type":16,"tag":442,"props":1094,"children":1096},{"fill":1095,"stroke":445},"#FFFFFF",[1097,1102,1106],{"type":16,"tag":525,"props":1098,"children":1101},{"x":480,"y":1099,"width":1100,"height":1091,"rx":541},"136","140",[],{"type":16,"tag":525,"props":1103,"children":1105},{"x":1104,"y":1099,"width":1100,"height":1091,"rx":541},"170",[],{"type":16,"tag":525,"props":1107,"children":1109},{"x":1108,"y":1099,"width":1100,"height":1091,"rx":541},"340",[],{"type":16,"tag":442,"props":1111,"children":1112},{"fill":476,"stroke":606},[1113,1117],{"type":16,"tag":525,"props":1114,"children":1116},{"x":446,"y":1089,"width":1115,"height":1091,"rx":541},"60",[],{"type":16,"tag":525,"props":1118,"children":1119},{"x":446,"y":1099,"width":1115,"height":1091,"rx":541},[],{"type":16,"tag":442,"props":1121,"children":1122},{"fontSize":444,"fill":476,"textAnchor":452},[1123,1129,1136,1142],{"type":16,"tag":21,"props":1124,"children":1127},{"x":1125,"y":1126},"125","63",[1128],{"type":21,"value":765},{"type":16,"tag":21,"props":1130,"children":1133},{"x":1131,"y":1132},"70","163",[1134],{"type":21,"value":1135},"Upload a zip",{"type":16,"tag":21,"props":1137,"children":1139},{"x":1138,"y":1132},"240",[1140],{"type":21,"value":1141},"Submit a job",{"type":16,"tag":21,"props":1143,"children":1145},{"x":1144,"y":1132},"410",[1146],{"type":21,"value":1147},"Fetch the result",{"type":16,"tag":442,"props":1149,"children":1150},{"fontSize":444,"fill":1095,"fontWeight":446,"textAnchor":452},[1151,1157],{"type":16,"tag":21,"props":1152,"children":1154},{"x":1153,"y":1126},"530",[1155],{"type":21,"value":1156},"PDF",{"type":16,"tag":21,"props":1158,"children":1159},{"x":1153,"y":1132},[1160],{"type":21,"value":1156},{"type":16,"tag":442,"props":1162,"children":1163},{"stroke":445,"fill":606},[1164,1170,1175,1179],{"type":16,"tag":1165,"props":1166,"children":1169},"line",{"x1":1167,"y1":527,"x2":1168,"y2":527},"256","492",[],{"type":16,"tag":1165,"props":1171,"children":1174},{"x1":1172,"y1":1173,"x2":577,"y2":1173},"144","158",[],{"type":16,"tag":1165,"props":1176,"children":1178},{"x1":602,"y1":1173,"x2":1177,"y2":1173},"334",[],{"type":16,"tag":1165,"props":1180,"children":1183},{"x1":1181,"y1":1173,"x2":1182,"y2":1173},"484","494",[],{"type":16,"tag":442,"props":1185,"children":1186},{"fill":445},[1187,1192,1196,1200],{"type":16,"tag":1188,"props":1189,"children":1191},"polygon",{"points":1190},"494,58 486,54 486,62",[],{"type":16,"tag":1188,"props":1193,"children":1195},{"points":1194},"166,158 160,154 160,162",[],{"type":16,"tag":1188,"props":1197,"children":1199},{"points":1198},"336,158 330,154 330,162",[],{"type":16,"tag":1188,"props":1201,"children":1203},{"points":1202},"496,158 490,154 490,162",[],{"type":16,"tag":29,"props":1205,"children":1207},{"id":1206},"_9-gotenberg",[1208],{"type":21,"value":1209},"9. Gotenberg",{"type":16,"tag":17,"props":1211,"children":1212},{},[1213,1217],{"type":16,"tag":49,"props":1214,"children":1215},{},[1216],{"type":21,"value":686},{"type":21,"value":1218}," teams that want to host the converter in their own network.",{"type":16,"tag":17,"props":1220,"children":1221},{},[1222],{"type":21,"value":1223},"Gotenberg is an open-source Docker image: headless Chromium for HTML, URLs and Markdown, and LibreOffice for Office files. You post files as a form and get the PDF back. It costs nothing to license, and you run, scale and patch the container, its browser and its fonts yourself.",{"type":16,"tag":17,"props":1225,"children":1226},{},[1227,1229,1235,1237,1243],{"type":21,"value":1228},"You can also hand an agent a browser of its own. Playwright's MCP server saves PDFs only when started with ",{"type":16,"tag":77,"props":1230,"children":1232},{"className":1231},[],[1233],{"type":21,"value":1234},"--caps=pdf",{"type":21,"value":1236},", and writes the file on the machine it runs on. The reference Puppeteer MCP server is archived and has no PDF tool. If you go that way, our guide to ",{"type":16,"tag":717,"props":1238,"children":1240},{"href":1239},"/guides/puppeteer-pdf-in-production/",[1241],{"type":21,"value":1242},"running Puppeteer's page.pdf() in production",{"type":21,"value":1244}," covers the memory and timeout traps.",{"type":16,"tag":29,"props":1246,"children":1248},{"id":1247},"how-did-we-pick-these-nine",[1249],{"type":21,"value":1250},"How did we pick these nine?",{"type":16,"tag":17,"props":1252,"children":1253},{},[1254],{"type":21,"value":1255},"We started from the tools AI assistants name most often when asked which PDF API to give an agent: Nutrient, DocRaptor, PDFMonkey, APITemplate.io, Adobe PDF Services and PDF Generator API. We added Api2Pdf, a hosted pay-per-use service, and Gotenberg, the self-hosted route. Prince is covered under DocRaptor, which runs it. We left out CraftMyPDF and Orshot, which are template editors first.",{"type":16,"tag":29,"props":1257,"children":1259},{"id":1258},"try-it-with-your-agent",[1260],{"type":21,"value":1261},"Try it with your agent",{"type":16,"tag":17,"props":1263,"children":1264},{},[1265,1267,1274],{"type":21,"value":1266},"In Claude Code it's one command, in the syntax from ",{"type":16,"tag":717,"props":1268,"children":1271},{"href":1269,"rel":1270},"https://code.claude.com/docs/en/mcp",[721],[1272],{"type":21,"value":1273},"Anthropic's Claude Code MCP docs",{"type":21,"value":1275},":",{"type":16,"tag":1277,"props":1278,"children":1283},"pre",{"className":1279,"code":1281,"language":1282,"meta":7},[1280],"language-bash","claude mcp add --transport http pdfshift https://api.pdfshift.io/mcp \\\n  --header \"X-API-Key: YOUR_PDFSHIFT_API_KEY\"\n","bash",[1284],{"type":16,"tag":77,"props":1285,"children":1286},{"__ignoreMap":7},[1287],{"type":21,"value":1281},{"type":16,"tag":17,"props":1289,"children":1290},{},[1291,1293,1299,1301,1307],{"type":21,"value":1292},"Then ask it for a PDF of a page you're working on. The config for Cursor, Claude Desktop and other clients is on the ",{"type":16,"tag":717,"props":1294,"children":1296},{"href":1295},"/agents/mcp/",[1297],{"type":21,"value":1298},"MCP setup page",{"type":21,"value":1300},". ",{"type":16,"tag":717,"props":1302,"children":1304},{"href":1303},"/register/",[1305],{"type":21,"value":1306},"Get a free API key",{"type":21,"value":1308}," and try it with your agent.",{"title":7,"searchDepth":1310,"depth":1310,"links":1311},2,[1312,1313,1314,1315,1316,1317,1318,1319,1320,1321,1322,1323,1324],{"id":31,"depth":1310,"text":34},{"id":112,"depth":1310,"text":115},{"id":675,"depth":1310,"text":678},{"id":816,"depth":1310,"text":819},{"id":858,"depth":1310,"text":861},{"id":907,"depth":1310,"text":910},{"id":940,"depth":1310,"text":943},{"id":973,"depth":1310,"text":976},{"id":1001,"depth":1310,"text":1004},{"id":1021,"depth":1310,"text":1024},{"id":1206,"depth":1310,"text":1209},{"id":1247,"depth":1310,"text":1250},{"id":1258,"depth":1310,"text":1261},"markdown","content:guides:best-pdf-api-for-ai-agents.md","content","guides/best-pdf-api-for-ai-agents.md","md",1793984627803]