API Reference
Key Admin
Numbers and call routing

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

GET/domains/~/dialplans/{dialplan}/dialrules

Returns the dial rules in one dial plan.

Read Key Admin switch: Dial plans and call blocking, Read. Read only keys also work.

Parameters

NameInTypeNotes
dialplan requiredpathstringThe 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)
FieldTypeNotes
domainstringThe account the item belongs to. Max length 64
dial-rule-dial-planstring
dial-rule-matching-to-uristring
dialrulestring
enabledstringWhether it is turned on (yes or no). One of: yes, no Default yes
dial-rule-matching-from-uristring Default *
dial-rule-matching-day-of-weekstring Default *
dial-rule-matching-start-datestring (date)Dial rule matching start (date). Default *
dial-rule-matching-end-datestring (date)Dial rule matching end (date). Default *
dial-rule-matching-start-timestring Default *
dial-rule-matching-end-timestring Default *
dial-rule-applicationstring 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-parameterstring
dial-rule-translation-destination-schemestring One of: [*], sip:, <Null> Default [*]
dial-rule-translation-destination-userstring
dial-rule-translation-destination-hoststring Default [*]
dial-rule-translation-source-namestringName of the dial rule translation source. Default [*]
dial-rule-translation-source-schemestring One of: [*], sip:, <Null> Default [*]
dial-rule-translation-source-userstring Default [*]
dial-rule-translation-source-hoststring Default [*]
dial-rule-descriptionstring

Count dial rules in a dial plan

GET/domains/~/dialplans/{dialplan}/dialrules/count

Returns 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

NameInTypeNotes
dialplan requiredpathstringThe 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)
FieldTypeNotes
totalintegerHow many items matched.

Other responses: 400, 401, 403, 404. See errors.

Get a dial rule

GET/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

NameInTypeNotes
dialplan requiredpathstringThe dial plan name.
dialrule requiredpathstringThe 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)
FieldTypeNotes
domainstringThe account the item belongs to. Max length 64
dial-rule-dial-planstring
dial-rule-matching-to-uristring
dialrulestring
enabledstringWhether it is turned on (yes or no). One of: yes, no Default yes
dial-rule-matching-from-uristring Default *
dial-rule-matching-day-of-weekstring Default *
dial-rule-matching-start-datestring (date)Dial rule matching start (date). Default *
dial-rule-matching-end-datestring (date)Dial rule matching end (date). Default *
dial-rule-matching-start-timestring Default *
dial-rule-matching-end-timestring Default *
dial-rule-applicationstring 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-parameterstring
dial-rule-translation-destination-schemestring One of: [*], sip:, <Null> Default [*]
dial-rule-translation-destination-userstring
dial-rule-translation-destination-hoststring Default [*]
dial-rule-translation-source-namestringName of the dial rule translation source. Default [*]
dial-rule-translation-source-schemestring One of: [*], sip:, <Null> Default [*]
dial-rule-translation-source-userstring Default [*]
dial-rule-translation-source-hoststring Default [*]
dial-rule-descriptionstring

Get a dial policy

GET/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

NameInTypeNotes
policy requiredpathstringThe 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)
FieldTypeNotes
dialpolicystring
domainstringThe account the item belongs to.
descriptionstringA note about the item.

Other responses: 400, 401, 404. See errors.

List dial permissions in a dial policy

GET/domains/~/dialpolicy/{policy}/permission

Returns the dial permissions in one dial policy.

Read Key Admin switch: Dial plans and call blocking, Read. Read only keys also work.

Parameters

NameInTypeNotes
policy requiredpathstringThe 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)
FieldTypeNotes
dialpolicystring
domainstringThe account the item belongs to.
permission-matchstring
permission-modestring One of: permit, deny
permission-reasonstring
created-datetimestringCreated (date and time).
permission-idstringID of the permission.

Other responses: 400, 401, 404. See errors.

Get a dial permission

GET/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

NameInTypeNotes
policy requiredpathstringThe dial policy name.
id requiredpathstringThe 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)
FieldTypeNotes
dialpolicystring
domainstringThe account the item belongs to.
permission-matchstring
permission-modestring One of: permit, deny
permission-reasonstring
created-datetimestringCreated (date and time).
permission-idstringID of the permission.

Other responses: 400, 401, 404. See errors.

List blocked number filters

GET/domains/~/number-filters

Returns 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)
FieldTypeNotes
domainstringThe account the item belongs to. Max length 64
time-framestring
enabledstringWhether it is turned on (yes or no). One of: yes, no Default yes
is-activeboolean
phone-numbers-to-rejectobject
phone-numbers-to-reject.enabledstringWhether it is turned on (yes or no). One of: yes, no Default no
phone-numbers-to-reject.parametersarray of any

Create a dial plan

POST/domains/~/dialplans

Adds a new dial plan on the account.

Write Key Admin switch: Dial plans and call blocking, Write.

Request body application/json

FieldTypeNotes
dial-rule-dial-plan requiredstring
dial-rule-description requiredstring

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)
FieldTypeNotes
codeintegerHTTP status code.
messagestringWhat happened, in words.

Add a dial rule to a dial plan

POST/domains/~/dialplans/{dialplan}/dialrules

Adds a new dial rule in one dial plan.

Write Key Admin switch: Dial plans and call blocking, Write.

Parameters

NameInTypeNotes
dialplan requiredpathstringThe dial plan name.

Request body application/json

FieldTypeNotes
synchronous requiredstringSet 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 requiredstring
enabledstringWhether it is turned on (yes or no). One of: yes, no Default yes
dial-rule-matching-from-uristring Default *
dial-rule-matching-day-of-weekstring Default *
dial-rule-matching-start-datestring (date)Dial rule matching start (date). Default *
dial-rule-matching-end-datestring (date)Dial rule matching end (date). Default *
dial-rule-matching-start-timestring Default *
dial-rule-matching-end-timestring Default *
dial-rule-applicationstring 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-parameterstring
dial-rule-translation-destination-schemestring One of: [*], sip:, <Null> Default [*]
dial-rule-translation-destination-user requiredstring
dial-rule-translation-destination-hoststring Default [*]
dial-rule-translation-source-namestringName of the dial rule translation source. Default [*]
dial-rule-translation-source-schemestring One of: [*], sip:, <Null> Default [*]
dial-rule-translation-source-userstring Default [*]
dial-rule-translation-source-hoststring Default [*]
dial-rule-descriptionstring

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)
FieldTypeNotes
domainstringThe account the item belongs to. Max length 64
dial-rule-dial-planstring
dial-rule-matching-to-uristring
dialrulestring
enabledstringWhether it is turned on (yes or no). One of: yes, no Default yes
dial-rule-matching-from-uristring Default *
dial-rule-matching-day-of-weekstring Default *
dial-rule-matching-start-datestring (date)Dial rule matching start (date). Default *
dial-rule-matching-end-datestring (date)Dial rule matching end (date). Default *
dial-rule-matching-start-timestring Default *
dial-rule-matching-end-timestring Default *
dial-rule-applicationstring 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-parameterstring
dial-rule-translation-destination-schemestring One of: [*], sip:, <Null> Default [*]
dial-rule-translation-destination-userstring
dial-rule-translation-destination-hoststring Default [*]
dial-rule-translation-source-namestringName of the dial rule translation source. Default [*]
dial-rule-translation-source-schemestring One of: [*], sip:, <Null> Default [*]
dial-rule-translation-source-userstring Default [*]
dial-rule-translation-source-hoststring Default [*]
dial-rule-descriptionstring

Add a dial permission to a dial policy

POST/domains/~/dialpolicy/{policy}/permission

Adds a new dial permission in one dial policy.

Write Key Admin switch: Dial plans and call blocking, Write.

Parameters

NameInTypeNotes
policy requiredpathstringThe dial policy name.

Request body application/json

FieldTypeNotes
synchronous requiredstringSet to yes to wait until the change is finished before the response comes back. One of: yes, no Default no
permission-match requiredstring
permission-mode requiredstring One of: permit, deny
permission-reason requiredstring

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)
FieldTypeNotes
dialpolicystring
domainstringThe account the item belongs to.
permission-matchstring
permission-modestring One of: permit, deny
permission-reasonstring
created-datetimestringCreated (date and time).
permission-idstringID of the permission.

Other responses: 400, 401, 404. See errors.

Add a blocked number filter

POST/domains/~/number-filters

Blocks (or allows) a number for the whole account.

Write Key Admin switch: Dial plans and call blocking, Write.

Request body application/json

FieldTypeNotes
phone-numbers-to-reject requiredobject
phone-numbers-to-reject.parameters requiredarray 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)
FieldTypeNotes
codeintegerHTTP status code.
messagestringWhat happened, in words.

Update a dial plan

PUT/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

NameInTypeNotes
dialplan requiredpathstringThe dial plan name.

Request body application/json

FieldTypeNotes
dial-rule-description requiredstring

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)
FieldTypeNotes
codeintegerHTTP status code.
messagestringWhat happened, in words.

Update a dial rule

PUT/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

NameInTypeNotes
dialplan requiredpathstringThe dial plan name.
dialrule requiredpathstringThe dial rule ID.

Request body application/json

FieldTypeNotes
dialrule requiredstring
enabledstringWhether it is turned on (yes or no). One of: yes, no Default yes
dial-rule-applicationstring 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-parameterstring
dial-rule-translation-destination-schemestring One of: [*], sip:, <Null> Default [*]
dial-rule-translation-destination-user requiredstring
dial-rule-translation-destination-hoststring Default [*]
dial-rule-translation-source-namestringName of the dial rule translation source. Default [*]
dial-rule-translation-source-schemestring One of: [*], sip:, <Null> Default [*]
dial-rule-translation-source-userstring Default [*]
dial-rule-translation-source-hoststring Default [*]
dial-rule-descriptionstring

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)
FieldTypeNotes
codeintegerHTTP status code.
messagestringWhat happened, in words.

Update a dial policy

PUT/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

NameInTypeNotes
policy requiredpathstringThe dial policy name.

Request body application/json

FieldTypeNotes
dialpolicy requiredstring
domain requiredstringThe account the item belongs to.
description requiredstringA 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)
FieldTypeNotes
codeintegerHTTP status code.
messagestringWhat happened, in words.

Other responses: 400, 401, 404. See errors.

Update a dial permission

PUT/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

NameInTypeNotes
policy requiredpathstringThe dial policy name.
id requiredpathstringThe ID of the item, as returned when you list or create it.

Request body application/json

FieldTypeNotes
permission-mode requiredstring One of: permit, deny
permission-reason requiredstring

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)
FieldTypeNotes
codeintegerHTTP status code.
messagestringWhat happened, in words.

Other responses: 400, 401, 404. See errors.

Delete a dial plan

DELETE/domains/~/dialplans/{dialplan}

Removes a dial plan. This can't be undone.

Write Key Admin switch: Dial plans and call blocking, Write.

Parameters

NameInTypeNotes
dialplan requiredpathstringThe 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)
FieldTypeNotes
codeintegerHTTP status code.
messagestringWhat happened, in words.

Delete a dial rule

DELETE/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

NameInTypeNotes
dialplan requiredpathstringThe dial plan name.
dialrule requiredpathstringThe 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

DELETE/domains/~/dialpolicy/{policy}

Removes a dial policy. This can't be undone.

Write Key Admin switch: Dial plans and call blocking, Write.

Parameters

NameInTypeNotes
policy requiredpathstringThe 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)
FieldTypeNotes
codeintegerHTTP status code.
messagestringWhat happened, in words.

Other responses: 400, 401, 404. See errors.

Delete a dial permission

DELETE/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

NameInTypeNotes
policy requiredpathstringThe dial policy name.
id requiredpathstringThe 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

DELETE/domains/~/number-filters

Removes 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

FieldTypeNotes
phone-numbers-to-reject requiredobject
phone-numbers-to-reject.parameters requiredarray 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)
FieldTypeNotes
codeintegerHTTP status code.
messagestringWhat happened, in words.

List a user's blocked number filters

GET/domains/~/users/{user}/number-filters

Returns the numbers one user has blocked or allowed.

Read Key Admin switch: Dial plans and call blocking, Read. Read only keys also work.

Parameters

NameInTypeNotes
user requiredpathstringThe 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)
FieldTypeNotes
domainstringThe account the item belongs to. Max length 64
time-framestring
enabledstringWhether it is turned on (yes or no). One of: yes, no Default yes
is-activeboolean
phone-numbers-to-rejectobject
phone-numbers-to-reject.enabledstringWhether it is turned on (yes or no). One of: yes, no Default no
phone-numbers-to-reject.parametersarray of any

Add a blocked number filter for a user

POST/domains/~/users/{user}/number-filters

Blocks (or allows) a number for one user.

Write Key Admin switch: Dial plans and call blocking, Write.

Parameters

NameInTypeNotes
user requiredpathstringThe user ID, usually their extension number, like 1001. Default ~ Min length 0 Max length 16

Request body application/json

FieldTypeNotes
phone-numbers-to-reject requiredobject
phone-numbers-to-reject.parameters requiredarray 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)
FieldTypeNotes
codeintegerHTTP status code.
messagestringWhat happened, in words.

Remove a user's blocked number filter

DELETE/domains/~/users/{user}/number-filters

Removes one of a user's number filters. Identify it in the request body.

Write Key Admin switch: Dial plans and call blocking, Write.

Parameters

NameInTypeNotes
user requiredpathstringThe user ID, usually their extension number, like 1001. Default ~ Min length 0 Max length 16

Request body application/json

FieldTypeNotes
phone-numbers-to-reject requiredobject
phone-numbers-to-reject.parameters requiredarray 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)
FieldTypeNotes
codeintegerHTTP status code.
messagestringWhat happened, in words.