Passing channel vars in ARI originate not working

Here is an excerpt from the dialplan (into which my channel will be sent). It’s a part of FreePBX’s conference dialplan code:

exten => STARTMEETME,1,ExecIf($["${MEETME_MUSIC}" != ""]?Set(CONFBRIDGE(user,music_on_hold_class)=${MEETME_MUSIC}))
exten => STARTMEETME,n,ExecIf($["${MEETME_MUSIC}" != ""]?Set(CHANNEL(musicclass)=${MEETME_MUSIC}))
exten => STARTMEETME,n,Set(GROUP(meetme)=${MEETME_ROOMNUM})
exten => STARTMEETME,n,GotoIf($[${MAX_PARTICIPANTS} > 0 && ${GROUP_COUNT(${MEETME_ROOMNUM}@meetme)}>${MAX_PARTICIPANTS}]?MEETMEFULL,1)
exten => STARTMEETME,n,ConfBridge(${MEETME_ROOMNUM},,,${MENU_PROFILE})
exten => STARTMEETME,n,Macro(hangupcall,)

I am posting the following information to the ARI. You can see the query parameters as pretty key value pairs, followed by the raw query parameters, followed by the body sent in the post:

-----[ Query Parameters ]-----------------------------------------------------
            endpoint: PJSIP/410/sip:410@172.31.253.20;port=5060
             context: ext-meetme
           extension: 2663
            priority: 1
               label: ADMIN
            callerId: "Test" <123>
             timeout: 10
           channelId: Conf_Bridge_0_Channel_0
-----[ Raw Query Parameters ]-------------------------------------------------
endpoint=PJSIP/410/sip:410@172.31.253.20;port%3D5060&context=ext-meetme&extension=2663&priority=1&label=ADMIN&callerId=%22Test%22%20%3C123%3E&timeout=10&channelId=Conf_Bridge_0_Channel_0
-----[ Json Send Body ]-------------------------------------------------------
{
    "variables": {
        "MEETME_ROOMNUM": "2663",
        "MENU_PROFILE": "admin_menu"
    }
}

But the code fails because the MEETME_ROOMNUM channel variable is missing, and the MENU_PROFILE channel variable is missing too. The Asterisk CLI shows the following output for line 5 of the dialplan (shown above):
Executing [STARTMEETME@ext-meetme:5] ConfBridge("PJSIP/410-00000005", ",,,") in new stack
confirming the channel variables are not set. Why not?

Is my ARI query body format correct? Is the JSON invalid? Any other ideas?

Did you set the HTTP content-type header value to application/json?

That was it! I forget to sent the content type…