Skip to main content
Create NFT collections (ERC-721, ERC-1155), mint tokens, and manage token operations.

Methods

createCollection()

Create a new NFT collection (ERC-721 or ERC-1155). Returns a workflow ID for async processing. Signature:
createCollection(
  request: CreateCollectionRequest,
  requestOptions?: RequestOptions
): Promise<CreateCollectionResponse>
Parameters:
ParameterTypeRequiredDescription
request.addressIdstringYesAddress ID for deployment
request.type'NON_FUNGIBLE_TOKEN' | 'SEMI_FUNGIBLE_TOKEN'YesCollection type (ERC-721 or ERC-1155)
request.clientSharestringYesClient share for signing
request.createParamsobjectYesConstructor parameters
request.createParams.initializeParamsarrayYesArray of exactly 5 constructor parameter objects [{ name, type, value }, ...]
request.networkstringNoBlockchain network
request.displayNamestringNoCollection display name
request.useGaslessbooleanNoWhether to use gasless transactions
request.feestringNoCustom fee amount
request.feeLevelstringNoTransaction fee level
request.descriptionstringNoCollection description
Example Request:
const collection = await client.tokenization.createCollection({
  addressId: 'your-address-id',
  type: 'NON_FUNGIBLE_TOKEN',
  clientShare: 'your-client-share',
  network: 'ETHEREUM',
  displayName: 'My Collection',
  useGasless: false,
  fee: '0',
  feeLevel: 'standard',
  description: 'Optional collection description',
  createParams: {
    initializeParams: [
      { name: '_name', type: 'string', value: 'My Collection' },
      { name: '_symbol', type: 'string', value: 'MYC' },
      { name: 'defaultAdmin', type: 'address', value: '0x1111111111111111111111111111111111111111' },
      { name: 'minter', type: 'address', value: '0x2222222222222222222222222222222222222222' },
      { name: 'pauser', type: 'address', value: '0x3333333333333333333333333333333333333333' }
    ]
  }
});
Example Response:
{
  data: {
    workflowId: 'workflow-id-here',
    status: 'RUNNING'
  }
}
Response Fields:
FieldTypeRequiredDescription
data.workflowIdstringNoWorkflow ID for tracking collection creation
data.statusstringNoWorkflow status
console.log('Workflow ID:', collection.data.workflowId);

getCollections()

Get a paginated list of collections. Signature:
getCollections(
  request?: GetCollectionsRequest,
  requestOptions?: RequestOptions
): Promise<CollectionsResponse>
Example:
const collections = await client.tokenization.getCollections({
  skip: 0,
  take: 25
});

console.log('Collections:', collections.data);

getCollectionById()

Get details for a specific collection. Signature:
getCollectionById(
  id: string,
  requestOptions?: RequestOptions
): Promise<CollectionResponse>
Example:
const collection = await client.tokenization.getCollectionById('collection-id');

console.log('Contract Address:', collection.data.contractAddress);
console.log('Network:', collection.data.network);

mintToken()

Mint a token in a collection. Returns a workflow ID for async processing. Signature:
mintToken(
  id: string,
  request: MintTokenRequest,
  requestOptions?: RequestOptions
): Promise<MintTokenResponse>
Parameters:
ParameterTypeRequiredDescription
idstringYesCollection ID
request.addressIdstringYesAddress ID for signing
request.clientSharestringYesClient share
request.tostringYesRecipient address
request.metadataobjectNoToken metadata (JSON object)
request.useGaslessbooleanNoWhether to use gasless transactions
request.feestringNoCustom fee amount
request.feeLevelstringNoTransaction fee level
Example Request:
const mintResult = await client.tokenization.mintToken('collection-id', {
  addressId: 'address-id',
  clientShare: 'your-client-share',
  to: '0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb',
  metadata: {
    name: 'My First NFT',
    image: 'https://example.com/image.png'
  },
  useGasless: false,
  fee: '0',
  feeLevel: 'standard'
});
Example Response:
{
  data: {
    mint: {
      workflowId: 'workflow-id-here',
      status: 'RUNNING'
    }
  }
}
Response Fields:
FieldTypeRequiredDescription
data.mint.workflowIdstringNoWorkflow ID for tracking token minting
data.mint.statusstringNoWorkflow status
console.log('Mint Workflow ID:', mintResult.data.mint?.workflowId);

burnToken()

Burn a token from a collection. Returns a workflow ID for async processing. Signature:
burnToken(
  id: string,
  request: BurnTokenRequest,
  requestOptions?: RequestOptions
): Promise<BurnTokenResponse>
Parameters:
ParameterTypeRequiredDescription
idstringYesCollection ID
request.addressIdstringYesAddress ID for signing
request.clientSharestringYesClient share
request.tokenIdstringYesToken ID to burn
request.useGaslessbooleanNoWhether to use gasless transactions
request.feestringNoCustom fee amount
request.feeLevelstringNoTransaction fee level
Example Request:
const burnResult = await client.tokenization.burnToken('collection-id', {
  addressId: 'address-id',
  clientShare: 'your-client-share',
  tokenId: '0',
  useGasless: false,
  fee: '0',
  feeLevel: 'standard'
});
Example Response:
{
  data: {
    burn: {
      workflowId: 'workflow-id-here',
      status: 'RUNNING'
    }
  }
}
Response Fields:
FieldTypeRequiredDescription
data.burn.workflowIdstringNoWorkflow ID for tracking token burning
data.burn.statusstringNoWorkflow status
console.log('Burn Workflow ID:', burnResult.data.burn?.workflowId);

getCollectionTokens()

Get all tokens in a collection. Signature:
getCollectionTokens(
  request: GetCollectionTokensRequest,
  requestOptions?: RequestOptions
): Promise<CollectionTokensResponse>
Example:
const tokens = await client.tokenization.getCollectionTokens({
  id: 'collection-id',
  skip: 0,
  take: 50
});

console.log('Tokens:', tokens.data);

getCollectionTokenDetails()

Get details for a specific token. Signature:
getCollectionTokenDetails(
  id: string,
  tokenId: string,
  requestOptions?: RequestOptions
): Promise<TokenDetailsResponse>
Example:
const token = await client.tokenization.getCollectionTokenDetails(
  'collection-id',
  '0'
);

console.log('Token:', token.data);

deleteCollection()

Delete a collection. Signature:
deleteCollection(
  id: string,
  requestOptions?: RequestOptions
): Promise<void>
Example:
await client.tokenization.deleteCollection('collection-id');

Complete Example

import { OumlaSdkApiClient, OumlaSdkApiEnvironment } from '@oumla/sdk';

const client = new OumlaSdkApiClient({
  environment: OumlaSdkApiEnvironment.Sandbox,
  apiKey: 'your-api-key'
});

async function tokenizationWorkflow() {
  // Create collection
  const collection = await client.tokenization.createCollection({
    addressId: 'address-id',
    type: 'NON_FUNGIBLE_TOKEN',
    clientShare: process.env.CLIENT_SHARE!,
    network: 'ETHEREUM',
    displayName: 'My NFT Collection',
    createParams: {
      initializeParams: [
        { name: '_name', type: 'string', value: 'My NFT Collection' },
        { name: '_symbol', type: 'string', value: 'MNFT' },
        { name: 'defaultAdmin', type: 'address', value: '0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb' },
        { name: 'minter', type: 'address', value: '0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb' },
        { name: 'pauser', type: 'address', value: '0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb' }
      ]
    }
  });
  
  // Check workflow status
  let status;
  do {
    status = await client.temporal.getWorkflowStatus(collection.data.workflowId!);
    await new Promise(resolve => setTimeout(resolve, 2000));
  } while (status.data.status === 'RUNNING');
  
  if (status.data.status === 'COMPLETED') {
    // Get collection ID from workflow result (implementation-specific)
    const collectionId = 'collection-id'; // Retrieved from workflow result
    
    // Mint token
    const mintResult = await client.tokenization.mintToken(collectionId, {
      addressId: 'address-id',
      clientShare: process.env.CLIENT_SHARE!,
      to: '0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb',
      metadata: {
        name: 'My First NFT',
        image: 'https://example.com/image.png'
      }
    });
    
    console.log('Token minted:', mintResult.data.mint?.workflowId);
  }
}