code: func (t *Tokbox) NewSession(location string, mm MediaMode, ctx ...context.Context) (*Session, error) {
  	params := url.Values{}
  
  	if len(location) > 0 {
  		params.Add("location", location)
  	}
  
  	params.Add("p2p.preference", string(mm))
  
  	var endpoint string
  	if t.BetaUrl == "" {
  		endpoint = apiHost
  	} else {
  		endpoint = t.BetaUrl
  	}
  	req, err := http.NewRequest("POST", endpoint+apiSession, strings.NewReader(params.Encode()))
  	if err != nil {
  		return nil, err
  	}
  
  	//Create jwt token
  	jwt, err := t.jwtToken()
  	if err != nil {
  		return nil, err
  	}
  
  	req.Header.Add("Accept", "application/json")
  	req.Header.Add("X-OPENTOK-AUTH", jwt)
  
  	if len(ctx) == 0 {
  		ctx = append(ctx, nil)
  	}
  	res, err := client(ctx[0]).Do(req)
  	if err != nil {
  		return nil, err
  	}
  	defer res.Body.Close()
  
  	if res.StatusCode != 200 {
  		return nil, fmt.Errorf("Tokbox returns error code: %v", res.StatusCode)
  	}
  
  	var s []Session
  	if err = json.NewDecoder(res.Body).Decode(&s); err != nil {
  		return nil, err
  	}
  
  	if len(s) < 1 {
  		return nil, fmt.Errorf("Tokbox did not return a session")
  	}
  
  	o := s[0]
  	o.T = t
  	return &o, nil
  }
docs: // Creates a new tokbox session or returns an error.
  // See README file for full documentation: https://github.com/pjebs/tokbox
  // NOTE: ctx must be nil if *not* using Google App Engine