Skip to main content


The createRole function from peaq SDK allows to create new roles in the network's Role-Based Access Control (RBAC) system, which manages roles and permissions within the blockchain ecosystem. The function returns a JSON object with roleId.


  • roleName (required): name of the role to be created.
  • roleId (optional): ID of the role. If not provided, a new ID will be generated.
  • address (optional): An address representing the association with the role.
  • seed (optional): A string representing the mnemonic seed.

Code example

import { Sdk } from "@peaq-network/sdk";
import { mnemonicGenerate } from "@polkadot/util-crypto";

const generateMnemonicSeed = () => {
const mnemonicSeed = mnemonicGenerate();
return mnemonicSeed;

* Create a new role within the RBAC system.
* @param {string} roleName - The name of the role to be created (required).
* @param {string} [roleId] - The ID of the role (not required).
* @param {Address} [address] - The address associated with the role (not required).
* @param {string} [seed] - The mnemonic seed (not required).
* @returns {string} The ID of the newly created role.
const createRole = async (roleName, seed) => {
const sdkInstance = await Sdk.createInstance({
baseUrl: "wss://",

try {
const { roleId: createdRoleId } = await sdkInstance.rbac.createRole({

return createdRoleId;
} finally {
await sdkInstance.disconnect();

// Example usage
const name = 'myrole';
// You need to have balance with this seed.
const mnemonicSeed = generateMnemonicSeed();
// Before creating your new role, you should have some balance in your generated seed.
createRole(name, mnemonicSeed)
.then((roleId) => {
console.log(`Created role Id: ${roleId}`);
.catch((error) => {
console.error(`Error creating new role: ${error}`);

Response object

roleId: "78709009-cf06-4224-8632-b5ee8512"