Configure the endpoint Speechify asks to identify an inbound caller.
On an inbound call from a number nobody has linked yet, Speechify
POSTs {channel, identifier, agent_id, conversation_id} to this URL,
signed with the same Speechify-Signature scheme as webhooks, and
expects {external_id, display_name?, variables?} back. The contact
attaches before the first token is generated, so {{memory}} is
populated on the agent’s opening line.
The call FAILS OPEN on a sub-second deadline. A slow, unreachable or
malformed response degrades to a call with no contact and no memory
block - never a failed call and never a delayed answer. Answers are
cached briefly per (workspace, identifier kind, identifier value), so a
repeat caller does not re-hit your backend; they are scoped to the
configuration that produced them, so changing the URL takes effect at
once rather than after the cache window.
One resolver per workspace: this endpoint sets it, and re-sending the
same body is a no-op. Configuring for the first time mints a signing
secret and returns it once; later edits keep the secret you already
deployed a verifier against and return it blank.
The URL must be https and must resolve to a public address. A
loopback, private-range or cloud-metadata host is rejected here, and
blocked again at dial time.