Architect GetExternalContactAction returns null result on ANI lookup

Problem
We’re attempting to pull customer records from our legacy CRM using the GetExternalContactAction in Architect. The objective is to match the incoming ANI against the phone field in the external system. The integration endpoint’s live and returns valid JSON when tested in Postman. The flow keeps dropping the lookup result though. Queue metrics are completely flat.

Code / JSON Payload
Here is the action configuration we’ve deployed:

{
 "type": "GetExternalContactAction",
 "settings": {
 "contactKey": "ANI",
 "endpointId": "ext-int-crm-01",
 "httpMethod": "GET",
 "uriTemplate": "/api/customers/phone/{contactKey}",
 "timeout": 5000
 }
}

The routing script passes the ANI correctly. We’ve verified the contactKey matches the flow variable exactly. Variable mapping looks fine on paper.

Error / Output
The action returns a 200 OK but the result object stays null. The debug trace shows the external call completes, yet the externalContactData field never populates. Sometimes we see a 400 Bad Request on the retry step. URI substitution probably doesn’t handle the leading +1 properly. Just guessing here. The timeout is set to 5000ms, which should be plenty. We checked the raw HTTP headers in the trace. Nothing stands out.

Question
Does the uriTemplate require explicit URL encoding for the contact key? We tried swapping contactKey for FlowData.ANI directly in the template. The action just fails with a malformed URL error. The endpoint expects a plain string match. We need the exact syntax for passing the phone number into the template without breaking the HTTP request. The queue dashboard shows zero successful lookups for the last three shifts.