code: private void startStreamWithUser(User user, Stream stream, final KickflipCallback cb) {
          checkNotNull(user);
          checkNotNull(stream);
          GenericData data = new GenericData();
          data.put("uuid", user.getUUID());
          data.put("private", stream.isPrivate());
          if (stream.getTitle() != null) {
              data.put("title", stream.getTitle());
          }
          if (stream.getDescription() != null) {
              data.put("description", stream.getDescription());
          }
          if (stream.getExtraInfo() != null) {
              data.put("extra_info", new Gson().toJson(stream.getExtraInfo()));
          }
          post(START_STREAM, new UrlEncodedContent(data), HlsStream.class, cb);
      }
docs: Start a new Stream owned by the given User. Must be called after
  {@link io.kickflip.sdk.api.KickflipApiClient#createNewUser(KickflipCallback)}
  Delivers stream endpoint destination data via a {@link io.kickflip.sdk.api.KickflipCallback}.
  
  @param user The Kickflip User on whose behalf this request is performed.
  @param cb   This callback will receive a Stream subclass in {@link io.kickflip.sdk.api.KickflipCallback#onSuccess(io.kickflip.sdk.api.json.Response)}
  depending on the Kickflip account type. Implementors should
  check if the response is instanceof HlsStream, StartRtmpStreamResponse, etc.