Dial plans and call blocking
Dial plans and policies control how dialed digits are handled and which numbers users are allowed to call. Number filters block (or allow) specific callers.
In the Key Admin this is the Dial plans and call blocking switch. Read lets a key call the GET endpoints below. Write lets it call the ones that change data.
List dial rules in a dial plan
/domains/~/dialplans/{dialplan}/dialrulesReturns the dial rules in one dial plan.
Read Key Admin switch: Dial plans and call blocking, Read. Read only keys also work.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
dialplan required | path | string | The dial plan name. |
Example request
curl -X GET "https://api.noodlevoice.com/ns-api/v2/domains/~/dialplans/default/dialrules" \
-H "Authorization: Bearer $NOODLEVOICE_KEY"const res = await fetch("https://api.noodlevoice.com/ns-api/v2/domains/~/dialplans/default/dialrules", {
method: "GET",
headers: {
Authorization: "Bearer " + process.env.NOODLEVOICE_KEY,
},
});
const data = await res.json();import os, requests
r = requests.get(
"https://api.noodlevoice.com/ns-api/v2/domains/~/dialplans/default/dialrules",
headers={"Authorization": "Bearer " + os.environ["NOODLEVOICE_KEY"]},
)
print(r.status_code, r.json())Response 200
[
{
"domain": "string",
"dial-rule-dial-plan": "string",
"dial-rule-matching-to-uri": "string",
"dialrule": "string",
"enabled": "yes",
"dial-rule-matching-from-uri": "*",
"dial-rule-matching-day-of-week": "*",
"dial-rule-matching-start-date": "*",
"...": "13 more fields"
}
]Response fields (21)
| Field | Type | Notes |
|---|---|---|
domain | string | The account the item belongs to. Max length 64 |
dial-rule-dial-plan | string | |
dial-rule-matching-to-uri | string | |
dialrule | string | |
enabled | string | Whether it is turned on (yes or no). One of: yes, no Default yes |
dial-rule-matching-from-uri | string | Default * |
dial-rule-matching-day-of-week | string | Default * |
dial-rule-matching-start-date | string (date) | Dial rule matching start (date). Default * |
dial-rule-matching-end-date | string (date) | Dial rule matching end (date). Default * |
dial-rule-matching-start-time | string | Default * |
dial-rule-matching-end-time | string | Default * |
dial-rule-application | string | One of: available-number, to-voicemail-residential, to-callqueue, to-callqueue-announce-count-callers-ahead, to-callqueue-announce-expected-wait-time, to-connection, to-connection-or-user-no-failover, to-single-device, to-user, to-user-residential, to-voicemail, spam-screening, to-connection-block-caller-id, to-connection-no-timeout, to-connection-add-header-force-caller-id, to-connection-add-header-no-timeout, to-connection-add-header, to-single-device-add-header-allow-voicemail, to-single-device-add-header-allow-voicemail-residential, to-single-device-add-header, to-user-add-header, to-user-residential-add-header, to-user-notify-of-recording, hangup, to-user-answer-and-fake-ringback, toggle-timeframe |
dial-rule-parameter | string | |
dial-rule-translation-destination-scheme | string | One of: [*], sip:, <Null> Default [*] |
dial-rule-translation-destination-user | string | |
dial-rule-translation-destination-host | string | Default [*] |
dial-rule-translation-source-name | string | Name of the dial rule translation source. Default [*] |
dial-rule-translation-source-scheme | string | One of: [*], sip:, <Null> Default [*] |
dial-rule-translation-source-user | string | Default [*] |
dial-rule-translation-source-host | string | Default [*] |
dial-rule-description | string |
Count dial rules in a dial plan
/domains/~/dialplans/{dialplan}/dialrules/countReturns how many dial rules there are in one dial plan, as {"total": n}.
Read Key Admin switch: Dial plans and call blocking, Read. Read only keys also work.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
dialplan required | path | string | The dial plan name. |
Example request
curl -X GET "https://api.noodlevoice.com/ns-api/v2/domains/~/dialplans/default/dialrules/count" \
-H "Authorization: Bearer $NOODLEVOICE_KEY"const res = await fetch("https://api.noodlevoice.com/ns-api/v2/domains/~/dialplans/default/dialrules/count", {
method: "GET",
headers: {
Authorization: "Bearer " + process.env.NOODLEVOICE_KEY,
},
});
const data = await res.json();import os, requests
r = requests.get(
"https://api.noodlevoice.com/ns-api/v2/domains/~/dialplans/default/dialrules/count",
headers={"Authorization": "Bearer " + os.environ["NOODLEVOICE_KEY"]},
)
print(r.status_code, r.json())Response 200
{
"total": 1
}Response fields (1)
| Field | Type | Notes |
|---|---|---|
total | integer | How many items matched. |
Other responses: 400, 401, 403, 404. See errors.
Get a dial rule
/domains/~/dialplans/{dialplan}/dialrules/{dialrule}Returns one dial rule by its ID.
Read Key Admin switch: Dial plans and call blocking, Read. Read only keys also work.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
dialplan required | path | string | The dial plan name. |
dialrule required | path | string | The dial rule ID. |
Example request
curl -X GET "https://api.noodlevoice.com/ns-api/v2/domains/~/dialplans/default/dialrules/{dialrule_id}" \
-H "Authorization: Bearer $NOODLEVOICE_KEY"const res = await fetch("https://api.noodlevoice.com/ns-api/v2/domains/~/dialplans/default/dialrules/{dialrule_id}", {
method: "GET",
headers: {
Authorization: "Bearer " + process.env.NOODLEVOICE_KEY,
},
});
const data = await res.json();import os, requests
r = requests.get(
"https://api.noodlevoice.com/ns-api/v2/domains/~/dialplans/default/dialrules/{dialrule_id}",
headers={"Authorization": "Bearer " + os.environ["NOODLEVOICE_KEY"]},
)
print(r.status_code, r.json())Response 200
{
"domain": "string",
"dial-rule-dial-plan": "string",
"dial-rule-matching-to-uri": "string",
"dialrule": "string",
"enabled": "yes",
"dial-rule-matching-from-uri": "*",
"dial-rule-matching-day-of-week": "*",
"dial-rule-matching-start-date": "*",
"...": "13 more fields"
}Response fields (21)
| Field | Type | Notes |
|---|---|---|
domain | string | The account the item belongs to. Max length 64 |
dial-rule-dial-plan | string | |
dial-rule-matching-to-uri | string | |
dialrule | string | |
enabled | string | Whether it is turned on (yes or no). One of: yes, no Default yes |
dial-rule-matching-from-uri | string | Default * |
dial-rule-matching-day-of-week | string | Default * |
dial-rule-matching-start-date | string (date) | Dial rule matching start (date). Default * |
dial-rule-matching-end-date | string (date) | Dial rule matching end (date). Default * |
dial-rule-matching-start-time | string | Default * |
dial-rule-matching-end-time | string | Default * |
dial-rule-application | string | One of: available-number, to-voicemail-residential, to-callqueue, to-callqueue-announce-count-callers-ahead, to-callqueue-announce-expected-wait-time, to-connection, to-connection-or-user-no-failover, to-single-device, to-user, to-user-residential, to-voicemail, spam-screening, to-connection-block-caller-id, to-connection-no-timeout, to-connection-add-header-force-caller-id, to-connection-add-header-no-timeout, to-connection-add-header, to-single-device-add-header-allow-voicemail, to-single-device-add-header-allow-voicemail-residential, to-single-device-add-header, to-user-add-header, to-user-residential-add-header, to-user-notify-of-recording, hangup, to-user-answer-and-fake-ringback, toggle-timeframe |
dial-rule-parameter | string | |
dial-rule-translation-destination-scheme | string | One of: [*], sip:, <Null> Default [*] |
dial-rule-translation-destination-user | string | |
dial-rule-translation-destination-host | string | Default [*] |
dial-rule-translation-source-name | string | Name of the dial rule translation source. Default [*] |
dial-rule-translation-source-scheme | string | One of: [*], sip:, <Null> Default [*] |
dial-rule-translation-source-user | string | Default [*] |
dial-rule-translation-source-host | string | Default [*] |
dial-rule-description | string |
Get a dial policy
/domains/~/dialpolicy/{policy}Returns one dial policy, which controls what numbers users can call.
Read Key Admin switch: Dial plans and call blocking, Read. Read only keys also work.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
policy required | path | string | The dial policy name. |
Example request
curl -X GET "https://api.noodlevoice.com/ns-api/v2/domains/~/dialpolicy/default" \
-H "Authorization: Bearer $NOODLEVOICE_KEY"const res = await fetch("https://api.noodlevoice.com/ns-api/v2/domains/~/dialpolicy/default", {
method: "GET",
headers: {
Authorization: "Bearer " + process.env.NOODLEVOICE_KEY,
},
});
const data = await res.json();import os, requests
r = requests.get(
"https://api.noodlevoice.com/ns-api/v2/domains/~/dialpolicy/default",
headers={"Authorization": "Bearer " + os.environ["NOODLEVOICE_KEY"]},
)
print(r.status_code, r.json())Response 200
{
"dialpolicy": "string",
"domain": "string",
"description": "string"
}Response fields (3)
| Field | Type | Notes |
|---|---|---|
dialpolicy | string | |
domain | string | The account the item belongs to. |
description | string | A note about the item. |
Other responses: 400, 401, 404. See errors.
List dial permissions in a dial policy
/domains/~/dialpolicy/{policy}/permissionReturns the dial permissions in one dial policy.
Read Key Admin switch: Dial plans and call blocking, Read. Read only keys also work.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
policy required | path | string | The dial policy name. |
Example request
curl -X GET "https://api.noodlevoice.com/ns-api/v2/domains/~/dialpolicy/default/permission" \
-H "Authorization: Bearer $NOODLEVOICE_KEY"const res = await fetch("https://api.noodlevoice.com/ns-api/v2/domains/~/dialpolicy/default/permission", {
method: "GET",
headers: {
Authorization: "Bearer " + process.env.NOODLEVOICE_KEY,
},
});
const data = await res.json();import os, requests
r = requests.get(
"https://api.noodlevoice.com/ns-api/v2/domains/~/dialpolicy/default/permission",
headers={"Authorization": "Bearer " + os.environ["NOODLEVOICE_KEY"]},
)
print(r.status_code, r.json())Response 200
[
{
"dialpolicy": "string",
"domain": "string",
"permission-match": "string",
"permission-mode": "permit",
"permission-reason": "string",
"created-datetime": "2026-11-02 09:00:00",
"permission-id": "string"
}
]Response fields (7)
| Field | Type | Notes |
|---|---|---|
dialpolicy | string | |
domain | string | The account the item belongs to. |
permission-match | string | |
permission-mode | string | One of: permit, deny |
permission-reason | string | |
created-datetime | string | Created (date and time). |
permission-id | string | ID of the permission. |
Other responses: 400, 401, 404. See errors.
Get a dial permission
/domains/~/dialpolicy/{policy}/permission/{id}Returns one dial permission by its ID.
Read Key Admin switch: Dial plans and call blocking, Read. Read only keys also work.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
policy required | path | string | The dial policy name. |
id required | path | string | The ID of the item, as returned when you list or create it. |
Example request
curl -X GET "https://api.noodlevoice.com/ns-api/v2/domains/~/dialpolicy/default/permission/{id}" \
-H "Authorization: Bearer $NOODLEVOICE_KEY"const res = await fetch("https://api.noodlevoice.com/ns-api/v2/domains/~/dialpolicy/default/permission/{id}", {
method: "GET",
headers: {
Authorization: "Bearer " + process.env.NOODLEVOICE_KEY,
},
});
const data = await res.json();import os, requests
r = requests.get(
"https://api.noodlevoice.com/ns-api/v2/domains/~/dialpolicy/default/permission/{id}",
headers={"Authorization": "Bearer " + os.environ["NOODLEVOICE_KEY"]},
)
print(r.status_code, r.json())Response 200
{
"dialpolicy": "string",
"domain": "string",
"permission-match": "string",
"permission-mode": "permit",
"permission-reason": "string",
"created-datetime": "2026-11-02 09:00:00",
"permission-id": "string"
}Response fields (7)
| Field | Type | Notes |
|---|---|---|
dialpolicy | string | |
domain | string | The account the item belongs to. |
permission-match | string | |
permission-mode | string | One of: permit, deny |
permission-reason | string | |
created-datetime | string | Created (date and time). |
permission-id | string | ID of the permission. |
Other responses: 400, 401, 404. See errors.
List blocked number filters
/domains/~/number-filtersReturns the numbers blocked or allowed for the whole account.
Read Key Admin switch: Dial plans and call blocking, Read. Read only keys also work.
Example request
curl -X GET "https://api.noodlevoice.com/ns-api/v2/domains/~/number-filters" \
-H "Authorization: Bearer $NOODLEVOICE_KEY"const res = await fetch("https://api.noodlevoice.com/ns-api/v2/domains/~/number-filters", {
method: "GET",
headers: {
Authorization: "Bearer " + process.env.NOODLEVOICE_KEY,
},
});
const data = await res.json();import os, requests
r = requests.get(
"https://api.noodlevoice.com/ns-api/v2/domains/~/number-filters",
headers={"Authorization": "Bearer " + os.environ["NOODLEVOICE_KEY"]},
)
print(r.status_code, r.json())Response 200
[
{
"domain": "string",
"time-frame": "string",
"enabled": "yes",
"is-active": true,
"phone-numbers-to-reject": {
"enabled": "yes",
"parameters": []
}
}
]Response fields (7)
| Field | Type | Notes |
|---|---|---|
domain | string | The account the item belongs to. Max length 64 |
time-frame | string | |
enabled | string | Whether it is turned on (yes or no). One of: yes, no Default yes |
is-active | boolean | |
phone-numbers-to-reject | object | |
phone-numbers-to-reject.enabled | string | Whether it is turned on (yes or no). One of: yes, no Default no |
phone-numbers-to-reject.parameters | array of any |
Create a dial plan
/domains/~/dialplansAdds a new dial plan on the account.
Write Key Admin switch: Dial plans and call blocking, Write.
Request body application/json
| Field | Type | Notes |
|---|---|---|
dial-rule-dial-plan required | string | |
dial-rule-description required | string |
Example request
curl -X POST "https://api.noodlevoice.com/ns-api/v2/domains/~/dialplans" \
-H "Authorization: Bearer $NOODLEVOICE_KEY" \
-H "Content-Type: application/json" \
-d '{
"dial-rule-dial-plan": "string",
"dial-rule-description": "string"
}'const res = await fetch("https://api.noodlevoice.com/ns-api/v2/domains/~/dialplans", {
method: "POST",
headers: {
Authorization: "Bearer " + process.env.NOODLEVOICE_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({
"dial-rule-dial-plan": "string",
"dial-rule-description": "string"
}),
});
const data = await res.json();import os, requests
r = requests.post(
"https://api.noodlevoice.com/ns-api/v2/domains/~/dialplans",
headers={"Authorization": "Bearer " + os.environ["NOODLEVOICE_KEY"]},
json={
"dial-rule-dial-plan": "string",
"dial-rule-description": "string"
},
)
print(r.status_code, r.json())Response 202
{
"code": 1,
"message": "Hello from NoodleVoice"
}Response fields (2)
| Field | Type | Notes |
|---|---|---|
code | integer | HTTP status code. |
message | string | What happened, in words. |
Add a dial rule to a dial plan
/domains/~/dialplans/{dialplan}/dialrulesAdds a new dial rule in one dial plan.
Write Key Admin switch: Dial plans and call blocking, Write.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
dialplan required | path | string | The dial plan name. |
Request body application/json
| Field | Type | Notes |
|---|---|---|
synchronous required | string | Set to yes to wait until the change is finished before the response comes back. One of: yes, no Default no |
dial-rule-matching-to-uri required | string | |
enabled | string | Whether it is turned on (yes or no). One of: yes, no Default yes |
dial-rule-matching-from-uri | string | Default * |
dial-rule-matching-day-of-week | string | Default * |
dial-rule-matching-start-date | string (date) | Dial rule matching start (date). Default * |
dial-rule-matching-end-date | string (date) | Dial rule matching end (date). Default * |
dial-rule-matching-start-time | string | Default * |
dial-rule-matching-end-time | string | Default * |
dial-rule-application | string | One of: available-number, to-voicemail-residential, to-callqueue, to-callqueue-announce-count-callers-ahead, to-callqueue-announce-expected-wait-time, to-connection, to-connection-or-user-no-failover, to-single-device, to-user, to-user-residential, to-voicemail, spam-screening, to-connection-block-caller-id, to-connection-no-timeout, to-connection-add-header-force-caller-id, to-connection-add-header-no-timeout, to-connection-add-header, to-single-device-add-header-allow-voicemail, to-single-device-add-header-allow-voicemail-residential, to-single-device-add-header, to-user-add-header, to-user-residential-add-header, to-user-notify-of-recording, hangup, to-user-answer-and-fake-ringback, toggle-timeframe |
dial-rule-parameter | string | |
dial-rule-translation-destination-scheme | string | One of: [*], sip:, <Null> Default [*] |
dial-rule-translation-destination-user required | string | |
dial-rule-translation-destination-host | string | Default [*] |
dial-rule-translation-source-name | string | Name of the dial rule translation source. Default [*] |
dial-rule-translation-source-scheme | string | One of: [*], sip:, <Null> Default [*] |
dial-rule-translation-source-user | string | Default [*] |
dial-rule-translation-source-host | string | Default [*] |
dial-rule-description | string |
Example request
curl -X POST "https://api.noodlevoice.com/ns-api/v2/domains/~/dialplans/default/dialrules" \
-H "Authorization: Bearer $NOODLEVOICE_KEY" \
-H "Content-Type: application/json" \
-d '{
"synchronous": "yes",
"dial-rule-matching-to-uri": "string",
"dial-rule-translation-destination-user": "1001"
}'const res = await fetch("https://api.noodlevoice.com/ns-api/v2/domains/~/dialplans/default/dialrules", {
method: "POST",
headers: {
Authorization: "Bearer " + process.env.NOODLEVOICE_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({
"synchronous": "yes",
"dial-rule-matching-to-uri": "string",
"dial-rule-translation-destination-user": "1001"
}),
});
const data = await res.json();import os, requests
r = requests.post(
"https://api.noodlevoice.com/ns-api/v2/domains/~/dialplans/default/dialrules",
headers={"Authorization": "Bearer " + os.environ["NOODLEVOICE_KEY"]},
json={
"synchronous": "yes",
"dial-rule-matching-to-uri": "string",
"dial-rule-translation-destination-user": "1001"
},
)
print(r.status_code, r.json())Response 200
{
"domain": "string",
"dial-rule-dial-plan": "string",
"dial-rule-matching-to-uri": "string",
"dialrule": "string",
"enabled": "yes",
"dial-rule-matching-from-uri": "*",
"dial-rule-matching-day-of-week": "*",
"dial-rule-matching-start-date": "*",
"...": "13 more fields"
}Response fields (21)
| Field | Type | Notes |
|---|---|---|
domain | string | The account the item belongs to. Max length 64 |
dial-rule-dial-plan | string | |
dial-rule-matching-to-uri | string | |
dialrule | string | |
enabled | string | Whether it is turned on (yes or no). One of: yes, no Default yes |
dial-rule-matching-from-uri | string | Default * |
dial-rule-matching-day-of-week | string | Default * |
dial-rule-matching-start-date | string (date) | Dial rule matching start (date). Default * |
dial-rule-matching-end-date | string (date) | Dial rule matching end (date). Default * |
dial-rule-matching-start-time | string | Default * |
dial-rule-matching-end-time | string | Default * |
dial-rule-application | string | One of: available-number, to-voicemail-residential, to-callqueue, to-callqueue-announce-count-callers-ahead, to-callqueue-announce-expected-wait-time, to-connection, to-connection-or-user-no-failover, to-single-device, to-user, to-user-residential, to-voicemail, spam-screening, to-connection-block-caller-id, to-connection-no-timeout, to-connection-add-header-force-caller-id, to-connection-add-header-no-timeout, to-connection-add-header, to-single-device-add-header-allow-voicemail, to-single-device-add-header-allow-voicemail-residential, to-single-device-add-header, to-user-add-header, to-user-residential-add-header, to-user-notify-of-recording, hangup, to-user-answer-and-fake-ringback, toggle-timeframe |
dial-rule-parameter | string | |
dial-rule-translation-destination-scheme | string | One of: [*], sip:, <Null> Default [*] |
dial-rule-translation-destination-user | string | |
dial-rule-translation-destination-host | string | Default [*] |
dial-rule-translation-source-name | string | Name of the dial rule translation source. Default [*] |
dial-rule-translation-source-scheme | string | One of: [*], sip:, <Null> Default [*] |
dial-rule-translation-source-user | string | Default [*] |
dial-rule-translation-source-host | string | Default [*] |
dial-rule-description | string |
Add a dial permission to a dial policy
/domains/~/dialpolicy/{policy}/permissionAdds a new dial permission in one dial policy.
Write Key Admin switch: Dial plans and call blocking, Write.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
policy required | path | string | The dial policy name. |
Request body application/json
| Field | Type | Notes |
|---|---|---|
synchronous required | string | Set to yes to wait until the change is finished before the response comes back. One of: yes, no Default no |
permission-match required | string | |
permission-mode required | string | One of: permit, deny |
permission-reason required | string |
Example request
curl -X POST "https://api.noodlevoice.com/ns-api/v2/domains/~/dialpolicy/default/permission" \
-H "Authorization: Bearer $NOODLEVOICE_KEY" \
-H "Content-Type: application/json" \
-d '{
"synchronous": "yes",
"permission-match": "string",
"permission-mode": "permit",
"permission-reason": "string"
}'const res = await fetch("https://api.noodlevoice.com/ns-api/v2/domains/~/dialpolicy/default/permission", {
method: "POST",
headers: {
Authorization: "Bearer " + process.env.NOODLEVOICE_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({
"synchronous": "yes",
"permission-match": "string",
"permission-mode": "permit",
"permission-reason": "string"
}),
});
const data = await res.json();import os, requests
r = requests.post(
"https://api.noodlevoice.com/ns-api/v2/domains/~/dialpolicy/default/permission",
headers={"Authorization": "Bearer " + os.environ["NOODLEVOICE_KEY"]},
json={
"synchronous": "yes",
"permission-match": "string",
"permission-mode": "permit",
"permission-reason": "string"
},
)
print(r.status_code, r.json())Response 200
{
"dialpolicy": "string",
"domain": "string",
"permission-match": "string",
"permission-mode": "permit",
"permission-reason": "string",
"created-datetime": "2026-11-02 09:00:00",
"permission-id": "string"
}Response fields (7)
| Field | Type | Notes |
|---|---|---|
dialpolicy | string | |
domain | string | The account the item belongs to. |
permission-match | string | |
permission-mode | string | One of: permit, deny |
permission-reason | string | |
created-datetime | string | Created (date and time). |
permission-id | string | ID of the permission. |
Other responses: 400, 401, 404. See errors.
Add a blocked number filter
/domains/~/number-filtersBlocks (or allows) a number for the whole account.
Write Key Admin switch: Dial plans and call blocking, Write.
Request body application/json
| Field | Type | Notes |
|---|---|---|
phone-numbers-to-reject required | object | |
phone-numbers-to-reject.parameters required | array of any |
Example request
curl -X POST "https://api.noodlevoice.com/ns-api/v2/domains/~/number-filters" \
-H "Authorization: Bearer $NOODLEVOICE_KEY" \
-H "Content-Type: application/json" \
-d '{
"phone-numbers-to-reject": {
"parameters": [
"string"
]
}
}'const res = await fetch("https://api.noodlevoice.com/ns-api/v2/domains/~/number-filters", {
method: "POST",
headers: {
Authorization: "Bearer " + process.env.NOODLEVOICE_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({
"phone-numbers-to-reject": {
"parameters": [
"string"
]
}
}),
});
const data = await res.json();import os, requests
r = requests.post(
"https://api.noodlevoice.com/ns-api/v2/domains/~/number-filters",
headers={"Authorization": "Bearer " + os.environ["NOODLEVOICE_KEY"]},
json={
"phone-numbers-to-reject": {
"parameters": [
"string"
]
}
},
)
print(r.status_code, r.json())Response 202
{
"code": 1,
"message": "Hello from NoodleVoice"
}Response fields (2)
| Field | Type | Notes |
|---|---|---|
code | integer | HTTP status code. |
message | string | What happened, in words. |
Update a dial plan
/domains/~/dialplans/{dialplan}Changes an existing dial plan. Send the fields you want to set in the body.
Write Key Admin switch: Dial plans and call blocking, Write.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
dialplan required | path | string | The dial plan name. |
Request body application/json
| Field | Type | Notes |
|---|---|---|
dial-rule-description required | string |
Example request
curl -X PUT "https://api.noodlevoice.com/ns-api/v2/domains/~/dialplans/default" \
-H "Authorization: Bearer $NOODLEVOICE_KEY" \
-H "Content-Type: application/json" \
-d '{
"dial-rule-description": "string"
}'const res = await fetch("https://api.noodlevoice.com/ns-api/v2/domains/~/dialplans/default", {
method: "PUT",
headers: {
Authorization: "Bearer " + process.env.NOODLEVOICE_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({
"dial-rule-description": "string"
}),
});
const data = await res.json();import os, requests
r = requests.put(
"https://api.noodlevoice.com/ns-api/v2/domains/~/dialplans/default",
headers={"Authorization": "Bearer " + os.environ["NOODLEVOICE_KEY"]},
json={
"dial-rule-description": "string"
},
)
print(r.status_code, r.json())Response 202
{
"code": 1,
"message": "Hello from NoodleVoice"
}Response fields (2)
| Field | Type | Notes |
|---|---|---|
code | integer | HTTP status code. |
message | string | What happened, in words. |
Update a dial rule
/domains/~/dialplans/{dialplan}/dialrules/{dialrule}Changes an existing dial rule. Send the fields you want to set in the body.
Write Key Admin switch: Dial plans and call blocking, Write.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
dialplan required | path | string | The dial plan name. |
dialrule required | path | string | The dial rule ID. |
Request body application/json
| Field | Type | Notes |
|---|---|---|
dialrule required | string | |
enabled | string | Whether it is turned on (yes or no). One of: yes, no Default yes |
dial-rule-application | string | One of: available-number, to-voicemail-residential, to-callqueue, to-callqueue-announce-count-callers-ahead, to-callqueue-announce-expected-wait-time, to-connection, to-connection-or-user-no-failover, to-single-device, to-user, to-user-residential, to-voicemail, spam-screening, to-connection-block-caller-id, to-connection-no-timeout, to-connection-add-header-force-caller-id, to-connection-add-header-no-timeout, to-connection-add-header, to-single-device-add-header-allow-voicemail, to-single-device-add-header-allow-voicemail-residential, to-single-device-add-header, to-user-add-header, to-user-residential-add-header, to-user-notify-of-recording, hangup, to-user-answer-and-fake-ringback, toggle-timeframe |
dial-rule-parameter | string | |
dial-rule-translation-destination-scheme | string | One of: [*], sip:, <Null> Default [*] |
dial-rule-translation-destination-user required | string | |
dial-rule-translation-destination-host | string | Default [*] |
dial-rule-translation-source-name | string | Name of the dial rule translation source. Default [*] |
dial-rule-translation-source-scheme | string | One of: [*], sip:, <Null> Default [*] |
dial-rule-translation-source-user | string | Default [*] |
dial-rule-translation-source-host | string | Default [*] |
dial-rule-description | string |
Example request
curl -X PUT "https://api.noodlevoice.com/ns-api/v2/domains/~/dialplans/default/dialrules/{dialrule_id}" \
-H "Authorization: Bearer $NOODLEVOICE_KEY" \
-H "Content-Type: application/json" \
-d '{
"dialrule": "string",
"dial-rule-translation-destination-user": "1001"
}'const res = await fetch("https://api.noodlevoice.com/ns-api/v2/domains/~/dialplans/default/dialrules/{dialrule_id}", {
method: "PUT",
headers: {
Authorization: "Bearer " + process.env.NOODLEVOICE_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({
"dialrule": "string",
"dial-rule-translation-destination-user": "1001"
}),
});
const data = await res.json();import os, requests
r = requests.put(
"https://api.noodlevoice.com/ns-api/v2/domains/~/dialplans/default/dialrules/{dialrule_id}",
headers={"Authorization": "Bearer " + os.environ["NOODLEVOICE_KEY"]},
json={
"dialrule": "string",
"dial-rule-translation-destination-user": "1001"
},
)
print(r.status_code, r.json())Response 202
{
"code": 1,
"message": "Hello from NoodleVoice"
}Response fields (2)
| Field | Type | Notes |
|---|---|---|
code | integer | HTTP status code. |
message | string | What happened, in words. |
Update a dial policy
/domains/~/dialpolicy/{policy}Changes an existing dial policy. Send the fields you want to set in the body.
Write Key Admin switch: Dial plans and call blocking, Write.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
policy required | path | string | The dial policy name. |
Request body application/json
| Field | Type | Notes |
|---|---|---|
dialpolicy required | string | |
domain required | string | The account the item belongs to. |
description required | string | A note about the item. |
Example request
curl -X PUT "https://api.noodlevoice.com/ns-api/v2/domains/~/dialpolicy/default" \
-H "Authorization: Bearer $NOODLEVOICE_KEY" \
-H "Content-Type: application/json" \
-d '{
"dialpolicy": "string",
"domain": "string",
"description": "string"
}'const res = await fetch("https://api.noodlevoice.com/ns-api/v2/domains/~/dialpolicy/default", {
method: "PUT",
headers: {
Authorization: "Bearer " + process.env.NOODLEVOICE_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({
"dialpolicy": "string",
"domain": "string",
"description": "string"
}),
});
const data = await res.json();import os, requests
r = requests.put(
"https://api.noodlevoice.com/ns-api/v2/domains/~/dialpolicy/default",
headers={"Authorization": "Bearer " + os.environ["NOODLEVOICE_KEY"]},
json={
"dialpolicy": "string",
"domain": "string",
"description": "string"
},
)
print(r.status_code, r.json())Response 202
{
"code": 1,
"message": "Hello from NoodleVoice"
}Response fields (2)
| Field | Type | Notes |
|---|---|---|
code | integer | HTTP status code. |
message | string | What happened, in words. |
Other responses: 400, 401, 404. See errors.
Update a dial permission
/domains/~/dialpolicy/{policy}/permission/{id}Changes an existing dial permission. Send the fields you want to set in the body.
Write Key Admin switch: Dial plans and call blocking, Write.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
policy required | path | string | The dial policy name. |
id required | path | string | The ID of the item, as returned when you list or create it. |
Request body application/json
| Field | Type | Notes |
|---|---|---|
permission-mode required | string | One of: permit, deny |
permission-reason required | string |
Example request
curl -X PUT "https://api.noodlevoice.com/ns-api/v2/domains/~/dialpolicy/default/permission/{id}" \
-H "Authorization: Bearer $NOODLEVOICE_KEY" \
-H "Content-Type: application/json" \
-d '{
"permission-mode": "permit",
"permission-reason": "string"
}'const res = await fetch("https://api.noodlevoice.com/ns-api/v2/domains/~/dialpolicy/default/permission/{id}", {
method: "PUT",
headers: {
Authorization: "Bearer " + process.env.NOODLEVOICE_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({
"permission-mode": "permit",
"permission-reason": "string"
}),
});
const data = await res.json();import os, requests
r = requests.put(
"https://api.noodlevoice.com/ns-api/v2/domains/~/dialpolicy/default/permission/{id}",
headers={"Authorization": "Bearer " + os.environ["NOODLEVOICE_KEY"]},
json={
"permission-mode": "permit",
"permission-reason": "string"
},
)
print(r.status_code, r.json())Response 202
{
"code": 1,
"message": "Hello from NoodleVoice"
}Response fields (2)
| Field | Type | Notes |
|---|---|---|
code | integer | HTTP status code. |
message | string | What happened, in words. |
Other responses: 400, 401, 404. See errors.
Delete a dial plan
/domains/~/dialplans/{dialplan}Removes a dial plan. This can't be undone.
Write Key Admin switch: Dial plans and call blocking, Write.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
dialplan required | path | string | The dial plan name. |
Example request
curl -X DELETE "https://api.noodlevoice.com/ns-api/v2/domains/~/dialplans/default" \
-H "Authorization: Bearer $NOODLEVOICE_KEY"const res = await fetch("https://api.noodlevoice.com/ns-api/v2/domains/~/dialplans/default", {
method: "DELETE",
headers: {
Authorization: "Bearer " + process.env.NOODLEVOICE_KEY,
},
});
const data = await res.json();import os, requests
r = requests.delete(
"https://api.noodlevoice.com/ns-api/v2/domains/~/dialplans/default",
headers={"Authorization": "Bearer " + os.environ["NOODLEVOICE_KEY"]},
)
print(r.status_code, r.json())Response 202
{
"code": 1,
"message": "Hello from NoodleVoice"
}Response fields (2)
| Field | Type | Notes |
|---|---|---|
code | integer | HTTP status code. |
message | string | What happened, in words. |
Delete a dial rule
/domains/~/dialplans/{dialplan}/dialrules/{dialrule}Removes a dial rule. This can't be undone.
Write Key Admin switch: Dial plans and call blocking, Write.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
dialplan required | path | string | The dial plan name. |
dialrule required | path | string | The dial rule ID. |
Example request
curl -X DELETE "https://api.noodlevoice.com/ns-api/v2/domains/~/dialplans/default/dialrules/{dialrule_id}" \
-H "Authorization: Bearer $NOODLEVOICE_KEY"const res = await fetch("https://api.noodlevoice.com/ns-api/v2/domains/~/dialplans/default/dialrules/{dialrule_id}", {
method: "DELETE",
headers: {
Authorization: "Bearer " + process.env.NOODLEVOICE_KEY,
},
});
const data = await res.json();import os, requests
r = requests.delete(
"https://api.noodlevoice.com/ns-api/v2/domains/~/dialplans/default/dialrules/{dialrule_id}",
headers={"Authorization": "Bearer " + os.environ["NOODLEVOICE_KEY"]},
)
print(r.status_code, r.json())Response 202
Returns a status code with a short JSON message.
Delete a dial policy
/domains/~/dialpolicy/{policy}Removes a dial policy. This can't be undone.
Write Key Admin switch: Dial plans and call blocking, Write.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
policy required | path | string | The dial policy name. |
Example request
curl -X DELETE "https://api.noodlevoice.com/ns-api/v2/domains/~/dialpolicy/default" \
-H "Authorization: Bearer $NOODLEVOICE_KEY"const res = await fetch("https://api.noodlevoice.com/ns-api/v2/domains/~/dialpolicy/default", {
method: "DELETE",
headers: {
Authorization: "Bearer " + process.env.NOODLEVOICE_KEY,
},
});
const data = await res.json();import os, requests
r = requests.delete(
"https://api.noodlevoice.com/ns-api/v2/domains/~/dialpolicy/default",
headers={"Authorization": "Bearer " + os.environ["NOODLEVOICE_KEY"]},
)
print(r.status_code, r.json())Response 202
{
"code": 1,
"message": "Hello from NoodleVoice"
}Response fields (2)
| Field | Type | Notes |
|---|---|---|
code | integer | HTTP status code. |
message | string | What happened, in words. |
Other responses: 400, 401, 404. See errors.
Delete a dial permission
/domains/~/dialpolicy/{policy}/permission/{id}Removes a dial permission. This can't be undone.
Write Key Admin switch: Dial plans and call blocking, Write.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
policy required | path | string | The dial policy name. |
id required | path | string | The ID of the item, as returned when you list or create it. |
Example request
curl -X DELETE "https://api.noodlevoice.com/ns-api/v2/domains/~/dialpolicy/default/permission/{id}" \
-H "Authorization: Bearer $NOODLEVOICE_KEY"const res = await fetch("https://api.noodlevoice.com/ns-api/v2/domains/~/dialpolicy/default/permission/{id}", {
method: "DELETE",
headers: {
Authorization: "Bearer " + process.env.NOODLEVOICE_KEY,
},
});
const data = await res.json();import os, requests
r = requests.delete(
"https://api.noodlevoice.com/ns-api/v2/domains/~/dialpolicy/default/permission/{id}",
headers={"Authorization": "Bearer " + os.environ["NOODLEVOICE_KEY"]},
)
print(r.status_code, r.json())Response 202
Returns a status code with a short JSON message.
Other responses: 400, 401, 404. See errors.
Remove a blocked number filter
/domains/~/number-filtersRemoves an account-wide number filter. Identify it in the request body.
Write Key Admin switch: Dial plans and call blocking, Write.
Request body application/json
| Field | Type | Notes |
|---|---|---|
phone-numbers-to-reject required | object | |
phone-numbers-to-reject.parameters required | array of any |
Example request
curl -X DELETE "https://api.noodlevoice.com/ns-api/v2/domains/~/number-filters" \
-H "Authorization: Bearer $NOODLEVOICE_KEY" \
-H "Content-Type: application/json" \
-d '{
"phone-numbers-to-reject": {
"parameters": [
"string"
]
}
}'const res = await fetch("https://api.noodlevoice.com/ns-api/v2/domains/~/number-filters", {
method: "DELETE",
headers: {
Authorization: "Bearer " + process.env.NOODLEVOICE_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({
"phone-numbers-to-reject": {
"parameters": [
"string"
]
}
}),
});
const data = await res.json();import os, requests
r = requests.delete(
"https://api.noodlevoice.com/ns-api/v2/domains/~/number-filters",
headers={"Authorization": "Bearer " + os.environ["NOODLEVOICE_KEY"]},
json={
"phone-numbers-to-reject": {
"parameters": [
"string"
]
}
},
)
print(r.status_code, r.json())Response 202
{
"code": 1,
"message": "Hello from NoodleVoice"
}Response fields (2)
| Field | Type | Notes |
|---|---|---|
code | integer | HTTP status code. |
message | string | What happened, in words. |
List a user's blocked number filters
/domains/~/users/{user}/number-filtersReturns the numbers one user has blocked or allowed.
Read Key Admin switch: Dial plans and call blocking, Read. Read only keys also work.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
user required | path | string | The user ID, usually their extension number, like 1001. Default ~ Min length 0 Max length 16 |
Example request
curl -X GET "https://api.noodlevoice.com/ns-api/v2/domains/~/users/1001/number-filters" \
-H "Authorization: Bearer $NOODLEVOICE_KEY"const res = await fetch("https://api.noodlevoice.com/ns-api/v2/domains/~/users/1001/number-filters", {
method: "GET",
headers: {
Authorization: "Bearer " + process.env.NOODLEVOICE_KEY,
},
});
const data = await res.json();import os, requests
r = requests.get(
"https://api.noodlevoice.com/ns-api/v2/domains/~/users/1001/number-filters",
headers={"Authorization": "Bearer " + os.environ["NOODLEVOICE_KEY"]},
)
print(r.status_code, r.json())Response 200
[
{
"domain": "string",
"time-frame": "string",
"enabled": "yes",
"is-active": true,
"phone-numbers-to-reject": {
"enabled": "yes",
"parameters": []
}
}
]Response fields (7)
| Field | Type | Notes |
|---|---|---|
domain | string | The account the item belongs to. Max length 64 |
time-frame | string | |
enabled | string | Whether it is turned on (yes or no). One of: yes, no Default yes |
is-active | boolean | |
phone-numbers-to-reject | object | |
phone-numbers-to-reject.enabled | string | Whether it is turned on (yes or no). One of: yes, no Default no |
phone-numbers-to-reject.parameters | array of any |
Add a blocked number filter for a user
/domains/~/users/{user}/number-filtersBlocks (or allows) a number for one user.
Write Key Admin switch: Dial plans and call blocking, Write.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
user required | path | string | The user ID, usually their extension number, like 1001. Default ~ Min length 0 Max length 16 |
Request body application/json
| Field | Type | Notes |
|---|---|---|
phone-numbers-to-reject required | object | |
phone-numbers-to-reject.parameters required | array of any |
Example request
curl -X POST "https://api.noodlevoice.com/ns-api/v2/domains/~/users/1001/number-filters" \
-H "Authorization: Bearer $NOODLEVOICE_KEY" \
-H "Content-Type: application/json" \
-d '{
"phone-numbers-to-reject": {
"parameters": [
"string"
]
}
}'const res = await fetch("https://api.noodlevoice.com/ns-api/v2/domains/~/users/1001/number-filters", {
method: "POST",
headers: {
Authorization: "Bearer " + process.env.NOODLEVOICE_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({
"phone-numbers-to-reject": {
"parameters": [
"string"
]
}
}),
});
const data = await res.json();import os, requests
r = requests.post(
"https://api.noodlevoice.com/ns-api/v2/domains/~/users/1001/number-filters",
headers={"Authorization": "Bearer " + os.environ["NOODLEVOICE_KEY"]},
json={
"phone-numbers-to-reject": {
"parameters": [
"string"
]
}
},
)
print(r.status_code, r.json())Response 202
{
"code": 1,
"message": "Hello from NoodleVoice"
}Response fields (2)
| Field | Type | Notes |
|---|---|---|
code | integer | HTTP status code. |
message | string | What happened, in words. |
Remove a user's blocked number filter
/domains/~/users/{user}/number-filtersRemoves one of a user's number filters. Identify it in the request body.
Write Key Admin switch: Dial plans and call blocking, Write.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
user required | path | string | The user ID, usually their extension number, like 1001. Default ~ Min length 0 Max length 16 |
Request body application/json
| Field | Type | Notes |
|---|---|---|
phone-numbers-to-reject required | object | |
phone-numbers-to-reject.parameters required | array of any |
Example request
curl -X DELETE "https://api.noodlevoice.com/ns-api/v2/domains/~/users/1001/number-filters" \
-H "Authorization: Bearer $NOODLEVOICE_KEY" \
-H "Content-Type: application/json" \
-d '{
"phone-numbers-to-reject": {
"parameters": [
"string"
]
}
}'const res = await fetch("https://api.noodlevoice.com/ns-api/v2/domains/~/users/1001/number-filters", {
method: "DELETE",
headers: {
Authorization: "Bearer " + process.env.NOODLEVOICE_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({
"phone-numbers-to-reject": {
"parameters": [
"string"
]
}
}),
});
const data = await res.json();import os, requests
r = requests.delete(
"https://api.noodlevoice.com/ns-api/v2/domains/~/users/1001/number-filters",
headers={"Authorization": "Bearer " + os.environ["NOODLEVOICE_KEY"]},
json={
"phone-numbers-to-reject": {
"parameters": [
"string"
]
}
},
)
print(r.status_code, r.json())Response 202
{
"code": 1,
"message": "Hello from NoodleVoice"
}Response fields (2)
| Field | Type | Notes |
|---|---|---|
code | integer | HTTP status code. |
message | string | What happened, in words. |