Introduction
In today’s intelligent document processing scenarios, extracting information from a document is only one part of the automation journey. The real business value comes from what happens after the data is extracted.
For example, an invoice can be processed by SAP Document AI, but the extracted invoice number, vendor, amount, or other metadata may then need to be sent to an external application, validated against another system, or used to trigger a downstream business process.
This is where the External Call node in SAP Document AI workflows becomes particularly useful.
The External Call node enables a Document AI workflow to communicate with external systems and APIs using HTTP requests. It can retrieve information from an external API or send extracted document information to another application for further processing.
What is the External Call Node?
The External Call node allows an SAP Document AI workflow to make an HTTP request to an external system.
The communication is handled through an outbound channel, which provides the connection details required to communicate with the target system, including:
Base URLAuthenticationConnection settings
The External Call node can be used with HTTP GET and POST requests.
A simplified flow looks like this:
Document → SAP Document AI → Extraction → External Call → External System → Response → Next Workflow Step
This makes the External Call node useful for extending Document AI beyond document extraction and connecting it with broader business processes.
Common Use Cases
There are several practical scenarios where the External Call node can be used.
1. Sending extracted invoice data to another system
Suppose SAP Document AI extracts:
Invoice numberVendor nameInvoice dateNet amountTax amountTotal amountCurrency
The workflow can send these values to an external application using a POST request.
For example:
{
“documentId”: “${documentClassifier.fetchValue(“documentType”)}”,
“documentNumber”: “${invoiceExtraction.fetchValue(“documentNumber”)}”,
“invoiceDate”: “${invoiceExtraction.fetchValue(“documentDate”)}”,
“vendorName”: “${invoiceExtraction.fetchValue(“vendorName”)}”,
“totalAmount”: “${invoiceExtraction.fetchValue(“totalAmount”)}”,
“currency”: “${invoiceExtraction.fetchValue(“currency”)}”
}
The receiving system could then create an invoice record, trigger validation, or start another business process.
2. Retrieving information from an external system
The External Call node can also be used with a GET request.
For example, after extracting a vendor ID from an invoice, the workflow could call an external API to retrieve additional vendor information.
The workflow could then use the response in subsequent workflow steps.
Document AI Extraction
↓
Extract Vendor ID
↓
External Call – GET
↓
External Vendor API
↓
Vendor Information
↓
Condition / Validation
↓
Next Workflow Step
Configuring an External Call Node
Before configuring the External Call node, at least one active outbound channel must be available in SAP Document AI.
The channel defines how SAP Document AI connects to the external system.
Once an active channel is available, the External Call node can be configured with the following parameters.
1. Identifier
The Identifier is mandatory.
It is the technical name of the workflow node and can later be referenced when accessing the node’s outputs.
For example:
externalCallNode_1
2. Label
The Label is optional and is primarily used to provide a meaningful description for the node.
For example:
Get Vendor Details
Using meaningful labels can make complex workflows easier to understand and maintain.
3. Channel ID
The Channel ID is mandatory.
This determines which outbound channel is used for the HTTP request.
The selected channel provides the:
Base URLAuthentication detailsConnection configuration
For example, you might configure a channel pointing to:
https://api.example.com
and then use the External Call node to append a specific API path.
If the selected channel is inactive when the workflow is executed, the External Call will fail.
4. URL Suffix
The URL Suffix is optional and allows you to append an additional path or query string to the channel’s base URL.
For example:
/api/users/123
You can also dynamically construct the URL using workflow expressions.
Static URL
/api/users/123
Dynamic URL
/api/invoices/${invoiceExtraction.fetchValue(“invoiceNumber”)}
Query parameters
/search?query=${invoiceExtraction.fetchValue(“vendorName”)}
This makes it possible to use values extracted by Document AI dynamically when calling external APIs.
Important consideration
SAP Document AI does not automatically URL-encode or escape values resolved from expressions.
Therefore, values inserted into query parameters should be appropriately URL-encoded.
The URL Suffix also does not allow certain characters, including:
< > ^ ` |
Curly braces must be used correctly when expressions are involved.
5. HTTP Method
The HTTP Method is mandatory.
The supported methods described for the External Call node are:
GET – typically used to retrieve informationPOST – typically used to send data to an external system
The default method is:
GET
The Payload Data field becomes available when POST is selected.
6. Success Status Codes
The Success Status Codes parameter determines which HTTP responses should be considered successful.
The default configuration is:
2xx
This means any 2xx HTTP response is treated as successful.
You can also specify individual status codes or combinations.
For example:
200,201
This accepts HTTP 200 and 201.
Another example:
2xx,3xx
This accepts both successful and redirect responses.
A particularly useful scenario is:
200,404
For example, if the workflow checks whether a record exists in an external system, both 200 and 404 might be valid business outcomes rather than technical failures.
If the returned HTTP status code does not match the configured success codes, the workflow follows the error-handling path.
7. Payload Data
The Payload Data field is available for POST requests.
It defines the JSON body sent to the external system.
For example:
{
“name”: “John Doe”,
“age”: 30
}
The real power comes from combining static JSON with Document AI workflow expressions.
For example:
{
“documentNumber”: “${invoiceExtraction.fetchValue(“documentNumber”)}”,
“vendorName”: “${invoiceExtraction.fetchValue(“vendorName”)}”,
“totalAmount”: ${invoiceExtraction.fetchValue(“totalAmount”)}
}
This allows extracted document information to be passed directly to an external API.
Be careful with data types
When building JSON dynamically, pay attention to whether the extracted value is a:
StringNumberBooleanObjectArray
For example, a string should normally be represented as a JSON string, while a boolean or number should not unnecessarily be surrounded by quotation marks.
SAP Document AI validates the JSON structure in real time, which helps identify malformed payloads before execution.
Understanding External Call Outputs
One of the most useful aspects of the External Call node is that its response can be consumed by downstream workflow nodes.
The node exposes two important methods:
getStatusCode()
and
getResponseJson()
getStatusCode()
The getStatusCode() method returns the HTTP status code received from the external system.
Example:
externalCallNode_1.getStatusCode()
If the API returns:
200
the expression evaluates to:
200
This can be particularly useful in a Condition node.
For example:
externalCallNode_1.getStatusCode() == 200
The workflow can then take different paths depending on the result.
getResponseJson()
The getResponseJson() method returns the response body as a JSON object.
For example, suppose the external API returns:
{
“id”: “12345”,
“data”: [
{
“name”: “Item A”
},
{
“name”: “Item B”
}
],
“timestamp”: “2026-04-02T10:30:00Z”
}
The workflow can navigate through this response using .get() and .item().
Accessing a JSON Field
To retrieve the id:
externalCallNode_1.getResponseJson().get(“id”)
Result:
“12345”
Accessing an Array
To retrieve the complete data array:
externalCallNode_1.getResponseJson().get(“data”)
Accessing an Array Element
Array indexes are zero-based.
Therefore:
externalCallNode_1.getResponseJson().get(“data”).item(0)
returns:
{
“name”: “Item A”
}
To retrieve the name:
externalCallNode_1.getResponseJson().get(“data”).item(0).get(“name”)
Result:
“Item A”
This provides a convenient way to consume API responses without having to process the complete JSON manually.
Important: ${} vs Expression Syntax
One detail that is easy to miss is how expressions are written depending on where they are used.
URL Suffix or Payload Data
When embedding an expression inside a string or JSON payload, use:
${externalCallNode_1.getResponseJson().get(“id”)}
Expression-only fields
For fields such as a Condition Expression, use the expression directly:
externalCallNode_1.getStatusCode() == 200
Understanding this distinction helps avoid expression configuration errors.
CSRF Considerations
Another scenario to be aware of is an error while relaying the request to the destination.
This can occur when the target system does not correctly support or handle CSRF tokens.
If this happens, verify whether the receiving system supports the required CSRF mechanism and review the outbound channel configuration.
This becomes particularly relevant when integrating Document AI with enterprise applications that enforce CSRF protection.
Key Takeaways
The External Call node in SAP Document AI provides a straightforward way to integrate document-processing workflows with external APIs and applications.
The most important points to remember are:
An active outbound channel is required.The channel provides the base URL, authentication, and connection configuration.GET can be used to retrieve information.POST can be used to send JSON data.URL Suffixes can contain dynamic workflow expressions.Payload Data supports dynamic values using workflow expressions.Success Status Codes can be customized.The default timeout is 30 seconds.getStatusCode() provides the HTTP response status.getResponseJson() provides access to the JSON response..get() can be used to retrieve JSON fields..item() can be used to access array elements.Responses can be reused in downstream workflow nodes.URL and JSON values are not automatically encoded or escaped, so the data must be formatted correctly.
Conclusion
SAP Document AI is not limited to extracting information from documents. With workflow capabilities such as the External Call node, extracted information can be connected to external APIs and downstream applications, enabling more complete end-to-end automation.
For organizations building invoice, purchase order, supplier, or other document-centric processes, this capability provides a practical way to connect document intelligence with business applications and automation workflows.
The key idea is simple:
Extract the information, call the right system, process the response, and continue the business process.
That is where document processing starts becoming true end-to-end automation.
IntroductionIn today’s intelligent document processing scenarios, extracting information from a document is only one part of the automation journey. The real business value comes from what happens after the data is extracted.For example, an invoice can be processed by SAP Document AI, but the extracted invoice number, vendor, amount, or other metadata may then need to be sent to an external application, validated against another system, or used to trigger a downstream business process.This is where the External Call node in SAP Document AI workflows becomes particularly useful.The External Call node enables a Document AI workflow to communicate with external systems and APIs using HTTP requests. It can retrieve information from an external API or send extracted document information to another application for further processing.What is the External Call Node?The External Call node allows an SAP Document AI workflow to make an HTTP request to an external system.The communication is handled through an outbound channel, which provides the connection details required to communicate with the target system, including:Base URLAuthenticationConnection settingsThe External Call node can be used with HTTP GET and POST requests.A simplified flow looks like this:Document → SAP Document AI → Extraction → External Call → External System → Response → Next Workflow StepThis makes the External Call node useful for extending Document AI beyond document extraction and connecting it with broader business processes.Common Use CasesThere are several practical scenarios where the External Call node can be used.1. Sending extracted invoice data to another systemSuppose SAP Document AI extracts:Invoice numberVendor nameInvoice dateNet amountTax amountTotal amountCurrencyThe workflow can send these values to an external application using a POST request.For example:{
“documentId”: “${documentClassifier.fetchValue(“documentType”)}”,
“documentNumber”: “${invoiceExtraction.fetchValue(“documentNumber”)}”,
“invoiceDate”: “${invoiceExtraction.fetchValue(“documentDate”)}”,
“vendorName”: “${invoiceExtraction.fetchValue(“vendorName”)}”,
“totalAmount”: “${invoiceExtraction.fetchValue(“totalAmount”)}”,
“currency”: “${invoiceExtraction.fetchValue(“currency”)}”
}The receiving system could then create an invoice record, trigger validation, or start another business process.2. Retrieving information from an external systemThe External Call node can also be used with a GET request.For example, after extracting a vendor ID from an invoice, the workflow could call an external API to retrieve additional vendor information.The workflow could then use the response in subsequent workflow steps.Document AI Extraction
↓
Extract Vendor ID
↓
External Call – GET
↓
External Vendor API
↓
Vendor Information
↓
Condition / Validation
↓
Next Workflow StepConfiguring an External Call NodeBefore configuring the External Call node, at least one active outbound channel must be available in SAP Document AI.The channel defines how SAP Document AI connects to the external system.Once an active channel is available, the External Call node can be configured with the following parameters.1. IdentifierThe Identifier is mandatory.It is the technical name of the workflow node and can later be referenced when accessing the node’s outputs.For example:externalCallNode_12. LabelThe Label is optional and is primarily used to provide a meaningful description for the node.For example:Get Vendor DetailsUsing meaningful labels can make complex workflows easier to understand and maintain.3. Channel IDThe Channel ID is mandatory.This determines which outbound channel is used for the HTTP request.The selected channel provides the:Base URLAuthentication detailsConnection configurationFor example, you might configure a channel pointing to:https://api.example.comand then use the External Call node to append a specific API path.If the selected channel is inactive when the workflow is executed, the External Call will fail.4. URL SuffixThe URL Suffix is optional and allows you to append an additional path or query string to the channel’s base URL.For example:/api/users/123You can also dynamically construct the URL using workflow expressions.Static URL/api/users/123Dynamic URL/api/invoices/${invoiceExtraction.fetchValue(“invoiceNumber”)}Query parameters/search?query=${invoiceExtraction.fetchValue(“vendorName”)}This makes it possible to use values extracted by Document AI dynamically when calling external APIs.Important considerationSAP Document AI does not automatically URL-encode or escape values resolved from expressions.Therefore, values inserted into query parameters should be appropriately URL-encoded.The URL Suffix also does not allow certain characters, including:< > ^ ` |Curly braces must be used correctly when expressions are involved.5. HTTP MethodThe HTTP Method is mandatory.The supported methods described for the External Call node are:GET – typically used to retrieve informationPOST – typically used to send data to an external systemThe default method is:GETThe Payload Data field becomes available when POST is selected.6. Success Status CodesThe Success Status Codes parameter determines which HTTP responses should be considered successful.The default configuration is:2xxThis means any 2xx HTTP response is treated as successful.You can also specify individual status codes or combinations.For example:200,201This accepts HTTP 200 and 201.Another example:2xx,3xxThis accepts both successful and redirect responses.A particularly useful scenario is:200,404For example, if the workflow checks whether a record exists in an external system, both 200 and 404 might be valid business outcomes rather than technical failures.If the returned HTTP status code does not match the configured success codes, the workflow follows the error-handling path.7. Payload DataThe Payload Data field is available for POST requests.It defines the JSON body sent to the external system.For example:{
“name”: “John Doe”,
“age”: 30
}The real power comes from combining static JSON with Document AI workflow expressions.For example:{
“documentNumber”: “${invoiceExtraction.fetchValue(“documentNumber”)}”,
“vendorName”: “${invoiceExtraction.fetchValue(“vendorName”)}”,
“totalAmount”: ${invoiceExtraction.fetchValue(“totalAmount”)}
}This allows extracted document information to be passed directly to an external API.Be careful with data typesWhen building JSON dynamically, pay attention to whether the extracted value is a:StringNumberBooleanObjectArrayFor example, a string should normally be represented as a JSON string, while a boolean or number should not unnecessarily be surrounded by quotation marks.SAP Document AI validates the JSON structure in real time, which helps identify malformed payloads before execution.Understanding External Call OutputsOne of the most useful aspects of the External Call node is that its response can be consumed by downstream workflow nodes.The node exposes two important methods:getStatusCode()andgetResponseJson()getStatusCode()The getStatusCode() method returns the HTTP status code received from the external system.Example:externalCallNode_1.getStatusCode()If the API returns:200the expression evaluates to:200This can be particularly useful in a Condition node.For example:externalCallNode_1.getStatusCode() == 200The workflow can then take different paths depending on the result.getResponseJson()The getResponseJson() method returns the response body as a JSON object.For example, suppose the external API returns:{
“id”: “12345”,
“data”: [
{
“name”: “Item A”
},
{
“name”: “Item B”
}
],
“timestamp”: “2026-04-02T10:30:00Z”
}The workflow can navigate through this response using .get() and .item().Accessing a JSON FieldTo retrieve the id:externalCallNode_1.getResponseJson().get(“id”)Result:”12345″Accessing an ArrayTo retrieve the complete data array:externalCallNode_1.getResponseJson().get(“data”)Accessing an Array ElementArray indexes are zero-based.Therefore:externalCallNode_1.getResponseJson().get(“data”).item(0)returns:{
“name”: “Item A”
}To retrieve the name:externalCallNode_1.getResponseJson().get(“data”).item(0).get(“name”)Result:”Item A”This provides a convenient way to consume API responses without having to process the complete JSON manually.Important: ${} vs Expression SyntaxOne detail that is easy to miss is how expressions are written depending on where they are used.URL Suffix or Payload DataWhen embedding an expression inside a string or JSON payload, use:${externalCallNode_1.getResponseJson().get(“id”)}Expression-only fieldsFor fields such as a Condition Expression, use the expression directly:externalCallNode_1.getStatusCode() == 200Understanding this distinction helps avoid expression configuration errors.CSRF ConsiderationsAnother scenario to be aware of is an error while relaying the request to the destination.This can occur when the target system does not correctly support or handle CSRF tokens.If this happens, verify whether the receiving system supports the required CSRF mechanism and review the outbound channel configuration.This becomes particularly relevant when integrating Document AI with enterprise applications that enforce CSRF protection. Key TakeawaysThe External Call node in SAP Document AI provides a straightforward way to integrate document-processing workflows with external APIs and applications.The most important points to remember are:An active outbound channel is required.The channel provides the base URL, authentication, and connection configuration.GET can be used to retrieve information.POST can be used to send JSON data.URL Suffixes can contain dynamic workflow expressions.Payload Data supports dynamic values using workflow expressions.Success Status Codes can be customized.The default timeout is 30 seconds.getStatusCode() provides the HTTP response status.getResponseJson() provides access to the JSON response..get() can be used to retrieve JSON fields..item() can be used to access array elements.Responses can be reused in downstream workflow nodes.URL and JSON values are not automatically encoded or escaped, so the data must be formatted correctly.ConclusionSAP Document AI is not limited to extracting information from documents. With workflow capabilities such as the External Call node, extracted information can be connected to external APIs and downstream applications, enabling more complete end-to-end automation.For organizations building invoice, purchase order, supplier, or other document-centric processes, this capability provides a practical way to connect document intelligence with business applications and automation workflows.The key idea is simple:Extract the information, call the right system, process the response, and continue the business process.That is where document processing starts becoming true end-to-end automation. Read More Technology Blog Posts by Members articles
#SAP
#SAPTechnologyblog