Skip to main content
Version: iOS SDK v1.3.0


The VideoKit object is automatically initialized on application start-up, but in order to communicate with our servers, you will need to start a session using your API token.

Get an API token

All APIs should be authenticated using the API token. To retrieve your token, login to and navigate to Apps → Your App → API TOKEN.

Start a session

As said, a session should be created before using any other API that communicates with our servers. What is the right moment to start a session?

  • If your app has no login system, the session can be safely started when the app starts
  • If users login into your app, the session should be bound to the login lifecycle. In other words, you can start a session whenever you know the user ID.

Sessions are started through the session manager (VideoKit.sessions()) and require you to pass the API token and an identifier of the current logged in user. This identifier is extremely important because performing certain operations on videos require a session that uses the same identifier with which the video was created for the first time.

let sessions: SessionManager = VideoKit.sessions()
sessions.start(TOKEN, currentUserIdentifier) { session, error in
// handle result

Start a session securely

To improve security, the session token management should be handled by your backend, following the flow:

  • your app communicates with your server, e.g. at login time, asking for a session token
  • your server communicates with using the REST API or the Node.js SDK, passing the API token and the user ID and receiving back the user session token.
  • your app receives the session token from server, and notifies the VideoKit SDK through the session manager:
let sessions: SessionManager = VideoKit.sessions()

Note that this function is not asynchronous and does not background network call. It is your responsibility to check that the session token is valid and not expired.

Scoped sessions

In addition to token and identifier, the session manager can take an array of scopes identifying the user role and permissions. Please check the REST API documentation for a list of scopes and what then mean.

Stop a session

To clear the current session, simply call stop():

let sessions: SessionManager = VideoKit.sessions()

Check the session state

To access the current session, simply call get(): Session?. A wrapper object called state is also exposed through the getter state: SessionManager.State or by sinking the publisher SessionManager.$state. You can also add and remove session observers, which can be useful in certain scenarios.

let sessions: SessionManager = VideoKit.sessions()