> Fetch clean Markdown by appending `.md` to any page URL under https://signalwire.com/docs or requesting it with the HTTP header `Accept: text/markdown`. The root index at https://signalwire.com/docs/llms.txt lists the available documentation indexes. # refer > Transfer a SIP call to an external endpoint via SIP REFER. [transfer]: /docs/server-sdks/reference/typescript/relay/call/transfer [calling-call-refer]: /docs/server-sdks/reference/typescript/relay/call#events [call-events]: /docs/server-sdks/reference/typescript/relay/call#events Transfer a SIP call to an external SIP endpoint using the SIP REFER method. Unlike [`transfer()`][transfer] which transfers control within Relay, `refer()` performs a SIP-level transfer to an external endpoint. > **Info** > > This method emits [`calling.call.refer`][calling-call-refer] events. See [Call Events][call-events] for payload details. ## **Parameters** **`device`** `Record` — required The target SIP device for the REFER. --- **`device.type`** `string` — required Device type. Typically `"sip"`. --- **`device.params`** `Record` — required SIP parameters including `uri` (the SIP URI to refer to). --- **`statusUrl`** `string | undefined` URL to receive REFER status webhooks. --- ## **Returns** `Promise>` -- Server response confirming the refer operation. ## **Example** ```typescript {13} import { RelayClient } from '@signalwire/sdk'; const client = new RelayClient({ project: process.env.SIGNALWIRE_PROJECT_ID!, token: process.env.SIGNALWIRE_API_TOKEN!, contexts: ['default'] }); client.onCall(async (call) => { await call.answer(); await call.play([{ type: 'tts', text: 'Transferring to another line.' }]); const result = await call.refer({ type: 'sip', params: { uri: 'sip:support@example.com' }, }); console.log(`SIP REFER result: ${JSON.stringify(result)}`); }); await client.run(); ``` > Transfer a SIP call to an external endpoint via SIP REFER.