# Start a meeting for a non-logged in or API user

<!-- WARNING: THIS FILE WAS AUTOGENERATED! DO NOT EDIT! -->

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();
```
