Hipcall Developers Knowledgebase / Quick Dial

What Is Quick Dial and How Is It Done?

Hipcall quick dial is a service that queries a third-party provider for the number to be dialed and initiates the call automatically. The user performing the quick dial does not need to know the phone number of the person they are trying to reach.

Updated October 14, 2026
Read 7 min
On this page

Overview

Hipcall's speed dial feature determines the destination number for an incoming call by asking your web service. For example, a courier needs to call the person who placed an order, but data protection law means they must not know that person's number. The courier dials the speed dial's extension and enters the order number; Hipcall sends this information to your server and calls the destination number it returns. The courier talks to the customer but never sees the number.

Before you start

  • The API feature must be active on your Hipcall plan.
  • Your service must be reachable over the internet. During development, you can use ngrok or a similar tunneling tool.

Step 1: Create a speed dial entry

In the Hipcall panel, go to Settings → Developer → Speed Dial and click the New button. Fill in the following fields in the form that opens:

Field Description
Name The name you give the speed dial entry (e.g. "Order Call").
Extension number An extension number from 10 to 9999 (e.g. 72). The courier dials this number to start the speed dial.
URL The address of your web service (e.g. https://xxxx.ngrok-free.app/hizli-arama). Hipcall sends a POST request to this address.
Web service authentication Optional. If you check it, the Username and Password fields appear. Hipcall sends its requests with the Authorization: Basic <Base64> header.

You also need to upload two announcements:

  • Intro announcement before calling the number: The audio file played to the user for the digit entry (e.g. "Please enter the order number.").
  • Announcement to play if the service fails: The audio file played when the web service fails.

Step 2: Route a phone number to the speed dial

Creating the speed dial entry is not enough on its own. To route incoming calls to this entry, you need to assign a phone number to the speed dial:

  1. Go to Settings → Phone System → Phone Numbers.
  2. Select the number you want to route to the speed dial.
  3. Switch to the Business Hours tab.
  4. In the Business hours target field, select the speed dial extension number you created.
    Once this is set, calls that reach the number play the announcement first and are then routed to your web service.

How it works

  1. The user dials the speed dial's extension number (e.g. 72).
  2. Hipcall sends a call_init event to your webhook URL.
  3. The system plays the intro announcement you uploaded (e.g. "Please enter the order number.").
  4. The user enters the order number (e.g. 1234).
  5. Hipcall sends the entered value to your web service with an HTTP POST.
  6. Your web service returns the destination number.
  7. Hipcall calls the destination number and connects the user.

Request format from Hipcall

After the user finishes entering digits, Hipcall sends a POST request with the following structure to your web service URL:

{
"timestamp": 1791891730,
"number": "1234",
"uuid": "e785****-****-****-****-********87e5",
"user_id": null,
"speed_dial_id": 19
}

Request fields

Field Type Description
timestamp integer Unix timestamp of the request.
number string The DTMF digits the user entered. Your order code is in this field.
uuid string Unique ID of the call.
user_id integer / null ID of the Hipcall user who started the call. Can be null if the call comes in over an external line.
speed_dial_id integer ID of the speed dial entry that was triggered.

Note: If you enabled authentication, Hipcall sends the value Basic <Base64> in the request's Authorization header. Your web service must validate this header.

Expected response from your web service

Hipcall expects the destination number to call in the destination field of your web service's response:

{ "destination": "90530XXXXXXX" }

Return the phone number with its area code, as a string made up of digits and nothing else (e.g. 90530XXXXXXX).

Webhook events

During the speed dial process, Hipcall sends events that report the call's lifecycle to your webhook URL. These events occur in this order: call_init, call_bridged, and call_hangup.

call_init — Call started

The event sent when the call first starts. The call_flow array contains an init action of type speed_dial:

{
"data": {
"caller_number": "+90551XXXXXXX",
"callee_number": "+90850XXXXXXX",
"uuid": "e785****-****-****-****-********87e5",
"direction": "inbound",
"channel_id": 942,
"number_id": 942,
"channel_type": "number",
"caller_type": "contact",
"callee_type": null,
"caller_id": null,
"callee_id": null,
"user_id": null,
"started_at": "2026-10-13T11:42:04Z",
"answered_at": null,
"bridged_at": null,
"ended_at": null,
"call_duration": null,
"first_touch_duration": null,
"has_recording": false,
"record_url": null,
"missing_call": null,
"missing_call_reason": null,
"hangup_by": null,
"credited": null,
"contact_id": null,
"company_id": null,
"voicemail_id": null,
"voicemail_url": null,
"voicemail_type": null,
"callback_time": null,
"callback_user_id": null,
"callback_cdr_uuid": null,
"team_touch_at": null,
"call_flow": [
{
"action": "init",
"detail": {
"id": 19,
"type": "speed_dial"
},
"timestamp": 1791891724
}
]
},
"event": "call_init"
}

call_bridged — Call connected

The event sent when the connection is established after the destination number is dialed. route and bridge actions are added to the call_flow array:

{
"data": {
"caller_number": "+90551XXXXXXX",
"callee_number": "+90850XXXXXXX",
"uuid": "e785****-****-****-****-********87e5",
"direction": "inbound",
"started_at": "2026-10-13T11:42:04Z",
"answered_at": null,
"bridged_at": null,
"call_flow": [
{
"action": "bridge",
"detail": { "id": null, "type": "contact" },
"timestamp": 1791891731
},
{
"action": "route",
"detail": { "id": null, "type": "contact" },
"timestamp": 1791891730
},
{
"action": "init",
"detail": { "id": 19, "type": "speed_dial" },
"timestamp": 1791891724
}
]
},
"event": "call_bridged"
}

call_hangup — Call ended

The event sent when the call ends. Fields such as call_duration, record_url, and hangup_by are populated:

{
"data": {
"caller_number": "+90551XXXXXXX",
"callee_number": "+90850XXXXXXX",
"uuid": "e785****-****-****-****-********87e5",
"direction": "inbound",
"started_at": "2026-10-13T11:42:04Z",
"answered_at": "2026-10-13T11:42:04Z",
"bridged_at": "2026-10-13T11:42:17Z",
"ended_at": "2026-10-13T11:42:43Z",
"call_duration": 39,
"first_touch_duration": 13,
"has_recording": true,
"record_url": "https://storage.hipcall.com.tr/recordings/.../e785****-****-****-****-********87e5.mp3?...",
"missing_call": false,
"hangup_by": "user",
"credited": false,
"callee_id": 19,
"callee_type": "speed_dial",
"call_flow": [
{
"action": "hangup",
"detail": { "hangup_by": "user" },
"timestamp": 1791891763
},
{
"action": "bridge",
"detail": { "id": null, "type": "contact" },
"timestamp": 1791891731
},
{
"action": "route",
"detail": { "id": null, "type": "contact" },
"timestamp": 1791891730
},
{
"action": "init",
"detail": { "id": 19, "type": "speed_dial" },
"timestamp": 1791891724
}
]
},
"event": "call_hangup"
}

When it fails

If communication with the web service fails for any reason, the system plays the error announcement to the user and ends the call.

The following cases count as failures:

  • The HTTP status code of the response is not 200
  • The HTTP request is not answered within 3 seconds
  • The Basic Auth username or password for the web service is incorrect
  • The JSON in the response is not valid
  • The destination number in the JSON is not a number that can be dialed (e.g. 3ASDASDF)

Technical support

Our company does not provide technical support for third-party software. Instead, you can ask your questions to the developers in the community, in Turkish or English.

Next steps

To see real-world use cases of the Hipcall API step by step, check out the other example scenarios:

Was this article helpful?

Still need help?

Can't find what you're looking for? Reach out and we'll help.