IPAssetClient allows you to create, get, and list IP Assets within Story.
Function | Mint an NFT | Register IPA | Create License Terms | Attach License Terms | Mint License Token | Register as Derivative |
---|---|---|---|---|---|---|
register | β | |||||
mintAndRegisterIp | β | β | ||||
registerIpAndAttachPilTerms | β | β | β | |||
mintAndRegisterIpAssetWithPilTerms | β | β | β | β | ||
registerDerivativeIp | β | β | ||||
mintAndRegisterIpAndMakeDerivativeWithLicenseTokens | β | β | β | |||
registerIpAndMakeDerivativeWithLicenseTokens | β | β | ||||
mintAndRegisterIpAndMakeDerivative | β | β | β | |||
registerDerivative | β | |||||
registerDerivativeWithLicenseTokens | β | |||||
registerPilTermsAndAttach | β | β | ||||
registerPILTerms | β | |||||
attachLicenseTerms | β | |||||
mintLicenseTokens | β |
ipId
.
tokenUri
to
whatever is passed under ipMetadata.nftMetadataURI
.Method | Type |
---|---|
register | (request: RegisterRequest) => Promise<RegisterIpResponse> |
request.nftContract
: The address of the NFT.request.tokenId
: The token identifier of the NFT.request.ipMetadata
: [Optional] The desired metadata for the newly minted NFT and newly registered IP.
request.ipMetadata.ipMetadataURI
[Optional] The URI of the metadata for the IP.request.ipMetadata.ipMetadataHash
[Optional] The hash of the metadata for the IP.request.ipMetadata.nftMetadataURI
[Optional] The URI of the metadata for the NFT.request.ipMetadata.nftMetadataHash
[Optional] The hash of the metadata for the IP NFT.request.deadline
: [Optional] The deadline for the signature in milliseconds. Defaults to 1000.Method | Type |
---|---|
batchRegister | (request: BatchRegisterRequest) => Promise<BatchRegisterResponse> |
Method | Type |
---|---|
registerDerivative | (request: RegisterDerivativeRequest) => Promise<RegisterDerivativeResponse> |
request.childIpId
: The derivative IP ID.request.licenseTermsIds
: Array of license term IDs that authorize the creation of this derivative IP. Each ID must correspond positionally to a parent IP in the parentIpIds
array, creating a one-to-one mapping. Story verifies on-chain that each specified license term permits derivative registration for its corresponding parent IP. Transaction fails if arrays donβt match in length or if terms donβt permit derivative creation.request.parentIpIds
: Array of parent IP IDs from which this derivative is created. Each parent IP must have corresponding license terms specified at the same index in the licenseTermsIds
array that authorize the derivative relationship.request.licenseTemplate
: [Optional] The address of the license template to be used for the linking. For now, this can only be the PILrequest.maxMintingFee
: [Optional] The maximum minting fee that the caller is willing to pay. If set to 0, then there is no no limit. Default: 0request.maxRevenueShare
: [Optional] The maximum revenue share percentage agreed upon between a child and parent when a child is registering as derivative. Must be between 0 and 100. Default: 100request.maxRts
: [Optional] The maximum number of royalty tokens that can be distributed to the external royalty policies. Must be between 0 and 100,000,000. Default: 100_000_000Method | Type |
---|---|
registerDerivativeWithLicenseTokens | (request: RegisterDerivativeWithLicenseTokensRequest) => Promise<RegisterDerivativeWithLicenseTokensResponse> |
request.childIpId
: The derivative IP ID.request.licenseTokenIds
: The IDs of the license tokens.request.maxRts
: The maximum number of royalty tokens that can be distributed to the external royalty policies. Must be between 0 and 100,000,000. Recommended for simplicity: 100_000_000tokenUri
to
whatever is passed under ipMetadata.nftMetadataURI
.Method | Type |
---|---|
mintAndRegisterIpAssetWithPilTerms | (request: MintAndRegisterIpAssetWithPilTermsRequest) => Promise<MintAndRegisterIpAssetWithPilTermsResponse> |
request.spgNftContract
: The address of the NFT collection.request.allowDuplicates
: [Optional] Set to true to allow minting IPs with the same NFT metadata. Default: truerequest.licenseTermsData[]
: The array of license terms to be attached. β οΈ This function will fail if you pass in an empty array.
request.licenseTermsData.terms
: See the LicenseTerms type.request.licenseTermsData.licensingConfig
: [Optional] See the LicensingConfig type. If none provided, it will default to the one shown here.request.licenseTermsData.maxLicenseTokens
: [Optional] The max number of license tokens that can be minted from this license term. If not provided, there is no limit on license token minting.request.ipMetadata
: [Optional] The desired metadata for the newly minted NFT and newly registered IP.
request.ipMetadata.ipMetadataURI
: [Optional] The URI of the metadata for the IP.request.ipMetadata.ipMetadataHash
: [Optional] The hash of the metadata for the IP.request.ipMetadata.nftMetadataURI
: [Optional] The URI of the metadata for the NFT.request.ipMetadata.nftMetadataHash
: [Optional] The hash of the metadata for the IP NFT.request.recipient
: [Optional] The address of the recipient of the minted NFT.Method | Type |
---|---|
batchMintAndRegisterIpAssetWithPilTerms | (request: BatchMintAndRegisterIpAssetWithPilTermsRequest) => Promise<BatchMintAndRegisterIpAssetWithPilTermsResponse> |
tokenUri
to
whatever is passed under ipMetadata.nftMetadataURI
.Method | Type |
---|---|
registerIpAndAttachPilTerms | (request: RegisterIpAndAttachPilTermsRequest) => Promise<RegisterIpAndAttachPilTermsResponse> |
request.nftContract
: The address of the NFT collection.request.tokenId
: The ID of the NFT.request.licenseTermsData[]
: The array of license terms to be attached. β οΈ This function will fail if you pass in an empty array.
request.licenseTermsData.terms
: See the LicenseTerms type.request.licenseTermsData.licensingConfig
: [Optional] See the LicensingConfig type. If none provided, it will default to the one shown here.request.licenseTermsData.maxLicenseTokens
: [Optional] The max number of license tokens that can be minted from this license term. If not provided, there is no limit on license token minting.request.ipMetadata
: [Optional] The desired metadata for the newly minted NFT and newly registered IP.
request.ipMetadata.ipMetadataURI
: [Optional] The URI of the metadata for the IP.request.ipMetadata.ipMetadataHash
: [Optional] The hash of the metadata for the IP.request.ipMetadata.nftMetadataURI
: [Optional] The URI of the metadata for the NFT.request.ipMetadata.nftMetadataHash
: [Optional] The hash of the metadata for the IP NFT.request.deadline
: [Optional] The deadline for the signature in milliseconds. Defaults to 1000.tokenUri
to
whatever is passed under ipMetadata.nftMetadataURI
.Method | Type |
---|---|
registerDerivativeIp | (request: RegisterIpAndMakeDerivativeRequest) => Promise<RegisterIpAndMakeDerivativeResponse> |
request.nftContract
: The address of the NFT collection.request.tokenId
: The ID of the NFT.request.derivData
: The derivative data to be used for registerDerivative.
request.derivData.parentIpIds
: The IDs of the parent IPs to link the registered derivative IP.request.derivData.licenseTermsIds
: The IDs of the license terms to be used for the linking.request.derivData.maxMintingFee
: [Optional] The maximum minting fee that the caller is willing to pay. If set to 0, then there is no no limit. Default: 0request.derivData.maxRevenueShare
: [Optional] The maximum revenue share percentage agreed upon between a child and parent when a child is registering as derivative. Must be between 0 and 100. Default: 100request.derivData.maxRts
: [Optional]The maximum number of royalty tokens that can be distributed to the external royalty policies. Must be between 0 and 100,000,000. Default: 100_000_000request.derivData.licenseTemplate
: [Optional] The address of the license template to be used for the linking. For now, this can only be the PILrequest.ipMetadata
: [Optional] The desired metadata for the newly minted NFT and newly registered IP.
request.ipMetadata.ipMetadataURI
[Optional] The URI of the metadata for the IP.request.ipMetadata.ipMetadataHash
[Optional] The hash of the metadata for the IP.request.ipMetadata.nftMetadataURI
[Optional] The URI of the metadata for the NFT.request.ipMetadata.nftMetadataHash
[Optional] The hash of the metadata for the IP NFT.request.deadline
: [Optional] The deadline for the signature in milliseconds. Defaults to 1000.Method | Type |
---|---|
batchRegisterDerivative | (request: BatchRegisterDerivativeRequest) => Promise<BatchRegisterDerivativeResponse> |
tokenUri
to
whatever is passed under ipMetadata.nftMetadataURI
.Method | Type |
---|---|
mintAndRegisterIpAndMakeDerivative | (request: MintAndRegisterIpAndMakeDerivativeRequest) => Promise<MintAndRegisterIpAndMakeDerivativeResponse> |
request.spgNftContract
: The address of the NFT collection.request.allowDuplicates
: [Optional] Set to true to allow minting IPs with the same NFT metadata. Default: truerequest.derivData
: The derivative data to be used for registerDerivative.
request.derivData.parentIpIds
: The IDs of the parent IPs to link the registered derivative IP.request.derivData.licenseTermsIds
: The IDs of the license terms to be used for the linking.request.derivData.maxMintingFee
: [Optional] The maximum minting fee that the caller is willing to pay. If set to 0, then there is no no limit. Default: 0request.derivData.maxRevenueShare
: [Optional] The maximum revenue share percentage agreed upon between a child and parent when a child is registering as derivative. Must be between 0 and 100. Default: 100request.derivData.maxRts
: [Optional] The maximum number of royalty tokens that can be distributed to the external royalty policies. Must be between 0 and 100,000,000. Default: 100_000_000request.derivData.licenseTemplate
: [Optional] The address of the license template to be used for the linking. For now, this can only be the PILrequest.ipMetadata
: [Optional] The desired metadata for the newly minted NFT and newly registered IP.
request.ipMetadata.ipMetadataURI
[Optional] The URI of the metadata for the IP.request.ipMetadata.ipMetadataHash
[Optional] The hash of the metadata for the IP.request.ipMetadata.nftMetadataURI
[Optional] The URI of the metadata for the NFT.request.ipMetadata.nftMetadataHash
[Optional] The hash of the metadata for the IP NFT.request.recipient
: [Optional] The address of the recipient of the minted NFT, default value is your wallet address.Method | Type |
---|---|
batchMintAndRegisterIpAndMakeDerivative | (request: BatchMintAndRegisterIpAndMakeDerivativeRequest) => Promise<BatchMintAndRegisterIpAndMakeDerivativeResponse> |
tokenUri
to
whatever is passed under ipMetadata.nftMetadataURI
.Method | Type |
---|---|
mintAndRegisterIp | (request: MintAndRegisterIpRequest) => Promise<RegisterIpResponse> |
request.spgNftContract
: The address of the NFT collection.request.allowDuplicates
: [Optional] Set to true to allow minting IPs with the same NFT metadata. Default: truerequest.recipient
: [Optional] The address of the recipient of the minted NFT, default value is your wallet address.request.ipMetadata
: [Optional] The desired metadata for the newly minted NFT and newly registered IP.
request.ipMetadata.ipMetadataURI
[Optional] The URI of the metadata for the IP.request.ipMetadata.ipMetadataHash
[Optional] The hash of the metadata for the IP.request.ipMetadata.nftMetadataURI
[Optional] The URI of the metadata for the NFT.request.ipMetadata.nftMetadataHash
[Optional] The hash of the metadata for the IP NFT.Method | Type |
---|---|
registerPilTermsAndAttach | (request: RegisterPilTermsAndAttachRequest) => Promise<RegisterPilTermsAndAttachResponse> |
request.ipId
: The ID of the IP.request.licenseTermsData[]
: The array of license terms to be attached.
request.licenseTermsData.terms
: See the LicenseTerms type.request.licenseTermsData.licensingConfig
: [Optional] See the LicensingConfig type. If none provided, it will default to the one shown here.request.deadline
: [Optional] The deadline for the signature in milliseconds. Defaults to 1000.tokenUri
to
whatever is passed under ipMetadata.nftMetadataURI
.Method | Type |
---|---|
mintAndRegisterIpAndMakeDerivativeWithLicenseTokens | (request: MintAndRegisterIpAndMakeDerivativeWithLicenseTokensRequest) => Promise<RegisterIpResponse> |
request.spgNftContract
: The address of the NFT collection.request.allowDuplicates
: [Optional] Set to true to allow minting IPs with the same NFT metadata. Default: truerequest.maxRts
: The maximum number of royalty tokens that can be distributed to the external royalty policies. Must be between 0 and 100,000,000. Recommended for simplicity: 100_000_000request.licenseTokenIds
: The IDs of the license tokens to be burned for linking the IP to parent IPs.request.ipMetadata
: [Optional] The desired metadata for the newly minted NFT and newly registered IP.
request.ipMetadata.ipMetadataURI
[Optional] The URI of the metadata for the IP.request.ipMetadata.ipMetadataHash
[Optional] The hash of the metadata for the IP.request.ipMetadata.nftMetadataURI
[Optional] The URI of the metadata for the NFT.request.ipMetadata.nftMetadataHash
[Optional] The hash of the metadata for the IP NFT.request.recipient
: [Optional] The address to receive the minted NFT, default value is your wallet address.tokenUri
to
whatever is passed under ipMetadata.nftMetadataURI
.Method | Type |
---|---|
registerIpAndMakeDerivativeWithLicenseTokens | (request: RegisterIpAndMakeDerivativeWithLicenseTokensRequest) => Promise<RegisterIpResponse> |
request.nftContract
: The address of the NFT collection.request.tokenId
: The ID of the NFT.request.maxRts
: The maximum number of royalty tokens that can be distributed to the external royalty policies. Must be between 0 and 100,000,000. Recommended for simplicity: 100_000_000request.licenseTokenIds
: The IDs of the license tokens to be burned for linking the IP to parent IPs.request.ipMetadata
: [Optional] The desired metadata for the newly minted NFT and newly registered IP.
request.ipMetadata.ipMetadataURI
[Optional] The URI of the metadata for the IP.request.ipMetadata.ipMetadataHash
[Optional] The hash of the metadata for the IP.request.ipMetadata.nftMetadataURI
[Optional] The URI of the metadata for the NFT.request.ipMetadata.nftMetadataHash
[Optional] The hash of the metadata for the IP NFT.request.deadline
: [Optional] The deadline for the signature in milliseconds. Default is 1000.wipOptions
parameterMethod | Type |
---|---|
batchRegisterIpAssetsWithOptimizedWorkflows | (request: BatchRegisterIpAssetsWithOptimizedWorkflowsRequest) => Promise<BatchRegisterIpAssetsWithOptimizedWorkflowsResponse> |
request.requests
: Array of registration requests. Each request can be any of the supported registration method types.request.wipOptions
: [Optional] Configuration options for WIP token handling.