API Reference
Key Admin
Calls and history

Live calls

Live calls are calls happening right now. Read access lets you watch them. Write access adds call control: place, answer, hold, transfer and hang up.

In the Key Admin this is the Live calls switch. Read lets a key call the GET endpoints below. Write lets it call the ones that change data.

List live calls

GET/domains/~/calls

Returns every call in progress on the account right now.

Read Key Admin switch: Live calls, Read. Read only keys also work.

Example request

curl -X GET "https://api.noodlevoice.com/ns-api/v2/domains/~/calls" \
  -H "Authorization: Bearer $NOODLEVOICE_KEY"
const res = await fetch("https://api.noodlevoice.com/ns-api/v2/domains/~/calls", {
  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/~/calls",
    headers={"Authorization": "Bearer " + os.environ["NOODLEVOICE_KEY"]},
)
print(r.status_code, r.json())

Response 200

[
  {
    "core-server": "string",
    "call-session-id": "string",
    "call-orig-call-id": "string",
    "call-orig-match-uri": "string",
    "call-orig-user": "1001",
    "call-orig-domain": "string",
    "call-orig-uri": "string",
    "call-orig-name": "Front Desk",
    "...": "15 more fields"
  }
]
Response fields (23)
FieldTypeNotes
core-serverstring
call-session-idstringID of the call session.
call-orig-call-idstringID of the call orig call.
call-orig-match-uristring
call-orig-userstring
call-orig-domainstring
call-orig-uristring
call-orig-namestringName of the call orig.
caller-id-numberstringNumber shown to people you call.
call-dialed-numberstringCall dialed number.
call-by-actionstring
call-by-userstring
call-by-domainstring
call-by-call-idstringID of the call by call.
call-term-call-idstringID of the call term call.
call-term-userstring
call-term-domainstring
call-term-uristring
call-start-datetimestring (date)Call start (date and time).
call-answer-datetimestringCall answer (date and time).
call-orig-infostring
term-orig-infostring
call-audio-codecstring

Count live calls

GET/domains/~/calls/count

Returns how many calls are in progress on the account right now.

Read Key Admin switch: Live calls, Read. Read only keys also work.

Example request

curl -X GET "https://api.noodlevoice.com/ns-api/v2/domains/~/calls/count" \
  -H "Authorization: Bearer $NOODLEVOICE_KEY"
const res = await fetch("https://api.noodlevoice.com/ns-api/v2/domains/~/calls/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/~/calls/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.

List a user's live calls

GET/domains/~/users/{user}/calls

Returns the calls a user is on right now.

Read Key Admin switch: Live calls, 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/calls" \
  -H "Authorization: Bearer $NOODLEVOICE_KEY"
const res = await fetch("https://api.noodlevoice.com/ns-api/v2/domains/~/users/1001/calls", {
  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/calls",
    headers={"Authorization": "Bearer " + os.environ["NOODLEVOICE_KEY"]},
)
print(r.status_code, r.json())

Response 200

[
  {
    "core-server": "string",
    "call-session-id": "string",
    "call-orig-call-id": "string",
    "call-orig-match-uri": "string",
    "call-orig-user": "1001",
    "call-orig-domain": "string",
    "call-orig-uri": "string",
    "call-orig-name": "Front Desk",
    "...": "15 more fields"
  }
]
Response fields (23)
FieldTypeNotes
core-serverstring
call-session-idstringID of the call session.
call-orig-call-idstringID of the call orig call.
call-orig-match-uristring
call-orig-userstring
call-orig-domainstring
call-orig-uristring
call-orig-namestringName of the call orig.
caller-id-numberstringNumber shown to people you call.
call-dialed-numberstringCall dialed number.
call-by-actionstring
call-by-userstring
call-by-domainstring
call-by-call-idstringID of the call by call.
call-term-call-idstringID of the call term call.
call-term-userstring
call-term-domainstring
call-term-uristring
call-start-datetimestring (date)Call start (date and time).
call-answer-datetimestringCall answer (date and time).
call-orig-infostring
term-orig-infostring
call-audio-codecstring

Get a live call

GET/domains/~/users/{user}/calls/{callid}

Returns one call in progress by its call ID.

Read Key Admin switch: Live calls, 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
callid requiredpathstringThe call ID from a live call or call record.

Example request

curl -X GET "https://api.noodlevoice.com/ns-api/v2/domains/~/users/1001/calls/{call_id}" \
  -H "Authorization: Bearer $NOODLEVOICE_KEY"
const res = await fetch("https://api.noodlevoice.com/ns-api/v2/domains/~/users/1001/calls/{call_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/~/users/1001/calls/{call_id}",
    headers={"Authorization": "Bearer " + os.environ["NOODLEVOICE_KEY"]},
)
print(r.status_code, r.json())

Response 200

{
  "core-server": "string",
  "call-session-id": "string",
  "call-orig-call-id": "string",
  "call-orig-match-uri": "string",
  "call-orig-user": "1001",
  "call-orig-domain": "string",
  "call-orig-uri": "string",
  "call-orig-name": "Front Desk",
  "...": "15 more fields"
}
Response fields (23)
FieldTypeNotes
core-serverstring
call-session-idstringID of the call session.
call-orig-call-idstringID of the call orig call.
call-orig-match-uristring
call-orig-userstring
call-orig-domainstring
call-orig-uristring
call-orig-namestringName of the call orig.
caller-id-numberstringNumber shown to people you call.
call-dialed-numberstringCall dialed number.
call-by-actionstring
call-by-userstring
call-by-domainstring
call-by-call-idstringID of the call by call.
call-term-call-idstringID of the call term call.
call-term-userstring
call-term-domainstring
call-term-uristring
call-start-datetimestring (date)Call start (date and time).
call-answer-datetimestringCall answer (date and time).
call-orig-infostring
term-orig-infostring
call-audio-codecstring

Place a call

POST/domains/~/users/{user}/calls

Starts a call from a user's phone to the number you give (click to call).

Write Key Admin switch: Live calls, 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
synchronous requiredstringSet to yes to wait until the change is finished before the response comes back. One of: yes, no Default no
call-id requiredstringThe call ID.
dial-rule-applicationstring Default call
call-term-user requiredstring
call-orig-userstring Default user@domain
auto-answer-enabledstringTurns auto answer on or off (yes or no). One of: yes, no Default no
caller-id-numberstringNumber shown to people you call.
callback-caller-id-numberstringCallback caller id number.

Example request

curl -X POST "https://api.noodlevoice.com/ns-api/v2/domains/~/users/1001/calls" \
  -H "Authorization: Bearer $NOODLEVOICE_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "synchronous": "yes",
    "call-id": "string",
    "call-term-user": "1001"
  }'
const res = await fetch("https://api.noodlevoice.com/ns-api/v2/domains/~/users/1001/calls", {
  method: "POST",
  headers: {
    Authorization: "Bearer " + process.env.NOODLEVOICE_KEY,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    "synchronous": "yes",
    "call-id": "string",
    "call-term-user": "1001"
  }),
});
const data = await res.json();
import os, requests

r = requests.post(
    "https://api.noodlevoice.com/ns-api/v2/domains/~/users/1001/calls",
    headers={"Authorization": "Bearer " + os.environ["NOODLEVOICE_KEY"]},
    json={
        "synchronous": "yes",
        "call-id": "string",
        "call-term-user": "1001"
    },
)
print(r.status_code, r.json())

Response 202

Returns a status code with a short JSON message.

Answer a ringing call

PATCH/domains/~/users/{user}/calls/{call_id}/answer

Answers a ringing call on the user's device.

Write Key Admin switch: Live calls, Write.

Parameters

NameInTypeNotes
user requiredpathstringThe user ID, usually their extension number, like 1001. Default ~ Min length 0 Max length 16
call_id requiredpathstringThe ID of the call in progress.

Request body application/json

FieldTypeNotes
call-term-userstring
hostnamestring (hostname)
call-destination-session-idstringID of the call destination session.

Example request

curl -X PATCH "https://api.noodlevoice.com/ns-api/v2/domains/~/users/1001/calls/{call_id}/answer" \
  -H "Authorization: Bearer $NOODLEVOICE_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "call-term-user": "1001",
    "hostname": "string",
    "call-destination-session-id": "string"
  }'
const res = await fetch("https://api.noodlevoice.com/ns-api/v2/domains/~/users/1001/calls/{call_id}/answer", {
  method: "PATCH",
  headers: {
    Authorization: "Bearer " + process.env.NOODLEVOICE_KEY,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    "call-term-user": "1001",
    "hostname": "string",
    "call-destination-session-id": "string"
  }),
});
const data = await res.json();
import os, requests

r = requests.patch(
    "https://api.noodlevoice.com/ns-api/v2/domains/~/users/1001/calls/{call_id}/answer",
    headers={"Authorization": "Bearer " + os.environ["NOODLEVOICE_KEY"]},
    json={
        "call-term-user": "1001",
        "hostname": "string",
        "call-destination-session-id": "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.

Put a call on hold

PATCH/domains/~/users/{user}/calls/{call_id}/hold

Changes hold in one live call.

Write Key Admin switch: Live calls, Write.

Parameters

NameInTypeNotes
user requiredpathstringThe user ID, usually their extension number, like 1001. Default ~ Min length 0 Max length 16
call_id requiredpathstringThe ID of the call in progress.

Example request

curl -X PATCH "https://api.noodlevoice.com/ns-api/v2/domains/~/users/1001/calls/{call_id}/hold" \
  -H "Authorization: Bearer $NOODLEVOICE_KEY"
const res = await fetch("https://api.noodlevoice.com/ns-api/v2/domains/~/users/1001/calls/{call_id}/hold", {
  method: "PATCH",
  headers: {
    Authorization: "Bearer " + process.env.NOODLEVOICE_KEY,
  },
});
const data = await res.json();
import os, requests

r = requests.patch(
    "https://api.noodlevoice.com/ns-api/v2/domains/~/users/1001/calls/{call_id}/hold",
    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.

Transfer a call

PATCH/domains/~/users/{user}/calls/{call_id}/transfer

Sends a call to another number or user (blind transfer).

Write Key Admin switch: Live calls, Write.

Parameters

NameInTypeNotes
user requiredpathstringThe user ID, usually their extension number, like 1001. Default ~ Min length 0 Max length 16
call_id requiredpathstringThe ID of the call in progress.

Request body application/json

FieldTypeNotes
call-term-userstring
hostnamestring (hostname)
call-destination-session-idstringID of the call destination session.

Example request

curl -X PATCH "https://api.noodlevoice.com/ns-api/v2/domains/~/users/1001/calls/{call_id}/transfer" \
  -H "Authorization: Bearer $NOODLEVOICE_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "call-term-user": "1001",
    "hostname": "string",
    "call-destination-session-id": "string"
  }'
const res = await fetch("https://api.noodlevoice.com/ns-api/v2/domains/~/users/1001/calls/{call_id}/transfer", {
  method: "PATCH",
  headers: {
    Authorization: "Bearer " + process.env.NOODLEVOICE_KEY,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    "call-term-user": "1001",
    "hostname": "string",
    "call-destination-session-id": "string"
  }),
});
const data = await res.json();
import os, requests

r = requests.patch(
    "https://api.noodlevoice.com/ns-api/v2/domains/~/users/1001/calls/{call_id}/transfer",
    headers={"Authorization": "Bearer " + os.environ["NOODLEVOICE_KEY"]},
    json={
        "call-term-user": "1001",
        "hostname": "string",
        "call-destination-session-id": "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.

Transfer the other party

PATCH/domains/~/users/{user}/calls/{call_id}/transferPeer

Transfers the far end of the call, leaving the user free.

Write Key Admin switch: Live calls, Write.

Parameters

NameInTypeNotes
user requiredpathstringThe user ID, usually their extension number, like 1001. Default ~ Min length 0 Max length 16
call_id requiredpathstringThe ID of the call in progress.

Request body application/json

FieldTypeNotes
destinationstringWhere to send it: a number, extension or address.
validstring
prefixstring

Example request

curl -X PATCH "https://api.noodlevoice.com/ns-api/v2/domains/~/users/1001/calls/{call_id}/transferPeer" \
  -H "Authorization: Bearer $NOODLEVOICE_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "destination": "15555550123",
    "valid": "string",
    "prefix": "string"
  }'
const res = await fetch("https://api.noodlevoice.com/ns-api/v2/domains/~/users/1001/calls/{call_id}/transferPeer", {
  method: "PATCH",
  headers: {
    Authorization: "Bearer " + process.env.NOODLEVOICE_KEY,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    "destination": "15555550123",
    "valid": "string",
    "prefix": "string"
  }),
});
const data = await res.json();
import os, requests

r = requests.patch(
    "https://api.noodlevoice.com/ns-api/v2/domains/~/users/1001/calls/{call_id}/transferPeer",
    headers={"Authorization": "Bearer " + os.environ["NOODLEVOICE_KEY"]},
    json={
        "destination": "15555550123",
        "valid": "string",
        "prefix": "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.

Take a call off hold

PATCH/domains/~/users/{user}/calls/{call_id}/unhold

Changes unhold in one live call.

Write Key Admin switch: Live calls, Write.

Parameters

NameInTypeNotes
user requiredpathstringThe user ID, usually their extension number, like 1001. Default ~ Min length 0 Max length 16
call_id requiredpathstringThe ID of the call in progress.

Example request

curl -X PATCH "https://api.noodlevoice.com/ns-api/v2/domains/~/users/1001/calls/{call_id}/unhold" \
  -H "Authorization: Bearer $NOODLEVOICE_KEY"
const res = await fetch("https://api.noodlevoice.com/ns-api/v2/domains/~/users/1001/calls/{call_id}/unhold", {
  method: "PATCH",
  headers: {
    Authorization: "Bearer " + process.env.NOODLEVOICE_KEY,
  },
});
const data = await res.json();
import os, requests

r = requests.patch(
    "https://api.noodlevoice.com/ns-api/v2/domains/~/users/1001/calls/{call_id}/unhold",
    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.

Hang up a call

DELETE/domains/~/users/{user}/calls/{call_id}

Ends a call in progress.

Write Key Admin switch: Live calls, Write.

Parameters

NameInTypeNotes
user requiredpathstringThe user ID, usually their extension number, like 1001. Default ~ Min length 0 Max length 16
call_id requiredpathstringThe ID of the call in progress.

Example request

curl -X DELETE "https://api.noodlevoice.com/ns-api/v2/domains/~/users/1001/calls/{call_id}" \
  -H "Authorization: Bearer $NOODLEVOICE_KEY"
const res = await fetch("https://api.noodlevoice.com/ns-api/v2/domains/~/users/1001/calls/{call_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/~/users/1001/calls/{call_id}",
    headers={"Authorization": "Bearer " + os.environ["NOODLEVOICE_KEY"]},
)
print(r.status_code, r.json())

Response 200

Returns a status code with a short JSON message.

Reject a ringing call

DELETE/domains/~/users/{user}/calls/{call_id}/reject

Declines a ringing call so it follows the user's no answer rule.

Write Key Admin switch: Live calls, Write.

Parameters

NameInTypeNotes
user requiredpathstringThe user ID, usually their extension number, like 1001. Default ~ Min length 0 Max length 16
call_id requiredpathstringThe ID of the call in progress.

Example request

curl -X DELETE "https://api.noodlevoice.com/ns-api/v2/domains/~/users/1001/calls/{call_id}/reject" \
  -H "Authorization: Bearer $NOODLEVOICE_KEY"
const res = await fetch("https://api.noodlevoice.com/ns-api/v2/domains/~/users/1001/calls/{call_id}/reject", {
  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/~/users/1001/calls/{call_id}/reject",
    headers={"Authorization": "Bearer " + os.environ["NOODLEVOICE_KEY"]},
)
print(r.status_code, r.json())

Response 202

Returns a status code with a short JSON message.