# Start a meeting for a non-logged in or API user To start a meeting, prepare your meeting number and set whether to start with audio or video. Pass this information to `premeeting::GetPreMeetingToolkit()->StartMeeting`. ```cpp StartMeetingParam param; param.meetingNumber = 1234567890LL; param.isNoAudio = false; param.isNoVideo = false; bool submitted = premeeting::GetPreMeetingToolkit()->StartMeeting( param, [](const BaseResult& result) { // handle result (result.error_code) } ); ``` ## Get the meeting or webinar status Implement `OnMeetingStatusChanged` on your `IZMToolSuiteProxyListener` listener that you passed to `ZMToolSuiteProxy::SetToolSuiteProxyListener`. ```cpp class MyEventListener : public ZMToolSuiteProxy::IZMToolSuiteProxyListener { public: void OnMeetingStatusChanged(ZMToolSuiteProxy::ZMToolSuiteMeetingStatus status) override { // handle status } // implement other required listener methods... }; ``` To get the current state, you can also use `meeting::GetMeetingToolkit(...)->GetMeetingStatus()`. ```cpp ZMToolSuiteProxy::ZMToolSuiteMeetingStatus status = meeting::GetMeetingToolkit()->GetMeetingStatus(); ```