Sample code for 30+ languages & platforms
PowerShell

Zoom API - Create JWT to Authenticate API Requests

See more Zoom Examples

Creates a JWT for the Zoom API.

Chilkat PowerShell Downloads

PowerShell
Add-Type -Path "C:\chilkat\ChilkatDotNet47-x64\ChilkatDotNet47.dll"

$success = $false

# This example requires the Chilkat API to have been previously unlocked.
# See Global Unlock Sample for sample code.

# Use your API key and secret here...
$apiKey = "o9rw6Gq0RnqlkfaSqtCMOA"
$apiSecret = "UslmE23Kjh7at9z3If1xAHEyLmPDNxvxQrjR"

# Create a JWT to authenticate Zoom API requests.
$jwt = New-Object Chilkat.Jwt

$jose = New-Object Chilkat.JsonObject
$success = $jose.UpdateString("alg","HS256")
$success = $jose.UpdateString("typ","JWT")

# Build claims to look like this:
# {"aud":null,"iss":"o9rw6Gq0RnqlkfaSqtCMOA","exp":1627651762,"iat":1627646363}
$claims = New-Object Chilkat.JsonObject
$success = $claims.UpdateString("iss",$apiKey)
$success = $claims.UpdateNull("aud")

# Set the timestamp of when the JWT was created to now.
$curDateTime = $jwt.GenNumericDate(0)
$success = $claims.AddIntAt(-1,"iat",$curDateTime)

# Set the timestamp defining an expiration time (end time) for the token
# to be now + 1 month(3600 * 24 * 30 seconds)
$oneMonth = 3600 * 24 * 30
$success = $claims.AddIntAt(-1,"exp",$curDateTime + $oneMonth)

# Produce the smallest possible JWT:
$jwt.AutoCompact = $true

$strJwt = $jwt.CreateJwt($jose.Emit(),$claims.Emit(),$apiSecret)

$($strJwt)

# Let's test the JWT to by sending the following request:

# curl --request GET \
#   --url 'https://api.zoom.us/v2/users?status=active&page_size=30&page_number=1' \
#   --header 'authorization: Bearer { your_token }' \
#   --header 'content-type: application/json

$http = New-Object Chilkat.Http

# Implements the following CURL command:

# curl --request GET \
#   --url 'https://api.zoom.us/v2/users?status=active&page_size=30&page_number=1' \
#   --header 'authorization: Bearer { your_token }' \
#   --header 'content-type: application/json

# Use the following online tool to generate HTTP code from a CURL command
# Convert a cURL Command to HTTP Source Code

$http.SetRequestHeader("content-type","application/json")
# Adds the "Authorization: Bearer { your_token }" header.
$http.AuthToken = $strJwt

$sbResponseBody = New-Object Chilkat.StringBuilder
$success = $http.QuickGetSb("https://api.zoom.us/v2/users?status=active&page_size=30&page_number=1",$sbResponseBody)
if ($success -eq $false) {
    $($http.LastErrorText)
    exit
}

$jResp = New-Object Chilkat.JsonObject
$jResp.LoadSb($sbResponseBody)
$jResp.EmitCompact = $false

$("Response Body:")
$($jResp.Emit())

$respStatusCode = $http.LastStatus
$("Response Status Code = " + $respStatusCode)
if ($respStatusCode -ge 400) {
    $("Response Header:")
    $($http.LastHeader)
    $("Failed.")
    exit
}

# Sample output:

# {
#   "page_count": 1,
#   "page_number": 1,
#   "page_size": 30,
#   "total_records": 1,
#   "users": [
#     {
#       "id": "s8uAiMJiRmS_-eu1yOhKlg",
#       "first_name": "Joe",
#       "last_name": "Example",
#       "email": "joe@example.com",
#       "type": 1,
#       "pmi": 5224934114,
#       "timezone": "America/Chicago",
#       "verified": 1,
#       "created_at": "2021-07-30T11:56:37Z",
#       "last_login_time": "2021-07-30T11:56:37Z",
#       "language": "en-US",
#       "phone_number": "",
#       "status": "active",
#       "role_id": "0"
#     }
#   ]
# }

# Sample code for parsing the JSON response...
# Use the following online tool to generate parsing code from sample JSON:
# Generate Parsing Code from JSON

$page_count = $jResp.IntOf("page_count")
$page_number = $jResp.IntOf("page_number")
$page_size = $jResp.IntOf("page_size")
$total_records = $jResp.IntOf("total_records")
$i = 0
$count_i = $jResp.SizeOfArray("users")
while ($i -lt $count_i) {
    $jResp.I = $i
    $id = $jResp.StringOf("users[i].id")
    $first_name = $jResp.StringOf("users[i].first_name")
    $last_name = $jResp.StringOf("users[i].last_name")
    $email = $jResp.StringOf("users[i].email")
    $v_type = $jResp.IntOf("users[i].type")
    $pmi = $jResp.IntOf("users[i].pmi")
    $timezone = $jResp.StringOf("users[i].timezone")
    $verified = $jResp.IntOf("users[i].verified")
    $created_at = $jResp.StringOf("users[i].created_at")
    $last_login_time = $jResp.StringOf("users[i].last_login_time")
    $language = $jResp.StringOf("users[i].language")
    $phone_number = $jResp.StringOf("users[i].phone_number")
    $status = $jResp.StringOf("users[i].status")
    $role_id = $jResp.StringOf("users[i].role_id")
    $i = $i + 1
}