Summary
REST API for Poly G7500, Poly Studio X50, and Poly Studio X30 video systems running Poly VideoOS 3.1.x. All endpoints are HTTPS; bodies are JSON. Administrator credentials required for authentication.
Transport
protocols:
- http
addressing:
base_url: /rest # source: every endpoint path begins with /rest
auth:
type: basic # inferred: source states "Administrator credentials are required for access authentication"; no specific scheme named, but /rest/session takes {user, password} in JSON body
# UNRESOLVED: exact auth header scheme not stated (Basic vs Digest vs custom token). Source only documents the /rest/session login returning a sessionId.
Traits
- queryable # inferred: many GET endpoints return device state
- routable # inferred: camera select, input select commands present
- levelable # inferred: audio/volume POST present
Actions
- id: audio_get
label: Get audio state
kind: query
method: GET
path: /rest/audio
- id: audio_action
label: Audio action (DTMF / test tone / itpSegmentDetection)
kind: action
method: POST
path: /rest/audio
body_schema:
action: string # start | playDTMF | playTestTone | stopPlayingTestTone | itpSegmentDetection
dtmfChar: string
speaker: string # SPEAKER_LEFT | SPEAKER_RIGHT | SPEAKER_BOTH
- id: audio_acousticfence_action
label: Acoustic fence action
kind: action
method: POST
path: /rest/audio/acousticfence
body_schema:
action: string
dtmfChar: string
speaker: string
- id: audio_audiometers_get
label: Get audio meter info
kind: query
method: GET
path: /rest/audio/audiometers
- id: audio_microphones_get
label: Get microphone list
kind: query
method: GET
path: /rest/audio/microphones
- id: audio_muted_get
label: Get mic mute status
kind: query
method: GET
path: /rest/audio/muted
- id: audio_muted_set
label: Set mic mute
kind: action
method: POST
path: /rest/audio/muted
body_schema:
boolean: true_to_mute_false_to_unmute
- id: audio_volume_get
label: Get audio volume
kind: query
method: GET
path: /rest/audio/volume
- id: audio_volume_set
label: Set audio volume
kind: action
method: POST
path: /rest/audio/volume
body_schema:
integer: volume_level
- id: calendar_get
label: Get calendar server status
kind: query
method: GET
path: /rest/calendar
- id: calendar_meetings_get
label: Get calendar meetings
kind: query
method: GET
path: /rest/calendar/meetings
query_schema:
number: integer # max upcoming events
start: integer # epoch seconds
end: integer # epoch seconds
- id: calendar_meetings_get_one
label: Get single meeting
kind: query
method: GET
path: /rest/calendar/meetings/{meetingId}
path_params:
- name: meetingId
type: string
- id: calendar_meetings_dial
label: Dial calendar meeting
kind: action
method: POST
path: /rest/calendar/meetings/{meetingId}
path_params:
- name: meetingId
type: string
- id: calendar_discover
label: Discover calendar server
kind: action
method: POST
path: /rest/calendar/discover
body_schema:
domain: string # sip | email
email: string
username: string
password: string
userdomain: string
- id: cameras_sourceselectable_get
label: Get near source selection availability
kind: query
method: GET
path: /rest/cameras/sourceselectable
- id: cameras_contentstatus_get
label: Get content status
kind: query
method: GET
path: /rest/cameras/contentstatus
- id: cameras_near_all_get
label: Get all near camera sources
kind: query
method: GET
path: /rest/cameras/near/all
- id: cameras_near_people_get
label: Get all near people camera sources
kind: query
method: GET
path: /rest/cameras/near/people
- id: cameras_near_content_get
label: Get all near content camera sources
kind: query
method: GET
path: /rest/cameras/near/content
- id: cameras_near_source_get
label: Get near camera by sourceID
kind: query
method: GET
path: /rest/cameras/near/{sourceID}
path_params:
- name: sourceID
type: string
- id: cameras_near_source_move
label: Move near camera by sourceID
kind: action
method: POST
path: /rest/cameras/near/{sourceID}
path_params:
- name: sourceID
type: string
body_schema:
action: string # moveStart | moveStop | store | clear | activate
direction: string # MOVE_LEFT|MOVE_RIGHT|MOVE_UP|MOVE_DOWN|MOVE_ZOOMIN|MOVE_ZOOMOUT|MOVE_FOCUSNEAR|MOVE_FOCUSFAR
message: string # LeftCamera|RightCamera|BothCamera
withImage: string # Yes|No
- id: cameras_near_selectedpeople_get
label: Get selected near people camera
kind: query
method: GET
path: /rest/cameras/near/selectedpeople
- id: cameras_near_selectedpeople_move
label: Move selected near people camera
kind: action
method: POST
path: /rest/cameras/near/selectedpeople
body_schema:
action: string
direction: string
message: string
withImage: string
- id: cameras_near_selectedcontent_get
label: Get selected near content camera
kind: query
method: GET
path: /rest/cameras/near/selectedcontent
- id: cameras_near_selectedcontent_move
label: Move selected near content camera
kind: action
method: POST
path: /rest/cameras/near/selectedcontent
body_schema:
action: string
direction: string
message: string
withImage: string
- id: cameras_near_presets_all_get
label: Get all near camera presets
kind: query
method: GET
path: /rest/cameras/near/presets/all
- id: cameras_near_presets_index_get
label: Get near camera preset at index
kind: query
method: GET
path: /rest/cameras/near/presets/{index}
path_params:
- name: index
type: integer
- id: cameras_near_presets_index_update
label: Update near camera preset at index
kind: action
method: POST
path: /rest/cameras/near/presets/{index}
path_params:
- name: index
type: integer
body_schema:
action: string
direction: string
message: string
withImage: string
- id: cameras_near_position_move
label: Move near camera to position
kind: action
method: POST
path: /rest/cameras/near/position/{sourceID}
path_params:
- name: sourceID
type: string # valid: SELECTED_PEOPLE
body_schema:
camPosition:
pan: integer # -50000..50000
tilt: integer
zoom: integer
relative: boolean
- id: cameras_far_all_get
label: Get all far camera sources
kind: query
method: GET
path: /rest/cameras/far/all
- id: cameras_far_selectedpeople_get
label: Get selected far people camera
kind: query
method: GET
path: /rest/cameras/far/selectedpeople
- id: cameras_far_selectedpeople_move
label: Move selected far people camera
kind: action
method: POST
path: /rest/cameras/far/selectedpeople
body_schema:
action: string
direction: string
message: string
withImage: string
- id: cameras_far_source_get
label: Get far camera by sourceID
kind: query
method: GET
path: /rest/cameras/far/{sourceID}
path_params:
- name: sourceID
type: string
- id: cameras_far_source_move
label: Move far camera by sourceID
kind: action
method: POST
path: /rest/cameras/far/{sourceID}
path_params:
- name: sourceID
type: string
body_schema:
action: string
direction: string
message: string
withImage: string
- id: cameras_snapshot_get
label: Get camera snapshot
kind: query
method: GET
path: /rest/cameras/snapshot/{snapshotID}
path_params:
- name: snapshotID
type: string # near_image_1.jpg | far_image_1.jpg | content_image_1.jpg
- id: collaboration_get
label: Get collaboration session state
kind: query
method: GET
path: /rest/collaboration
- id: collaboration_end
label: End collaboration session
kind: action
method: POST
path: /rest/collaboration
body_schema:
action: END
- id: collaboration_content_start
label: Begin content save
kind: action
method: POST
path: /rest/collaboration/content
query_schema:
pin: string
- id: collaboration_content_get
label: Get saved content
kind: query
method: GET
path: /rest/collaboration/content
query_schema:
pin: string
context-id: string
- id: collaboration_contentsavestatus_get
label: Get content save status
kind: query
method: GET
path: /rest/collaboration/contentsavestatus
query_schema:
pin: string
context-id: string
- id: collaboration_content_all_get
label: Download all saved content (ZIP)
kind: query
method: GET
path: /rest/collaboration/content/all
query_schema:
pin: string
- id: conferences_get
label: Get list of active conferences
kind: query
method: GET
path: /rest/conferences
- id: conferences_dial
label: Dial single participant conference call
kind: action
method: POST
path: /rest/conferences
body_schema:
address: string
rate: integer
dialType: string # LOOPBACK|AUTO|VIDEO|VOICE|H320|H323|SIP|GATEWAY|POTS|ISDN_VOICE|SIP_SPEAKERPHONE|POTS_SPEAKERPHONE|VOICE_H323|VOICE_SIP|VOICE_GATEWAY
password: string
- id: conferences_blast
label: Blast dial multi-participant conference
kind: action
method: POST
path: /rest/conferences/blast
body_schema:
endPointList: array
password: string
- id: conferences_capabilities_get
label: Get conference capabilities
kind: query
method: GET
path: /rest/conferences/capabilities
- id: conferences_get_one
label: Get conference by confID
kind: query
method: GET
path: /rest/conferences/{confID}
path_params:
- name: confID
type: string
- id: conferences_hangup
label: Hang up conference
kind: action
method: DELETE
path: /rest/conferences/{confID}
path_params:
- name: confID
type: string
- id: conferences_connections_get
label: Get conference connections
kind: query
method: GET
path: /rest/conferences/{confID}/connections
path_params:
- name: confID
type: string
query_schema:
filter: string # ALL|ACTIVE|ANSWERABLE|INCOMING|PENDING
- id: conferences_connections_add
label: Add endpoint to conference
kind: action
method: POST
path: /rest/conferences/{confID}/connections
path_params:
- name: confID
type: string
query_schema:
filter: string
body_schema:
rate: integer
dialType: string
password: string
- id: conferences_connection_get
label: Get specific connection
kind: query
method: GET
path: /rest/conferences/{confID}/connections/{connID}
path_params:
- name: confID
type: string
- name: connID
type: string
- id: conferences_connection_hangup
label: Hang up specific connection
kind: action
method: DELETE
path: /rest/conferences/{confID}/connections/{connID}
path_params:
- name: confID
type: string
- name: connID
type: string
- id: conferences_terminals_get
label: Get conference terminals
kind: query
method: GET
path: /rest/conferences/{confID}/terminals
path_params:
- name: confID
type: string
- id: conferences_terminal_get
label: Get specific terminal
kind: query
method: GET
path: /rest/conferences/{confID}/terminals/{termID}
path_params:
- name: confID
type: string
- name: termID
type: string
- id: conferences_terminal_hangup
label: Hang up specific terminal
kind: action
method: DELETE
path: /rest/conferences/{confID}/terminals/{termID}
path_params:
- name: confID
type: string
- name: termID
type: string
- id: conferences_mediastats_get
label: Get conference media stats
kind: query
method: GET
path: /rest/conferences/{confID}/mediastats
path_params:
- name: confID
type: string
- id: conferences_connection_mediastat_get
label: Get connection media stat
kind: query
method: GET
path: /rest/conferences/{confID}/connections/{connID}/mediastat
path_params:
- name: confID
type: string
- name: connID
type: string
- id: conferences_terminal_mediastats_get
label: Get terminal media stats
kind: query
method: GET
path: /rest/conferences/{confID}/mediastats/terminals/{termID}
path_params:
- name: confID
type: string
- name: termID
type: string
- id: conferences_term_mediastats_get
label: Get all terminal media stats
kind: query
method: GET
path: /rest/conferences/{confID}/termmediastats
path_params:
- name: confID
type: string
- id: directory_favorites_get
label: Get favorite directory entries
kind: query
method: GET
path: /rest/directory/favorites
query_schema:
start: integer
limit: integer
- id: directory_global_server_get
label: Get global directory server
kind: query
method: GET
path: /rest/directory/global/server
- id: directory_global_mtddefaultgroupentry_get
label: Get MTD default group entry
kind: query
method: GET
path: /rest/directory/global/mtddefaultgroupentry
- id: directory_local_server_get
label: Get local directory server
kind: query
method: GET
path: /rest/directory/local/server
- id: directory_local_entries_add
label: Add local directory entry
kind: action
method: POST
path: /rest/directory/local/entries
body_schema:
type: string # SINGLE|GROUP
displayName: string
firstName: string
lastName: string
fullName: string
email: string
homePhone: string
workPhone: string
mobilePhone: string
imageLocation: string
favorite: boolean
devices: array
- id: directory_local_entries_get
label: Get local directory entry
kind: query
method: GET
path: /rest/directory/local/entries/{entryId}
path_params:
- name: entryId
type: string
- id: directory_local_entries_delete
label: Delete local directory entry
kind: action
method: DELETE
path: /rest/directory/local/entries/{entryId}
path_params:
- name: entryId
type: string
- id: directory_local_entries_update
label: Update local directory entry
kind: action
method: PUT
path: /rest/directory/local/entries/{entryId}
path_params:
- name: entryId
type: string
body_schema:
type: string
displayName: string
firstName: string
lastName: string
fullName: string
email: string
homePhone: string
workPhone: string
mobilePhone: string
imageLocation: string
favorite: boolean
devices: array
- id: directory_local_entries_action
label: Action on local directory entry
kind: action
method: POST
path: /rest/directory/local/entries/{entryId}
path_params:
- name: entryId
type: string
body_schema:
action: dial
deviceId: string
- id: directory_local_entries_favorite_set
label: Set local entry favorite
kind: action
method: PUT
path: /rest/directory/local/entries/{entryId}/favorite
path_params:
- name: entryId
type: string
body_schema:
favorite: boolean
- id: directory_local_entries_favorite_reorder
label: Reorder local favorite entry
kind: action
method: POST
path: /rest/directory/local/entries/{entryId}/favorite
path_params:
- name: entryId
type: string
body_schema:
index: integer
- id: directory_local_entries_members
label: Action on local group members
kind: action
method: POST
path: /rest/directory/local/entries/{entryId}/members
path_params:
- name: entryId
type: string
body_schema:
action: string # query|add|remove
entryId: string
- id: directory_queries_start
label: Start directory search query
kind: action
method: POST
path: /rest/directory/queries
body_schema:
searchString: string
serverScope: string # ALL|LOCAL|GLOBAL|FAVORITES
entryScope: string # SINGLE|GROUP|ANY_TIERED|ANY
groupScope: string # ONE_LEVEL|RECURSIVE
order: string # FIRST_NAME|LAST_NAME|DISPLAY_NAME
groupID: string
- id: directory_queries_initial_get
label: Start default directory search
kind: query
method: GET
path: /rest/directory/queries/initial
- id: directory_queries_get
label: Get directory query results
kind: query
method: GET
path: /rest/directory/queries/{queryId}
path_params:
- name: queryId
type: string
query_schema:
start: integer
limit: integer
- id: directory_queries_delete
label: Delete directory query
kind: action
method: DELETE
path: /rest/directory/queries/{queryId}
path_params:
- name: queryId
type: string
- id: directory_server_entry_get
label: Get entry from directory server
kind: query
method: GET
path: /rest/directory/{serverId}/entries/{entryId}
path_params:
- name: serverId
type: string
- name: entryId
type: string
- id: directory_server_entry_action
label: Action on directory server entry
kind: action
method: POST
path: /rest/directory/{serverId}/entries/{entryId}
path_params:
- name: serverId
type: string
- name: entryId
type: string
body_schema:
action: dial
deviceId: string
- id: directory_server_entry_favorite_set
label: Set server entry favorite
kind: action
method: PUT
path: /rest/directory/{serverId}/entries/{entryId}/favorite
path_params:
- name: serverId
type: string
- name: entryId
type: string
body_schema:
favorite: boolean
- id: directory_server_entry_favorite_reorder
label: Reorder server favorite entry
kind: action
method: POST
path: /rest/directory/{serverId}/entries/{entryId}/favorite
path_params:
- name: serverId
type: string
- name: entryId
type: string
body_schema:
index: integer
- id: directory_server_entry_members
label: Action on server group members
kind: action
method: POST
path: /rest/directory/{serverId}/entries/{entryId}/members
path_params:
- name: serverId
type: string
- name: entryId
type: string
body_schema:
action: string # query|add|remove
entryId: string
- id: directory_import
label: Import directory entries from XML
kind: action
method: PUT
path: /rest/directory/import
- id: directory_export
label: Export directory entries to XML
kind: action
method: GET
path: /rest/directory/export
- id: session_login
label: Create and authenticate session
kind: action
method: POST
path: /rest/session
body_schema:
user: string
password: string
- id: system_h323gatekeepers_get
label: Get H323 gatekeeper servers
kind: query
method: GET
path: /rest/system/h323gatekeepers
- id: system_logs_get
label: Get system logs (tar attachment)
kind: query
method: GET
path: /rest/system/logs
- id: system_network_ping
label: ICMP ping destination host
kind: action
method: POST
path: /rest/system/network/ping
body_schema:
destination: string # IP address
- id: system_network_traceroute
label: Traceroute destination host
kind: action
method: POST
path: /rest/system/network/traceroute
body_schema:
destination: string # IP address
- id: system_reboot
label: Reboot system
kind: action
method: POST
path: /rest/system/reboot
body_schema:
action: reboot
- id: system_resetsettings
label: Reset system settings
kind: action
method: POST
path: /rest/system/resetsettings
body_schema:
action: resetsettings
keepCertificates: boolean
keepCdr: boolean
keepDirectory: boolean
keepLogs: boolean
- id: system_sipservers_get
label: Get SIP servers
kind: query
method: GET
path: /rest/system/sipservers
- id: system_status_get
label: Get system status
kind: query
method: GET
path: /rest/system/status
- id: system_time_get
label: Get system time (epoch ms + tz offset)
kind: query
method: GET
path: /rest/system/time
- id: system_time_set
label: Set system time (epoch ms)
kind: action
method: POST
path: /rest/system/time
body_schema:
time: long
tzOffset: integer
- id: system_time_local_get
label: Get system local time (ISO 8601)
kind: query
method: GET
path: /rest/system/time/local
- id: mediastats_get
label: Get shared content media stats
kind: query
method: GET
path: /rest/mediastats
- id: video_local_mute_get
label: Get local video hidden status
kind: query
method: GET
path: /rest/video/local/mute
- id: video_local_mute_set
label: Hide/unhide local video
kind: action
method: POST
path: /rest/video/local/mute
body_schema:
mute: boolean
- id: video_remote_conf_mute_get
label: Get remote video hidden status
kind: query
method: GET
path: /rest/video/remote/{confID}/mute
path_params:
- name: confID
type: string
- id: video_remote_conf_mutelock_get
label: Get remote video mute lock status
kind: query
method: GET
path: /rest/video/remote/{confID}/mutelock
path_params:
- name: confID
type: string
Feedbacks
# Sample of structured response fields documented in source.
- id: audio_state
type: object
fields: [muteLocked, muted, numOfMicsConnected, volume]
- id: audio_muted
type: boolean
- id: audio_volume
type: integer
- id: calendar_status
type: enum
values: [DISABLED, OFFLINE, ONLINE, CONNECTING, ERR_AUTHENTICATION, ERR_UNKNOWN]
- id: calendar_meeting
type: object
fields: [actions, body, canDial, canceled, duration, id, inCall, location, optionalAttendees, organizer, privateMeeting, recurring, requiredAttendees, startTime, subject, lastSyncTime]
- id: camera_near
type: object
fields: [cameraIndex, iconName, model, name, sessionID, sourceType, stateAutoFocus, stateFreeze, stateMarker, connected, hasAutoFocus, hasFocus, hasFreeze, hasMarker, hasPan, hasTilt, hasZoom, nearCamera, ptzcapable, selected, trackable]
- id: camera_preset
type: object
fields: [imageLocation, index, sessionId, near, stored]
- id: camera_content_status
type: enum
values: [CONTENT_IDLE]
- id: conference
type: object
fields: [id, connections, duration, holdStartTime, holdState, isActive, isHolding, isMute, isSvcConference, isWaitingInLobby, mediaServerControlEvent, mediaServerType, startTime, terminals, capabilities]
- id: conference_dial_type
type: enum
values: [LOOPBACK, AUTO, VIDEO, VOICE, H320, H323, SIP, GATEWAY, POTS, ISDN_VOICE, SIP_SPEAKERPHONE, POTS_SPEAKERPHONE, VOICE_H323, VOICE_SIP, VOICE_GATEWAY]
- id: directory_entry
type: object
fields: [serverId, type, displayName, firstName, lastName, fullName, presence, email, homePhone, workPhone, mobilePhone, imageLocation, serverProtocol, devices, favorite, readOnly, addedLocally]
- id: directory_presence
type: enum
values: [OFFLINE]
- id: h323_gatekeeper
type: object
fields: [state, address, version, model]
- id: sip_server
type: object
fields: [state, address, version, model]
- id: system_time
type: object
fields: [time, tzOffset] # time in epoch ms
- id: system_time_local
type: string # ISO 8601
- id: mediastats_vars
type: object
fields: [bitrate, clientID, duration, framerate, height, sourceID, sourceType, start, width]
- id: video_mute_result
type: boolean
- id: session
type: object
fields: [sessionId, role, clientType, location, userId, creationTime, isAuthenticated, isStale, isNew, isConnected]
- id: ping_result
type: object
fields: [icmpReachable, responseTime, h323Reachable, sipReachable]
- id: traceroute_result
type: object
fields: [success, totalHops, hops]
Variables
# Settable system parameters reachable via REST.
# UNRESOLVED: most system configuration setters are out of scope of this refined doc
# excerpt; the source focuses on audio/camera/call/directory control. Documented
# system-level setters in scope:
- id: system_time
label: System clock
type: object
settable_via: /rest/system/time POST
fields:
- name: time
type: long
- name: tzOffset
type: integer
Events
# UNRESOLVED: source describes GET-based state queries only; no unsolicited
# notification / webhook / SSE / event-stream endpoints are documented.
Macros
# UNRESOLVED: source does not document any multi-step macro sequences.
Safety
confirmation_required_for: []
interlocks: []
# UNRESOLVED: source does not document safety warnings, interlock procedures,
# or power-on sequencing requirements.
Notes
- HTTPS is named in source but no port is stated; do not assume 443.
- Auth: source documents a /rest/session POST that returns a sessionId after validating user/password. The exact header scheme used to send that sessionId on subsequent calls is not named in the source.
- "Administrator credentials are required for access authentication" — most documented endpoints list "Access Level: Admin" explicitly; some do not.
- The /rest/audio GET returns multiple shape variants in the source (muteLocked/muted/numOfMicsConnected/volume). The /rest/audio POST shape (action/dtmfChar/speaker) is documented separately.
- Conference dial POST (single-participant) is documented without an explicit HTTPS method label; the matching blast endpoint is explicitly POST; treat the single dial as POST by symmetry.
- The /rest/collaboration content endpoint POST returns
context_id; the GET counterpart usescontext-id(hyphenated) as the query parameter name. - Directory /rest/directory/queries/{queryId} DELETE is documented as a protocol+method+path row, but applicable return codes row is missing in the source.
Provenance
source_domains:
- polycom-moscow.ru
- kaas.hpcloud.hp.com
- api.lens.poly.com
source_urls:
- https://polycom-moscow.ru/pdf/poly-video-restapi.pdf
- https://kaas.hpcloud.hp.com/pdf-public/pdf_9122921_en-US-1.pdf
- https://kaas.hpcloud.hp.com/pdf-public/pdf_9121204_en-US-1.pdf
- https://kaas.hpcloud.hp.com/pdf-public/pdf_8740172_en-US-1.pdf
- https://api.lens.poly.com
retrieved_at: 2026-06-10T23:39:53.509Z
last_checked_at: 2026-06-11T13:44:55.390Z
Verification Summary
verdict: verified
checked_at: 2026-06-11T13:44:55.390Z
matched_actions: 98
action_count: 98
confidence: medium
summary: "All 98 spec actions match documented source endpoints with correct paths, methods, and shapes; base_url /rest confirmed; no extra source endpoints. (7 unresolved item(s) noted in Known Gaps.)"
Known Gaps
- "HTTPS port not stated in source (commonly 443)"
- "exact auth header scheme not stated (Basic vs Digest vs custom token). Source only documents the /rest/session login returning a sessionId."
- "most system configuration setters are out of scope of this refined doc"
- "source describes GET-based state queries only; no unsolicited"
- "source does not document any multi-step macro sequences."
- "source does not document safety warnings, interlock procedures,"
- "webhook / event-stream notification endpoints; HTTPS port number; auth header scheme; firmware version compatibility ranges across G7500 / X50 / X30; applicable return codes row missing on some endpoints."
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0