Skip to main content
POST
Mint Identity

Overview

Mint a new identity NFT (SBT) with a unique ZKS ID. This creates a non-transferable identity token that can be activated to become soulbound. Once minted, the identity can be used across the ZKScore ecosystem.
Identity names must be unique across the platform. Use the Check Availability endpoint to verify name availability before minting.

Request Body

string
required
The desired ZKS ID name (without .zks suffix). Must be 3-32 characters, lowercase letters, numbers, and hyphens only. Cannot start or end with a hyphen.
string
required
The Ethereum wallet address that will own this identity. Must be a valid address format.
object
Optional metadata for the identity

Response

boolean
Indicates if the minting was successful
object

Examples

Response Example

Error Responses

Name Validation Rules

Valid Names

Accepted formats:
  • alice - Simple name
  • defi-master - With hyphen
  • user123 - With numbers
  • my-identity-2024 - Multiple hyphens and numbers

Invalid Names

Rejected formats:
  • al - Too short (minimum 3 characters)
  • -alice - Starts with hyphen
  • alice- - Ends with hyphen
  • Alice - Contains uppercase
  • alice.eth - Contains period
  • alice@zks - Contains special characters
  • this-name-is-way-too-long-to-be-valid - Too long (maximum 32 characters)

Use Cases

1. User Onboarding

Create an identity during user registration:

2. Batch Identity Creation

Create multiple identities for a team or organization:

3. Identity with Custom Metadata

Create an identity with rich metadata:

Best Practices

1. Check Availability First

Always check name availability before attempting to mint:

2. Handle Errors Gracefully

Provide helpful feedback when minting fails:

3. Store Transaction Hash

Save the transaction hash for verification:

4. Activate After Minting

Remember to activate the identity to make it soulbound:

Next Steps

After minting an identity:
  1. Activate Identity - Make the identity soulbound
  2. Get Identity - Retrieve identity information
  3. Get Score - Check the user’s ZKScore

Troubleshooting

”Name already taken”

Cause: The requested name is already registered by another user. Solution:
  • Use the suggestions provided in the error response
  • Try a different name with numbers or hyphens
  • Check availability before minting

”Invalid name format”

Cause: The name doesn’t meet validation requirements. Solution:
  • Ensure name is 3-32 characters
  • Use only lowercase letters, numbers, and hyphens
  • Don’t start or end with a hyphen

”Transaction failed”

Cause: Blockchain transaction failed or was reverted. Solution:
  • Check wallet has sufficient gas
  • Verify wallet address is correct
  • Try again after a few minutes
  • Contact support if issue persists

Rate Limits

Identity minting is subject to rate limits:
  • Free tier: 10 mints per hour
  • Starter tier: 100 mints per hour
  • Professional tier: 1,000 mints per hour
  • Enterprise tier: Custom limits
Exceeded rate limits will return a 429 Too Many Requests error.