---
title: "Update token"
method: PATCH
path: "/v1/issuance/tokens/{tokenId}"
tags: ["Issuance"]
---

# Update token

`PATCH /v1/issuance/tokens/{tokenId}`

Updates stored token fields. For deployed tokens, metadata fields are also written on-chain through the current metadata authority.

## Path parameters

- `tokenId` string, required — Token identifier.

## Headers

- `x-project-id` string — Selects the active project for this request. Required for session/dashboard callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.

## Request body

- object — Update token request body.
  - `name` string — Updated token name. For deployed tokens, this updates on-chain Token-2022 metadata using the current metadata authority.
  - `symbol` string
  - `decimals` integer
  - `description` string, nullable — Updated token description. For deployed tokens, this writes the on-chain `description` metadata field. Use null to clear the displayed value.
  - `uri` string, uri, nullable — Updated metadata URI. For deployed tokens, this updates the on-chain Token-2022 metadata URI using the current metadata authority. Use null to clear.
  - `imageUrl` string, uri, nullable — Updated image URL. For deployed tokens, this writes the on-chain `image` metadata field. Use null to clear the displayed value.
  - `status` 'active' | 'paused' — Token operational status.
  - `requiresAllowlist` boolean — Whether transfers are restricted to allowlisted accounts. Only accepted while the token is undeployed (pending, no mint address); returns 400 after deployment.
  - `maxSupply` string, nullable — Updated maximum supply as a string (UI units); null removes the cap. Enforced by SDP at mint time while it holds the mint authority, so it is rejected with 400 once the supply is locked on-chain (mint authority revoked), and cannot be set below the already-minted supply.

## Response `200`

Token updated

- object — Standard success response envelope.
  - `data` object, required — Token response payload.
    - `token` object, required — Token details.
      - `id` string, required — Token identifier.
      - `projectId` string, required — Project identifier.
      - `organizationId` string, required — Organization identifier.
      - `signingWalletId` string, nullable, required — Preferred signer wallet for token deploy/admin/write actions.
      - `mintAddress` string, nullable, required — Mint address once deployed.
      - `mintAuthority` string, nullable, required — Mint authority address, if set.
      - `freezeAuthority` string, nullable, required — Freeze authority address, if set.
      - `ablListAddress` string, nullable, required — On-chain allowlist/blocklist address, if enabled.
      - `name` string, required — Token name.
      - `symbol` string, required — Token symbol.
      - `decimals` integer, required — Token decimals.
      - `description` string, nullable, required — Token description.
      - `uri` string, nullable, required — Metadata URI passed to on-chain token metadata (points to off-chain JSON).
      - `imageUrl` string, nullable, required — Token image URL.
      - `template` 'stablecoin' | 'arcade' | 'tokenized-security' | 'custom' | 'rwa', required — Token template identifier.
      - `extensions` object, nullable, required — Token-2022 extensions configuration.
        - `transferFee` object — Transfer fee configuration.
          - `basisPoints` integer, required — Transfer fee in basis points (0-10000).
          - `maxFee` string, required — Maximum fee in UI units.
          - `transferFeeConfigAuthority` string, required — Authority to configure transfer fees.
          - `withdrawWithheldAuthority` string, required — Authority to withdraw withheld fees.
        - `interestBearing` object — Interest-bearing configuration.
          - `rate` number, required — Interest rate in percent.
          - `rateAuthority` string, required — Authority that can update the rate.
        - `permanentDelegate` string — Permanent delegate address.
        - `pausable` object — Pausable configuration.
          - `authority` string — Authority that can pause/resume transfers.
        - `nonTransferable` boolean — Mark token as non-transferable.
        - `defaultAccountState` 'initialized' | 'frozen' — Default account state.
        - `scaledUiAmount` object — Scaled UI amount configuration.
          - `authority` string — Authority that can update scaled UI parameters.
          - `multiplier` number, required — Current UI multiplier.
          - `newMultiplier` number, required — Scheduled multiplier.
          - `newMultiplierEffectiveTimestamp` integer, required — Unix timestamp (seconds) when the new multiplier takes effect.
        - `transferHook` object — Transfer hook configuration.
          - `programId` string, required — Transfer hook program id.
          - `authority` string — Authority that can update the transfer hook program.
      - `totalSupply` string, required — Cached total supply in UI units (stored to avoid frequent RPC reads). Use POST /v1/issuance/tokens/{tokenId}/supply/refresh to force an on-chain refresh.
      - `totalSupplyUpdatedAt` string, date-time, nullable, required — Timestamp when supply was last refreshed.
      - `maxSupply` string, nullable, required — Maximum supply in UI units, if capped.
      - `isMintable` boolean, required — Whether additional minting is allowed.
      - `isFreezable` boolean, required — Whether freeze authority is enabled.
      - `requiresAllowlist` boolean, required — Whether transfers require allowlist approval.
      - `status` 'pending' | 'active' | 'paused' | 'revoked', required — Token lifecycle status.
      - `deployedAt` string, date-time, nullable, required — Deployment timestamp, if deployed.
      - `createdBy` string, required — Actor identifier that created the token.
      - `createdAt` string, date-time, required — Creation timestamp.
      - `updatedAt` string, date-time, required — Last update timestamp.
  - `meta` object, required — Response metadata.
    - `requestId` string, required — Request identifier for tracing.
    - `timestamp` string, date-time, required — ISO 8601 timestamp.

## Other responses

- `400` — Error
- `401` — Error
- `403` — Error
- `404` — Error
- `500` — Error

---

[API](https://skmtc.net/solana/apis/solana-developer-platform-api.md) · [All operations](https://skmtc.net/solana/apis/solana-developer-platform-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/solana/solana-developer-platform-api/revisions/672b1916ba61/schema)
