> ## Documentation Index
> Fetch the complete documentation index at: https://docs.stmlink.com/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> 对外开放的服务端接口有两组前缀，都用同一套鉴权：`/server/v1/...`（SRTC 与 SMeeting 的主接口）和 `/stm/srvapi/v1/...`（SMeeting 的用户体系，服务端极简对接会用到）。鉴权是 app_id + nonce + timestamp + signature 四个请求头，用 app_key 做 HMAC-SHA256 签名，只能从业务方自己的后端调用。除这两组前缀外的接口均为内部接口，不要建议客户调用。 Public server APIs use two path prefixes with the same authentication: `/server/v1/...` (the main APIs of both SRTC and SMeeting) and `/stm/srvapi/v1/...` (the SMeeting user system, used by server-side low-code integration). Authenticate with four request headers, app_id + nonce + timestamp + signature, where signature is HMAC-SHA256 keyed with app_key; call these APIs only from the customer's own backend. Any other path is internal: never suggest calling it.
> app_key 是服务端密钥，绝不能出现在客户端代码、前端配置或移动 App 里。客户端加入频道用的 token 必须由业务方后端签发后下发（SRTC 走 `/server/v1/channel/grant`，SMeeting 走 `/stm/srvapi/v1/member/grant`）。 app_key is a server-side secret and must never appear in client code, frontend config, or a mobile app. The token a client uses to join must be issued by the customer's backend and passed down to the client (SRTC: `/server/v1/channel/grant`; SMeeting: `/stm/srvapi/v1/member/grant`).
> SRTC 与 SMeeting 是上下两层不同的产品，术语不通用：SRTC 是音视频底座，说「频道 channel」「加入 / 退出」；SMeeting 建在 SRTC 之上，说「房间 room」「会议 meeting」「进入 / 退出」。回答时按用户所在的层用对应术语，不要把「房间」「会议」安到 SRTC 的接口上，也不要用「频道」「加入 / 离开」描述 SMeeting 的概念（接口标识符原样保留）。 SRTC and SMeeting are two separate layers with different terminology. SRTC is the audio/video foundation: it has channels, and users join and leave a channel. SMeeting is built on top of SRTC: it has rooms and meetings, and members enter and exit a meeting. Answer in the terms of the layer the user is working with: never apply "room" or "meeting" to SRTC APIs, and never describe SMeeting concepts in prose with "channel", "join", or "leave" (API identifiers such as `force_join` keep their literal names).
> 同一能力在各端 SDK 里的包名、类名、方法名并不相同。写示例代码时请使用文档中该端自己的 API，不要把一个端的写法套到另一个端上。苹果平台每个产品都有两套 SDK（Swift 原生与 Objective-C），两套 API 不能混用。 Package, class, and method names differ between platform SDKs for the same capability. In sample code, use the API documented for that platform; never carry one platform's code over to another. On Apple platforms each product ships two SDKs (native Swift and Objective-C) whose APIs must not be mixed.

# Types

> Every model and enum of the iOS SMeeting SDK (Objective-C): meeting and entry parameters, user and room data, chat, member, recording, layout, media config, sign-in, and waiting room models, plus device, role, sharing, exit reason, and quality enums. Read for a field's meaning or an enum value.

## Data structures

### SEALogConfig

Log configuration

| **Property** | **Description** |
| - | - |
| enableLocalLog | \[Meaning] Whether to enable process-wide local log collection<br />\[Recommended value] Default: YES. When enabled, logs are written to a local file and the host app's console output is kept as well. |

### SEAMeetingParam

Meeting parameters

Required when you create or update a room.

| **Property** | **Description** |
| - | - |
| roomId | \[Meaning] Room ID<br />\[Recommended value] Generated by the cloud<br />\[Note] Don't set this field when you create a room; it's required when you update room information. |
| roomNo | \[Meaning] Room number<br />\[Recommended value] Generated by the cloud<br />\[Note] Don't set this field when you create or update room information. |
| title | \[Meaning] Meeting title<br />\[Recommended value] Required when you create a room.<br />\[Note] Can be used as the display title of the meeting in lists and elsewhere; UTF-8 encoded. |
| content | \[Meaning] Meeting description<br />\[Note] Can be used as the display description of the meeting in lists and elsewhere; UTF-8 encoded. |
| password | \[Meaning] Meeting password<br />\[Note] If you set a meeting password when creating the room, users must also provide the matching password to enter the meeting. |
| meetingType | \[Meaning] Meeting type<br />\[Recommended value] Default: [SEAMeetingTypeInitiate](#seameetingtype) |
| beginTime | \[Meaning] Meeting start time<br />\[Recommended value] Required when the meeting type is `scheduled meeting`.<br />\[Note] Start time as a Unix timestamp |
| endTime | \[Meaning] Meeting end time<br />\[Recommended value] Required when the meeting type is `scheduled meeting`.<br />\[Note] End time as a Unix timestamp |
| entryMutePolicy | \[Meaning] Mute-on-entry state<br />\[Recommended value] Default: [SEAMeetingMuteState3](#seameetingmutestate) |
| watermarkDisabled | \[Meaning] Whether the room watermark is disabled<br />\[Recommended value] Default: YES |
| screenshotDisabled | \[Meaning] Whether screenshots are disabled in the room<br />\[Recommended value] Default: NO |
| chatDisabled | \[Meaning] Whether chat is disabled in the room<br />\[Recommended value] Default: NO |
| waitingRoomDisabled | \[Meaning] Whether the waiting room is disabled<br />\[Recommended value] Default: YES |
| extendInfo | \[Meaning] Extended information |

### SEAMeetingEnterParam

Meeting entry parameters

Required when you call `enterRoom:onSuccess:onFailed:()` on `MeetingKitRoom` to enter a meeting.

| **Property** | **Description** |
| - | - |
| roomNo | \[Meaning] Meeting number<br />\[Recommended value] Usually 9 digits<br />\[Note] When entering, you can use either the **meeting number** or the **meeting ID** to enter the meeting. |
| meetingId | \[Meaning] Meeting ID<br />\[Recommended value] Usually an encrypted string<br />\[Note] When entering, you can use either the **meeting number** or the **meeting ID** to enter the meeting. |
| password | \[Meaning] Meeting password<br />\[Note] If a meeting password was set when the room was created, you must provide the matching password to enter the meeting. |
| nickname | \[Meaning] In-meeting nickname<br />\[Recommended value] Shown as display information in the meeting; UTF-8 encoded. |
| avatar | \[Meaning] In-meeting avatar<br />\[Recommended value] Shown as display information in the meeting; UTF-8 encoded. |
| extendInfo | \[Meaning] Extended information |
| isAudience | \[Type] BOOL<br />\[Meaning] Whether to enter the meeting as audience<br />\[Recommended value] Default: NO. Set it to YES to enter the meeting as audience. |

### SEAUserModel

User data

| **Property** | **Description** |
| - | - |
| userId | \[Meaning] User ID<br />\[Note] The user's globally unique identifier. |
| name | \[Meaning] User name<br />\[Note] Used as the user's nickname; UTF-8 encoded. |
| meetingRoom | \[Meaning] The meeting room the member belongs to. See [MeetingKitRoom](/en/meeting/ios/api-reference/MeetingKitRoom)<br />\[Note] Added in `2.0.0`. Used to resolve the member's sharing status in their room; tells rooms apart when the same userId appears in multiple rooms. |
| micState | \[Meaning] Microphone state. See [SEADeviceState](#seadevicestate). |
| cameraState | \[Meaning] Camera state. See [SEADeviceState](#seadevicestate). |
| shareType | \[Meaning] Sharing status. See [SEAShareType](#seasharetype). |
| extend | \[Meaning] Extended properties<br />\[Note] The user's extended data properties. See [SEAUserExtend](#seauserextend). |

### SEAUserExtend

User extended data

| **Property** | **Description** |
| - | - |
| role | \[Meaning] In-meeting role<br />\[Note] Identifies the user's in-meeting role. See [SEAUserRole](#seauserrole). |
| avatar | \[Meaning] In-meeting avatar<br />\[Note] Set by the user in the enter-room API; UTF-8 encoded. |
| isKickout | \[Meaning] Whether the user was removed |
| chatDisabled | \[Meaning] Whether chat is disabled. YES: disabled; NO: enabled |
| drawDisabled | \[Meaning] Whether drawing is disabled. YES: disabled; NO: enabled |
| extend | \[Meaning] Extended information |

### SEARoomModel

Room data

| **Property** | **Description** |
| - | - |
| extend | \[Meaning] Extended properties<br />\[Note] The room's extended data properties. See [SEARoomExtend](#searoomextend). |

### SEARoomExtend

Room extended data

| **Property** | **Description** |
| - | - |
| meetingId | \[Meaning] Meeting ID |
| roomNo | \[Meaning] Room number |
| title | \[Meaning] Meeting title |
| content | \[Meaning] Meeting description |
| meetingType | \[Meaning] Meeting type<br />\[Note] Identifies the meeting type. See [SEAMeetingType](#seameetingtype). |
| beginTime | \[Meaning] Start time |
| endTime | \[Meaning] End time |
| entryMutePolicy | \[Meaning] Mute-on-entry state<br />\[Note] The current meeting's mute-on-entry state. See [SEAMeetingMuteState](#seameetingmutestate). |
| watermarkDisabled | \[Meaning] Whether the room watermark is disabled. YES: disabled; NO: enabled |
| screenshotDisabled | \[Meaning] Whether screenshots are disabled in the room. YES: disabled; NO: enabled |
| chatDisabled | \[Meaning] Whether chat is disabled. YES: disabled; NO: enabled |
| micDisabled | \[Meaning] Whether the microphone is disabled. YES: disabled; NO: enabled |
| cameraDisabled | \[Meaning] Whether the camera is disabled. YES: disabled; NO: enabled |
| selfUnmuteMicDisabled | \[Meaning] Whether members are prevented from unmuting themselves. YES: prevented; NO: allowed |
| selfUnmuteCameraDisabled | \[Meaning] Whether members are prevented from turning their cameras back on themselves. YES: prevented; NO: allowed |
| shareDisabled | \[Meaning] Whether sharing is disabled. YES: disabled; NO: enabled |
| waitingRoomDisabled | \[Meaning] Whether the waiting room is disabled. YES: disabled; NO: enabled |
| parentMid | \[Meaning] Parent meeting ID |
| enterBeforeHostDisabled | \[Meaning] Whether entering before the host is prevented. YES: prevented; NO: allowed |
| locked | \[Meaning] Meeting locked state. YES: locked; NO: unlocked |
| shareType | \[Meaning] Sharing type<br />\[Note] Identifies the current meeting's sharing type. See [SEAShareType](#seasharetype). |
| shareUid | \[Meaning] Sharer ID<br />\[Note] User ID of the member currently sharing in the meeting |
| creator | \[Meaning] User ID of the creator |
| hostUid | \[Meaning] User ID of the host |
| unionHosts | \[Meaning] List of user IDs of the meeting's co-hosts |
| signInActivityLists | \[Meaning] List of the room's sign-in activities. For details, see [SEASignInActivityModel](#seasigninactivitymodel) |
| hasSignInActivity | \[Meaning] Whether the room has a sign-in activity in progress |
| extend | \[Meaning] Extended information |

### SEAUserInfo

User information

| **Property** | **Description** |
| - | - |
| userId | \[Meaning] User ID |
| deviceId | \[Meaning] Device ID |
| deviceType | \[Meaning] Device type<br />\[Note] Identifies the current device type. See [SEADeviceType](#seadevicetype). |
| expAt | \[Meaning] Expiration time |

### SEASectionModel

Pagination object

| **Property** | **Description** |
| - | - |
| currentPage | \[Meaning] Current page number |
| pageCount | \[Meaning] Total number of pages |
| perPage | \[Meaning] Number of items per page |
| totalCount | \[Meaning] Total number of items |

### SEAMeetingCreateModel

Room creation response object

| **Property** | **Description** |
| - | - |
| meetingId | \[Meaning] Meeting ID |
| roomNo | \[Meaning] Room number |

### SEAChatModel

Chat message object

| **Property** | **Description** |
| - | - |
| messageId | \[Meaning] Message ID |
| meetingId | \[Meaning] Meeting ID |
| message | \[Meaning] Message content |
| messageType | \[Meaning] Message type. For details, see [SEAMessageType](#seamessagetype) |
| senderId | \[Meaning] Sender ID |
| senderName | \[Meaning] Sender nickname |
| createdAt | \[Meaning] Creation time |

### SEAChatListModel

Chat message list object

| **Property** | **Description** |
| - | - |
| meta | \[Meaning] Pagination object. For details, see [SEASectionModel](#seasectionmodel) |
| listData | \[Meaning] List of chat message objects. For details, see [SEAChatModel](#seachatmodel) |

### SEAMeetingModel

Meeting information object. Only some of the properties are listed below; see the header files shipped with the SDK for details.

| **Property** | **Description** |
| - | - |
| meetingId | \[Meaning] Meeting ID |
| roomNo | \[Meaning] Meeting number |
| title | \[Meaning] Meeting title |
| content | \[Meaning] Meeting description |
| conferee | \[Meaning] List of invitee IDs |
| creator | \[Meaning] Creator ID |

### SEAMeetingListModel

Meeting list object

| **Property** | **Description** |
| - | - |
| meta | \[Meaning] Pagination object. For details, see [SEASectionModel](#seasectionmodel) |
| listData | \[Meaning] List of meeting information objects. For details, see [SEAMeetingModel](#seameetingmodel) |

### SEAMemberModel

Member attendance record object

| **Property** | **Description** |
| - | - |
| recordId | \[Meaning] Record ID |
| userId | \[Meaning] User ID |
| nickname | \[Meaning] User nickname |
| enterAt | \[Meaning] Time the member entered |
| exitAt | \[Meaning] Time the member exited |

### SEAMemberListModel

Member attendance record list object

| **Property** | **Description** |
| - | - |
| meta | \[Meaning] Pagination object. For details, see [SEASectionModel](#seasectionmodel) |
| listData | \[Meaning] List of member attendance records. For details, see [SEAMemberModel](#seamembermodel) |

### SEAStreamAudioModel

Media stream audio data

| **Property** | **Description** |
| - | - |
| userId | \[Meaning] User ID |
| power | \[Meaning] Audio power |
| db | \[Meaning] Audio decibel value |

### SEAStreamSendModel

Media stream send status data

| **Property** | **Description** |
| - | - |
| buffer | \[Meaning] Number of buffered upload packets |
| delay | \[Meaning] Upload latency |
| overflow | \[Meaning] Number of overflowed buffer packets |
| speed | \[Meaning] Upload rate<br />\[Note] Unit: kbps |
| status | \[Meaning] Upload status |
| loss\_r | \[Meaning] Packet loss rate before compensation |
| loss\_c | \[Meaning] Packet loss rate after compensation |

### SEAStreamReceiveModel

Media stream receive status data

| **Property** | **Description** |
| - | - |
| userId | \[Meaning] User ID |
| recv | \[Meaning] Number of received packets |
| comp | \[Meaning] Number of compensated packets |
| losf | \[Meaning] Total number of lost packets |
| lrl | \[Meaning] End-to-end packet loss rate |
| lrd | \[Meaning] Server-to-client packet loss rate |
| audio | \[Meaning] Number of audio packets |
| video | \[Meaning] Number of video packets |

### SEAStreamQualityModel

Media stream quality monitoring data

| **Property** | **Description** |
| - | - |
| score | \[Meaning] Overall score (0–100) |
| level | \[Meaning] Quality level |
| mos | \[Meaning] Voice MOS value |
| loss | \[Meaning] Packet loss rate (0–1) |
| rtt | \[Meaning] Round-trip time (ms) |
| jitter | \[Meaning] Jitter (ms) |
| packets | \[Meaning] Number of packets |
| bitrate | \[Meaning] Bitrate (bps) |
| bytes | \[Meaning] Number of bytes |

### SEAAgentModel

Invited device object

| **Property** | **Description** |
| - | - |
| deviceId | \[Meaning] Device ID |
| name | \[Meaning] Device name |
| type | \[Meaning] Device type. See [SEAAgentType](#seaagenttype). |
| status | \[Meaning] Device status. See [SEAAgentStatus](#seaagentstatus). |
| contact | \[Meaning] Device identifier |
| remark | \[Meaning] Device remarks |
| connectParams | \[Meaning] Connection parameters |

### SEAAgentListModel

Invited device list object

| **Property** | **Description** |
| - | - |
| meta | \[Meaning] Pagination object. For details, see [SEASectionModel](#seasectionmodel) |
| listData | \[Meaning] List of device objects. For details, see [SEAAgentModel](#seaagentmodel) |

### SEAInviteModel

Invitation object

| **Property** | **Description** |
| - | - |
| contact | \[Meaning] Device identifier |
| type | \[Meaning] Device type. For details, see [SEAAgentType](#seaagenttype) |

### SEAConfereeModel

Sub-meeting member object

| **Property** | **Description** |
| - | - |
| userId | \[Meaning] User ID |
| nickname | \[Meaning] User nickname |

### SEALayoutDataModel

Layout data object

| **Property** | **Description** |
| - | - |
| layout | \[Meaning] Layout type; default: auto |
| isPolling | \[Meaning] Whether to cycle through members (polling); default: NO |
| watermark | \[Meaning] Layout watermark. For details, see [SEALayoutWatermarkModel](#sealayoutwatermarkmodel) |
| label | \[Meaning] Layout label. For details, see [SEALayoutLabelModel](#sealayoutlabelmodel) |
| viewLists | \[Meaning] List of layout views, that is, logical blocks containing grid cells and users<br />\[Note] List of layout views. See [SEALayoutViewListModel](#sealayoutviewlistmodel). |

### SEALayoutWatermarkModel

Layout watermark object

| **Property** | **Description** |
| - | - |
| type | \[Meaning] Watermark type; default: 1. 1: none; 2: single row; 3: multiple rows |
| size | \[Meaning] Font size; 0 means the default value |
| color | \[Meaning] Font color; empty means the default value |
| olColor | \[Meaning] Outline color; empty means the default value |
| olWidth | \[Meaning] Outline width; 0 means the default value |

### SEALayoutLabelModel

Layout label object

| **Property** | **Description** |
| - | - |
| type | \[Meaning] Label type; default: LT. A letter or combination: L: left; R: right; T: top; B: bottom |
| size | \[Meaning] Font size; 0 means the default value |
| color | \[Meaning] Font color; empty means the default value |
| bgColor | \[Meaning] Background color; empty means the default value |

### SEALayoutViewListModel

Layout view list object, that is, a logical block containing grid cells and users

| **Property** | **Description** |
| - | - |
| itemLists | \[Meaning] Cells of the view list<br />\[Note] List of cells. See [SEALayoutViewListCellModel](#sealayoutviewlistcellmodel). |
| userIds | \[Meaning] List of member IDs |

### SEALayoutViewListCellModel

Layout view list cell object

| **Property** | **Description** |
| - | - |
| index | \[Meaning] Cell index<br />\[Note] Ordered by the order of tags in the HTML; default: 0 |
| bindShare | \[Meaning] Whether to bind the meeting's sharing stream first; default: NO |
| label | \[Meaning] Cell label. For details, see [SEALayoutLabelModel](#sealayoutlabelmodel) |

### SEACloudRecordParam

Cloud recording parameters

Required when you start cloud recording.

| **Property** | **Description** |
| - | - |
| recordType | \[Meaning] Recording type<br />\[Recommended value] Default: [SEARecordTypeVideo](#searecordtype) |
| title | \[Meaning] Recording file title |
| layoutData | \[Meaning] Recording layout<br />\[Recommended value] For details, see [SEALayoutDataModel](#sealayoutdatamodel) |

### SEACloudRecordDetailsModel

Cloud recording details object

| **Property** | **Description** |
| - | - |
| taskId | \[Meaning] Task ID |
| meetingId | \[Meaning] Meeting ID |
| roomNo | \[Meaning] Meeting number |
| title | \[Meaning] Recording file title |
| opUid | \[Meaning] Operator ID |
| opName | \[Meaning] Operator name |
| recordStatus | \[Meaning] Cloud recording status. For details, see [SEARecordStatus](#searecordstatus) |
| videoKey | \[Meaning] Video URL |
| videoSize | \[Meaning] Video size |
| tags | \[Meaning] Recording tags |
| errorDesc | \[Meaning] Error description |
| createdAt | \[Meaning] Creation time |
| updatedAt | \[Meaning] Update time |

### SEACloudRecordConfigModel

Cloud recording configuration object

| **Property** | **Description** |
| - | - |
| layout | \[Meaning] Layout type |
| watermarkType | \[Meaning] Watermark type. 1: none; 2: single row; 3: multiple rows |
| labelType | \[Meaning] Label type. A letter or combination: L: left; R: right; T: top; B: bottom |
| createdAt | \[Meaning] Creation time |
| updatedAt | \[Meaning] Update time |

### SEAMeetingRemindModel

Meeting-about-to-start reminder object

| **Property** | **Description** |
| - | - |
| meetingId | \[Meaning] Meeting ID |
| roomNo | \[Meaning] Room number |
| title | \[Meaning] Meeting title |
| creatorName | \[Meaning] Creator nickname |
| planTime | \[Meaning] Scheduled time |
| planDuration | \[Meaning] Scheduled duration, in minutes |

### SEAMediaConfig

Media streaming configuration parameters

| **Property** | **Required** | **Description** |
| - | :-: | - |
| int aec | No | Acoustic echo cancellation (AEC); default: 12 |
| int agc | No | Automatic gain control (AGC); default: 16000 |
| int audioSampe | No | Audio sample rate; default: 48000 |
| [SEACodecType](#seacodectype) audioEncode | No | Audio encoding format; default: AAC |
| [SEAAudioRoute](#seaaudioroute) audioRoute | No | Default built-in audio route when no external device is connected; supports the speaker or the earpiece; default: SEAAudioRouteReceiver |
| int videoWidth | No | Resolution width; default: 480 |
| int videoHeight | No | Resolution height; default: 640 |
| BOOL videoMirror | No | Video mirroring; default: YES |
| int fps | No | Video frame rate; default: 25 |
| int bitrate | No | Video bitrate; default: 0.9\*1024, in kbps |

### SEANetworkQosParam

Network quality control parameters

| **Property** | **Required** | **Description** |
| - | :-: | - |
| int secondGear | No | Second level of receive-side adaptive latency; default: 500 |
| int thirdGear | No | Third level of receive-side adaptive latency; default: 1200 |
| float onAudioCycle | No | Interval for getting cloud audio data; default: 500 ms |
| BOOL isHardwarede | No | Enable hardware decoding. YES: on; NO: off; default: YES |
| BOOL isNetworkAdaptive | No | Enable network adaptive latency. YES: on; NO: off; default: YES |
| BOOL isBitrateAdaptive | No | Enable adaptive bitrate. YES: on; NO: off; default: YES |
| [SEANetworkQosShakeLevel](#seanetworkqosshakelevel) shakeLevel | No | Network latency anti-jitter level; default: SEANetworkQosShakeLevelMedium |

### SEADebugParam

Debug mode parameters

| **Property** | **Required** | **Description** |
| :- | :-: | - |
| NSString \*debugHost | No | Remote debugging address |
| BOOL enableSaveVideo | No | Save the video stream; default: NO |
| BOOL enableSaveAudioCapture | No | Save the captured audio stream; default: NO |
| BOOL enableSaveAudioReceive | No | Save the remote audio stream; default: NO |

### SEAWaitingRoomMemberModel

Waiting room member object

| **Property** | **Description** |
| - | - |
| userId | \[Meaning] User ID |
| nickname | \[Meaning] User nickname |
| enterAt | \[Meaning] Time the member entered |

### SEAWaitingRoomMemberListModel

Waiting room member list object

| **Property** | **Description** |
| - | - |
| listData | \[Meaning] List of waiting room member objects. For details, see [SEAWaitingRoomMemberModel](#seawaitingroommembermodel) |

### SEARoomSubMeetingModel

Sub-meeting object

| **Property** | **Description** |
| - | - |
| groupId | \[Meaning] Group ID |
| meetingId | \[Meaning] Sub-meeting ID |
| parentMid | \[Meaning] Main meeting ID |
| title | \[Meaning] Sub-meeting name |
| meetingStatus | \[Meaning] Sub-meeting status. For details, see [SEAMeetingStatus](#seameetingstatus) |
| conferee | \[Meaning] List of sub-meeting members. For details, see [SEAConfereeModel](#seaconfereemodel) |

### SEARoomSubMeetingListModel

Sub-meeting list object

| **Property** | **Description** |
| - | - |
| listData | \[Meaning] List of sub-meeting objects. For details, see [SEARoomSubMeetingModel](#searoomsubmeetingmodel) |

### SEAOnlineMemberModel

Online member object

| **Property** | **Description** |
| - | - |
| userId | \[Meaning] User ID |
| nickname | \[Meaning] User nickname |
| deviceType | \[Meaning] Device type. For details, see [SEADeviceType](#seadevicetype) |
| joinAt | \[Meaning] Time the member entered |

### SEAOnlineMemberListModel

Online member list object

| **Property** | **Description** |
| - | - |
| meta | \[Meaning] Pagination object. For details, see [SEASectionModel](#seasectionmodel) |
| listData | \[Meaning] List of online member objects. For details, see [SEAOnlineMemberModel](#seaonlinemembermodel) |

### SEASignInActivityModel

Sign-in activity item object

| **Property** | **Description** |
| - | - |
| userId | \[Meaning] User ID (creator) |
| meetingRoom | \[Meaning] The meeting room the activity belongs to. See [MeetingKitRoom](/en/meeting/ios/api-reference/MeetingKitRoom)<br />\[Note] Added in `2.0.0`. Used to resolve the extended data of members in that room. |
| beginAt | \[Meaning] Start time |
| dur | \[Meaning] Sign-in duration in minutes; 0 means no time limit |
| endAt | \[Meaning] End time |
| status | \[Meaning] Activity status. For details, see [SEASignInActivityState](#seasigninactivitystate) |
| desc | \[Meaning] Sign-in description |
| nums | \[Meaning] Number of people signed in |

### SEASignInListModel

Sign-in activity list object

| **Property** | **Description** |
| - | - |
| listData | \[Meaning] List of sign-in activities. For details, see [SEASignInActivityModel](#seasigninactivitymodel) |
| now | \[Meaning] Current server time |

### SEASignInCountModel

Sign-in count object

| **Property** | **Description** |
| - | - |
| nums | \[Meaning] Number of people signed in |

### SEASignInDetailModel

Sign-in detail item object

| **Property** | **Description** |
| - | - |
| detailId | \[Meaning] Record ID |
| userId | \[Meaning] User ID |
| nickname | \[Meaning] User nickname |
| role | \[Meaning] User role. See [SEAUserRole](#seauserrole). |
| epoch | \[Meaning] Sign-in round |
| createdAt | \[Meaning] Sign-in time |

### SEASignInDetailListModel

Sign-in activity detail list object

| **Property** | **Description** |
| - | - |
| listData | \[Meaning] List of sign-in details. For details, see [SEASignInDetailModel](#seasignindetailmodel) |

## Enums

### SEADeviceType

Device type

| **Enum** | **Value** | **Description** |
| - | :-: | - |
| SEADeviceTypeUnknown | `0` | Unknown device type |
| SEADeviceTypeWindows | `1` | Windows |
| SEADeviceTypeAndroid | `2` | Android |
| SEADeviceTypeIOS | `3` | iOS |
| SEADeviceTypeLinux | `4` | Linux |
| SEADeviceTypeMacOS | `5` | macOS |
| SEADeviceTypeWebRTC | `6` | WebRTC |
| SEADeviceTypeWeChat | `7` | WeChat Mini Program |
| SEADeviceTypeHarmonyOS | `8` | HarmonyOS |

### SEACodecType

Codec type

| **Enum** | **Value** | **Description** |
| - | :-: | - |
| SEACodecTypeUnknown | `0` | Unknown type |
| SEACodecTypeH264 | `0x1b` | H264 |
| SEACodecTypeH265 | `0x24` | H265 |
| SEACodecTypeAAC | `0x0f` | AAC |
| SEACodecTypeOPUS | `0x5355504f` | OPUS |

### SEANetworkQosShakeLevel

Network latency anti-jitter level

| **Constant** | **Value** | **Description** |
| - | :-: | - |
| SEANetworkQosShakeLevelUltraShort | `0` | Ultra-short (0): about 120 ms one-way latency. No packet loss compensation in this mode, and B-frames are disabled in encoding. Not recommended for real use |
| SEANetworkQosShakeLevelShort | `1` | Short (1): about 200 ms one-way latency. Single packet loss compensation, 1 B-frame. Usable for two-way talk |
| SEANetworkQosShakeLevelMedium | `2` | Medium (2): about 350 ms one-way latency. Two rounds of packet loss compensation, 1 B-frame. Recommended for two-way talk |
| SEANetworkQosShakeLevelLong | `3` | Long (3): about 600 ms one-way latency. Three rounds of packet loss compensation, 3 B-frames. Only for one-way viewing; not recommended for two-way talk. This parameter can't be set dynamically |

### SEAAudioRoute

Audio route type

| **Enum** | **Value** | **Description** |
| - | :-: | - |
| SEAAudioRouteUnknown | `0` | Unknown route |
| SEAAudioRouteSpeaker | `1` | Speaker |
| SEAAudioRouteReceiver | `2` | Earpiece |
| SEAAudioRouteBluetooth | `3` | Bluetooth headset |
| SEAAudioRouteHeadset | `4` | Wired headset |

### SEAVideoStreamType

Video stream type

| **Enum** | **Value** | **Description** |
| - | :-: | - |
| SEAVideoStreamTypeBig | `1` | High stream: the large, high-definition view, usually used to carry camera video |
| SEAVideoStreamTypeSmall | `2` | Low stream: the small, low-definition view. It has the same content as the high stream, but a lower resolution and bitrate, so it's less sharp |
| SEAVideoStreamTypeScreen | `3` | Screen sharing stream |

### SEAScreenRecordStatus

Screen capture status

| **Enum** | **Value** | **Description** |
| - | :-: | - |
| SEAScreenRecordStatusNormal | `1000` | Default state |
| SEAScreenRecordStatusError | `-1` | Connection error |
| SEAScreenRecordStatusStop | `0` | Recording stopped |
| SEAScreenRecordStatusStart | `1` | Recording started |

### SEAUserRole

User role

| **Enum** | **Value** | **Description** |
| - | :-: | - |
| SEAUserRoleNormal | `0` | Regular member |
| SEAUserRoleHost | `1` | Host |
| SEAUserRoleUnionHost | `2` | Co-host |

### SEAMeetingType

Meeting type

| **Enum** | **Value** | **Description** |
| - | :-: | - |
| SEAMeetingTypeInitiate | `1` | Instant meeting |
| SEAMeetingTypeSchedule | `2` | Scheduled meeting |

### SEAMeetingMode

Meeting mode

| **Enum** | **Value** | **Description** |
| - | :-: | - |
| SEAMeetingModeNormal | `1` | Regular meeting mode |
| SEAMeetingModeMixture | `2` | Composite meeting mode |
| SEAMeetingModeVoice | `3` | Voice meeting mode |
| SEAMeetingModeTraining | `4` | Training meeting mode |
| SEAMeetingModeGroups | `5` | Sub-meeting mode |

### SEAMeetingStatus

Meeting status

| **Enum** | **Value** | **Description** |
| - | :-: | - |
| SEAMeetingStatusNotStart | `1` | Not started |
| SEAMeetingStatusIng | `2` | In progress |
| SEAMeetingStatusEnded | `3` | Ended |

### SEAMeetingAttendType

Attendance type

| **Enum** | **Value** | **Description** |
| - | :-: | - |
| SEAMeetingAttendTypeNormal | `1` | Unrestricted |
| SEAMeetingAttendTypePassword | `2` | Password required |
| SEAMeetingAttendTypeInitiate | `3` | Invitees only |

### SEAMeetingMuteState

Meeting mute state

| **Enum** | **Value** | **Description** |
| - | :-: | - |
| SEAMeetingMuteState1 | `1` | Mute on entry on (everyone is muted by default on entry) |
| SEAMeetingMuteState2 | `2` | Mute on entry off (follows the client's initial audio state) |
| SEAMeetingMuteState3 | `3` | Mute when over 6 people (members who enter after the 6th are muted) |

### SEADeviceState

Device state

| **Enum** | **Value** | **Description** |
| - | :-: | - |
| SEADeviceStateOpen | `1` | On |
| SEADeviceStateClosed | `2` | Off |

### SEACameraDirection

Camera direction

| **Enum** | **Value** | **Description** |
| - | :-: | - |
| SEACameraDirectionFront | `1` | Front camera |
| SEACameraDirectionBack | `2` | Rear camera |

### SEAShareType

Sharing type

| **Enum** | **Value** | **Description** |
| - | :-: | - |
| SEAShareTypeNormal | `0` | Default type |
| SEAShareTypeScreen | `1` | Screen sharing |
| SEAShareTypeDrawing | `2` | Whiteboard sharing |

### SEAMessageType

Message type

| **Enum** | **Value** | **Description** |
| - | :-: | - |
| SEAMessageTypeText | `1` | Text message |
| SEAMessageTypeFile | `2` | File message |
| SEAMessageTypePicture | `3` | Image message |
| SEAMessageTypeVoice | `4` | Voice message |
| SEAMessageTypeCustom | `5` | Custom message |

### SEAHandupType

Raise-hand request type

| **Enum** | **Value** | **Description** |
| - | :-: | - |
| SEAHandupTypeMic | `1` | Microphone |
| SEAHandupTypeCamera | `2` | Camera |
| SEAHandupTypeChat | `3` | Chat |
| SEAHandupTypeShare | `4` | Sharing |
| SEAHandupTypeDraw | `5` | Drawing |
| SEAHandupTypeOther | `6` | Other |

### SEALeaveReason

Exit reason

| **Enum** | **Value** | **Description** |
| - | :-: | - |
| SEALeaveReasonNormal | `1` | Exited on your own |
| SEALeaveReasonKickout | `2` | Removed |
| SEALeaveReasonReplaced | `3` | Replaced by a login elsewhere |
| SEALeaveReasonTimeout | `4` | Heartbeat timed out |
| SEALeaveReasonDestroy | `5` | The underlying channel was destroyed |

### SEAChangeReason

Reason for an audio/video state change

| **Enum** | **Value** | **Description** |
| - | :-: | - |
| SEAChangeReasonBySelf | `0` | Changed by yourself |
| SEAChangeReasonByAdmin | `1` | Changed by the host or a co-host |

### SEADownBitrateAdaptiveState

Downlink adaptive bitrate state

| **Enum** | **Value** | **Description** |
| - | :-: | - |
| SEADownBitrateAdaptiveStateNormal | `0` | Normal |
| SEADownBitrateAdaptiveStatePoor | `-1` | Poor |
| SEADownBitrateAdaptiveStateBad | `-2` | Bad |
| SEADownBitrateAdaptiveStateVeryBad | `-3` | Very bad |
| SEADownBitrateAdaptiveStateLose | `-4` | Link offline |

### SEAUploadBitrateAdaptiveState

Uplink adaptive bitrate state

| **Enum** | **Value** | **Description** |
| - | :-: | - |
| SEAUploadBitrateAdaptiveStateStart | `1000` | Adaptive bitrate started working |
| SEAUploadBitrateAdaptiveStateNormal | `0` | Bitrate restored to the initial setting |
| SEAUploadBitrateAdaptiveStateHalf | `-1` | Bitrate reduced to half |
| SEAUploadBitrateAdaptiveStateQuarter | `-2` | Bitrate reduced to a quarter |
| SEAUploadBitrateAdaptiveStateVeryBad | `-3` | The current network is very poor |

### SEADownLossLevelState

Downlink average packet loss level

| **Enum** | **Value** | **Description** |
| - | :-: | - |
| SEADownLossLevelStateInvalid | `-1` | Invalid |
| SEADownLossLevelStateNormal | `0` | Normal |
| SEADownLossLevelStatePoor | `1` | Poor |
| SEADownLossLevelStateBad | `2` | Bad |
| SEADownLossLevelStateVeryBad | `3` | Very bad |

### SEAImDisconnectReason

IM disconnect reason

| **Enum** | **Value** | **Description** |
| - | :-: | - |
| SEAImDisconnectReasonError | `-1` | An error occurred |
| SEAImDisconnectReasonNormal | `1` | Disconnected on your own |
| SEAImDisconnectReasonKickout | `2` | Removed |
| SEAImDisconnectReasonTimeout | `4` | Heartbeat timed out |

### SEAAgentType

Invited device type

| **Enum** | **Value** | **Description** |
| - | :-: | - |
| SEAAgentTypeSIP | `2` | SIP |
| SEAAgentTypeH323 | `3` | H.323 |
| SEAAgentTypeGB28181 | `4` | GB28181 |
| SEAAgentTypeRTSP | `5` | RTSP stream pull |
| SEAAgentTypeRTMP | `6` | RTMP stream pull |
| SEAAgentTypeFile | `7` | File playback |
| SEAAgentTypeTencent | `8` | Tencent Meeting |
| SEAAgentTypeAI | `9` | AI |

### SEAAgentStatus

Invited device status

| **Enum** | **Value** | **Description** |
| - | :-: | - |
| SEAAgentStatusUnknown | `0` | Unknown |
| SEAAgentStatusOnline | `1` | Online |
| SEAAgentStatusOffline | `2` | Offline |

### SEARecordType

Recording type

| **Enum** | **Value** | **Description** |
| - | :-: | - |
| SEARecordTypeVideo | `1` | Video recording mode |
| SEARecordTypeMixture | `2` | Stream mixing mode |
| SEARecordTypeAll | `3` | Hybrid mode |

### SEARecordStatus

Recording status

| **Enum** | **Value** | **Description** |
| - | :-: | - |
| SEARecordStatuUnknown | `-1` | No task |
| SEARecordStatusWaitStart | `0` | Pending start |
| SEARecordStatusIng | `1` | In progress |
| SEARecordStatusWaitEnded | `2` | Pending end |
| SEARecordStatusError | `3` | Ended abnormally |
| SEARecordStatusEnded | `4` | Ended normally |

### SEACallRole

Call role

| **Enum** | **Value** | **Description** |
| - | :-: | - |
| SEACallRoleNone | `0` | Unknown type |
| SEACallRoleCall | `1` | Caller (inviter) |
| SEACallRoleCalled | `2` | Callee (invitee) |

### SEACallStatus

Call status

| **Enum** | **Value** | **Description** |
| - | :-: | - |
| SEACallStatusNone | `0` | Unknown |
| SEACallStatusAccept | `1` | Answered |
| SEACallStatusReject | `2` | Declined |
| SEACallStatusBusy | `3` | Busy |

### SEASignInActivityState

Sign-in activity status

| **Enum** | **Value** | **Description** |
| - | :-: | - |
| SEASignInActivityStateStarted | `1` | In progress |
| SEASignInActivityStateFinished | `2` | Ended |
