# Create

You can either create the token with your favourite JWT library or you can rely on our [REST API ](https://developer.digitalsamba.com/rest-api/#rooms-POSTapi-v1-rooms--room--token)to create it for you. Note that if you need to create a lot of tokens at the same time, you may want to use a JWT library, since our API is rate-limited and you cannot execute thousands of requests per second.

{% hint style="info" %}
Note the below examples are just for guidance - you are free to use any JWT library you are comfortable with or which your frameworks support. As you can see on the official [JWT site](https://jwt.io/libraries) - there are plenty of available libraries for each possible language.
{% endhint %}

The Java example is using the popular open source [**java-jwt**](https://github.com/auth0/java-jwt) library.&#x20;

The PHP example doesn't use external libraries, so it is a little bit more verbose.

{% tabs %}
{% tab title="Java" %}

```java
String developerKey = "YOUR_DEVELOPER_KEY_FROM_THE_DASHBOARD";
String teamId = "YOUR_TEAM_ID_FROM_THE_DASHBOARD";
String roomId = "YOUR_ROOM_NAME_OR_ROOM_ID";
String username = "John Smith";

Algorithm algorithm = Algorithm.HMAC256(developerKey);
String token = JWT.create()
    .withClaim("td", teamId)
    .withClaim("rd", roomId)		
    .withClaim("u", username)	    
    //.withClaim("ud", "ABC1234567254435")
    //.withClaim("role", "moderator")
    //.withIssuedAt(new Date())
    //.withNotBefore(new Date(System.currentTimeMillis() + 3600000))
    //.withExpiresAt(new Date(System.currentTimeMillis() + (3600000 * 2)))
    .sign(algorithm);
```

{% endtab %}

{% tab title="PHP" %}

<pre class="language-php"><code class="lang-php">$developerKey = 'YOUR_DEVELOPER_KEY_FROM_THE_DASHBOARD';
$teamId = 'YOUR_TEAM_ID_FROM_THE_DASHBOARD';
<strong>$roomId = 'YOUR_ROOM_NAME_OR_ID';
</strong>$username = 'John Smith';

// Create token header as a JSON string
$header = json_encode(['typ' => 'JWT', 'alg' => 'HS256']);

// Create token payload as a JSON string
$payload = json_encode([
    'td' => $teamId,
    'rd' => $roomId,
    'u' => ''.$username.'',
    'role' => 'moderator'
]);
                        
// Encode Header to Base64Url String
$base64UrlHeader = str_replace(['+', '/', '='], ['-', '_', ''], base64_encode($header));

// Encode Payload to Base64Url String
$base64UrlPayload = str_replace(['+', '/', '='], ['-', '_', ''], base64_encode($payload));

// Create Signature Hash
$signature = hash_hmac('sha256', $base64UrlHeader . "." . $base64UrlPayload, $developerKey, true);

// Encode Signature to Base64Url String
$base64UrlSignature = str_replace(['+', '/', '='], ['-', '_', ''], base64_encode($signature));

$token = $base64UrlHeader . "." . $base64UrlPayload . "." . $base64UrlSignature;
</code></pre>

{% endtab %}
{% endtabs %}
