Setting Language Interpretation (or using template that has it) via POST /users/{userId}/meetings endpoint does not work

Using this template helps us debug your issues more effectively :slight_smile:

I am able to use the POST /users/{userId}/meetings API to create meetings. I try to add the language interpretation. The meeting is created, but the response does not contain language interpretation.
I am then able to edit the meeting in the zoom . us / meeting portal and add interpretation manually via web browser and interpretation does work during the session.

Here is the PHP snippet that I use. I got it from a GET /meetings/{meetingId} where interpretation is active and used the PHP var_export() to get this:

'language_interpretation' => (object) array( 'enable' => true, 'interpreters' => array ( 0 => (object) array( 'email' => '', 'languages' => 'US,FR',),),),

The API successfully creates the meeting, but with “language_interpretation”:{“enable”:false}.

Which App Type (OAuth / Chatbot / JWT / Webhook)?

Which Endpoint/s?
POST /users/{userId}/meetings

How To Reproduce (If applicable)
Steps to reproduce the behavior:

  1. Request URL / Headers (without credentials) / Body
    POST /users/me/meetings
    Posted array :
    [template_id] => s2aXj0lYStSnKNUAUfTDww
    [topic] => Blabla
    [start_time] => 2021-04-09T19:00:00
    [timezone] => Europe/Paris
    [duration] => 90
    [password] => hello
    [language_interpretation] => stdClass Object
            [enable] => 1
            [interpreters] => Array
                    [0] => stdClass Object
                            [email] =>
                            [languages] => US,FR
  1. See error
    Response contains
            [language_interpretation] => stdClass Object
                    [enable] => 

Screenshots (If applicable)
If applicable, add screenshots to help explain your problem.

Additional context
Note that the specified template_id would enable language interpretation. But that does not seem to be any more effective.
I have also noted Language Interpretation by API but I figure now that it is a documented API parameter, it has been implemented since.

Hey @MarcelB,

Thank you for reaching out to the Zoom Developer Forum. First, please make sure that you meet the prerequisites for language interpretation:


Then, I noticed that you are sending the value of 1 for the language_interpretation.enable property. Instead, try using a boolean value for that property:


If that doesn’t help, are you able to share the JSON request body that you are using when making this request as well as the JSON response? Make sure to redact any identifying information.


Hello, and thank you so much for following up on this.

Prerequisites should be met, as I am able to use the feature if I create the meeting in the dashboard (typically using template s2aXj0lYStSnKNUAUfTDww – which doesn’t seem to work in the API call).

You are correct, the printout of the object using PHP print_r states “1” instead of “true” but the object contains “true”. This is an artifact of the print_r(). The actual POST string sent is (as recovered when I direct the request to a URL of my own for debug):

{“template_id”:“s2aXj0lYStSnKNUAUfTDww”,“topic”:“Immersion : session #77 - Bodhi”,“start_time”:“2021-04-13T20:00:00”,“timezone”:“Europe\/Paris”,“duration”:90,“password”:“XXXX”,“language_interpretation”:{“enable”:“true”,“interpreters”:[{“email":"”,“languages”:“US,FR”}]}}

Curl_info is the following, once the request returns with indeed a meeting object, but no interpretation:
[url] => h t t p s : / / api . zoom . us / v2/users/me/meetings (1)
[content_type] => text/html; charset=UTF-8
[http_code] => 200
[header_size] => 284
[request_size] => 621
[filetime] => -1
[ssl_verify_result] => 0
[redirect_count] => 0
[total_time] => 0.072165
[namelookup_time] => 0.058082
[connect_time] => 0.058197
[pretransfer_time] => 0.068808
[size_upload] => 294
[size_download] => 2
[speed_download] => 27
[speed_upload] => 4083
[download_content_length] => 2
[upload_content_length] => 294
[starttransfer_time] => 0.072114
[redirect_time] => 0
[redirect_url] =>
[certinfo] => Array
[primary_port] => 443
[local_ip] =>
[local_port] => 55404
[http_version] => 2
[protocol] => 2
[ssl_verifyresult] => 0
[scheme] => HTTPS
[appconnect_time_us] => 68734
[connect_time_us] => 58197
[namelookup_time_us] => 58082
[pretransfer_time_us] => 68808
[redirect_time_us] => 0
[starttransfer_time_us] => 72114
[total_time_us] => 72165
[request_header] => POST /v2/users/me/meetings HTTP/1.1\r
Host: api . zoom . us\r (1)
Accept: /\r
Content-Type: application/json\r
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyxxxxxx…xxxxx.XXXX…XXXX\r (2)
Content-Length: 294\r


(1) edited, because the form tells me « Sorry, new users can only put 2 links in a post. »
(2) edited. The token is not the problem, the meeting is created.

Hey @MarcelB,

Thank you for following up and providing more detail. Looking at the POST body that you’re using more closely, it looks like the language_interpretation object is not within a settings object.

We can see that this is required in the Create a Meeting API documentation as the language_interpretation property is under the settings object.

Here’s an example of using the settings object


Here’s an example of what that would look like with your request:

  "template_id": "s2aXj0lYStSnKNUAUfTDww",
  "topic": "Immersion : session #77 - Bodhi",
  "start_time": "2021-04-13T20:00:00",
  "timezone": "Europe\/Paris",
  "duration": 90,
  "password": "XXXX",
  "settings": {
    "language_interpretation": {
      "enable": "true",
      "interpreters": [
          "email": "",
          "languages": "US,FR"

Please try placing the language_interpretation object within a settings object.

Let me know if that helps! :slightly_smiling_face:


I feel sorry for bothering you. I stared at it long enough. It works !
I am surprised though that specifying the template did not carry that setting. But I’m all set.
Sorry for the time.

Thanks for confirming, @MarcelB — glad Max could help!

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.