## Create a preset `client.RealtimeKit.Presets.New(ctx, appID, params) (*PresetNewResponse, error)` **post** `/accounts/{account_id}/realtime/kit/{app_id}/presets` Creates a preset belonging to the current App ### Parameters - `appID string` The app identifier tag. - `params PresetNewParams` - `AccountID param.Field[string]` Path param: The account identifier tag. - `Config param.Field[PresetNewParamsConfig]` Body param - `MaxScreenshareCount int64` Maximum number of screen shares that can be active at a given time - `MaxVideoStreams PresetNewParamsConfigMaxVideoStreams` Maximum number of streams that are visible on a device - `Desktop int64` Maximum number of video streams visible on desktop devices - `Mobile int64` Maximum number of streams visible on mobile devices - `Media PresetNewParamsConfigMedia` Media configuration options. eg: Video quality - `Screenshare PresetNewParamsConfigMediaScreenshare` Configuration options for participant screen shares - `FrameRate int64` Frame rate of screen share - `Quality PresetNewParamsConfigMediaScreenshareQuality` Quality of screen share - `const PresetNewParamsConfigMediaScreenshareQualityHD PresetNewParamsConfigMediaScreenshareQuality = "hd"` - `const PresetNewParamsConfigMediaScreenshareQualityVga PresetNewParamsConfigMediaScreenshareQuality = "vga"` - `const PresetNewParamsConfigMediaScreenshareQualityQvga PresetNewParamsConfigMediaScreenshareQuality = "qvga"` - `Video PresetNewParamsConfigMediaVideo` Configuration options for participant videos - `FrameRate int64` Frame rate of participants' video - `Quality PresetNewParamsConfigMediaVideoQuality` Video quality of participants - `const PresetNewParamsConfigMediaVideoQualityHD PresetNewParamsConfigMediaVideoQuality = "hd"` - `const PresetNewParamsConfigMediaVideoQualityVga PresetNewParamsConfigMediaVideoQuality = "vga"` - `const PresetNewParamsConfigMediaVideoQualityQvga PresetNewParamsConfigMediaVideoQuality = "qvga"` - `Audio PresetNewParamsConfigMediaAudio` Control options for Audio quality. - `EnableHighBitrate bool` Enable High Quality Audio for your meetings - `EnableStereo bool` Enable Stereo for your meetings - `ViewType PresetNewParamsConfigViewType` Type of the meeting - `const PresetNewParamsConfigViewTypeGroupCall PresetNewParamsConfigViewType = "GROUP_CALL"` - `const PresetNewParamsConfigViewTypeWebinar PresetNewParamsConfigViewType = "WEBINAR"` - `const PresetNewParamsConfigViewTypeAudioRoom PresetNewParamsConfigViewType = "AUDIO_ROOM"` - `Name param.Field[string]` Body param: Name of the preset - `UI param.Field[PresetNewParamsUI]` Body param - `DesignTokens PresetNewParamsUIDesignTokens` - `BorderRadius PresetNewParamsUIDesignTokensBorderRadius` - `const PresetNewParamsUIDesignTokensBorderRadiusRounded PresetNewParamsUIDesignTokensBorderRadius = "rounded"` - `BorderWidth PresetNewParamsUIDesignTokensBorderWidth` - `const PresetNewParamsUIDesignTokensBorderWidthThin PresetNewParamsUIDesignTokensBorderWidth = "thin"` - `Colors PresetNewParamsUIDesignTokensColors` - `Background PresetNewParamsUIDesignTokensColorsBackground` - `Number1000 string` - `Number600 string` - `Number700 string` - `Number800 string` - `Number900 string` - `Brand PresetNewParamsUIDesignTokensColorsBrand` - `Number300 string` - `Number400 string` - `Number500 string` - `Number600 string` - `Number700 string` - `Danger string` - `Success string` - `Text string` - `TextOnBrand string` - `VideoBg string` - `Warning string` - `Logo string` - `SpacingBase float64` - `Theme PresetNewParamsUIDesignTokensTheme` - `const PresetNewParamsUIDesignTokensThemeDark PresetNewParamsUIDesignTokensTheme = "dark"` - `ConfigDiff unknown` - `Permissions param.Field[PresetNewParamsPermissions]` Body param - `AcceptWaitingRequests bool` Whether this participant can accept waiting requests - `CanAcceptProductionRequests bool` - `CanChangeParticipantPermissions bool` - `CanEditDisplayName bool` - `CanLivestream bool` - `CanRecord bool` - `CanSpotlight bool` - `Chat PresetNewParamsPermissionsChat` Chat permissions - `Private PresetNewParamsPermissionsChatPrivate` - `CanReceive bool` - `CanSend bool` - `Files bool` - `Text bool` - `Public PresetNewParamsPermissionsChatPublic` - `CanSend bool` Can send messages in general - `Files bool` Can send file messages - `Text bool` Can send text messages - `ConnectedMeetings PresetNewParamsPermissionsConnectedMeetings` - `CanAlterConnectedMeetings bool` - `CanSwitchConnectedMeetings bool` - `CanSwitchToParentMeeting bool` - `DisableParticipantAudio bool` - `DisableParticipantScreensharing bool` - `DisableParticipantVideo bool` - `HiddenParticipant bool` Whether this participant is visible to others or not - `KickParticipant bool` - `Media PresetNewParamsPermissionsMedia` Media permissions - `Audio PresetNewParamsPermissionsMediaAudio` Audio permissions - `CanProduce PresetNewParamsPermissionsMediaAudioCanProduce` Can produce audio - `const PresetNewParamsPermissionsMediaAudioCanProduceAllowed PresetNewParamsPermissionsMediaAudioCanProduce = "ALLOWED"` - `const PresetNewParamsPermissionsMediaAudioCanProduceNotAllowed PresetNewParamsPermissionsMediaAudioCanProduce = "NOT_ALLOWED"` - `const PresetNewParamsPermissionsMediaAudioCanProduceCanRequest PresetNewParamsPermissionsMediaAudioCanProduce = "CAN_REQUEST"` - `Screenshare PresetNewParamsPermissionsMediaScreenshare` Screenshare permissions - `CanProduce PresetNewParamsPermissionsMediaScreenshareCanProduce` Can produce screen share video - `const PresetNewParamsPermissionsMediaScreenshareCanProduceAllowed PresetNewParamsPermissionsMediaScreenshareCanProduce = "ALLOWED"` - `const PresetNewParamsPermissionsMediaScreenshareCanProduceNotAllowed PresetNewParamsPermissionsMediaScreenshareCanProduce = "NOT_ALLOWED"` - `const PresetNewParamsPermissionsMediaScreenshareCanProduceCanRequest PresetNewParamsPermissionsMediaScreenshareCanProduce = "CAN_REQUEST"` - `Video PresetNewParamsPermissionsMediaVideo` Video permissions - `CanProduce PresetNewParamsPermissionsMediaVideoCanProduce` Can produce video - `const PresetNewParamsPermissionsMediaVideoCanProduceAllowed PresetNewParamsPermissionsMediaVideoCanProduce = "ALLOWED"` - `const PresetNewParamsPermissionsMediaVideoCanProduceNotAllowed PresetNewParamsPermissionsMediaVideoCanProduce = "NOT_ALLOWED"` - `const PresetNewParamsPermissionsMediaVideoCanProduceCanRequest PresetNewParamsPermissionsMediaVideoCanProduce = "CAN_REQUEST"` - `PinParticipant bool` - `Plugins PresetNewParamsPermissionsPlugins` Plugin permissions - `CanClose bool` Can close plugins that are already open - `CanEditConfig bool` Can edit plugin config - `CanStart bool` Can start plugins - `Config PresetNewParamsPermissionsPluginsConfigUnion` - `UnionString` - `type PresetNewParamsPermissionsPluginsConfigObject struct{…}` - `AccessControl PresetNewParamsPermissionsPluginsConfigObjectAccessControl` - `const PresetNewParamsPermissionsPluginsConfigObjectAccessControlFullAccess PresetNewParamsPermissionsPluginsConfigObjectAccessControl = "FULL_ACCESS"` - `const PresetNewParamsPermissionsPluginsConfigObjectAccessControlViewOnly PresetNewParamsPermissionsPluginsConfigObjectAccessControl = "VIEW_ONLY"` - `HandlesViewOnly bool` - `Polls PresetNewParamsPermissionsPolls` Poll permissions - `CanCreate bool` Can create polls - `CanView bool` Can view polls - `CanVote bool` Can vote on polls - `RecorderType PresetNewParamsPermissionsRecorderType` Type of the recording peer - `const PresetNewParamsPermissionsRecorderTypeRecorder PresetNewParamsPermissionsRecorderType = "RECORDER"` - `const PresetNewParamsPermissionsRecorderTypeLivestreamer PresetNewParamsPermissionsRecorderType = "LIVESTREAMER"` - `const PresetNewParamsPermissionsRecorderTypeNone PresetNewParamsPermissionsRecorderType = "NONE"` - `ShowParticipantList bool` - `WaitingRoomType PresetNewParamsPermissionsWaitingRoomType` Waiting room type - `const PresetNewParamsPermissionsWaitingRoomTypeSkip PresetNewParamsPermissionsWaitingRoomType = "SKIP"` - `const PresetNewParamsPermissionsWaitingRoomTypeOnPrivilegedUserEntry PresetNewParamsPermissionsWaitingRoomType = "ON_PRIVILEGED_USER_ENTRY"` - `const PresetNewParamsPermissionsWaitingRoomTypeSkipOnAccept PresetNewParamsPermissionsWaitingRoomType = "SKIP_ON_ACCEPT"` - `IsRecorder bool` ### Returns - `type PresetNewResponse struct{…}` - `Data PresetNewResponseData` Data returned by the operation - `ID string` ID of the preset - `Config PresetNewResponseDataConfig` - `MaxScreenshareCount int64` Maximum number of screen shares that can be active at a given time - `MaxVideoStreams PresetNewResponseDataConfigMaxVideoStreams` Maximum number of streams that are visible on a device - `Desktop int64` Maximum number of video streams visible on desktop devices - `Mobile int64` Maximum number of streams visible on mobile devices - `Media PresetNewResponseDataConfigMedia` Media configuration options. eg: Video quality - `Screenshare PresetNewResponseDataConfigMediaScreenshare` Configuration options for participant screen shares - `FrameRate int64` Frame rate of screen share - `Quality PresetNewResponseDataConfigMediaScreenshareQuality` Quality of screen share - `const PresetNewResponseDataConfigMediaScreenshareQualityHD PresetNewResponseDataConfigMediaScreenshareQuality = "hd"` - `const PresetNewResponseDataConfigMediaScreenshareQualityVga PresetNewResponseDataConfigMediaScreenshareQuality = "vga"` - `const PresetNewResponseDataConfigMediaScreenshareQualityQvga PresetNewResponseDataConfigMediaScreenshareQuality = "qvga"` - `Video PresetNewResponseDataConfigMediaVideo` Configuration options for participant videos - `FrameRate int64` Frame rate of participants' video - `Quality PresetNewResponseDataConfigMediaVideoQuality` Video quality of participants - `const PresetNewResponseDataConfigMediaVideoQualityHD PresetNewResponseDataConfigMediaVideoQuality = "hd"` - `const PresetNewResponseDataConfigMediaVideoQualityVga PresetNewResponseDataConfigMediaVideoQuality = "vga"` - `const PresetNewResponseDataConfigMediaVideoQualityQvga PresetNewResponseDataConfigMediaVideoQuality = "qvga"` - `Audio PresetNewResponseDataConfigMediaAudio` Control options for Audio quality. - `EnableHighBitrate bool` Enable High Quality Audio for your meetings - `EnableStereo bool` Enable Stereo for your meetings - `ViewType PresetNewResponseDataConfigViewType` Type of the meeting - `const PresetNewResponseDataConfigViewTypeGroupCall PresetNewResponseDataConfigViewType = "GROUP_CALL"` - `const PresetNewResponseDataConfigViewTypeWebinar PresetNewResponseDataConfigViewType = "WEBINAR"` - `const PresetNewResponseDataConfigViewTypeAudioRoom PresetNewResponseDataConfigViewType = "AUDIO_ROOM"` - `Name string` Name of the preset - `UI PresetNewResponseDataUI` - `DesignTokens PresetNewResponseDataUIDesignTokens` - `BorderRadius PresetNewResponseDataUIDesignTokensBorderRadius` - `const PresetNewResponseDataUIDesignTokensBorderRadiusRounded PresetNewResponseDataUIDesignTokensBorderRadius = "rounded"` - `BorderWidth PresetNewResponseDataUIDesignTokensBorderWidth` - `const PresetNewResponseDataUIDesignTokensBorderWidthThin PresetNewResponseDataUIDesignTokensBorderWidth = "thin"` - `Colors PresetNewResponseDataUIDesignTokensColors` - `Background PresetNewResponseDataUIDesignTokensColorsBackground` - `Number1000 string` - `Number600 string` - `Number700 string` - `Number800 string` - `Number900 string` - `Brand PresetNewResponseDataUIDesignTokensColorsBrand` - `Number300 string` - `Number400 string` - `Number500 string` - `Number600 string` - `Number700 string` - `Danger string` - `Success string` - `Text string` - `TextOnBrand string` - `VideoBg string` - `Warning string` - `Logo string` - `SpacingBase float64` - `Theme PresetNewResponseDataUIDesignTokensTheme` - `const PresetNewResponseDataUIDesignTokensThemeDark PresetNewResponseDataUIDesignTokensTheme = "dark"` - `ConfigDiff unknown` - `Permissions PresetNewResponseDataPermissions` - `AcceptWaitingRequests bool` Whether this participant can accept waiting requests - `CanAcceptProductionRequests bool` - `CanChangeParticipantPermissions bool` - `CanEditDisplayName bool` - `CanLivestream bool` - `CanRecord bool` - `CanSpotlight bool` - `Chat PresetNewResponseDataPermissionsChat` Chat permissions - `Private PresetNewResponseDataPermissionsChatPrivate` - `CanReceive bool` - `CanSend bool` - `Files bool` - `Text bool` - `Public PresetNewResponseDataPermissionsChatPublic` - `CanSend bool` Can send messages in general - `Files bool` Can send file messages - `Text bool` Can send text messages - `ConnectedMeetings PresetNewResponseDataPermissionsConnectedMeetings` - `CanAlterConnectedMeetings bool` - `CanSwitchConnectedMeetings bool` - `CanSwitchToParentMeeting bool` - `DisableParticipantAudio bool` - `DisableParticipantScreensharing bool` - `DisableParticipantVideo bool` - `HiddenParticipant bool` Whether this participant is visible to others or not - `KickParticipant bool` - `Media PresetNewResponseDataPermissionsMedia` Media permissions - `Audio PresetNewResponseDataPermissionsMediaAudio` Audio permissions - `CanProduce PresetNewResponseDataPermissionsMediaAudioCanProduce` Can produce audio - `const PresetNewResponseDataPermissionsMediaAudioCanProduceAllowed PresetNewResponseDataPermissionsMediaAudioCanProduce = "ALLOWED"` - `const PresetNewResponseDataPermissionsMediaAudioCanProduceNotAllowed PresetNewResponseDataPermissionsMediaAudioCanProduce = "NOT_ALLOWED"` - `const PresetNewResponseDataPermissionsMediaAudioCanProduceCanRequest PresetNewResponseDataPermissionsMediaAudioCanProduce = "CAN_REQUEST"` - `Screenshare PresetNewResponseDataPermissionsMediaScreenshare` Screenshare permissions - `CanProduce PresetNewResponseDataPermissionsMediaScreenshareCanProduce` Can produce screen share video - `const PresetNewResponseDataPermissionsMediaScreenshareCanProduceAllowed PresetNewResponseDataPermissionsMediaScreenshareCanProduce = "ALLOWED"` - `const PresetNewResponseDataPermissionsMediaScreenshareCanProduceNotAllowed PresetNewResponseDataPermissionsMediaScreenshareCanProduce = "NOT_ALLOWED"` - `const PresetNewResponseDataPermissionsMediaScreenshareCanProduceCanRequest PresetNewResponseDataPermissionsMediaScreenshareCanProduce = "CAN_REQUEST"` - `Video PresetNewResponseDataPermissionsMediaVideo` Video permissions - `CanProduce PresetNewResponseDataPermissionsMediaVideoCanProduce` Can produce video - `const PresetNewResponseDataPermissionsMediaVideoCanProduceAllowed PresetNewResponseDataPermissionsMediaVideoCanProduce = "ALLOWED"` - `const PresetNewResponseDataPermissionsMediaVideoCanProduceNotAllowed PresetNewResponseDataPermissionsMediaVideoCanProduce = "NOT_ALLOWED"` - `const PresetNewResponseDataPermissionsMediaVideoCanProduceCanRequest PresetNewResponseDataPermissionsMediaVideoCanProduce = "CAN_REQUEST"` - `PinParticipant bool` - `Plugins PresetNewResponseDataPermissionsPlugins` Plugin permissions - `CanClose bool` Can close plugins that are already open - `CanEditConfig bool` Can edit plugin config - `CanStart bool` Can start plugins - `Config PresetNewResponseDataPermissionsPluginsConfigUnion` - `UnionString` - `type PresetNewResponseDataPermissionsPluginsConfigObject struct{…}` - `AccessControl PresetNewResponseDataPermissionsPluginsConfigObjectAccessControl` - `const PresetNewResponseDataPermissionsPluginsConfigObjectAccessControlFullAccess PresetNewResponseDataPermissionsPluginsConfigObjectAccessControl = "FULL_ACCESS"` - `const PresetNewResponseDataPermissionsPluginsConfigObjectAccessControlViewOnly PresetNewResponseDataPermissionsPluginsConfigObjectAccessControl = "VIEW_ONLY"` - `HandlesViewOnly bool` - `Polls PresetNewResponseDataPermissionsPolls` Poll permissions - `CanCreate bool` Can create polls - `CanView bool` Can view polls - `CanVote bool` Can vote on polls - `RecorderType PresetNewResponseDataPermissionsRecorderType` Type of the recording peer - `const PresetNewResponseDataPermissionsRecorderTypeRecorder PresetNewResponseDataPermissionsRecorderType = "RECORDER"` - `const PresetNewResponseDataPermissionsRecorderTypeLivestreamer PresetNewResponseDataPermissionsRecorderType = "LIVESTREAMER"` - `const PresetNewResponseDataPermissionsRecorderTypeNone PresetNewResponseDataPermissionsRecorderType = "NONE"` - `ShowParticipantList bool` - `WaitingRoomType PresetNewResponseDataPermissionsWaitingRoomType` Waiting room type - `const PresetNewResponseDataPermissionsWaitingRoomTypeSkip PresetNewResponseDataPermissionsWaitingRoomType = "SKIP"` - `const PresetNewResponseDataPermissionsWaitingRoomTypeOnPrivilegedUserEntry PresetNewResponseDataPermissionsWaitingRoomType = "ON_PRIVILEGED_USER_ENTRY"` - `const PresetNewResponseDataPermissionsWaitingRoomTypeSkipOnAccept PresetNewResponseDataPermissionsWaitingRoomType = "SKIP_ON_ACCEPT"` - `IsRecorder bool` - `Success bool` Success status of the operation ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/option" "github.com/cloudflare/cloudflare-go/realtime_kit" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) preset, err := client.RealtimeKit.Presets.New( context.TODO(), "app_id", realtime_kit.PresetNewParams{ AccountID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"), Config: cloudflare.F(realtime_kit.PresetNewParamsConfig{ MaxScreenshareCount: cloudflare.F(int64(0)), MaxVideoStreams: cloudflare.F(realtime_kit.PresetNewParamsConfigMaxVideoStreams{ Desktop: cloudflare.F(int64(0)), Mobile: cloudflare.F(int64(0)), }), Media: cloudflare.F(realtime_kit.PresetNewParamsConfigMedia{ Screenshare: cloudflare.F(realtime_kit.PresetNewParamsConfigMediaScreenshare{ FrameRate: cloudflare.F(int64(0)), Quality: cloudflare.F(realtime_kit.PresetNewParamsConfigMediaScreenshareQualityHD), }), Video: cloudflare.F(realtime_kit.PresetNewParamsConfigMediaVideo{ FrameRate: cloudflare.F(int64(30)), Quality: cloudflare.F(realtime_kit.PresetNewParamsConfigMediaVideoQualityHD), }), }), ViewType: cloudflare.F(realtime_kit.PresetNewParamsConfigViewTypeGroupCall), }), Name: cloudflare.F("name"), UI: cloudflare.F(realtime_kit.PresetNewParamsUI{ DesignTokens: cloudflare.F(realtime_kit.PresetNewParamsUIDesignTokens{ BorderRadius: cloudflare.F(realtime_kit.PresetNewParamsUIDesignTokensBorderRadiusRounded), BorderWidth: cloudflare.F(realtime_kit.PresetNewParamsUIDesignTokensBorderWidthThin), Colors: cloudflare.F(realtime_kit.PresetNewParamsUIDesignTokensColors{ Background: cloudflare.F(realtime_kit.PresetNewParamsUIDesignTokensColorsBackground{ Number600: cloudflare.F("600"), Number700: cloudflare.F("700"), Number800: cloudflare.F("800"), Number900: cloudflare.F("900"), Number1000: cloudflare.F("1000"), }), Brand: cloudflare.F(realtime_kit.PresetNewParamsUIDesignTokensColorsBrand{ Number300: cloudflare.F("300"), Number400: cloudflare.F("400"), Number500: cloudflare.F("500"), Number600: cloudflare.F("600"), Number700: cloudflare.F("700"), }), Danger: cloudflare.F("danger"), Success: cloudflare.F("success"), Text: cloudflare.F("text"), TextOnBrand: cloudflare.F("text_on_brand"), VideoBg: cloudflare.F("video_bg"), Warning: cloudflare.F("warning"), }), Logo: cloudflare.F("logo"), SpacingBase: cloudflare.F(0.000000), Theme: cloudflare.F(realtime_kit.PresetNewParamsUIDesignTokensThemeDark), }), }), }, ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", preset.Data) } ``` #### Response ```json { "data": { "id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "config": { "max_screenshare_count": 0, "max_video_streams": { "desktop": 0, "mobile": 0 }, "media": { "screenshare": { "frame_rate": 0, "quality": "hd" }, "video": { "frame_rate": 30, "quality": "hd" }, "audio": { "enable_high_bitrate": true, "enable_stereo": true } }, "view_type": "GROUP_CALL" }, "name": "name", "ui": { "design_tokens": { "border_radius": "rounded", "border_width": "thin", "colors": { "background": { "600": "600", "700": "700", "800": "800", "900": "900", "1000": "1000" }, "brand": { "300": "300", "400": "400", "500": "500", "600": "600", "700": "700" }, "danger": "danger", "success": "success", "text": "text", "text_on_brand": "text_on_brand", "video_bg": "video_bg", "warning": "warning" }, "logo": "logo", "spacing_base": 0, "theme": "dark" }, "config_diff": {} }, "permissions": { "accept_waiting_requests": true, "can_accept_production_requests": true, "can_change_participant_permissions": true, "can_edit_display_name": true, "can_livestream": true, "can_record": true, "can_spotlight": true, "chat": { "private": { "can_receive": true, "can_send": true, "files": true, "text": true }, "public": { "can_send": true, "files": true, "text": true } }, "connected_meetings": { "can_alter_connected_meetings": true, "can_switch_connected_meetings": true, "can_switch_to_parent_meeting": true }, "disable_participant_audio": true, "disable_participant_screensharing": true, "disable_participant_video": true, "hidden_participant": true, "kick_participant": true, "media": { "audio": { "can_produce": "ALLOWED" }, "screenshare": { "can_produce": "ALLOWED" }, "video": { "can_produce": "ALLOWED" } }, "pin_participant": true, "plugins": { "can_close": true, "can_edit_config": true, "can_start": true, "config": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e" }, "polls": { "can_create": true, "can_view": true, "can_vote": true }, "recorder_type": "RECORDER", "show_participant_list": true, "waiting_room_type": "SKIP", "is_recorder": true } }, "success": true } ```