Skip to content

Click-to-call (originate)

POST
/api/v2/nova/calls
curl --request POST \
--url https://api.sipstack.com/api/v2/nova/calls \
--header 'Content-Type: application/json' \
--header 'x-api-key: <x-api-key>' \
--data '{ "from": "1001", "to": "+14165550100" }'

Places an outbound “click-to-call” for your organization using an answer-first callback: SIPSTACK rings your own extension (from) for about 2 rings, and only once you answer does it dial the destination (to). This mirrors picking up your deskphone and dialing — the outbound caller-ID, suspended-outbound gating, and international/emergency routing all come from that extension’s own dialplan (a caller cannot spoof another number).

  • No voicemail. An unanswered from leg fails cleanly after ~2 rings; it never rolls to voicemail, and the destination is never dialed.
  • Offline device → nothing happens. If your extension is not registered, the call fails at the switch with no destination call.
  • Requires the calls:write scope.

:::note Click-to-call must be enabled for API access on your organization. Until it is, this endpoint returns 403 — the read endpoints below are unaffected. :::

Media type application/json
object
from
required

One of your organization’s provisioned, enabled extension numbers. The call is placed as if this extension dialed it.

string
Example
1001
to
required

Destination phone number (optional leading +, 3–20 digits). Feature codes, extensions, and emergency numbers are rejected.

string
Example
+14165550100

Origination accepted — your extension is ringing.

Media type application/json
object
success
boolean
data
object
status
string
from
string
to
string
Example
{
"success": true,
"data": {
"status": "originating",
"from": "1001",
"to": "+14165550100"
}
}

Missing from, or to is not a valid dialable number (feature codes / extensions / emergency numbers are rejected).

Media type application/json

Inline error shape used by the messaging API and management endpoints.

object
success
boolean
error
string
Example
{
"success": false,
"error": "Recipient phone number (to) is required"
}

Missing or invalid API key.

Media type application/json

Inline error shape used by the messaging API and management endpoints.

object
success
boolean
error
string
Example
{
"success": false,
"error": "Recipient phone number (to) is required"
}

Click-to-call is not enabled for API access, or the key is missing the calls:write scope.

Media type application/json

Inline error shape used by the messaging API and management endpoints.

object
success
boolean
error
string
Example
{
"success": false,
"error": "Recipient phone number (to) is required"
}

No Nova PBX is provisioned, or from is not one of your extensions.

Media type application/json

Inline error shape used by the messaging API and management endpoints.

object
success
boolean
error
string
Example
{
"success": false,
"error": "Recipient phone number (to) is required"
}

The from extension is disabled.

Media type application/json

Inline error shape used by the messaging API and management endpoints.

object
success
boolean
error
string
Example
{
"success": false,
"error": "Recipient phone number (to) is required"
}

The voice node is offline or temporarily unavailable — retry shortly.

Media type application/json

Inline error shape used by the messaging API and management endpoints.

object
success
boolean
error
string
Example
{
"success": false,
"error": "Recipient phone number (to) is required"
}