API Reference
Key Admin
Numbers and call routing

Meetings and video

Meetings are scheduled video and audio meetings owned by a user, plus the account's video settings and plans.

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

Set up video meetings

POST/domains/~/video

Turns on video meetings for the account.

Write Key Admin switch: Meetings and video, Write.

Request body application/json

FieldTypeNotes
name requiredstring
subdomain requiredstring

Example request

curl -X POST "https://api.noodlevoice.com/ns-api/v2/domains/~/video" \
  -H "Authorization: Bearer $NOODLEVOICE_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Front Desk",
    "subdomain": "string"
  }'
const res = await fetch("https://api.noodlevoice.com/ns-api/v2/domains/~/video", {
  method: "POST",
  headers: {
    Authorization: "Bearer " + process.env.NOODLEVOICE_KEY,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    "name": "Front Desk",
    "subdomain": "string"
  }),
});
const data = await res.json();
import os, requests

r = requests.post(
    "https://api.noodlevoice.com/ns-api/v2/domains/~/video",
    headers={"Authorization": "Bearer " + os.environ["NOODLEVOICE_KEY"]},
    json={
        "name": "Front Desk",
        "subdomain": "string"
    },
)
print(r.status_code, r.json())

Response 200

[
  {
    "id": 1,
    "domain": "string",
    "user": "1001",
    "description": "string",
    "current_timestamp": "2026-11-02 09:00:00",
    "meeting-calendar-invite-id": "string",
    "meeting-ordinal-sequence": 1,
    "core-server": "string",
    "...": "32 more fields"
  }
]
Response fields (40)
FieldTypeNotes
idintegerThe item's ID.
domainstringThe account the item belongs to. Max length 64
userstringThe user ID (extension).
descriptionstringA note about the item.
current_timestampstring (date-time)
meeting-calendar-invite-idstringID of the meeting calendar invite.
meeting-ordinal-sequenceinteger
core-serverstring
chat-session-idstringID of the chat session.
meeting-registration-idstringID of the meeting registration.
meeting-instance-idstringID of the meeting instance.
meeting-namestringName of the meeting.
meeting-typestring One of: presentation, conference Default conference
limits-max-participantsinteger
meeting-statusany
meeting-schedule-start-datetimestring (date-time)Meeting schedule start (date and time).
timezonestring One of: US/Alaska, US/Central, US/Eastern, US/Hawaii, US/Mountain, US/Pacific, Africa/Addis_Ababa, Africa/Algiers, Africa/Brazzaville, Africa/Cairo, Africa/Casablanca, Africa/Dakar, Africa/Dar_es_Salaam, Africa/Djibouti, Africa/Johannesburg, Africa/Khartoum, Africa/Kigali, Africa/Kinshasa, Africa/Lagos, Africa/Nairobi, Africa/Timbuktu, Africa/Tripoli, Africa/Tunis, America/Antigua, America/Aruba, America/Belize, America/Bogota, America/Buenos_Aires, America/Cancun, America/Caracas, America/Cayman, America/Chihuahua, America/Costa_Rica, America/Denver, America/Detroit, America/Edmonton, America/El_Salvador, America/Ensenada, America/Grenada, America/Guadeloupe ...
meeting-schedule-duration-minutesintegerMeeting schedule duration, in minutes.
meeting-schedule-recurrence-rulestring
meeting-video-allowed-fromstring One of: everyone, host, presenters
meeting-audio-allowed-fromstring One of: everyone, host, presenters
meeting-chat-enabledintegerTurns meeting chat on or off (yes or no). Default 1
meeting-chat-history-enabledintegerTurns meeting chat history on or off (yes or no). Default 1
meeting-question-answer-enabledintegerTurns meeting question answer on or off (yes or no). Default 0
meeting-recording-enabledintegerTurns meeting recording on or off (yes or no). Default 0
meeting-join-require-invite-enabledintegerTurns meeting join require invite on or off (yes or no). Default 0
meeting-join-require-passcode-enabledintegerTurns meeting join require passcode on or off (yes or no). Default 0
meeting-require-host-to-begin-enabledintegerTurns meeting require host to begin on or off (yes or no). Default 0
meeting-allow-changes-from-hosts-enabledintegerTurns meeting allow changes from hosts on or off (yes or no). Default 1
meeting-hide-attendee-list-enabledintegerTurns meeting hide attendee list on or off (yes or no). Default 0
meeting-lock-enabledintegerTurns meeting lock on or off (yes or no). Default 0
meeting-lock-allowedstring
meeting-room-enabledintegerTurns meeting room on or off (yes or no). Default 0
meeting-dial-in-number-blobany
meeting-passcodestring
meeting-previous-presenter-attendee-idstringID of the meeting previous presenter attendee.
meeting-presenter-attendee-idstringID of the meeting presenter attendee.
meeting-video-layout string One of: spotlight, conversation, grid
last-modified-datetimestring (date-time)Last modified (date and time).
meeting-instance-actual-start-datetimestring (date-time)Meeting instance actual start (date and time).

Add a video plan

POST/domains/~/video/subscription/{slug}

Adds a video meeting plan to the account.

Write Key Admin switch: Meetings and video, Write.

Parameters

NameInTypeNotes
slug requiredpathstringThe video plan's short name.

Request body application/json

FieldTypeNotes
switch-planboolean
host-limitintegerLimit on host.

Example request

curl -X POST "https://api.noodlevoice.com/ns-api/v2/domains/~/video/subscription/{plan}" \
  -H "Authorization: Bearer $NOODLEVOICE_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "switch-plan": true,
    "host-limit": 1
  }'
const res = await fetch("https://api.noodlevoice.com/ns-api/v2/domains/~/video/subscription/{plan}", {
  method: "POST",
  headers: {
    Authorization: "Bearer " + process.env.NOODLEVOICE_KEY,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    "switch-plan": true,
    "host-limit": 1
  }),
});
const data = await res.json();
import os, requests

r = requests.post(
    "https://api.noodlevoice.com/ns-api/v2/domains/~/video/subscription/{plan}",
    headers={"Authorization": "Bearer " + os.environ["NOODLEVOICE_KEY"]},
    json={
        "switch-plan": True,
        "host-limit": 1
    },
)
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: 409. See errors.

Update video settings

PUT/domains/~/video

Changes the account's video meeting settings, such as the company name.

Write Key Admin switch: Meetings and video, Write.

Request body application/json

FieldTypeNotes
company-namestringName of the company.

Example request

curl -X PUT "https://api.noodlevoice.com/ns-api/v2/domains/~/video" \
  -H "Authorization: Bearer $NOODLEVOICE_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "company-name": "Front Desk"
  }'
const res = await fetch("https://api.noodlevoice.com/ns-api/v2/domains/~/video", {
  method: "PUT",
  headers: {
    Authorization: "Bearer " + process.env.NOODLEVOICE_KEY,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    "company-name": "Front Desk"
  }),
});
const data = await res.json();
import os, requests

r = requests.put(
    "https://api.noodlevoice.com/ns-api/v2/domains/~/video",
    headers={"Authorization": "Bearer " + os.environ["NOODLEVOICE_KEY"]},
    json={
        "company-name": "Front Desk"
    },
)
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: 409. See errors.

Update video plans

PUT/domains/~/video/subscriptions

Changes the account's video plans and add-ons in one request.

Write Key Admin switch: Meetings and video, Write.

Request body application/json

FieldTypeNotes
plansarray of string
add-onsarray of string
default-planstring
default-addonsarray of string

Example request

curl -X PUT "https://api.noodlevoice.com/ns-api/v2/domains/~/video/subscriptions" \
  -H "Authorization: Bearer $NOODLEVOICE_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "plans": [
      "string"
    ],
    "add-ons": [
      "string"
    ],
    "default-plan": "string",
    "default-addons": [
      "string"
    ]
  }'
const res = await fetch("https://api.noodlevoice.com/ns-api/v2/domains/~/video/subscriptions", {
  method: "PUT",
  headers: {
    Authorization: "Bearer " + process.env.NOODLEVOICE_KEY,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    "plans": [
      "string"
    ],
    "add-ons": [
      "string"
    ],
    "default-plan": "string",
    "default-addons": [
      "string"
    ]
  }),
});
const data = await res.json();
import os, requests

r = requests.put(
    "https://api.noodlevoice.com/ns-api/v2/domains/~/video/subscriptions",
    headers={"Authorization": "Bearer " + os.environ["NOODLEVOICE_KEY"]},
    json={
        "plans": [
            "string"
        ],
        "add-ons": [
            "string"
        ],
        "default-plan": "string",
        "default-addons": [
            "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: 409. See errors.

Turn off video meetings

DELETE/domains/~/video

Removes video meetings from the account.

Write Key Admin switch: Meetings and video, Write.

Example request

curl -X DELETE "https://api.noodlevoice.com/ns-api/v2/domains/~/video" \
  -H "Authorization: Bearer $NOODLEVOICE_KEY"
const res = await fetch("https://api.noodlevoice.com/ns-api/v2/domains/~/video", {
  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/~/video",
    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: 409. See errors.

Remove a video plan

DELETE/domains/~/video/subscription/{slug}

Removes a video meeting plan from the account.

Write Key Admin switch: Meetings and video, Write.

Parameters

NameInTypeNotes
slug requiredpathstringThe video plan's short name.

Example request

curl -X DELETE "https://api.noodlevoice.com/ns-api/v2/domains/~/video/subscription/{plan}" \
  -H "Authorization: Bearer $NOODLEVOICE_KEY"
const res = await fetch("https://api.noodlevoice.com/ns-api/v2/domains/~/video/subscription/{plan}", {
  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/~/video/subscription/{plan}",
    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: 409. See errors.

List meetings for a user

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

Returns the meetings for one user.

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

Response 200

[
  {
    "id": 1,
    "domain": "string",
    "user": "1001",
    "description": "string",
    "current_timestamp": "2026-11-02 09:00:00",
    "meeting-calendar-invite-id": "string",
    "meeting-ordinal-sequence": 1,
    "core-server": "string",
    "...": "32 more fields"
  }
]
Response fields (40)
FieldTypeNotes
idintegerThe item's ID.
domainstringThe account the item belongs to. Max length 64
userstringThe user ID (extension).
descriptionstringA note about the item.
current_timestampstring (date-time)
meeting-calendar-invite-idstringID of the meeting calendar invite.
meeting-ordinal-sequenceinteger
core-serverstring
chat-session-idstringID of the chat session.
meeting-registration-idstringID of the meeting registration.
meeting-instance-idstringID of the meeting instance.
meeting-namestringName of the meeting.
meeting-typestring One of: presentation, conference Default conference
limits-max-participantsinteger
meeting-statusany
meeting-schedule-start-datetimestring (date-time)Meeting schedule start (date and time).
timezonestring One of: US/Alaska, US/Central, US/Eastern, US/Hawaii, US/Mountain, US/Pacific, Africa/Addis_Ababa, Africa/Algiers, Africa/Brazzaville, Africa/Cairo, Africa/Casablanca, Africa/Dakar, Africa/Dar_es_Salaam, Africa/Djibouti, Africa/Johannesburg, Africa/Khartoum, Africa/Kigali, Africa/Kinshasa, Africa/Lagos, Africa/Nairobi, Africa/Timbuktu, Africa/Tripoli, Africa/Tunis, America/Antigua, America/Aruba, America/Belize, America/Bogota, America/Buenos_Aires, America/Cancun, America/Caracas, America/Cayman, America/Chihuahua, America/Costa_Rica, America/Denver, America/Detroit, America/Edmonton, America/El_Salvador, America/Ensenada, America/Grenada, America/Guadeloupe ...
meeting-schedule-duration-minutesintegerMeeting schedule duration, in minutes.
meeting-schedule-recurrence-rulestring
meeting-video-allowed-fromstring One of: everyone, host, presenters
meeting-audio-allowed-fromstring One of: everyone, host, presenters
meeting-chat-enabledintegerTurns meeting chat on or off (yes or no). Default 1
meeting-chat-history-enabledintegerTurns meeting chat history on or off (yes or no). Default 1
meeting-question-answer-enabledintegerTurns meeting question answer on or off (yes or no). Default 0
meeting-recording-enabledintegerTurns meeting recording on or off (yes or no). Default 0
meeting-join-require-invite-enabledintegerTurns meeting join require invite on or off (yes or no). Default 0
meeting-join-require-passcode-enabledintegerTurns meeting join require passcode on or off (yes or no). Default 0
meeting-require-host-to-begin-enabledintegerTurns meeting require host to begin on or off (yes or no). Default 0
meeting-allow-changes-from-hosts-enabledintegerTurns meeting allow changes from hosts on or off (yes or no). Default 1
meeting-hide-attendee-list-enabledintegerTurns meeting hide attendee list on or off (yes or no). Default 0
meeting-lock-enabledintegerTurns meeting lock on or off (yes or no). Default 0
meeting-lock-allowedstring
meeting-room-enabledintegerTurns meeting room on or off (yes or no). Default 0
meeting-dial-in-number-blobany
meeting-passcodestring
meeting-previous-presenter-attendee-idstringID of the meeting previous presenter attendee.
meeting-presenter-attendee-idstringID of the meeting presenter attendee.
meeting-video-layout string One of: spotlight, conversation, grid
last-modified-datetimestring (date-time)Last modified (date and time).
meeting-instance-actual-start-datetimestring (date-time)Meeting instance actual start (date and time).

Count meetings for a user

GET/domains/~/users/{user}/meetings/count

Returns how many meetings there are for one user, as {"total": n}.

Read Key Admin switch: Meetings and video, 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/meetings/count" \
  -H "Authorization: Bearer $NOODLEVOICE_KEY"
const res = await fetch("https://api.noodlevoice.com/ns-api/v2/domains/~/users/1001/meetings/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/meetings/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 meeting

GET/domains/~/users/{user}/meetings/{id}

Returns one of a user's meetings.

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

Response 200

{
  "id": 1,
  "domain": "string",
  "user": "1001",
  "description": "string",
  "current_timestamp": "2026-11-02 09:00:00",
  "meeting-calendar-invite-id": "string",
  "meeting-ordinal-sequence": 1,
  "core-server": "string",
  "...": "32 more fields"
}
Response fields (40)
FieldTypeNotes
idintegerThe item's ID.
domainstringThe account the item belongs to. Max length 64
userstringThe user ID (extension).
descriptionstringA note about the item.
current_timestampstring (date-time)
meeting-calendar-invite-idstringID of the meeting calendar invite.
meeting-ordinal-sequenceinteger
core-serverstring
chat-session-idstringID of the chat session.
meeting-registration-idstringID of the meeting registration.
meeting-instance-idstringID of the meeting instance.
meeting-namestringName of the meeting.
meeting-typestring One of: presentation, conference Default conference
limits-max-participantsinteger
meeting-statusany
meeting-schedule-start-datetimestring (date-time)Meeting schedule start (date and time).
timezonestring One of: US/Alaska, US/Central, US/Eastern, US/Hawaii, US/Mountain, US/Pacific, Africa/Addis_Ababa, Africa/Algiers, Africa/Brazzaville, Africa/Cairo, Africa/Casablanca, Africa/Dakar, Africa/Dar_es_Salaam, Africa/Djibouti, Africa/Johannesburg, Africa/Khartoum, Africa/Kigali, Africa/Kinshasa, Africa/Lagos, Africa/Nairobi, Africa/Timbuktu, Africa/Tripoli, Africa/Tunis, America/Antigua, America/Aruba, America/Belize, America/Bogota, America/Buenos_Aires, America/Cancun, America/Caracas, America/Cayman, America/Chihuahua, America/Costa_Rica, America/Denver, America/Detroit, America/Edmonton, America/El_Salvador, America/Ensenada, America/Grenada, America/Guadeloupe ...
meeting-schedule-duration-minutesintegerMeeting schedule duration, in minutes.
meeting-schedule-recurrence-rulestring
meeting-video-allowed-fromstring One of: everyone, host, presenters
meeting-audio-allowed-fromstring One of: everyone, host, presenters
meeting-chat-enabledintegerTurns meeting chat on or off (yes or no). Default 1
meeting-chat-history-enabledintegerTurns meeting chat history on or off (yes or no). Default 1
meeting-question-answer-enabledintegerTurns meeting question answer on or off (yes or no). Default 0
meeting-recording-enabledintegerTurns meeting recording on or off (yes or no). Default 0
meeting-join-require-invite-enabledintegerTurns meeting join require invite on or off (yes or no). Default 0
meeting-join-require-passcode-enabledintegerTurns meeting join require passcode on or off (yes or no). Default 0
meeting-require-host-to-begin-enabledintegerTurns meeting require host to begin on or off (yes or no). Default 0
meeting-allow-changes-from-hosts-enabledintegerTurns meeting allow changes from hosts on or off (yes or no). Default 1
meeting-hide-attendee-list-enabledintegerTurns meeting hide attendee list on or off (yes or no). Default 0
meeting-lock-enabledintegerTurns meeting lock on or off (yes or no). Default 0
meeting-lock-allowedstring
meeting-room-enabledintegerTurns meeting room on or off (yes or no). Default 0
meeting-dial-in-number-blobany
meeting-passcodestring
meeting-previous-presenter-attendee-idstringID of the meeting previous presenter attendee.
meeting-presenter-attendee-idstringID of the meeting presenter attendee.
meeting-video-layout string One of: spotlight, conversation, grid
last-modified-datetimestring (date-time)Last modified (date and time).
meeting-instance-actual-start-datetimestring (date-time)Meeting instance actual start (date and time).

Other responses: 404. See errors.

Get a meeting's attendance log

GET/domains/~/users/{user}/meetings/{id}/instance/{instance}/log

Returns who joined one occurrence of a meeting and when.

Read Key Admin switch: Meetings and video, 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
id requiredpathstringThe ID of the item, as returned when you list or create it.
instance requiredpathstringThe meeting occurrence ID.

Example request

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

Response 200

{
  "meeting_events": [
    {}
  ]
}
Response fields (10)
FieldTypeNotes
meeting_eventsarray of object
meeting_events[].event_idstring
meeting_events[].meeting_idinteger
meeting_events[].source_idinteger
meeting_events[].eventstring
meeting_events[].targetstring
meeting_events[].detailsstring
meeting_events[].timestampstring
meeting_events[].meeting-instance-idstringID of the meeting instance.
meeting_events[].file-sourcestring

Check a meeting exists

GET/domains/~/users/{user}/meetings/{meeting_id}/count

Returns a total of 1 when the meeting exists.

Read Key Admin switch: Meetings and video, 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
meeting_id requiredpathstringThe meeting ID.

Example request

curl -X GET "https://api.noodlevoice.com/ns-api/v2/domains/~/users/1001/meetings/{meeting_id}/count" \
  -H "Authorization: Bearer $NOODLEVOICE_KEY"
const res = await fetch("https://api.noodlevoice.com/ns-api/v2/domains/~/users/1001/meetings/{meeting_id}/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/meetings/{meeting_id}/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 user's video settings

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

Returns the video meeting account settings for one user.

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

Response 200

[
  {
    "id": 1,
    "domain": "string",
    "user": "1001",
    "description": "string",
    "current_timestamp": "2026-11-02 09:00:00",
    "meeting-calendar-invite-id": "string",
    "meeting-ordinal-sequence": 1,
    "core-server": "string",
    "...": "32 more fields"
  }
]
Response fields (40)
FieldTypeNotes
idintegerThe item's ID.
domainstringThe account the item belongs to. Max length 64
userstringThe user ID (extension).
descriptionstringA note about the item.
current_timestampstring (date-time)
meeting-calendar-invite-idstringID of the meeting calendar invite.
meeting-ordinal-sequenceinteger
core-serverstring
chat-session-idstringID of the chat session.
meeting-registration-idstringID of the meeting registration.
meeting-instance-idstringID of the meeting instance.
meeting-namestringName of the meeting.
meeting-typestring One of: presentation, conference Default conference
limits-max-participantsinteger
meeting-statusany
meeting-schedule-start-datetimestring (date-time)Meeting schedule start (date and time).
timezonestring One of: US/Alaska, US/Central, US/Eastern, US/Hawaii, US/Mountain, US/Pacific, Africa/Addis_Ababa, Africa/Algiers, Africa/Brazzaville, Africa/Cairo, Africa/Casablanca, Africa/Dakar, Africa/Dar_es_Salaam, Africa/Djibouti, Africa/Johannesburg, Africa/Khartoum, Africa/Kigali, Africa/Kinshasa, Africa/Lagos, Africa/Nairobi, Africa/Timbuktu, Africa/Tripoli, Africa/Tunis, America/Antigua, America/Aruba, America/Belize, America/Bogota, America/Buenos_Aires, America/Cancun, America/Caracas, America/Cayman, America/Chihuahua, America/Costa_Rica, America/Denver, America/Detroit, America/Edmonton, America/El_Salvador, America/Ensenada, America/Grenada, America/Guadeloupe ...
meeting-schedule-duration-minutesintegerMeeting schedule duration, in minutes.
meeting-schedule-recurrence-rulestring
meeting-video-allowed-fromstring One of: everyone, host, presenters
meeting-audio-allowed-fromstring One of: everyone, host, presenters
meeting-chat-enabledintegerTurns meeting chat on or off (yes or no). Default 1
meeting-chat-history-enabledintegerTurns meeting chat history on or off (yes or no). Default 1
meeting-question-answer-enabledintegerTurns meeting question answer on or off (yes or no). Default 0
meeting-recording-enabledintegerTurns meeting recording on or off (yes or no). Default 0
meeting-join-require-invite-enabledintegerTurns meeting join require invite on or off (yes or no). Default 0
meeting-join-require-passcode-enabledintegerTurns meeting join require passcode on or off (yes or no). Default 0
meeting-require-host-to-begin-enabledintegerTurns meeting require host to begin on or off (yes or no). Default 0
meeting-allow-changes-from-hosts-enabledintegerTurns meeting allow changes from hosts on or off (yes or no). Default 1
meeting-hide-attendee-list-enabledintegerTurns meeting hide attendee list on or off (yes or no). Default 0
meeting-lock-enabledintegerTurns meeting lock on or off (yes or no). Default 0
meeting-lock-allowedstring
meeting-room-enabledintegerTurns meeting room on or off (yes or no). Default 0
meeting-dial-in-number-blobany
meeting-passcodestring
meeting-previous-presenter-attendee-idstringID of the meeting previous presenter attendee.
meeting-presenter-attendee-idstringID of the meeting presenter attendee.
meeting-video-layout string One of: spotlight, conversation, grid
last-modified-datetimestring (date-time)Last modified (date and time).
meeting-instance-actual-start-datetimestring (date-time)Meeting instance actual start (date and time).

Get a user's video room

GET/domains/~/users/{user}/video/conference

Returns the details of a user's personal video meeting room.

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

Response 200

Returns a status code with a short JSON message.

List a user's video contacts

GET/domains/~/users/{user}/video/contacts

Returns the people a user can invite to video meetings.

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

Response 200

[
  {
    "id": 1,
    "domain": "string",
    "user": "1001",
    "description": "string",
    "current_timestamp": "2026-11-02 09:00:00",
    "meeting-calendar-invite-id": "string",
    "meeting-ordinal-sequence": 1,
    "core-server": "string",
    "...": "32 more fields"
  }
]
Response fields (40)
FieldTypeNotes
idintegerThe item's ID.
domainstringThe account the item belongs to. Max length 64
userstringThe user ID (extension).
descriptionstringA note about the item.
current_timestampstring (date-time)
meeting-calendar-invite-idstringID of the meeting calendar invite.
meeting-ordinal-sequenceinteger
core-serverstring
chat-session-idstringID of the chat session.
meeting-registration-idstringID of the meeting registration.
meeting-instance-idstringID of the meeting instance.
meeting-namestringName of the meeting.
meeting-typestring One of: presentation, conference Default conference
limits-max-participantsinteger
meeting-statusany
meeting-schedule-start-datetimestring (date-time)Meeting schedule start (date and time).
timezonestring One of: US/Alaska, US/Central, US/Eastern, US/Hawaii, US/Mountain, US/Pacific, Africa/Addis_Ababa, Africa/Algiers, Africa/Brazzaville, Africa/Cairo, Africa/Casablanca, Africa/Dakar, Africa/Dar_es_Salaam, Africa/Djibouti, Africa/Johannesburg, Africa/Khartoum, Africa/Kigali, Africa/Kinshasa, Africa/Lagos, Africa/Nairobi, Africa/Timbuktu, Africa/Tripoli, Africa/Tunis, America/Antigua, America/Aruba, America/Belize, America/Bogota, America/Buenos_Aires, America/Cancun, America/Caracas, America/Cayman, America/Chihuahua, America/Costa_Rica, America/Denver, America/Detroit, America/Edmonton, America/El_Salvador, America/Ensenada, America/Grenada, America/Guadeloupe ...
meeting-schedule-duration-minutesintegerMeeting schedule duration, in minutes.
meeting-schedule-recurrence-rulestring
meeting-video-allowed-fromstring One of: everyone, host, presenters
meeting-audio-allowed-fromstring One of: everyone, host, presenters
meeting-chat-enabledintegerTurns meeting chat on or off (yes or no). Default 1
meeting-chat-history-enabledintegerTurns meeting chat history on or off (yes or no). Default 1
meeting-question-answer-enabledintegerTurns meeting question answer on or off (yes or no). Default 0
meeting-recording-enabledintegerTurns meeting recording on or off (yes or no). Default 0
meeting-join-require-invite-enabledintegerTurns meeting join require invite on or off (yes or no). Default 0
meeting-join-require-passcode-enabledintegerTurns meeting join require passcode on or off (yes or no). Default 0
meeting-require-host-to-begin-enabledintegerTurns meeting require host to begin on or off (yes or no). Default 0
meeting-allow-changes-from-hosts-enabledintegerTurns meeting allow changes from hosts on or off (yes or no). Default 1
meeting-hide-attendee-list-enabledintegerTurns meeting hide attendee list on or off (yes or no). Default 0
meeting-lock-enabledintegerTurns meeting lock on or off (yes or no). Default 0
meeting-lock-allowedstring
meeting-room-enabledintegerTurns meeting room on or off (yes or no). Default 0
meeting-dial-in-number-blobany
meeting-passcodestring
meeting-previous-presenter-attendee-idstringID of the meeting previous presenter attendee.
meeting-presenter-attendee-idstringID of the meeting presenter attendee.
meeting-video-layout string One of: spotlight, conversation, grid
last-modified-datetimestring (date-time)Last modified (date and time).
meeting-instance-actual-start-datetimestring (date-time)Meeting instance actual start (date and time).

Create a meeting for a user

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

Adds a new meeting for one user.

Write Key Admin switch: Meetings and video, 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
descriptionstringA note about the item.
current_timestamp requiredstring (date-time)
meeting-calendar-invite-idstringID of the meeting calendar invite.
meeting-ordinal-sequenceinteger
core-serverstring
chat-session-idstringID of the chat session.
meeting-registration-idstringID of the meeting registration.
meeting-instance-idstringID of the meeting instance.
meeting-namestringName of the meeting.
meeting-typestring One of: presentation, conference Default conference
limits-max-participantsinteger
meeting-status requiredany
meeting-schedule-start-datetime requiredstring (date-time)Meeting schedule start (date and time).
timezone requiredstring One of: US/Alaska, US/Central, US/Eastern, US/Hawaii, US/Mountain, US/Pacific, Africa/Addis_Ababa, Africa/Algiers, Africa/Brazzaville, Africa/Cairo, Africa/Casablanca, Africa/Dakar, Africa/Dar_es_Salaam, Africa/Djibouti, Africa/Johannesburg, Africa/Khartoum, Africa/Kigali, Africa/Kinshasa, Africa/Lagos, Africa/Nairobi, Africa/Timbuktu, Africa/Tripoli, Africa/Tunis, America/Antigua, America/Aruba, America/Belize, America/Bogota, America/Buenos_Aires, America/Cancun, America/Caracas, America/Cayman, America/Chihuahua, America/Costa_Rica, America/Denver, America/Detroit, America/Edmonton, America/El_Salvador, America/Ensenada, America/Grenada, America/Guadeloupe ...
meeting-schedule-duration-minutesintegerMeeting schedule duration, in minutes.
meeting-schedule-recurrence-rulestring
meeting-video-allowed-fromstring One of: everyone, host, presenters
meeting-audio-allowed-fromstring One of: everyone, host, presenters
meeting-chat-enabledintegerTurns meeting chat on or off (yes or no). Default 1
meeting-chat-history-enabledintegerTurns meeting chat history on or off (yes or no). Default 1
meeting-question-answer-enabledintegerTurns meeting question answer on or off (yes or no). Default 0
meeting-recording-enabledintegerTurns meeting recording on or off (yes or no). Default 0
meeting-join-require-invite-enabledintegerTurns meeting join require invite on or off (yes or no). Default 0
meeting-join-require-passcode-enabledintegerTurns meeting join require passcode on or off (yes or no). Default 0
meeting-require-host-to-begin-enabledintegerTurns meeting require host to begin on or off (yes or no). Default 0
meeting-allow-changes-from-hosts-enabledintegerTurns meeting allow changes from hosts on or off (yes or no). Default 1
meeting-hide-attendee-list-enabledintegerTurns meeting hide attendee list on or off (yes or no). Default 0
meeting-lock-enabledintegerTurns meeting lock on or off (yes or no). Default 0
meeting-lock-allowedstring
meeting-room-enabled requiredintegerTurns meeting room on or off (yes or no). Default 0
meeting-dial-in-number-blobany
meeting-passcodestring
meeting-previous-presenter-attendee-idstringID of the meeting previous presenter attendee.
meeting-presenter-attendee-idstringID of the meeting presenter attendee.
meeting-video-layout string One of: spotlight, conversation, grid
last-modified-datetimestring (date-time)Last modified (date and time).
meeting-instance-actual-start-datetimestring (date-time)Meeting instance actual start (date and time).

Example request

curl -X POST "https://api.noodlevoice.com/ns-api/v2/domains/~/users/1001/meetings" \
  -H "Authorization: Bearer $NOODLEVOICE_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "current_timestamp": "2026-11-02 09:00:00",
    "meeting-status": "string",
    "meeting-schedule-start-datetime": "2026-11-02 09:00:00",
    "timezone": "US/Alaska",
    "meeting-room-enabled": 0
  }'
const res = await fetch("https://api.noodlevoice.com/ns-api/v2/domains/~/users/1001/meetings", {
  method: "POST",
  headers: {
    Authorization: "Bearer " + process.env.NOODLEVOICE_KEY,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    "current_timestamp": "2026-11-02 09:00:00",
    "meeting-status": "string",
    "meeting-schedule-start-datetime": "2026-11-02 09:00:00",
    "timezone": "US/Alaska",
    "meeting-room-enabled": 0
  }),
});
const data = await res.json();
import os, requests

r = requests.post(
    "https://api.noodlevoice.com/ns-api/v2/domains/~/users/1001/meetings",
    headers={"Authorization": "Bearer " + os.environ["NOODLEVOICE_KEY"]},
    json={
        "current_timestamp": "2026-11-02 09:00:00",
        "meeting-status": "string",
        "meeting-schedule-start-datetime": "2026-11-02 09:00:00",
        "timezone": "US/Alaska",
        "meeting-room-enabled": 0
    },
)
print(r.status_code, r.json())

Response 200

[
  {
    "id": 1,
    "domain": "string",
    "user": "1001",
    "description": "string",
    "current_timestamp": "2026-11-02 09:00:00",
    "meeting-calendar-invite-id": "string",
    "meeting-ordinal-sequence": 1,
    "core-server": "string",
    "...": "32 more fields"
  }
]
Response fields (40)
FieldTypeNotes
idintegerThe item's ID.
domainstringThe account the item belongs to. Max length 64
userstringThe user ID (extension).
descriptionstringA note about the item.
current_timestampstring (date-time)
meeting-calendar-invite-idstringID of the meeting calendar invite.
meeting-ordinal-sequenceinteger
core-serverstring
chat-session-idstringID of the chat session.
meeting-registration-idstringID of the meeting registration.
meeting-instance-idstringID of the meeting instance.
meeting-namestringName of the meeting.
meeting-typestring One of: presentation, conference Default conference
limits-max-participantsinteger
meeting-statusany
meeting-schedule-start-datetimestring (date-time)Meeting schedule start (date and time).
timezonestring One of: US/Alaska, US/Central, US/Eastern, US/Hawaii, US/Mountain, US/Pacific, Africa/Addis_Ababa, Africa/Algiers, Africa/Brazzaville, Africa/Cairo, Africa/Casablanca, Africa/Dakar, Africa/Dar_es_Salaam, Africa/Djibouti, Africa/Johannesburg, Africa/Khartoum, Africa/Kigali, Africa/Kinshasa, Africa/Lagos, Africa/Nairobi, Africa/Timbuktu, Africa/Tripoli, Africa/Tunis, America/Antigua, America/Aruba, America/Belize, America/Bogota, America/Buenos_Aires, America/Cancun, America/Caracas, America/Cayman, America/Chihuahua, America/Costa_Rica, America/Denver, America/Detroit, America/Edmonton, America/El_Salvador, America/Ensenada, America/Grenada, America/Guadeloupe ...
meeting-schedule-duration-minutesintegerMeeting schedule duration, in minutes.
meeting-schedule-recurrence-rulestring
meeting-video-allowed-fromstring One of: everyone, host, presenters
meeting-audio-allowed-fromstring One of: everyone, host, presenters
meeting-chat-enabledintegerTurns meeting chat on or off (yes or no). Default 1
meeting-chat-history-enabledintegerTurns meeting chat history on or off (yes or no). Default 1
meeting-question-answer-enabledintegerTurns meeting question answer on or off (yes or no). Default 0
meeting-recording-enabledintegerTurns meeting recording on or off (yes or no). Default 0
meeting-join-require-invite-enabledintegerTurns meeting join require invite on or off (yes or no). Default 0
meeting-join-require-passcode-enabledintegerTurns meeting join require passcode on or off (yes or no). Default 0
meeting-require-host-to-begin-enabledintegerTurns meeting require host to begin on or off (yes or no). Default 0
meeting-allow-changes-from-hosts-enabledintegerTurns meeting allow changes from hosts on or off (yes or no). Default 1
meeting-hide-attendee-list-enabledintegerTurns meeting hide attendee list on or off (yes or no). Default 0
meeting-lock-enabledintegerTurns meeting lock on or off (yes or no). Default 0
meeting-lock-allowedstring
meeting-room-enabledintegerTurns meeting room on or off (yes or no). Default 0
meeting-dial-in-number-blobany
meeting-passcodestring
meeting-previous-presenter-attendee-idstringID of the meeting previous presenter attendee.
meeting-presenter-attendee-idstringID of the meeting presenter attendee.
meeting-video-layout string One of: spotlight, conversation, grid
last-modified-datetimestring (date-time)Last modified (date and time).
meeting-instance-actual-start-datetimestring (date-time)Meeting instance actual start (date and time).

Reserve a meeting ID

POST/domains/~/users/{user}/meetings/getId

Returns a new meeting ID you can use when creating a meeting.

Write Key Admin switch: Meetings and video, Write.

Parameters

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

Example request

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

r = requests.post(
    "https://api.noodlevoice.com/ns-api/v2/domains/~/users/1001/meetings/getId",
    headers={"Authorization": "Bearer " + os.environ["NOODLEVOICE_KEY"]},
)
print(r.status_code, r.json())

Response 200

{
  "id": 1,
  "registration_id": "string",
  "phonenumbers": "15555550123"
}
Response fields (3)
FieldTypeNotes
idintegerThe item's ID.
registration_idstring
phonenumbersstring

Update a meeting's details

POST/domains/~/users/{user}/meetings/{id}

Changes a scheduled meeting's details, such as its time or attendees.

Write Key Admin switch: Meetings and video, Write.

Parameters

NameInTypeNotes
user requiredpathstringThe user ID, usually their extension number, like 1001. Default ~ Min length 0 Max length 16
id requiredpathstringThe ID of the item, as returned when you list or create it.

Request body application/json

FieldTypeNotes
descriptionstringA note about the item.
current_timestampstring One of: YYYY-MM-DDTHH:MM:SS.ssZ
meeting-calendar-invite-idstringID of the meeting calendar invite.
meeting-ordinal-sequenceinteger
core-serverstring
chat-session-idstringID of the chat session.
meeting-registration-idstringID of the meeting registration.
meeting-instance-idstringID of the meeting instance.
meeting-name requiredstringName of the meeting.
meeting-typestring
limits-max-participantsinteger
meeting-statusstring
meeting-schedule-start-datetimestringMeeting schedule start (date and time). One of: YYYY-MM-DDTHH:MM:SS.ssZ
timezonestring One of: US/Alaska, US/Central, US/Eastern, US/Hawaii, US/Mountain, US/Pacific, Africa/Addis_Ababa, Africa/Algiers, Africa/Brazzaville, Africa/Cairo, Africa/Casablanca, Africa/Dakar, Africa/Dar_es_Salaam, Africa/Djibouti, Africa/Johannesburg, Africa/Khartoum, Africa/Kigali, Africa/Kinshasa, Africa/Lagos, Africa/Nairobi, Africa/Timbuktu, Africa/Tripoli, Africa/Tunis, America/Antigua, America/Aruba, America/Belize, America/Bogota, America/Buenos_Aires, America/Cancun, America/Caracas, America/Cayman, America/Chihuahua, America/Costa_Rica, America/Denver, America/Detroit, America/Edmonton, America/El_Salvador, America/Ensenada, America/Grenada, America/Guadeloupe ...
meeting-schedule-duration-minutesintegerMeeting schedule duration, in minutes.
meeting-schedule-recurrence-rulestring
meeting-video-allowed-fromstring One of: yes, no
meeting-audio-allowed-fromstring One of: yes, no
meeting-chat-enabledstringTurns meeting chat on or off (yes or no). One of: yes, no
meeting-chat-history-enabledstringTurns meeting chat history on or off (yes or no). One of: yes, no
meeting-question-answer-enabledstringTurns meeting question answer on or off (yes or no). One of: yes, no
meeting-recording-enabledstringTurns meeting recording on or off (yes or no). One of: yes, no
meeting-join-require-invite-enabledstringTurns meeting join require invite on or off (yes or no). One of: yes, no
meeting-join-require-passcode-enabledstringTurns meeting join require passcode on or off (yes or no). One of: yes, no
meeting-require-host-to-begin-enabledstringTurns meeting require host to begin on or off (yes or no). One of: yes, no
meeting-allow-changes-from-hosts-enabledstringTurns meeting allow changes from hosts on or off (yes or no). One of: yes, no
meeting-hide-attendee-list-enabledstringTurns meeting hide attendee list on or off (yes or no). One of: yes, no
meeting-lock-enabledstringTurns meeting lock on or off (yes or no). One of: yes, no
meeting-lock-allowedstring One of: yes, no
meeting-room-enabledstringTurns meeting room on or off (yes or no). One of: yes, no
meeting-dial-in-number-blobstring
meeting-passcodestring
meeting-previous-presenter-attendee-idstringID of the meeting previous presenter attendee.
meeting-presenter-attendee-idstringID of the meeting presenter attendee.
meeting-video-layout integer
last-modified-datetimestringLast modified (date and time). One of: YYYY-MM-DDTHH:MM:SS.ssZ
meeting-instance-actual-start-datetimestringMeeting instance actual start (date and time). One of: YYYY-MM-DDTHH:MM:SS.ssZ

Example request

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

r = requests.post(
    "https://api.noodlevoice.com/ns-api/v2/domains/~/users/1001/meetings/{id}",
    headers={"Authorization": "Bearer " + os.environ["NOODLEVOICE_KEY"]},
    json={
        "meeting-name": "Front Desk"
    },
)
print(r.status_code, r.json())

Response 200

{
  "id": 1,
  "domain": "string",
  "user": "1001",
  "description": "string",
  "current_timestamp": "2026-11-02 09:00:00",
  "meeting-calendar-invite-id": "string",
  "meeting-ordinal-sequence": 1,
  "core-server": "string",
  "...": "32 more fields"
}
Response fields (40)
FieldTypeNotes
idintegerThe item's ID.
domainstringThe account the item belongs to. Max length 64
userstringThe user ID (extension).
descriptionstringA note about the item.
current_timestampstring (date-time)
meeting-calendar-invite-idstringID of the meeting calendar invite.
meeting-ordinal-sequenceinteger
core-serverstring
chat-session-idstringID of the chat session.
meeting-registration-idstringID of the meeting registration.
meeting-instance-idstringID of the meeting instance.
meeting-namestringName of the meeting.
meeting-typestring One of: presentation, conference Default conference
limits-max-participantsinteger
meeting-statusany
meeting-schedule-start-datetimestring (date-time)Meeting schedule start (date and time).
timezonestring One of: US/Alaska, US/Central, US/Eastern, US/Hawaii, US/Mountain, US/Pacific, Africa/Addis_Ababa, Africa/Algiers, Africa/Brazzaville, Africa/Cairo, Africa/Casablanca, Africa/Dakar, Africa/Dar_es_Salaam, Africa/Djibouti, Africa/Johannesburg, Africa/Khartoum, Africa/Kigali, Africa/Kinshasa, Africa/Lagos, Africa/Nairobi, Africa/Timbuktu, Africa/Tripoli, Africa/Tunis, America/Antigua, America/Aruba, America/Belize, America/Bogota, America/Buenos_Aires, America/Cancun, America/Caracas, America/Cayman, America/Chihuahua, America/Costa_Rica, America/Denver, America/Detroit, America/Edmonton, America/El_Salvador, America/Ensenada, America/Grenada, America/Guadeloupe ...
meeting-schedule-duration-minutesintegerMeeting schedule duration, in minutes.
meeting-schedule-recurrence-rulestring
meeting-video-allowed-fromstring One of: everyone, host, presenters
meeting-audio-allowed-fromstring One of: everyone, host, presenters
meeting-chat-enabledintegerTurns meeting chat on or off (yes or no). Default 1
meeting-chat-history-enabledintegerTurns meeting chat history on or off (yes or no). Default 1
meeting-question-answer-enabledintegerTurns meeting question answer on or off (yes or no). Default 0
meeting-recording-enabledintegerTurns meeting recording on or off (yes or no). Default 0
meeting-join-require-invite-enabledintegerTurns meeting join require invite on or off (yes or no). Default 0
meeting-join-require-passcode-enabledintegerTurns meeting join require passcode on or off (yes or no). Default 0
meeting-require-host-to-begin-enabledintegerTurns meeting require host to begin on or off (yes or no). Default 0
meeting-allow-changes-from-hosts-enabledintegerTurns meeting allow changes from hosts on or off (yes or no). Default 1
meeting-hide-attendee-list-enabledintegerTurns meeting hide attendee list on or off (yes or no). Default 0
meeting-lock-enabledintegerTurns meeting lock on or off (yes or no). Default 0
meeting-lock-allowedstring
meeting-room-enabledintegerTurns meeting room on or off (yes or no). Default 0
meeting-dial-in-number-blobany
meeting-passcodestring
meeting-previous-presenter-attendee-idstringID of the meeting previous presenter attendee.
meeting-presenter-attendee-idstringID of the meeting presenter attendee.
meeting-video-layout string One of: spotlight, conversation, grid
last-modified-datetimestring (date-time)Last modified (date and time).
meeting-instance-actual-start-datetimestring (date-time)Meeting instance actual start (date and time).

Add to a meeting's attendance log

POST/domains/~/users/{user}/meetings/{id}/instance/{instance}/log

Records an event in the log for one occurrence of a meeting.

Write Key Admin switch: Meetings and video, Write.

Parameters

NameInTypeNotes
user requiredpathstringThe user ID, usually their extension number, like 1001. Default ~ Min length 0 Max length 16
id requiredpathstringThe ID of the item, as returned when you list or create it.
instance requiredpathstringThe meeting occurrence ID.

Request body application/json

FieldTypeNotes
event requiredstring
targetstring
detailsobject

Example request

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

r = requests.post(
    "https://api.noodlevoice.com/ns-api/v2/domains/~/users/1001/meetings/{id}/instance/{instance}/log",
    headers={"Authorization": "Bearer " + os.environ["NOODLEVOICE_KEY"]},
    json={
        "event": "string"
    },
)
print(r.status_code, r.json())

Response 200

Returns a status code with a short JSON message.

Update a meeting

PUT/domains/~/users/{user}/meetings/{meeting}

Changes one of a user's meetings.

Write Key Admin switch: Meetings and video, Write.

Parameters

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

Request body application/json

FieldTypeNotes
id requiredintegerThe item's ID.
domain requiredstringThe account the item belongs to. Max length 64
user requiredstringThe user ID (extension).
descriptionstringA note about the item.
meeting-namestringName of the meeting.
meeting-typestring One of: presentation, conference Default conference
limits-max-participantsinteger
meeting-status requiredany
meeting-schedule-start-datetime requiredstring (date-time)Meeting schedule start (date and time).
timezone requiredstring One of: US/Alaska, US/Central, US/Eastern, US/Hawaii, US/Mountain, US/Pacific, Africa/Addis_Ababa, Africa/Algiers, Africa/Brazzaville, Africa/Cairo, Africa/Casablanca, Africa/Dakar, Africa/Dar_es_Salaam, Africa/Djibouti, Africa/Johannesburg, Africa/Khartoum, Africa/Kigali, Africa/Kinshasa, Africa/Lagos, Africa/Nairobi, Africa/Timbuktu, Africa/Tripoli, Africa/Tunis, America/Antigua, America/Aruba, America/Belize, America/Bogota, America/Buenos_Aires, America/Cancun, America/Caracas, America/Cayman, America/Chihuahua, America/Costa_Rica, America/Denver, America/Detroit, America/Edmonton, America/El_Salvador, America/Ensenada, America/Grenada, America/Guadeloupe ...
meeting-schedule-duration-minutesintegerMeeting schedule duration, in minutes.
meeting-schedule-recurrence-rulestring
meeting-video-allowed-fromstring One of: everyone, host, presenters
meeting-audio-allowed-fromstring One of: everyone, host, presenters
meeting-chat-enabledintegerTurns meeting chat on or off (yes or no). Default 1
meeting-chat-history-enabledintegerTurns meeting chat history on or off (yes or no). Default 1
meeting-question-answer-enabledintegerTurns meeting question answer on or off (yes or no). Default 0
meeting-recording-enabledintegerTurns meeting recording on or off (yes or no). Default 0
meeting-join-require-invite-enabledintegerTurns meeting join require invite on or off (yes or no). Default 0
meeting-join-require-passcode-enabledintegerTurns meeting join require passcode on or off (yes or no). Default 0
meeting-require-host-to-begin-enabledintegerTurns meeting require host to begin on or off (yes or no). Default 0
meeting-allow-changes-from-hosts-enabledintegerTurns meeting allow changes from hosts on or off (yes or no). Default 1
meeting-hide-attendee-list-enabledintegerTurns meeting hide attendee list on or off (yes or no). Default 0
meeting-lock-enabledintegerTurns meeting lock on or off (yes or no). Default 0
meeting-lock-allowedstring
meeting-room-enabled requiredintegerTurns meeting room on or off (yes or no). Default 0
meeting-passcodestring
meeting-previous-presenter-attendee-idstringID of the meeting previous presenter attendee.
meeting-presenter-attendee-idstringID of the meeting presenter attendee.
meeting-video-layout string One of: spotlight, conversation, grid

Example request

curl -X PUT "https://api.noodlevoice.com/ns-api/v2/domains/~/users/1001/meetings/{meeting_id}" \
  -H "Authorization: Bearer $NOODLEVOICE_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "id": 1,
    "domain": "string",
    "user": "1001",
    "meeting-status": "string",
    "meeting-schedule-start-datetime": "2026-11-02 09:00:00",
    "timezone": "US/Alaska",
    "meeting-room-enabled": 0
  }'
const res = await fetch("https://api.noodlevoice.com/ns-api/v2/domains/~/users/1001/meetings/{meeting_id}", {
  method: "PUT",
  headers: {
    Authorization: "Bearer " + process.env.NOODLEVOICE_KEY,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    "id": 1,
    "domain": "string",
    "user": "1001",
    "meeting-status": "string",
    "meeting-schedule-start-datetime": "2026-11-02 09:00:00",
    "timezone": "US/Alaska",
    "meeting-room-enabled": 0
  }),
});
const data = await res.json();
import os, requests

r = requests.put(
    "https://api.noodlevoice.com/ns-api/v2/domains/~/users/1001/meetings/{meeting_id}",
    headers={"Authorization": "Bearer " + os.environ["NOODLEVOICE_KEY"]},
    json={
        "id": 1,
        "domain": "string",
        "user": "1001",
        "meeting-status": "string",
        "meeting-schedule-start-datetime": "2026-11-02 09:00:00",
        "timezone": "US/Alaska",
        "meeting-room-enabled": 0
    },
)
print(r.status_code, r.json())

Response 200

Returns a status code with a short JSON message.

Delete a meeting

DELETE/domains/~/users/{user}/meetings/{meeting}

Cancels and removes a scheduled meeting.

Write Key Admin switch: Meetings and video, Write.

Parameters

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

Request body application/json

FieldTypeNotes
type requiredstringThe kind of item. One of: instance, attendee, meeting, record
meeting-instance-schedule-start-datetimestringMeeting instance schedule start (date and time). One of: YYYY-MM-DDTHH:MM:SS.ssZ
attendeeidsarray of string

Example request

curl -X DELETE "https://api.noodlevoice.com/ns-api/v2/domains/~/users/1001/meetings/{meeting_id}" \
  -H "Authorization: Bearer $NOODLEVOICE_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "instance"
  }'
const res = await fetch("https://api.noodlevoice.com/ns-api/v2/domains/~/users/1001/meetings/{meeting_id}", {
  method: "DELETE",
  headers: {
    Authorization: "Bearer " + process.env.NOODLEVOICE_KEY,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    "type": "instance"
  }),
});
const data = await res.json();
import os, requests

r = requests.delete(
    "https://api.noodlevoice.com/ns-api/v2/domains/~/users/1001/meetings/{meeting_id}",
    headers={"Authorization": "Bearer " + os.environ["NOODLEVOICE_KEY"]},
    json={
        "type": "instance"
    },
)
print(r.status_code, r.json())

Response 200

Returns a status code with a short JSON message.

Get video settings

GET/domains/~/video

Returns the video meeting settings for the account.

Full access No feature switch covers this endpoint. It needs a Full access key.

Example request

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

Response 200

[
  {
    "id": 1,
    "domain": "string",
    "user": "1001",
    "description": "string",
    "current_timestamp": "2026-11-02 09:00:00",
    "meeting-calendar-invite-id": "string",
    "meeting-ordinal-sequence": 1,
    "core-server": "string",
    "...": "32 more fields"
  }
]
Response fields (40)
FieldTypeNotes
idintegerThe item's ID.
domainstringThe account the item belongs to. Max length 64
userstringThe user ID (extension).
descriptionstringA note about the item.
current_timestampstring (date-time)
meeting-calendar-invite-idstringID of the meeting calendar invite.
meeting-ordinal-sequenceinteger
core-serverstring
chat-session-idstringID of the chat session.
meeting-registration-idstringID of the meeting registration.
meeting-instance-idstringID of the meeting instance.
meeting-namestringName of the meeting.
meeting-typestring One of: presentation, conference Default conference
limits-max-participantsinteger
meeting-statusany
meeting-schedule-start-datetimestring (date-time)Meeting schedule start (date and time).
timezonestring One of: US/Alaska, US/Central, US/Eastern, US/Hawaii, US/Mountain, US/Pacific, Africa/Addis_Ababa, Africa/Algiers, Africa/Brazzaville, Africa/Cairo, Africa/Casablanca, Africa/Dakar, Africa/Dar_es_Salaam, Africa/Djibouti, Africa/Johannesburg, Africa/Khartoum, Africa/Kigali, Africa/Kinshasa, Africa/Lagos, Africa/Nairobi, Africa/Timbuktu, Africa/Tripoli, Africa/Tunis, America/Antigua, America/Aruba, America/Belize, America/Bogota, America/Buenos_Aires, America/Cancun, America/Caracas, America/Cayman, America/Chihuahua, America/Costa_Rica, America/Denver, America/Detroit, America/Edmonton, America/El_Salvador, America/Ensenada, America/Grenada, America/Guadeloupe ...
meeting-schedule-duration-minutesintegerMeeting schedule duration, in minutes.
meeting-schedule-recurrence-rulestring
meeting-video-allowed-fromstring One of: everyone, host, presenters
meeting-audio-allowed-fromstring One of: everyone, host, presenters
meeting-chat-enabledintegerTurns meeting chat on or off (yes or no). Default 1
meeting-chat-history-enabledintegerTurns meeting chat history on or off (yes or no). Default 1
meeting-question-answer-enabledintegerTurns meeting question answer on or off (yes or no). Default 0
meeting-recording-enabledintegerTurns meeting recording on or off (yes or no). Default 0
meeting-join-require-invite-enabledintegerTurns meeting join require invite on or off (yes or no). Default 0
meeting-join-require-passcode-enabledintegerTurns meeting join require passcode on or off (yes or no). Default 0
meeting-require-host-to-begin-enabledintegerTurns meeting require host to begin on or off (yes or no). Default 0
meeting-allow-changes-from-hosts-enabledintegerTurns meeting allow changes from hosts on or off (yes or no). Default 1
meeting-hide-attendee-list-enabledintegerTurns meeting hide attendee list on or off (yes or no). Default 0
meeting-lock-enabledintegerTurns meeting lock on or off (yes or no). Default 0
meeting-lock-allowedstring
meeting-room-enabledintegerTurns meeting room on or off (yes or no). Default 0
meeting-dial-in-number-blobany
meeting-passcodestring
meeting-previous-presenter-attendee-idstringID of the meeting previous presenter attendee.
meeting-presenter-attendee-idstringID of the meeting presenter attendee.
meeting-video-layout string One of: spotlight, conversation, grid
last-modified-datetimestring (date-time)Last modified (date and time).
meeting-instance-actual-start-datetimestring (date-time)Meeting instance actual start (date and time).

List available video plans

GET/domains/~/video/availableproducts

Returns the video meeting plans the account can sign up for.

Full access No feature switch covers this endpoint. It needs a Full access key.

Example request

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

Response 200

[
  {
    "id": 1,
    "domain": "string",
    "user": "1001",
    "description": "string",
    "current_timestamp": "2026-11-02 09:00:00",
    "meeting-calendar-invite-id": "string",
    "meeting-ordinal-sequence": 1,
    "core-server": "string",
    "...": "32 more fields"
  }
]
Response fields (40)
FieldTypeNotes
idintegerThe item's ID.
domainstringThe account the item belongs to. Max length 64
userstringThe user ID (extension).
descriptionstringA note about the item.
current_timestampstring (date-time)
meeting-calendar-invite-idstringID of the meeting calendar invite.
meeting-ordinal-sequenceinteger
core-serverstring
chat-session-idstringID of the chat session.
meeting-registration-idstringID of the meeting registration.
meeting-instance-idstringID of the meeting instance.
meeting-namestringName of the meeting.
meeting-typestring One of: presentation, conference Default conference
limits-max-participantsinteger
meeting-statusany
meeting-schedule-start-datetimestring (date-time)Meeting schedule start (date and time).
timezonestring One of: US/Alaska, US/Central, US/Eastern, US/Hawaii, US/Mountain, US/Pacific, Africa/Addis_Ababa, Africa/Algiers, Africa/Brazzaville, Africa/Cairo, Africa/Casablanca, Africa/Dakar, Africa/Dar_es_Salaam, Africa/Djibouti, Africa/Johannesburg, Africa/Khartoum, Africa/Kigali, Africa/Kinshasa, Africa/Lagos, Africa/Nairobi, Africa/Timbuktu, Africa/Tripoli, Africa/Tunis, America/Antigua, America/Aruba, America/Belize, America/Bogota, America/Buenos_Aires, America/Cancun, America/Caracas, America/Cayman, America/Chihuahua, America/Costa_Rica, America/Denver, America/Detroit, America/Edmonton, America/El_Salvador, America/Ensenada, America/Grenada, America/Guadeloupe ...
meeting-schedule-duration-minutesintegerMeeting schedule duration, in minutes.
meeting-schedule-recurrence-rulestring
meeting-video-allowed-fromstring One of: everyone, host, presenters
meeting-audio-allowed-fromstring One of: everyone, host, presenters
meeting-chat-enabledintegerTurns meeting chat on or off (yes or no). Default 1
meeting-chat-history-enabledintegerTurns meeting chat history on or off (yes or no). Default 1
meeting-question-answer-enabledintegerTurns meeting question answer on or off (yes or no). Default 0
meeting-recording-enabledintegerTurns meeting recording on or off (yes or no). Default 0
meeting-join-require-invite-enabledintegerTurns meeting join require invite on or off (yes or no). Default 0
meeting-join-require-passcode-enabledintegerTurns meeting join require passcode on or off (yes or no). Default 0
meeting-require-host-to-begin-enabledintegerTurns meeting require host to begin on or off (yes or no). Default 0
meeting-allow-changes-from-hosts-enabledintegerTurns meeting allow changes from hosts on or off (yes or no). Default 1
meeting-hide-attendee-list-enabledintegerTurns meeting hide attendee list on or off (yes or no). Default 0
meeting-lock-enabledintegerTurns meeting lock on or off (yes or no). Default 0
meeting-lock-allowedstring
meeting-room-enabledintegerTurns meeting room on or off (yes or no). Default 0
meeting-dial-in-number-blobany
meeting-passcodestring
meeting-previous-presenter-attendee-idstringID of the meeting previous presenter attendee.
meeting-presenter-attendee-idstringID of the meeting presenter attendee.
meeting-video-layout string One of: spotlight, conversation, grid
last-modified-datetimestring (date-time)Last modified (date and time).
meeting-instance-actual-start-datetimestring (date-time)Meeting instance actual start (date and time).

List video hosts

GET/domains/~/video/hosts

Returns the users who have video meeting host seats.

Full access No feature switch covers this endpoint. It needs a Full access key.

Example request

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

Response 200

[
  {
    "id": 1,
    "domain": "string",
    "user": "1001",
    "description": "string",
    "current_timestamp": "2026-11-02 09:00:00",
    "meeting-calendar-invite-id": "string",
    "meeting-ordinal-sequence": 1,
    "core-server": "string",
    "...": "32 more fields"
  }
]
Response fields (40)
FieldTypeNotes
idintegerThe item's ID.
domainstringThe account the item belongs to. Max length 64
userstringThe user ID (extension).
descriptionstringA note about the item.
current_timestampstring (date-time)
meeting-calendar-invite-idstringID of the meeting calendar invite.
meeting-ordinal-sequenceinteger
core-serverstring
chat-session-idstringID of the chat session.
meeting-registration-idstringID of the meeting registration.
meeting-instance-idstringID of the meeting instance.
meeting-namestringName of the meeting.
meeting-typestring One of: presentation, conference Default conference
limits-max-participantsinteger
meeting-statusany
meeting-schedule-start-datetimestring (date-time)Meeting schedule start (date and time).
timezonestring One of: US/Alaska, US/Central, US/Eastern, US/Hawaii, US/Mountain, US/Pacific, Africa/Addis_Ababa, Africa/Algiers, Africa/Brazzaville, Africa/Cairo, Africa/Casablanca, Africa/Dakar, Africa/Dar_es_Salaam, Africa/Djibouti, Africa/Johannesburg, Africa/Khartoum, Africa/Kigali, Africa/Kinshasa, Africa/Lagos, Africa/Nairobi, Africa/Timbuktu, Africa/Tripoli, Africa/Tunis, America/Antigua, America/Aruba, America/Belize, America/Bogota, America/Buenos_Aires, America/Cancun, America/Caracas, America/Cayman, America/Chihuahua, America/Costa_Rica, America/Denver, America/Detroit, America/Edmonton, America/El_Salvador, America/Ensenada, America/Grenada, America/Guadeloupe ...
meeting-schedule-duration-minutesintegerMeeting schedule duration, in minutes.
meeting-schedule-recurrence-rulestring
meeting-video-allowed-fromstring One of: everyone, host, presenters
meeting-audio-allowed-fromstring One of: everyone, host, presenters
meeting-chat-enabledintegerTurns meeting chat on or off (yes or no). Default 1
meeting-chat-history-enabledintegerTurns meeting chat history on or off (yes or no). Default 1
meeting-question-answer-enabledintegerTurns meeting question answer on or off (yes or no). Default 0
meeting-recording-enabledintegerTurns meeting recording on or off (yes or no). Default 0
meeting-join-require-invite-enabledintegerTurns meeting join require invite on or off (yes or no). Default 0
meeting-join-require-passcode-enabledintegerTurns meeting join require passcode on or off (yes or no). Default 0
meeting-require-host-to-begin-enabledintegerTurns meeting require host to begin on or off (yes or no). Default 0
meeting-allow-changes-from-hosts-enabledintegerTurns meeting allow changes from hosts on or off (yes or no). Default 1
meeting-hide-attendee-list-enabledintegerTurns meeting hide attendee list on or off (yes or no). Default 0
meeting-lock-enabledintegerTurns meeting lock on or off (yes or no). Default 0
meeting-lock-allowedstring
meeting-room-enabledintegerTurns meeting room on or off (yes or no). Default 0
meeting-dial-in-number-blobany
meeting-passcodestring
meeting-previous-presenter-attendee-idstringID of the meeting previous presenter attendee.
meeting-presenter-attendee-idstringID of the meeting presenter attendee.
meeting-video-layout string One of: spotlight, conversation, grid
last-modified-datetimestring (date-time)Last modified (date and time).
meeting-instance-actual-start-datetimestring (date-time)Meeting instance actual start (date and time).

List current video plans

GET/domains/~/video/products

Returns the video meeting plans the account has now.

Full access No feature switch covers this endpoint. It needs a Full access key.

Example request

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

Response 200

[
  {
    "id": 1,
    "domain": "string",
    "user": "1001",
    "description": "string",
    "current_timestamp": "2026-11-02 09:00:00",
    "meeting-calendar-invite-id": "string",
    "meeting-ordinal-sequence": 1,
    "core-server": "string",
    "...": "32 more fields"
  }
]
Response fields (40)
FieldTypeNotes
idintegerThe item's ID.
domainstringThe account the item belongs to. Max length 64
userstringThe user ID (extension).
descriptionstringA note about the item.
current_timestampstring (date-time)
meeting-calendar-invite-idstringID of the meeting calendar invite.
meeting-ordinal-sequenceinteger
core-serverstring
chat-session-idstringID of the chat session.
meeting-registration-idstringID of the meeting registration.
meeting-instance-idstringID of the meeting instance.
meeting-namestringName of the meeting.
meeting-typestring One of: presentation, conference Default conference
limits-max-participantsinteger
meeting-statusany
meeting-schedule-start-datetimestring (date-time)Meeting schedule start (date and time).
timezonestring One of: US/Alaska, US/Central, US/Eastern, US/Hawaii, US/Mountain, US/Pacific, Africa/Addis_Ababa, Africa/Algiers, Africa/Brazzaville, Africa/Cairo, Africa/Casablanca, Africa/Dakar, Africa/Dar_es_Salaam, Africa/Djibouti, Africa/Johannesburg, Africa/Khartoum, Africa/Kigali, Africa/Kinshasa, Africa/Lagos, Africa/Nairobi, Africa/Timbuktu, Africa/Tripoli, Africa/Tunis, America/Antigua, America/Aruba, America/Belize, America/Bogota, America/Buenos_Aires, America/Cancun, America/Caracas, America/Cayman, America/Chihuahua, America/Costa_Rica, America/Denver, America/Detroit, America/Edmonton, America/El_Salvador, America/Ensenada, America/Grenada, America/Guadeloupe ...
meeting-schedule-duration-minutesintegerMeeting schedule duration, in minutes.
meeting-schedule-recurrence-rulestring
meeting-video-allowed-fromstring One of: everyone, host, presenters
meeting-audio-allowed-fromstring One of: everyone, host, presenters
meeting-chat-enabledintegerTurns meeting chat on or off (yes or no). Default 1
meeting-chat-history-enabledintegerTurns meeting chat history on or off (yes or no). Default 1
meeting-question-answer-enabledintegerTurns meeting question answer on or off (yes or no). Default 0
meeting-recording-enabledintegerTurns meeting recording on or off (yes or no). Default 0
meeting-join-require-invite-enabledintegerTurns meeting join require invite on or off (yes or no). Default 0
meeting-join-require-passcode-enabledintegerTurns meeting join require passcode on or off (yes or no). Default 0
meeting-require-host-to-begin-enabledintegerTurns meeting require host to begin on or off (yes or no). Default 0
meeting-allow-changes-from-hosts-enabledintegerTurns meeting allow changes from hosts on or off (yes or no). Default 1
meeting-hide-attendee-list-enabledintegerTurns meeting hide attendee list on or off (yes or no). Default 0
meeting-lock-enabledintegerTurns meeting lock on or off (yes or no). Default 0
meeting-lock-allowedstring
meeting-room-enabledintegerTurns meeting room on or off (yes or no). Default 0
meeting-dial-in-number-blobany
meeting-passcodestring
meeting-previous-presenter-attendee-idstringID of the meeting previous presenter attendee.
meeting-presenter-attendee-idstringID of the meeting presenter attendee.
meeting-video-layout string One of: spotlight, conversation, grid
last-modified-datetimestring (date-time)Last modified (date and time).
meeting-instance-actual-start-datetimestring (date-time)Meeting instance actual start (date and time).

Make a user a video host

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

Gives a user a video meeting host seat.

Full access No feature switch covers this endpoint. It needs a Full access key.

Parameters

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

Request body application/json

FieldTypeNotes
name requiredstring
email requiredstringEmail address. Separate more than one with commas.
password requiredstring
rolestring
auto_record requiredstring
plan_slug requiredstring
add_on_slug requiredstring

Example request

curl -X POST "https://api.noodlevoice.com/ns-api/v2/domains/~/users/1001/host" \
  -H "Authorization: Bearer $NOODLEVOICE_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Front Desk",
    "auto_record": "string",
    "plan_slug": "string",
    "email": "jane@example.com",
    "password": "string",
    "add_on_slug": "string"
  }'
const res = await fetch("https://api.noodlevoice.com/ns-api/v2/domains/~/users/1001/host", {
  method: "POST",
  headers: {
    Authorization: "Bearer " + process.env.NOODLEVOICE_KEY,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    "name": "Front Desk",
    "auto_record": "string",
    "plan_slug": "string",
    "email": "jane@example.com",
    "password": "string",
    "add_on_slug": "string"
  }),
});
const data = await res.json();
import os, requests

r = requests.post(
    "https://api.noodlevoice.com/ns-api/v2/domains/~/users/1001/host",
    headers={"Authorization": "Bearer " + os.environ["NOODLEVOICE_KEY"]},
    json={
        "name": "Front Desk",
        "auto_record": "string",
        "plan_slug": "string",
        "email": "jane@example.com",
        "password": "string",
        "add_on_slug": "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: 409. See errors.

Sync a video host's contacts

POST/domains/~/users/{user}/host/contacts

Refreshes the contact list a video host sees.

Full access No feature switch covers this endpoint. It needs a Full access key.

Parameters

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

Example request

curl -X POST "https://api.noodlevoice.com/ns-api/v2/domains/~/users/1001/host/contacts" \
  -H "Authorization: Bearer $NOODLEVOICE_KEY" \
  -H "Content-Type: application/json" \
  -d '[
    {
      "name": "Front Desk",
      "email": "jane@example.com"
    }
  ]'
const res = await fetch("https://api.noodlevoice.com/ns-api/v2/domains/~/users/1001/host/contacts", {
  method: "POST",
  headers: {
    Authorization: "Bearer " + process.env.NOODLEVOICE_KEY,
    "Content-Type": "application/json",
  },
  body: JSON.stringify([
    {
      "name": "Front Desk",
      "email": "jane@example.com"
    }
  ]),
});
const data = await res.json();
import os, requests

r = requests.post(
    "https://api.noodlevoice.com/ns-api/v2/domains/~/users/1001/host/contacts",
    headers={"Authorization": "Bearer " + os.environ["NOODLEVOICE_KEY"]},
    json=[
        {
            "name": "Front Desk",
            "email": "jane@example.com"
        }
    ],
)
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: 409. See errors.

Start a video meeting

POST/domains/~/users/{user}/video/conference

Starts a video meeting from a user's room and invites the participants you list.

Full access No feature switch covers this endpoint. It needs a Full access key.

Parameters

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

Request body application/json

FieldTypeNotes
participantsarray of stringThe people in it, as a list of numbers or user IDs.

Example request

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

r = requests.post(
    "https://api.noodlevoice.com/ns-api/v2/domains/~/users/1001/video/conference",
    headers={"Authorization": "Bearer " + os.environ["NOODLEVOICE_KEY"]},
    json={
        "participants": [
            "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: 409. See errors.

Update a video host

PUT/domains/~/users/{user}/host

Changes a video host's plan or add-ons.

Full access No feature switch covers this endpoint. It needs a Full access key.

Parameters

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

Request body application/json

FieldTypeNotes
default-plan requiredstring
plans requiredarray of string
default-addons requiredarray of string
add-ons requiredarray of string
iotum_time_format requiredobject
iotum_time_format.hm_separator requiredstring
iotum_time_format.md_format requiredstring
iotum_time_format.md_y_comma requiredboolean
iotum_time_format.time_24hr requiredboolean

Example request

curl -X PUT "https://api.noodlevoice.com/ns-api/v2/domains/~/users/1001/host" \
  -H "Authorization: Bearer $NOODLEVOICE_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "default-plan": "string",
    "plans": [
      "string"
    ],
    "default-addons": [
      "string"
    ],
    "add-ons": [
      "string"
    ],
    "iotum_time_format": {
      "hm_separator": "string",
      "md_format": "string",
      "md_y_comma": true,
      "time_24hr": true
    }
  }'
const res = await fetch("https://api.noodlevoice.com/ns-api/v2/domains/~/users/1001/host", {
  method: "PUT",
  headers: {
    Authorization: "Bearer " + process.env.NOODLEVOICE_KEY,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    "default-plan": "string",
    "plans": [
      "string"
    ],
    "default-addons": [
      "string"
    ],
    "add-ons": [
      "string"
    ],
    "iotum_time_format": {
      "hm_separator": "string",
      "md_format": "string",
      "md_y_comma": true,
      "time_24hr": true
    }
  }),
});
const data = await res.json();
import os, requests

r = requests.put(
    "https://api.noodlevoice.com/ns-api/v2/domains/~/users/1001/host",
    headers={"Authorization": "Bearer " + os.environ["NOODLEVOICE_KEY"]},
    json={
        "default-plan": "string",
        "plans": [
            "string"
        ],
        "default-addons": [
            "string"
        ],
        "add-ons": [
            "string"
        ],
        "iotum_time_format": {
            "hm_separator": "string",
            "md_format": "string",
            "md_y_comma": True,
            "time_24hr": True
        }
    },
)
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: 409. See errors.

Remove a video host

DELETE/domains/~/users/{user}/host

Takes away a user's video meeting host seat.

Full access No feature switch covers this endpoint. It needs a Full access key.

Parameters

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

Example request

curl -X DELETE "https://api.noodlevoice.com/ns-api/v2/domains/~/users/1001/host" \
  -H "Authorization: Bearer $NOODLEVOICE_KEY"
const res = await fetch("https://api.noodlevoice.com/ns-api/v2/domains/~/users/1001/host", {
  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/host",
    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: 409. See errors.