Query parameters

Overview

Query parameters configure a meeting room directly from its URL. They let you control an embedded meeting room without writing any code, which is especially useful when you place the room in an iFrame in your own application.

Append them to a meeting URL:

https://<DOMAIN-NAME>/meeting/<MEETING-ID>?participantName=Test%20User&meetingPassword=1234

URL-encode every value. Otherwise a name containing a space, an email address, or anything with & or = in it breaks the rest of the URL.

Boolean parameters take the literal strings true and false.

Using this page with an AI assistant

If you are using an AI coding assistant, copy the text below into it and add a sentence describing what you want to build. AI assistants accessing this page receive a separate, token-optimized version of our full developer documentation, specifically tailored by our engineers for AI coding assistants.

Before writing any code, read this page:
https://www.veeting.com/en/developer-documentation/query-parameters

It documents the URL query parameters of a Veeting Rooms meeting room.
Keep these five rules in mind:

1. URL encode every value. Names and email addresses usually contain
   characters that need it.
2. Booleans are the literal strings "true" and "false". Not 1 or yes.
3. Parameter names are identifiers. Never translate them, whatever
   language the surrounding page is in.
4. The platform strips tokens and personal data out of the URL, so do
   not read them back from window.location later. Keep them in the
   application instead.
5. Only use parameters that appear on that page. Do not invent one and
   do not use one you found by reading our JavaScript bundle.

What I want to build:

Two things to know before you start

The platform removes some parameters from the URL. Anything that carries a token or personal data is stripped, plus a few more parameters. Removal happens either immediately or before the browser navigates. That is deliberate: those values then do not persist in browser history, in a bookmark, or in a Referer header. The lists are at the end of this page, and they matter if you expect to read a parameter back out of the address bar later.

Not every parameter the platform accepts is listed here. The others are internal, serve support tooling, or carry other access tokens that we do not describe publicly. If you need one that is not documented, ask us rather than relying on one you found by reading our JavaScript bundle: an undocumented parameter carries no compatibility promise.

Participant details

These parameters pre-fill the "Join Meeting" screen so the participant does not have to type them.

ParameterPossible valuesDefaultDescription
cultureLanguage or locale codethe browser's languageThe interface language. Use either a bare language code, such as de, or a locale, such as de-CH or es-LA. How the room resolves the code is explained below the table.
participantNameAny stringemptyThe participant's name. Required if skipJoinMeetingScreen is true: without a name, the join screen is shown anyway. A name stored from an earlier visit in the same browser also counts.
participantEmailAny email addressemptyThe participant's email address.
meetingPasswordAny stringemptyThe meeting password.
registerEmailAny email addressemptyOnly relevant if "Free Trial Registration" is enabled. Pre-fills the email field of the trial registration form.
registerFromAny stringemptyOnly relevant if "Free Trial Registration" is enabled. Adds a "from" field to the notification sent to the system administrator, so you can see where a registration came from.

The room resolves culture in this order:

  1. If your instance offers exactly the code you pass, the room uses it. Instances offer bare de by default, so de stays de.
  2. Otherwise, if your instance offers the browser's primary language exactly, the room uses that.
  3. Otherwise a bare code maps to a fixed locale, if your instance offers it: en -> en-US, de -> de-CH, es -> es-LA.
  4. Otherwise the browser's primary language goes through the same map.
  5. Otherwise the room uses the alphabetically first language your instance offers.

In steps 1 and 3, culture overrides a language the participant chose on an earlier visit in the same browser. In steps 2, 4, and 5, that earlier choice wins.

Access and authentication

ParameterPossible valuesDefaultDescription
moderatorTokenValid moderator tokenemptyGives the participant moderator rights in the meeting.
invisibleTokenValid invisible tokenemptyThe participant joins without appearing in the meeting and receives media without sending any. TV screens and directors use it; see "TV screens and directors" below.
jwtTokenAny JWTemptyA user's authentication token. Use it when your users sign in through a third-party system.
meetingAccessHashValid access hashemptyCarries the meeting password so the participant does not have to type it. Veeting puts this hash in the links it emails out.

The meeting's tokens are fields of the meeting object: read the meeting back through the REST API and take data.moderatorToken, data.invisibleToken, or data.backstageToken from the response.

Note: These values are credentials. Keep them out of links you share with people who should not have them. See "Parameters the platform removes" below: the platform strips moderatorToken, invisibleToken, backstageToken, and jwtToken from the URL for exactly that reason. meetingAccessHash and meetingPassword are not stripped: they stay in the address bar, and so end up in browser history, in bookmarks, and in any Referer header.

The "Join Meeting" screen

ParameterPossible valuesDefaultDescription
skipJoinMeetingScreentrue, falsefalseSkips the "Join Meeting" screen entirely.
IMPORTANT: Supply participantName as well. Without a name the screen is not skipped: the participant sees it and enters one.
skipDeviceTestOnJointrue, falsefalseSets the default value of the "Device Test" option. The participant can still change it.
hideDeviceTestSectiontrue, falsefalseHides the "Device Test" section, but only when the device test is being skipped (skipDeviceTestOnJoin=true, or the participant's stored setting skips it). Otherwise it has no effect. Hiding it changes only what the participant sees, not what the option does.
hideJoinModeSectiontrue, falsefalseHides the "Join Mode" section. Set joinType as well, so the mode is decided for the participant.
hideConsentSectiontrue, falsefalseHides the consent checkbox.
IMPORTANT: You remain responsible for obtaining consent by other means.
hideLegalAndComplianceSectiontrue, falsefalseHides the legal and compliance section, which contains the imprint and privacy links.
disableNameInputtrue, falsefalseDisables the participant name input field.
disableEmailInputtrue, falsefalseDisables the participant email input field.
disablePasswordInputtrue, falsefalseDisables the meeting password input field.

Layout and media

ParameterPossible valuesDefaultDescription
meetingRoomLayoutstandard, video-only, collaboration-onlystandardControls whether the room shows video, the collaboration tools, or both.
joinTypeaudio-only, audio-video, video-only, no-mediaaudio-videoPre-selects the join mode. Useful together with hideJoinModeSection.
mediaDirectionreceiveonly, sendonlyemptyRestricts the direction media flows. Leave it out and the room both sends and receives, which is the default. Any other value is ignored.
cameraDirectionuser, environmentemptyThe default camera on mobile phones. user selects the front-facing camera; environment selects the rear one.
videoResolution1280x960, 1280x720, 960x720, 960x540, 640x480, 640x360, 320x240, 320x180account defaultThe outgoing video resolution.
disableIncomingVideotrue, falsefalseThe participant joins without receiving video from other participants. Useful on constrained connections.
hideCollaborationHeadertrue, falsefalseHides the header above the collaboration area, giving an embedded room more usable height.
enableDarkModetrue, falsefalseRenders the meeting room in dark mode.
enableTVModetrue, falsefalseRuns the room as an unattended TV or wall display.
IMPORTANT: TV mode overrides other parameters: it puts media in receive-only mode, so the room receives but never sends, turns off enableFollowMe, ignores moderatorToken and jwtToken, and hides the "Join Mode" and "Device Test" sections. It also applies updates automatically, exactly as autoApplyUpdates does. A TV screen joins with invisibleToken; see "TV screens and directors" below.

TV screens and directors

Two kinds of participant join a meeting without being seen: a TV screen that shows the meeting on a wall or a stage, and a director who steers the meeting from the background. Both carry invisibleToken.

TV screens

A TV screen combines enableTVMode with invisibleToken:

https://<DOMAIN-NAME>/meeting/<MEETING-ID>?enableTVMode=true&invisibleToken=<INVISIBLE-TOKEN>

By default, a TV screen shows the meeting room content only once regular participants can see it. To show it from the moment organizers and moderators can start preparing the meeting, about 60 minutes before the start, add backstageToken:

https://<DOMAIN-NAME>/meeting/<MEETING-ID>?enableTVMode=true&invisibleToken=<INVISIBLE-TOKEN>&backstageToken=<BACKSTAGE-TOKEN>
ParameterPossible valuesDefaultDescription
backstageTokenValid backstage tokenemptyLets a TV screen show the meeting room content from the start of the preparation time. It only extends invisibleToken, so it has no effect on its own, and the platform ignores it unless enableTVMode is true.

Directors

A director is a moderator who stays invisible and sends no media. Combine invisibleToken with moderatorToken:

https://<DOMAIN-NAME>/meeting/<MEETING-ID>?invisibleToken=<INVISIBLE-TOKEN>&moderatorToken=<MODERATOR-TOKEN>

Do not add enableTVMode to a director's link: TV mode ignores moderatorToken, so the director would join as a TV screen without moderator rights.

Devices

ParameterPossible valuesDefaultDescription
videoInputDeviceIdAny stringemptyThe camera device ID to use, if available.
audioInputDeviceIdAny stringemptyThe microphone device ID to use, if available.
audioOutputDeviceIdAny stringemptyThe speaker device ID to use, if available.

In the meeting

ParameterPossible valuesDefaultDescription
enableFollowMetrue, falsefalseEnables the "Follow Me" feature. It works only if the participant is the organizer or a moderator.
leaveUrlAny URLemptyOverrides where the "Leave Meeting" button sends the participant.

Embedding, testing, and support

ParameterPossible valuesDefaultDescription
localStoragePrefixAny stringemptyPrefixes the keys Veeting writes to localStorage. Set it if you embed more than one Veeting application on the same origin, so their stored state does not collide.
testWithoutRenderingMediatrue, falsefalseFor testing only: sends and receives streams without rendering audio and video.
enableDebugLogstrue, falsefalseTurns on verbose logging in the browser console. Set it when we are helping you diagnose a problem.
autoApplyUpdatestrue, falsefalseChecks for a new version every 30 minutes and, for a release that would otherwise prompt the participant to update, reloads without prompting, after a random delay of up to 5 minutes. In a meeting, including the join screen, the reload waits until the participant leaves, but at most 2 hours; then it reloads and rejoins the room automatically. At most 5 reloads per hour, so a reload loop stops. Use it for unattended screens where nobody is there to answer the prompt. enableTVMode already behaves this way.

Parameters the platform removes

The platform takes two sets of parameters out of the URL. Neither removal is a bug, but both will surprise you if you expect to read a value back from window.location later.

Removed immediately, always. These do not remain in the address bar, with the one exception described below:

meetingAccessToken
meetingAccessRequestToken
meetingChallengeCode

Removed before the browser navigates. The platform reads these first and then clears them, so they do not end up in history, in a bookmark, or in a Referer header sent to a third party:

skipJoinMeetingScreen   jwtToken          moderatorToken
invisibleToken          backstageToken    interpreterToken
authenticationSkipToken participantName   participantUuid
participantEmail

The exception is an unattended client. On a client opened with enableTVMode or autoApplyUpdates set to true, an automatic update reload during a meeting puts every parameter the client was opened with back into the address bar, tokens included, so that the client rejoins the room. The reload replaces the current history entry instead of adding one. Separately, setting forcePreserveQueryParameters to true turns off the removal before navigation.

If you need a value after joining, keep it in your own application rather than reading it back from the URL.

Common mistakes

  • Forgetting to URL-encode a value. A space in participantName is the most common case.
  • Setting skipJoinMeetingScreen=true without participantName and expecting the join screen to be skipped. With no name available, the participant still sees it.
  • Hiding the consent checkbox and assuming consent has been handled.
  • Expecting moderatorToken or participantName to still be in the URL after the meeting room has loaded.
  • Sending backstageToken but leaving out enableTVMode=true or invisibleToken. On its own it does nothing.
  • Adding enableTVMode to a director's link. TV mode ignores moderatorToken.
  • Sending 1 or yes for a boolean. Only true and false are recognized.
  • Translating a parameter name. Parameter names are identifiers and are always in English.
  • Using an undocumented parameter found by reading the bundle. They carry no compatibility promise.

Not sure how to best implement your project?

Contact our team to discuss the details.