[PERS SDK - v2.3.26](/sdk-reference/readme) / [Exports](/sdk-reference/modules) / TokenApi

# Class: TokenApi

## Table of contents

### Constructors

- [constructor](/sdk-reference/classes/tokenapi#constructor)


### Methods

- [getRemoteTokens](/sdk-reference/classes/tokenapi#getremotetokens)
- [getRemoteTokenTypes](/sdk-reference/classes/tokenapi#getremotetokentypes)
- [getRemoteActiveCreditToken](/sdk-reference/classes/tokenapi#getremoteactivecredittoken)
- [getRemoteRewardTokens](/sdk-reference/classes/tokenapi#getremoterewardtokens)
- [getRemoteStatusTokens](/sdk-reference/classes/tokenapi#getremotestatustokens)
- [getTokenByContractAddress](/sdk-reference/classes/tokenapi#gettokenbycontractaddress)
- [getTokenMetadata](/sdk-reference/classes/tokenapi#gettokenmetadata)
- [createToken](/sdk-reference/classes/tokenapi#createtoken)
- [updateToken](/sdk-reference/classes/tokenapi#updatetoken)
- [toggleTokenActive](/sdk-reference/classes/tokenapi#toggletokenactive)
- [setMainnetContract](/sdk-reference/classes/tokenapi#setmainnetcontract)
- [createTokenMetadata](/sdk-reference/classes/tokenapi#createtokenmetadata)
- [updateTokenMetadata](/sdk-reference/classes/tokenapi#updatetokenmetadata)
- [toggleTokenMetadataStatus](/sdk-reference/classes/tokenapi#toggletokenmetadatastatus)
- [createTokenType](/sdk-reference/classes/tokenapi#createtokentype)
- [deleteTokenMetadata](/sdk-reference/classes/tokenapi#deletetokenmetadata)
- [exportMetadataCSV](/sdk-reference/classes/tokenapi#exportmetadatacsv)
- [setTokenMetadataApproval](/sdk-reference/classes/tokenapi#settokenmetadataapproval)


## Constructors

### constructor

• **new TokenApi**(`apiClient`): [`TokenApi`](/sdk-reference/classes/tokenapi)

#### Parameters

| Name | Type |
|  --- | --- |
| `apiClient` | [`PersApiClient`](/sdk-reference/classes/persapiclient) |


#### Returns

[`TokenApi`](/sdk-reference/classes/tokenapi)

#### Defined in

[token/api/token-api.ts:34](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/token/api/token-api.ts#L34)

## Methods

### getRemoteTokens

▸ **getRemoteTokens**(`includeInactive?`, `options?`): `Promise`<`PaginatedResponseDTO`<`TokenDTO`>>

PUBLIC: Get all remote tokens
ENHANCED: Added admin filtering capability and pagination

#### Parameters

| Name | Type | Default value | Description |
|  --- | --- | --- | --- |
| `includeInactive` | `boolean` | `false` | Include inactive tokens (admin only) |
| `options?` | `PaginationOptions` | `undefined` | Pagination options (page, limit, sortBy, sortOrder) |


#### Returns

`Promise`<`PaginatedResponseDTO`<`TokenDTO`>>

Paginated response with tokens

#### Defined in

[token/api/token-api.ts:50](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/token/api/token-api.ts#L50)

### getRemoteTokenTypes

▸ **getRemoteTokenTypes**(`options?`): `Promise`<`PaginatedResponseDTO`<`TokenTypeDTO`>>

PUBLIC: Get all remote token types

#### Parameters

| Name | Type | Description |
|  --- | --- | --- |
| `options?` | `PaginationOptions` | Pagination options (page, limit, sortBy, sortOrder) |


#### Returns

`Promise`<`PaginatedResponseDTO`<`TokenTypeDTO`>>

Paginated response with token types

#### Defined in

[token/api/token-api.ts:65](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/token/api/token-api.ts#L65)

### getRemoteActiveCreditToken

▸ **getRemoteActiveCreditToken**(): `Promise`<`TokenDTO`>

PUBLIC: Get active point token (was credit token)

#### Returns

`Promise`<`TokenDTO`>

#### Defined in

[token/api/token-api.ts:74](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/token/api/token-api.ts#L74)

### getRemoteRewardTokens

▸ **getRemoteRewardTokens**(`includeInactive?`, `options?`): `Promise`<`PaginatedResponseDTO`<`TokenDTO`>>

PUBLIC: Get reward tokens
ENHANCED: Added admin filtering capability and pagination

#### Parameters

| Name | Type | Default value | Description |
|  --- | --- | --- | --- |
| `includeInactive` | `boolean` | `false` | Include inactive tokens (admin only) |
| `options?` | `PaginationOptions` | `undefined` | Pagination options (page, limit, sortBy, sortOrder) |


#### Returns

`Promise`<`PaginatedResponseDTO`<`TokenDTO`>>

Paginated response with reward tokens

#### Defined in

[token/api/token-api.ts:86](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/token/api/token-api.ts#L86)

### getRemoteStatusTokens

▸ **getRemoteStatusTokens**(`includeInactive?`, `options?`): `Promise`<`PaginatedResponseDTO`<`TokenDTO`>>

PUBLIC: Get stamp tokens (was status tokens)
ENHANCED: Added admin filtering capability and pagination

#### Parameters

| Name | Type | Default value | Description |
|  --- | --- | --- | --- |
| `includeInactive` | `boolean` | `false` | Include inactive tokens (admin only) |
| `options?` | `PaginationOptions` | `undefined` | Pagination options (page, limit, sortBy, sortOrder) |


#### Returns

`Promise`<`PaginatedResponseDTO`<`TokenDTO`>>

Paginated response with stamp tokens

#### Defined in

[token/api/token-api.ts:103](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/token/api/token-api.ts#L103)

### getTokenByContractAddress

▸ **getTokenByContractAddress**(`contractAddress`, `contractTokenId`): `Promise`<`TokenDTO`>

PUBLIC: Get token by contract address

#### Parameters

| Name | Type |
|  --- | --- |
| `contractAddress` | `string` |
| `contractTokenId` | `null` | `string` |


#### Returns

`Promise`<`TokenDTO`>

#### Defined in

[token/api/token-api.ts:115](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/token/api/token-api.ts#L115)

### getTokenMetadata

▸ **getTokenMetadata**(`options?`): `Promise`<`PaginatedResponseDTO`<`TokenMetadataDTO`>>

Get all token metadata with filtering, pagination, and include relations

Useful for displaying rewards (ERC1155) or stamps (ERC721) in tables.
Non-admin users always get active metadata only.

#### Parameters

| Name | Type | Description |
|  --- | --- | --- |
| `options?` | `TokenMetadataQueryParams` | Filter, pagination, and include options |


#### Returns

`Promise`<`PaginatedResponseDTO`<`TokenMetadataDTO`>>

Paginated response with token metadata

**`Example`**

```typescript
const rewards = await tokenApi.getTokenMetadata({ 
  tokenType: 'ERC1155',
  active: true,
  limit: 10,
  include: ['mintCount', 'burnCount', 'token']
});
```

**`Example`**

```typescript
const stamps = await tokenApi.getTokenMetadata({
  tokenType: 'ERC721',
  search: 'gold',
  include: ['ownerBusiness', 'token']
});
```

#### Defined in

[token/api/token-api.ts:151](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/token/api/token-api.ts#L151)

### createToken

▸ **createToken**(`tokenData`): `Promise`<`TokenDTO`>

ADMIN: Create new token

#### Parameters

| Name | Type |
|  --- | --- |
| `tokenData` | `TokenCreateRequestDTO` |


#### Returns

`Promise`<`TokenDTO`>

#### Defined in

[token/api/token-api.ts:205](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/token/api/token-api.ts#L205)

### updateToken

▸ **updateToken**(`tokenId`, `tokenData`): `Promise`<`TokenDTO`>

ADMIN: Update token

#### Parameters

| Name | Type |
|  --- | --- |
| `tokenId` | `string` |
| `tokenData` | `TokenUpdateRequestDTO` |


#### Returns

`Promise`<`TokenDTO`>

#### Defined in

[token/api/token-api.ts:212](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/token/api/token-api.ts#L212)

### toggleTokenActive

▸ **toggleTokenActive**(`tokenId`): `Promise`<`TokenDTO`>

ADMIN: Toggle token active status
FIXED: Now calls correct endpoint

#### Parameters

| Name | Type |
|  --- | --- |
| `tokenId` | `string` |


#### Returns

`Promise`<`TokenDTO`>

#### Defined in

[token/api/token-api.ts:220](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/token/api/token-api.ts#L220)

### setMainnetContract

▸ **setMainnetContract**(`tokenId`, `contractAddress`, `chainId`): `Promise`<`TokenDTO`>

ADMIN: Set mainnet contract address

#### Parameters

| Name | Type |
|  --- | --- |
| `tokenId` | `string` |
| `contractAddress` | `string` |
| `chainId` | `number` |


#### Returns

`Promise`<`TokenDTO`>

#### Defined in

[token/api/token-api.ts:227](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/token/api/token-api.ts#L227)

### createTokenMetadata

▸ **createTokenMetadata**(`tokenId`, `tokenData`): `Promise`<`TokenDTO`>

ADMIN: Create token metadata

#### Parameters

| Name | Type |
|  --- | --- |
| `tokenId` | `string` |
| `tokenData` | `TokenMetadataCreateRequestDTO` |


#### Returns

`Promise`<`TokenDTO`>

#### Defined in

[token/api/token-api.ts:237](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/token/api/token-api.ts#L237)

### updateTokenMetadata

▸ **updateTokenMetadata**(`metadataId`, `tokenData`): `Promise`<`TokenMetadataDTO`>

ADMIN: Update token metadata (ERC721 only)
Note: Existing minted NFTs retain their original metadata - this only affects future mints

#### Parameters

| Name | Type |
|  --- | --- |
| `metadataId` | `string` |
| `tokenData` | `TokenMetadataCreateRequestDTO` |


#### Returns

`Promise`<`TokenMetadataDTO`>

#### Defined in

[token/api/token-api.ts:245](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/token/api/token-api.ts#L245)

### toggleTokenMetadataStatus

▸ **toggleTokenMetadataStatus**(`metadataId`): `Promise`<`TokenMetadataDTO`>

ADMIN: Toggle token metadata status (separate from token status)

#### Parameters

| Name | Type |
|  --- | --- |
| `metadataId` | `string` |


#### Returns

`Promise`<`TokenMetadataDTO`>

#### Defined in

[token/api/token-api.ts:252](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/token/api/token-api.ts#L252)

### createTokenType

▸ **createTokenType**(`tokenType`): `Promise`<`TokenTypeDTO`>

ADMIN: Create token type

#### Parameters

| Name | Type |
|  --- | --- |
| `tokenType` | `TokenTypeDTO` |


#### Returns

`Promise`<`TokenTypeDTO`>

#### Defined in

[token/api/token-api.ts:259](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/token/api/token-api.ts#L259)

### deleteTokenMetadata

▸ **deleteTokenMetadata**(`metadataId`): `Promise`<`void`>

ADMIN: Delete token metadata (soft delete)

Soft deletes token metadata by setting deletedAt timestamp.
Will fail with 409 Conflict if metadata is in use by active campaigns or redemptions.

#### Parameters

| Name | Type | Description |
|  --- | --- | --- |
| `metadataId` | `string` | ID of the token metadata to delete |


#### Returns

`Promise`<`void`>

**`Throws`**

409 Conflict if metadata is in use

**`Example`**

```typescript
try {
  await tokenApi.deleteTokenMetadata('metadata-123');
  console.log('Metadata deleted');
} catch (error) {
  if (error.statusCode === 409) {
    console.log('Cannot delete: metadata is in use');
  }
}
```

#### Defined in

[token/api/token-api.ts:284](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/token/api/token-api.ts#L284)

### exportMetadataCSV

▸ **exportMetadataCSV**(`options?`): `Promise`<`Blob`>

ADMIN: Export token metadata to CSV

Returns a CSV file with all token metadata for the tenant.
Supports date range filtering.

Endpoint: GET /tokens/metadata/export/csv
Auth: @TenantAdmin()

#### Parameters

| Name | Type | Description |
|  --- | --- | --- |
| `options?` | `Object` | Export options (dateFrom, dateTo) |
| `options.dateFrom?` | `string` | - |
| `options.dateTo?` | `string` | - |


#### Returns

`Promise`<`Blob`>

CSV blob

**`Example`**

```typescript
// Export all token metadata
const csvBlob = await tokenApi.exportMetadataCSV();

// Export metadata created in date range
const csvBlob = await tokenApi.exportMetadataCSV({
  dateFrom: '2026-01-01',
  dateTo: '2026-06-30'
});
```

#### Defined in

[token/api/token-api.ts:316](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/token/api/token-api.ts#L316)

### setTokenMetadataApproval

▸ **setTokenMetadataApproval**(`tokenMetadataId`, `status`, `reason?`): `Promise`<`TokenMetadataDTO`>

ADMIN: Approve a token metadata

Approves token metadata that is pending approval, changing its status to 'approved'.

Endpoint: PATCH /admin/token-metadata/:id/approve
Auth: @TenantAdmin()

#### Parameters

| Name | Type | Description |
|  --- | --- | --- |
| `tokenMetadataId` | `string` | ID of the token metadata to approve |
| `status` | `"approved"` | `"rejected"` | - |
| `reason?` | `string` | - |


#### Returns

`Promise`<`TokenMetadataDTO`>

Updated token metadata with approval metadata

#### Defined in

[token/api/token-api.ts:340](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/token/api/token-api.ts#L340)