Contacts
Contacts are address book entries. Account contacts are shared with everyone; user contacts are personal.
In the Key Admin this is the Contacts switch. Read lets a key call the GET endpoints below. Write lets it call the ones that change data.
List contacts
/domains/~/contactsReturns the contacts on the account.
Read Key Admin switch: Contacts, Read. Read only keys also work.
Example request
curl -X GET "https://api.noodlevoice.com/ns-api/v2/domains/~/contacts" \
-H "Authorization: Bearer $NOODLEVOICE_KEY"const res = await fetch("https://api.noodlevoice.com/ns-api/v2/domains/~/contacts", {
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/~/contacts",
headers={"Authorization": "Bearer " + os.environ["NOODLEVOICE_KEY"]},
)
print(r.status_code, r.json())Response 200
[
{
"unique-id": "string",
"name-first-name": "Front Desk",
"name-middle-name": "Front Desk",
"name-last-name": "Front Desk",
"email": "jane@example.com",
"company": "string",
"phonenumber-work": "15555550123",
"phonenumber-cell": "15555550123",
"...": "4 more fields"
}
]Response fields (12)
| Field | Type | Notes |
|---|---|---|
unique-id | string | ID of the unique. |
name-first-name | string | First name. |
name-middle-name | string | Name of the name middle. |
name-last-name | string | Last name. |
email | string | Email address. Separate more than one with commas. |
company | string | |
phonenumber-work | string | |
phonenumber-cell | string | |
phonenumber-fax | string | |
phonenumber-home | string | |
tags | string | |
created-datetime | string | Created (date and time). |
Get a contact
/domains/~/contacts/{contact_id}Returns one contact by its ID.
Read Key Admin switch: Contacts, Read. Read only keys also work.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
contact_id required | path | string | The contact ID. |
Example request
curl -X GET "https://api.noodlevoice.com/ns-api/v2/domains/~/contacts/{contact_id}" \
-H "Authorization: Bearer $NOODLEVOICE_KEY"const res = await fetch("https://api.noodlevoice.com/ns-api/v2/domains/~/contacts/{contact_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/~/contacts/{contact_id}",
headers={"Authorization": "Bearer " + os.environ["NOODLEVOICE_KEY"]},
)
print(r.status_code, r.json())Response 200
[
{
"unique-id": "string",
"name-first-name": "Front Desk",
"name-middle-name": "Front Desk",
"name-last-name": "Front Desk",
"email": "jane@example.com",
"company": "string",
"phonenumber-work": "15555550123",
"phonenumber-cell": "15555550123",
"...": "4 more fields"
}
]Response fields (12)
| Field | Type | Notes |
|---|---|---|
unique-id | string | ID of the unique. |
name-first-name | string | First name. |
name-middle-name | string | Name of the name middle. |
name-last-name | string | Last name. |
email | string | Email address. Separate more than one with commas. |
company | string | |
phonenumber-work | string | |
phonenumber-cell | string | |
phonenumber-fax | string | |
phonenumber-home | string | |
tags | string | |
created-datetime | string | Created (date and time). |
Create a contact
/domains/~/contactsAdds a new contact on the account.
Write Key Admin switch: Contacts, Write.
Request body application/json
| Field | Type | Notes |
|---|---|---|
name-first-name required | string | First name. |
name-middle-name required | string | Name of the name middle. |
name-last-name required | string | Last name. |
email required | string | Email address. Separate more than one with commas. |
company required | string | |
phonenumber-work required | string | |
phonenumber-cell required | string | |
phonenumber-fax required | string | |
phonenumber-home required | string |
Example request
curl -X POST "https://api.noodlevoice.com/ns-api/v2/domains/~/contacts" \
-H "Authorization: Bearer $NOODLEVOICE_KEY" \
-H "Content-Type: application/json" \
-d '{
"name-first-name": "Front Desk",
"name-middle-name": "Front Desk",
"name-last-name": "Front Desk",
"email": "jane@example.com",
"company": "string",
"phonenumber-work": "15555550123",
"phonenumber-cell": "15555550123",
"phonenumber-fax": "15555550123",
"phonenumber-home": "15555550123"
}'const res = await fetch("https://api.noodlevoice.com/ns-api/v2/domains/~/contacts", {
method: "POST",
headers: {
Authorization: "Bearer " + process.env.NOODLEVOICE_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({
"name-first-name": "Front Desk",
"name-middle-name": "Front Desk",
"name-last-name": "Front Desk",
"email": "jane@example.com",
"company": "string",
"phonenumber-work": "15555550123",
"phonenumber-cell": "15555550123",
"phonenumber-fax": "15555550123",
"phonenumber-home": "15555550123"
}),
});
const data = await res.json();import os, requests
r = requests.post(
"https://api.noodlevoice.com/ns-api/v2/domains/~/contacts",
headers={"Authorization": "Bearer " + os.environ["NOODLEVOICE_KEY"]},
json={
"name-first-name": "Front Desk",
"name-middle-name": "Front Desk",
"name-last-name": "Front Desk",
"email": "jane@example.com",
"company": "string",
"phonenumber-work": "15555550123",
"phonenumber-cell": "15555550123",
"phonenumber-fax": "15555550123",
"phonenumber-home": "15555550123"
},
)
print(r.status_code, r.json())Response 200
Returns a status code with a short JSON message.
Update a contact
/domains/~/contacts/{contact_id}Changes an existing contact. Send the fields you want to set in the body.
Write Key Admin switch: Contacts, Write.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
contact_id required | path | string | The contact ID. |
Request body application/json
| Field | Type | Notes |
|---|---|---|
name-first-name required | string | First name. |
name-middle-name required | string | Name of the name middle. |
name-last-name required | string | Last name. |
email required | string | Email address. Separate more than one with commas. |
company required | string | |
phonenumber-work required | string | |
phonenumber-cell required | string | |
phonenumber-fax required | string | |
phonenumber-home required | string |
Example request
curl -X PUT "https://api.noodlevoice.com/ns-api/v2/domains/~/contacts/{contact_id}" \
-H "Authorization: Bearer $NOODLEVOICE_KEY" \
-H "Content-Type: application/json" \
-d '{
"name-first-name": "Front Desk",
"name-middle-name": "Front Desk",
"name-last-name": "Front Desk",
"email": "jane@example.com",
"company": "string",
"phonenumber-work": "15555550123",
"phonenumber-cell": "15555550123",
"phonenumber-fax": "15555550123",
"phonenumber-home": "15555550123"
}'const res = await fetch("https://api.noodlevoice.com/ns-api/v2/domains/~/contacts/{contact_id}", {
method: "PUT",
headers: {
Authorization: "Bearer " + process.env.NOODLEVOICE_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({
"name-first-name": "Front Desk",
"name-middle-name": "Front Desk",
"name-last-name": "Front Desk",
"email": "jane@example.com",
"company": "string",
"phonenumber-work": "15555550123",
"phonenumber-cell": "15555550123",
"phonenumber-fax": "15555550123",
"phonenumber-home": "15555550123"
}),
});
const data = await res.json();import os, requests
r = requests.put(
"https://api.noodlevoice.com/ns-api/v2/domains/~/contacts/{contact_id}",
headers={"Authorization": "Bearer " + os.environ["NOODLEVOICE_KEY"]},
json={
"name-first-name": "Front Desk",
"name-middle-name": "Front Desk",
"name-last-name": "Front Desk",
"email": "jane@example.com",
"company": "string",
"phonenumber-work": "15555550123",
"phonenumber-cell": "15555550123",
"phonenumber-fax": "15555550123",
"phonenumber-home": "15555550123"
},
)
print(r.status_code, r.json())Response 200
Returns a status code with a short JSON message.
Delete a contact
/domains/~/contacts/{contact_id}Removes a contact. This can't be undone.
Write Key Admin switch: Contacts, Write.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
contact_id required | path | string | The contact ID. |
Example request
curl -X DELETE "https://api.noodlevoice.com/ns-api/v2/domains/~/contacts/{contact_id}" \
-H "Authorization: Bearer $NOODLEVOICE_KEY"const res = await fetch("https://api.noodlevoice.com/ns-api/v2/domains/~/contacts/{contact_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/~/contacts/{contact_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.
List contacts for a user
/domains/~/users/{user}/contactsReturns the contacts for one user.
Read Key Admin switch: Contacts, 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 |
includeDomain | query | boolean | Set to yes to include the account's shared contacts too. |
Example request
curl -X GET "https://api.noodlevoice.com/ns-api/v2/domains/~/users/1001/contacts" \
-H "Authorization: Bearer $NOODLEVOICE_KEY"const res = await fetch("https://api.noodlevoice.com/ns-api/v2/domains/~/users/1001/contacts", {
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/contacts",
headers={"Authorization": "Bearer " + os.environ["NOODLEVOICE_KEY"]},
)
print(r.status_code, r.json())Response 200
[
{
"unique-id": "string",
"name-first-name": "Front Desk",
"name-middle-name": "Front Desk",
"name-last-name": "Front Desk",
"email": "jane@example.com",
"company": "string",
"phonenumber-work": "15555550123",
"phonenumber-cell": "15555550123",
"...": "4 more fields"
}
]Response fields (12)
| Field | Type | Notes |
|---|---|---|
unique-id | string | ID of the unique. |
name-first-name | string | First name. |
name-middle-name | string | Name of the name middle. |
name-last-name | string | Last name. |
email | string | Email address. Separate more than one with commas. |
company | string | |
phonenumber-work | string | |
phonenumber-cell | string | |
phonenumber-fax | string | |
phonenumber-home | string | |
tags | string | |
created-datetime | string | Created (date and time). |
Count contacts for a user
/domains/~/users/{user}/contacts/countReturns how many contacts there are for one user, as {"total": n}.
Read Key Admin switch: Contacts, 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/contacts/count" \
-H "Authorization: Bearer $NOODLEVOICE_KEY"const res = await fetch("https://api.noodlevoice.com/ns-api/v2/domains/~/users/1001/contacts/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/~/users/1001/contacts/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 user's contact
/domains/~/users/{user}/contacts/{contact_id}Returns one of a user's contacts.
Read Key Admin switch: Contacts, 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 |
contact_id required | path | string | The contact ID. |
Example request
curl -X GET "https://api.noodlevoice.com/ns-api/v2/domains/~/users/1001/contacts/{contact_id}" \
-H "Authorization: Bearer $NOODLEVOICE_KEY"const res = await fetch("https://api.noodlevoice.com/ns-api/v2/domains/~/users/1001/contacts/{contact_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/contacts/{contact_id}",
headers={"Authorization": "Bearer " + os.environ["NOODLEVOICE_KEY"]},
)
print(r.status_code, r.json())Response 200
{
"unique-id": "string",
"name-first-name": "Front Desk",
"name-middle-name": "Front Desk",
"name-last-name": "Front Desk",
"email": "jane@example.com",
"company": "string",
"phonenumber-work": "15555550123",
"phonenumber-cell": "15555550123",
"...": "4 more fields"
}Response fields (12)
| Field | Type | Notes |
|---|---|---|
unique-id | string | ID of the unique. |
name-first-name | string | First name. |
name-middle-name | string | Name of the name middle. |
name-last-name | string | Last name. |
email | string | Email address. Separate more than one with commas. |
company | string | |
phonenumber-work | string | |
phonenumber-cell | string | |
phonenumber-fax | string | |
phonenumber-home | string | |
tags | string | |
created-datetime | string | Created (date and time). |
Create a contact for a user
/domains/~/users/{user}/contactsAdds a new contact for one user.
Write Key Admin switch: Contacts, 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 |
|---|---|---|
name-first-name required | string | First name. |
name-middle-name required | string | Name of the name middle. |
name-last-name required | string | Last name. |
email required | string | Email address. Separate more than one with commas. |
company required | string | |
phonenumber-work required | string | |
phonenumber-cell required | string | |
phonenumber-fax required | string | |
phonenumber-home required | string |
Example request
curl -X POST "https://api.noodlevoice.com/ns-api/v2/domains/~/users/1001/contacts" \
-H "Authorization: Bearer $NOODLEVOICE_KEY" \
-H "Content-Type: application/json" \
-d '{
"name-first-name": "Front Desk",
"name-middle-name": "Front Desk",
"name-last-name": "Front Desk",
"email": "jane@example.com",
"company": "string",
"phonenumber-work": "15555550123",
"phonenumber-cell": "15555550123",
"phonenumber-fax": "15555550123",
"phonenumber-home": "15555550123"
}'const res = await fetch("https://api.noodlevoice.com/ns-api/v2/domains/~/users/1001/contacts", {
method: "POST",
headers: {
Authorization: "Bearer " + process.env.NOODLEVOICE_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({
"name-first-name": "Front Desk",
"name-middle-name": "Front Desk",
"name-last-name": "Front Desk",
"email": "jane@example.com",
"company": "string",
"phonenumber-work": "15555550123",
"phonenumber-cell": "15555550123",
"phonenumber-fax": "15555550123",
"phonenumber-home": "15555550123"
}),
});
const data = await res.json();import os, requests
r = requests.post(
"https://api.noodlevoice.com/ns-api/v2/domains/~/users/1001/contacts",
headers={"Authorization": "Bearer " + os.environ["NOODLEVOICE_KEY"]},
json={
"name-first-name": "Front Desk",
"name-middle-name": "Front Desk",
"name-last-name": "Front Desk",
"email": "jane@example.com",
"company": "string",
"phonenumber-work": "15555550123",
"phonenumber-cell": "15555550123",
"phonenumber-fax": "15555550123",
"phonenumber-home": "15555550123"
},
)
print(r.status_code, r.json())Response 200
Returns a status code with a short JSON message.
Update a user's contact
/domains/~/users/{user}/contacts/{contact_id}Changes one of a user's contacts.
Write Key Admin switch: Contacts, 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 |
contact_id required | path | string | The contact ID. |
Request body application/json
| Field | Type | Notes |
|---|---|---|
name-first-name required | string | First name. |
name-middle-name required | string | Name of the name middle. |
name-last-name required | string | Last name. |
email required | string | Email address. Separate more than one with commas. |
company required | string | |
phonenumber-work required | string | |
phonenumber-cell required | string | |
phonenumber-fax required | string | |
phonenumber-home required | string | |
created-datetime required | string | Created (date and time). |
Example request
curl -X PUT "https://api.noodlevoice.com/ns-api/v2/domains/~/users/1001/contacts/{contact_id}" \
-H "Authorization: Bearer $NOODLEVOICE_KEY" \
-H "Content-Type: application/json" \
-d '{
"name-first-name": "Front Desk",
"name-middle-name": "Front Desk",
"name-last-name": "Front Desk",
"email": "jane@example.com",
"company": "string",
"phonenumber-work": "15555550123",
"phonenumber-cell": "15555550123",
"phonenumber-fax": "15555550123",
"phonenumber-home": "15555550123",
"created-datetime": "2026-11-02 09:00:00"
}'const res = await fetch("https://api.noodlevoice.com/ns-api/v2/domains/~/users/1001/contacts/{contact_id}", {
method: "PUT",
headers: {
Authorization: "Bearer " + process.env.NOODLEVOICE_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({
"name-first-name": "Front Desk",
"name-middle-name": "Front Desk",
"name-last-name": "Front Desk",
"email": "jane@example.com",
"company": "string",
"phonenumber-work": "15555550123",
"phonenumber-cell": "15555550123",
"phonenumber-fax": "15555550123",
"phonenumber-home": "15555550123",
"created-datetime": "2026-11-02 09:00:00"
}),
});
const data = await res.json();import os, requests
r = requests.put(
"https://api.noodlevoice.com/ns-api/v2/domains/~/users/1001/contacts/{contact_id}",
headers={"Authorization": "Bearer " + os.environ["NOODLEVOICE_KEY"]},
json={
"name-first-name": "Front Desk",
"name-middle-name": "Front Desk",
"name-last-name": "Front Desk",
"email": "jane@example.com",
"company": "string",
"phonenumber-work": "15555550123",
"phonenumber-cell": "15555550123",
"phonenumber-fax": "15555550123",
"phonenumber-home": "15555550123",
"created-datetime": "2026-11-02 09:00:00"
},
)
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 user's contact
/domains/~/users/{user}/contacts/{contact_id}Removes one of a user's contacts. This can't be undone.
Write Key Admin switch: Contacts, 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 |
contact_id required | path | string | The contact ID. |
Example request
curl -X DELETE "https://api.noodlevoice.com/ns-api/v2/domains/~/users/1001/contacts/{contact_id}" \
-H "Authorization: Bearer $NOODLEVOICE_KEY"const res = await fetch("https://api.noodlevoice.com/ns-api/v2/domains/~/users/1001/contacts/{contact_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/contacts/{contact_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.