Call Automation real time transcription fails with TranscriptionFailed 400 subcode 8565 on inbound PSTN calls

Ravi Namburi 0 Reputation points
2026-10-21T21:54:50.2666667+00:00

Inbound PSTN calls to an ACS phone number (UK geographic, data location UK) are answered with answer_call from the Python SDK azure-communication-callautomation 1.6.0, with TranscriptionOptions transport websocket, locale en-GB, start_transcription true, and cognitive_services_endpoint set to a custom subdomain endpoint.

The call connects and our websocket receives TranscriptionMetadata. TranscriptionStarted arrives with code 200. About three seconds later TranscriptionFailed arrives with code 400, subcode 8565, "Action failed due to a bad request to Cognitive Services. Please check your input parameters", transcriptionStatusDetails badRequest. No transcription data is ever sent. It happens on every call.

What we have tried, with a fresh call after each change:

  1. A multi service resource of kind AIServices, S0, UK South, custom subdomain.
  2. A multi service resource of kind CognitiveServices, S0, UK South, custom subdomain.
  3. A Speech only resource in UK South.
  4. All three connected to the ACS resource on its Cognitive Services tab.
  5. The ACS resource has a system assigned managed identity with Cognitive Services User on both multi service resources, with several minutes allowed for propagation.
  6. Public network access is Enabled on the AI resources.
  7. Our answer_call matches the Azure-Samples communication-services-python-quickstarts callautomation-live-transcription sample line for line.

The failure is identical in every case. The ACS resource is global with data location UK, the AI resources are in UK South. Is there a region or data location requirement we are missing, or a way to see what Cognitive Services is rejecting?

Azure Communication Services
0 comments No comments

1 answer

Sort by: Most helpful
  1. AI answer

    2026-10-21T21:55:57.49+00:00

    UK South is supported for this integration, so isolate the call to one linked multi-service Cognitive Services resource whose custom-subdomain endpoint exactly matches cognitive_services_endpoint, then collect ACS diagnostic logs and open an Azure support case if 400/8565 persists.

    Use only the supported resource configuration

    The ACS–Foundry integration supports a multi-service Cognitive Services resource, not a standalone Speech resource. It is supported in regions where Foundry is available, and UK South supports Azure Speech; therefore, an ACS resource with UK data location plus a multi-service resource in UK South is not shown as an unsupported pairing in the current documentation.^1^^2^

    1. In Azure portal → Communication Services resource → Cognitive Services, temporarily disconnect the standalone Speech resource and any multi-service resource not used by the request.
    2. Leave one supported multi-service resource connected.
    3. In that resource, copy its custom subdomain endpoint.
    4. Pass that exact endpoint as cognitive_services_endpoint; do not use a generic regional endpoint or the endpoint belonging to another connected resource.
    5. Place a fresh call.

    This is not a retry of the RBAC work already completed; it removes ambiguity between the three connected resources and the endpoint selected at runtime. The documented prerequisites are a connected AI resource and custom subdomain.^3^

    en-GB is a supported Speech locale, and it includes the required region component, so the reported event does not point to the “locale missing/invalid” condition, which uses subcode 8523 rather than 8565.^4^

    What 400/8565 establishes

    For transcription, Microsoft documents 400/8565 as either:

    • A bad request sent to Cognitive Services.
    • A request to Cognitive Services that timed out.

    The same subcode is also used with different HTTP statuses for authentication, subscription, and quota failures. Consequently, 8565 alone does not expose which downstream parameter Cognitive Services rejected.^3^

    Receiving TranscriptionMetadata proves that ACS reached the WebSocket. TranscriptionStarted followed by a downstream 400 indicates that this is later than initial call establishment; changing PSTN-answer handling or WebSocket connectivity is therefore unlikely to reveal the Cognitive Services rejection.

    Capture the service-side evidence

    Enable diagnostics before another reproduction:

    1. Open Communication Services resource → Monitoring → Diagnostic settings.
    2. Add a setting targeting a Log Analytics workspace.
    3. Enable:
      • Operation Call Automation Logs
      • Call Automation Events Summary Logs
      • Call Automation Media Streaming features usage information Logs
    4. Reproduce once and record the UTC timestamp.
    5. Query by CallConnectionId, CorrelationID, or ServerCallId.

    These logs expose the SDK version, operation/result status, HTTP signature, call identifiers, and transcription streaming session information.^5^

    A starting Log Analytics query is:

    search *
    | where TimeGenerated > ago(2h)
    | where tostring(CallConnectionId) == "<call-connection-id>"
       or tostring(CorrelationID) == "<correlation-id>"
    | project TimeGenerated, Category, OperationName,
              ResultType, ResultSignature, CorrelationID,
              CallConnectionId, ServerCallId, SDKVersion, Properties
    | order by TimeGenerated asc
    

    Also retain:

    • x-ms-call-correlation-id and x-ms-call-connection-id from the transcription WebSocket headers.
    • The callback event’s correlation ID.
    • X-Ms-Skype-Chain-Id from the API response headers, if available.
    • Exact UTC failure time, AI resource ID/type/region, endpoint hostname, and SDK version.

    Microsoft identifies those IDs and the timestamp as the information needed to trace a Call Automation failure.^6^

    If the single-resource test still returns 400/8565, submit an Azure support request under Azure Communication Services → Assistance with development with that evidence. Public diagnostics may show the failing operation but do not provide the body of ACS’s internal Cognitive Services request; support must correlate the ACS and downstream service traces.


    References

    1. Connect Azure Communication Services with Foundry Tools
    2. Supported regions for Azure Speech
    3. Add real-time transcription into your applications - An Azure ...
    4. Language and Voice Support for Azure Speech - Foundry Tools
    5. Azure Communication Services Call Automation logs
    6. Troubleshooting in Azure Communication Services
    AI-generated content may be incorrect. Read our transparency notes for more information.

    Was this answer helpful?

Your answer

Answers can be marked as 'Accepted' by the question author and 'Recommended' by moderators, which helps users know the answer solved the author's problem.