An Azure service that turns documents into usable data. Previously known as Azure Form Recognizer.
Welcome to Microsoft Q&A and Thank you for reaching out.
A single POST call does not return the JSON result immediately it only starts the analysis and gives you an operation-location URL in the response headers. You need to follow these steps:
Correct Workflow for Custom Extract & Classification in Power Automate
- POST to Start Analysis
Headers
Ocp-Apim-Subscription-Key: <your key>
Content-Type: application/json
Body (example for PDF in Blob or Base64)
{
"urlSource": "https://<your-storage-account>.blob.core.windows.net/<container "urlSource": "https://<your-storage-account>.blob.core.windows.net/<container>/<file>.pdf"
Response: You will not get the JSON result here. Instead, you get:
202 Accepted operation-location: https://east-us.api.cognitive.microsoft.com/formrecognizer/documentModels/PrimalEssenceExtract/analyzeResults/<resultId>?api-version=2025-10-01
GET the Result
- Use the
operation-locationURL from the header. - Make a GET request to that URL.
- Keep polling until
statusbecomes"succeeded"or"failed".{ "status": "succeeded", "analyzeResult": { "documents": [ { "fields": { ... }, "confidence": 0.98 } ] } }
How to Implement in Power Automate
- Step 1: HTTP POST → capture
operation-locationheader. - Step 2: Add a Do Until loop:
- Inside loop: HTTP GET to
operation-location. - Condition:
body('GET')?['status']equals"succeeded".
- Inside loop: HTTP GET to
- Step 3: Parse JSON from
analyzeResultand create your records.
Notes:
- If your flow hangs, it’s likely because you’re waiting for the POST to return JSON (it never will).
- Ensure you use async polling with the
operation-locationheader. - Check that your model name (
PrimalEssenceExtract) exists and is trained/published.
I Hope this helps. Do let me know if you have any further queries.
Thank you!