Power Automate Integration
Convert PDFs to structured data inside Microsoft Power Automate using the PDFPipe API. This guide walks through the complete setup using the built-in HTTP action - no custom connector required.
Create a new flow
Open Power Automate and create a new Automated cloud flow or Instant cloud flow. Choose a trigger that provides a PDF URL, for example:
- SharePoint - "When a file is created or modified", then a Create sharing link action set to "Anyone with the link" so the URL is publicly fetchable
- Outlook - "When a new email arrives" where the email body contains a public PDF link
- Manual trigger - for testing, with a public PDF URL as input
URL_UNAUTHORIZED, URL_FORBIDDEN, or REDIRECT_TO_LOGIN. Use an anonymous sharing link, a public URL, or a link with its access token in the URL. Email attachments themselves are not URLs and cannot be sent to PDFPipe directly.Add an HTTP action to call PDFPipe
Add a new step and search for the HTTP action (built-in). Configure it:
- Method: POST
- URI:
https://api.pdfpipe.dev/v1/convert - Headers:
Authorization:Bearer pk_your_key_hereContent-Type:application/json
Set the Body to:
{
"url": "@{triggerOutputs()?['body/Link']}",
"format": "json",
"returnMethod": "inline"
}Replace the dynamic expression with the URL from your trigger. Use "format": "text" or "markdown" if you prefer a different output. Remove "returnMethod": "inline" to use the default presigned resultUrl instead.
Handle the response
For small PDFs (<10 MB), you'll get a synchronous 200. With returnMethod: "inline", the body has content (a string) and contentType. With the default file delivery, use resultUrl. Add a Parse JSON action after the HTTP step to extract the fields; for format: "json" add a second Parse JSON on content (using json(body('Parse_JSON')?['content'])) to reach pages[].text, metadata, and totalPages.
For larger files, the response is 202 with a pollUrl. Add a Do Until loop:
- Inside the loop, add an HTTP GET action to
https://api.pdfpipe.dev@{body('Convert_PDF')?['pollUrl']}(append?returnMethod=inlineto includecontentwhen complete) - Set the loop condition to continue until status equals
complete - Add a Delay of 5 seconds between iterations
@equals(body('Poll_Status')?['status'], 'complete')Use the result
Once the status is complete, use the resultUrl in a follow-up HTTP GET action to download the converted data. From there you can:
- Save the JSON or text output to SharePoint or OneDrive
- Send extracted text via Teams or Outlook
- Insert one row per page into Excel or Dataverse
- Pass the page text to AI Builder or Copilot to pull out fields like totals or dates (PDFPipe itself returns text, not fields)
Error handling (recommended)
Wrap your HTTP actions in a Scope action and add a parallel branch with "Configure run after" set to "has failed". This lets you log errors or send notifications when a conversion fails.
PDFPipe returns structured error codes (see the error reference) that you can parse to determine whether to retry or alert.
Tips
- Store your API key in a Power Automate Environment Variable or Azure Key Vault rather than hard-coding it.
- For batch processing multiple PDFs, see the Batch Processing guide.
- Use
"format": "markdown"when feeding results to AI Builder or GPT-based Copilot actions.