> ## Documentation Index
> Fetch the complete documentation index at: https://docs.crossmint.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Create IP Asset (Idempotent)

> Create a new IP Asset with a pre-computed id, or get an existing one if the id already exists

**API scope required**: `nfts.create`

<Warning>This API is still under development. Contact support for early access.</Warning>{" "}


## OpenAPI

````yaml put /v1/ip/collections/{collectionId}/ipassets/{customerFacingId}
openapi: 3.0.0
info:
  title: Crossmint Story API
  description: Crossmint Story API
  version: 1.0.0
  contact:
    name: Crossmint Support
    url: https://www.crossmint.com
    email: support@crossmint.com
servers:
  - url: https://staging.crossmint.com/api
    description: Staging environment (testnets)
security: []
tags: []
paths:
  /v1/ip/collections/{collectionId}/ipassets/{customerFacingId}:
    put:
      tags:
        - IP Story Protocol
      summary: Create IP Asset (Idempotent)
      description: >-
        Create a new IP Asset with a pre-computed id, or get an existing one if
        the id already exists


        **API scope required**: `nfts.create`
      operationId: StoryApiController-createIPAssetIdempotent-4
      parameters:
        - name: X-API-KEY
          in: header
          description: API key required for authentication
          required: true
          schema:
            type: string
        - name: collectionId
          required: true
          in: path
          schema:
            type: string
        - name: customerFacingId
          required: true
          in: path
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IPAssetCreationInputDto'
      responses:
        '200':
          description: IP Asset created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IPAssetResponseDto'
components:
  schemas:
    IPAssetCreationInputDto:
      type: object
      properties:
        owner:
          type: string
          description: |
            The owner (main creator) of the IP asset: Allowed formats: 

            `<chain>:<address>` or 

            `email:<email_address>:<chain>` or

            `userId:<userId>:<chain>` or

            `twitter:<twitter_handle>:<chain>`

            [see here for more info](/minting/advanced/specify-recipient)
          example: email:creator@example.com:story-testnet
        reuploadLinkedFiles:
          default: true
          description: >-
            Controls whether external files (like images) in the NFT metadata
            should be reuploaded to decentralized storage (IPFS) (true) or
            referenced with their original URLs (false). Default is True.
          type: boolean
          example: true
        licenseTerms:
          description: >-
            Licensing parameters for the IP asset, NOTE: For detailed and
            updated license terms, refer to the 'Get IP Asset License' endpoint
          type: array
          items:
            description: License parameters
            oneOf:
              - type: object
                properties:
                  type:
                    type: string
                    enum:
                      - non-commercial-social-remixing
                  offChain:
                    type: object
                    properties:
                      territory:
                        description: >-
                          Limit usage of the IP to certain regions and/or
                          countries. By default, the IP can be used globally.
                        type: array
                        items:
                          type: string
                        example: United States
                      channelsOfDistribution:
                        description: >-
                          Restrict usage of the IP to certain media formats and
                          channels of distribution. By default, the IP can be
                          used across all possible channels.
                        type: array
                        items:
                          type: string
                        example: television
                      attribution:
                        description: >-
                          If and how the original author should be credited for
                          usage of the IP. By default, no credit is required.
                        type: object
                        properties:
                          required:
                            type: boolean
                          instructions:
                            type: string
                        required:
                          - required
                        example:
                          required: true
                          instructions: 'Please credit as: Original work by [Author Name]'
                      contentStandards:
                        description: >-
                          Set content standards around use of the IP. By
                          default, no standards apply.
                        type: array
                        items:
                          type: string
                        example: No-Hate
                      sublicensable:
                        description: >-
                          If true, derivative works can grant the same rights
                          they received under this license to a 3rd party,
                          without approval from the original licensor.
                        type: boolean
                        example: false
                      aiLearningModels:
                        description: >-
                          Whether or not the IP can be used to develop AI
                          learning models. By default, the IP cannot be used for
                          such development.
                        type: boolean
                        example: false
                      restrictionOnCrossPlatformUse:
                        description: >-
                          If true, limits licensing and creation of derivative
                          works solely on the app on which the IP is made
                          available.
                        type: boolean
                        example: false
                      governingLaw:
                        description: >-
                          The laws of a certain jurisdiction by which this
                          license abides. By default, this is California, USA.
                        type: string
                        example: California, USA
                      alternativeDisputeResolution:
                        description: >-
                          Alternative dispute resolution mechanisms for handling
                          disagreements
                        type: object
                        properties:
                          method:
                            type: string
                          details:
                            type: string
                        required:
                          - method
                          - details
                        example:
                          method: Arbitration
                          details: >-
                            All disputes will be resolved through binding
                            arbitration in accordance with...
                      additionalTerms:
                        description: >-
                          Additional license parameters or terms the licensor
                          would like to specify
                        type: array
                        items:
                          type: object
                          properties:
                            term:
                              type: string
                            description:
                              type: string
                          required:
                            - term
                            - description
                        example:
                          term: Quality Control
                          description: >-
                            All derivative works must maintain similar quality
                            standards as the original work
                    description: >-
                      Additional license terms that are stored off-chain due to
                      their descriptive nature
                    example:
                      territory:
                        - Global
                      channelsOfDistribution:
                        - All
                      attribution:
                        required: true
                        instructions: Credit original creator in all derivative works
                      contentStandards:
                        - Suitable-for-All-Ages
                      sublicensable: false
                      aiLearningModels: false
                      restrictionOnCrossPlatformUse: false
                      governingLaw: California, USA
                  uri:
                    description: >-
                      License terms stored off-chain. If not provided, and if
                      'offChain' is also omitted, this will default to the
                      Non-Commercial Social Remixing license terms.
                    type: string
                    example: ipfs://<CID>
                required:
                  - type
                title: Non-commercial Social Remixing License Terms
                description: Non-commercial social remixing license terms
                example:
                  type: non-commercial-social-remixing
              - type: object
                properties:
                  type:
                    type: string
                    enum:
                      - commercial-use
                  terms:
                    type: object
                    properties:
                      defaultMintingFee:
                        type: number
                        description: Default minting fee
                        example: 100
                      currency:
                        default: '0x1514000000000000000000000000000000000000'
                        description: >-
                          Currency address (must be whitelisted in
                          RoyaltyModule.sol). Defaults to the $WIP token.
                          Whitelisted tokens: WIP
                          (0x1514000000000000000000000000000000000000) on all
                          networks, MERC20
                          (0xF2104833d386a2734a4eB3B8ad6FC6812F29E38E) on Aeneid
                          Testnet
                        type: string
                        example: '0x1514000000000000000000000000000000000000'
                    required:
                      - defaultMintingFee
                    title: Commercial Use License Terms
                    description: Commercial use license terms
                    example:
                      defaultMintingFee: 100
                      currency: '0x1514000000000000000000000000000000000000'
                  offChain:
                    type: object
                    properties:
                      territory:
                        description: >-
                          Limit usage of the IP to certain regions and/or
                          countries. By default, the IP can be used globally.
                        type: array
                        items:
                          type: string
                        example: United States
                      channelsOfDistribution:
                        description: >-
                          Restrict usage of the IP to certain media formats and
                          channels of distribution. By default, the IP can be
                          used across all possible channels.
                        type: array
                        items:
                          type: string
                        example: television
                      attribution:
                        description: >-
                          If and how the original author should be credited for
                          usage of the IP. By default, no credit is required.
                        type: object
                        properties:
                          required:
                            type: boolean
                          instructions:
                            type: string
                        required:
                          - required
                        example:
                          required: true
                          instructions: 'Please credit as: Original work by [Author Name]'
                      contentStandards:
                        description: >-
                          Set content standards around use of the IP. By
                          default, no standards apply.
                        type: array
                        items:
                          type: string
                        example: No-Hate
                      sublicensable:
                        description: >-
                          If true, derivative works can grant the same rights
                          they received under this license to a 3rd party,
                          without approval from the original licensor.
                        type: boolean
                        example: false
                      aiLearningModels:
                        description: >-
                          Whether or not the IP can be used to develop AI
                          learning models. By default, the IP cannot be used for
                          such development.
                        type: boolean
                        example: false
                      restrictionOnCrossPlatformUse:
                        description: >-
                          If true, limits licensing and creation of derivative
                          works solely on the app on which the IP is made
                          available.
                        type: boolean
                        example: false
                      governingLaw:
                        description: >-
                          The laws of a certain jurisdiction by which this
                          license abides. By default, this is California, USA.
                        type: string
                        example: California, USA
                      alternativeDisputeResolution:
                        description: >-
                          Alternative dispute resolution mechanisms for handling
                          disagreements
                        type: object
                        properties:
                          method:
                            type: string
                          details:
                            type: string
                        required:
                          - method
                          - details
                        example:
                          method: Arbitration
                          details: >-
                            All disputes will be resolved through binding
                            arbitration in accordance with...
                      additionalTerms:
                        description: >-
                          Additional license parameters or terms the licensor
                          would like to specify
                        type: array
                        items:
                          type: object
                          properties:
                            term:
                              type: string
                            description:
                              type: string
                          required:
                            - term
                            - description
                        example:
                          term: Quality Control
                          description: >-
                            All derivative works must maintain similar quality
                            standards as the original work
                    description: >-
                      Additional license terms that are stored off-chain due to
                      their descriptive nature
                    example:
                      territory:
                        - Global
                      channelsOfDistribution:
                        - All
                      attribution:
                        required: true
                        instructions: Credit original creator in all derivative works
                      contentStandards:
                        - Suitable-for-All-Ages
                      sublicensable: false
                      aiLearningModels: false
                      restrictionOnCrossPlatformUse: false
                      governingLaw: California, USA
                  uri:
                    description: >-
                      License terms stored off-chain. If not provided, and if
                      'offChain' is also omitted, this will default to the
                      Non-Commercial Social Remixing license terms.
                    type: string
                    example: ipfs://<CID>
                required:
                  - type
                  - terms
                title: Commercial Use License Terms
                description: Commercial use license terms
                example:
                  type: commercial-use
                  terms:
                    defaultMintingFee: 100
                    currency: '0x0000000000000000000000000000000000000000'
              - type: object
                properties:
                  type:
                    type: string
                    enum:
                      - commercial-remix
                  terms:
                    type: object
                    properties:
                      defaultMintingFee:
                        type: number
                        description: Default minting fee
                        example: 100
                      currency:
                        default: '0x1514000000000000000000000000000000000000'
                        description: >-
                          Currency address (must be whitelisted in
                          RoyaltyModule.sol). Defaults to the $WIP token.
                          Whitelisted tokens: WIP
                          (0x1514000000000000000000000000000000000000) on all
                          networks, MERC20
                          (0xF2104833d386a2734a4eB3B8ad6FC6812F29E38E) on Aeneid
                          Testnet
                        type: string
                        example: '0x1514000000000000000000000000000000000000'
                      commercialRevShare:
                        type: number
                        description: >-
                          Commercial revenue share percentage (number between 0
                          and 100)
                        example: 50
                    required:
                      - defaultMintingFee
                      - commercialRevShare
                    title: Commercial Remix License Terms
                    description: Commercial remix license terms
                    example:
                      defaultMintingFee: 100
                      currency: '0x1514000000000000000000000000000000000000'
                      commercialRevShare: 50
                  offChain:
                    type: object
                    properties:
                      territory:
                        description: >-
                          Limit usage of the IP to certain regions and/or
                          countries. By default, the IP can be used globally.
                        type: array
                        items:
                          type: string
                        example: United States
                      channelsOfDistribution:
                        description: >-
                          Restrict usage of the IP to certain media formats and
                          channels of distribution. By default, the IP can be
                          used across all possible channels.
                        type: array
                        items:
                          type: string
                        example: television
                      attribution:
                        description: >-
                          If and how the original author should be credited for
                          usage of the IP. By default, no credit is required.
                        type: object
                        properties:
                          required:
                            type: boolean
                          instructions:
                            type: string
                        required:
                          - required
                        example:
                          required: true
                          instructions: 'Please credit as: Original work by [Author Name]'
                      contentStandards:
                        description: >-
                          Set content standards around use of the IP. By
                          default, no standards apply.
                        type: array
                        items:
                          type: string
                        example: No-Hate
                      sublicensable:
                        description: >-
                          If true, derivative works can grant the same rights
                          they received under this license to a 3rd party,
                          without approval from the original licensor.
                        type: boolean
                        example: false
                      aiLearningModels:
                        description: >-
                          Whether or not the IP can be used to develop AI
                          learning models. By default, the IP cannot be used for
                          such development.
                        type: boolean
                        example: false
                      restrictionOnCrossPlatformUse:
                        description: >-
                          If true, limits licensing and creation of derivative
                          works solely on the app on which the IP is made
                          available.
                        type: boolean
                        example: false
                      governingLaw:
                        description: >-
                          The laws of a certain jurisdiction by which this
                          license abides. By default, this is California, USA.
                        type: string
                        example: California, USA
                      alternativeDisputeResolution:
                        description: >-
                          Alternative dispute resolution mechanisms for handling
                          disagreements
                        type: object
                        properties:
                          method:
                            type: string
                          details:
                            type: string
                        required:
                          - method
                          - details
                        example:
                          method: Arbitration
                          details: >-
                            All disputes will be resolved through binding
                            arbitration in accordance with...
                      additionalTerms:
                        description: >-
                          Additional license parameters or terms the licensor
                          would like to specify
                        type: array
                        items:
                          type: object
                          properties:
                            term:
                              type: string
                            description:
                              type: string
                          required:
                            - term
                            - description
                        example:
                          term: Quality Control
                          description: >-
                            All derivative works must maintain similar quality
                            standards as the original work
                    description: >-
                      Additional license terms that are stored off-chain due to
                      their descriptive nature
                    example:
                      territory:
                        - Global
                      channelsOfDistribution:
                        - All
                      attribution:
                        required: true
                        instructions: Credit original creator in all derivative works
                      contentStandards:
                        - Suitable-for-All-Ages
                      sublicensable: false
                      aiLearningModels: false
                      restrictionOnCrossPlatformUse: false
                      governingLaw: California, USA
                  uri:
                    description: >-
                      License terms stored off-chain. If not provided, and if
                      'offChain' is also omitted, this will default to the
                      Non-Commercial Social Remixing license terms.
                    type: string
                    example: ipfs://<CID>
                required:
                  - type
                  - terms
                title: Commercial Remix License Terms
                description: Commercial remix license terms
                example:
                  type: commercial-remix
                  terms:
                    defaultMintingFee: 100
                    currency: '0x0000000000000000000000000000000000000000'
                    commercialRevShare: 50
        nftMetadata:
          type: object
          properties:
            name:
              type: string
            image:
              type: string
            description:
              type: string
              maxLength: 5000
            external_url:
              type: string
            animation_url:
              type: string
            attributes:
              type: array
              items:
                type: object
                properties:
                  trait_type:
                    type: string
                  value:
                    anyOf:
                      - type: string
                      - type: number
                  display_type:
                    type: string
                required:
                  - trait_type
                  - value
            uri:
              type: string
          description: Metadata for the NFT representation of this IP asset
          example:
            name: 'Art #123'
            description: A unique story NFT
            image: https://example.com/nft/123.png
        ipAssetMetadata:
          type: object
          properties:
            title:
              type: string
              description: Title of the IP
            description:
              description: Description of the IP
              type: string
            createdAt:
              description: Creation date of the IP (ISO8601 or unix format)
              type: string
            image:
              description: Primary image URL for the IP asset
              type: string
            imageHash:
              description: Hash of the primary image
              type: string
            mediaUrl:
              description: Primary media URL for the IP asset
              type: string
            mediaHash:
              description: Hash of the primary media
              type: string
            mediaType:
              description: MIME type of the primary media
              type: string
            relationships:
              description: >-
                The detailed relationship info with the IPA's direct parent
                asset, such as APPEARS_IN, FINETUNED_FROM, etc. See more
                examples
                https://docs.story.foundation/docs/ipa-metadata-standard#relationship-types
              type: array
              items:
                type: object
                properties:
                  type:
                    type: string
                  parentIpId:
                    type: string
                required:
                  - type
                  - parentIpId
              example:
                type: FOLLOWS_FROM
                parentIpId: '0x123'
            creators:
              type: array
              items:
                type: object
                properties:
                  name:
                    type: string
                  email:
                    description: The creator of the IP asset email
                    type: string
                    example: creator@example.com
                  crossmintUserLocator:
                    description: >
                      A internal locator for the creator of the IP asset,
                      crossmint will automatically map this to the correct
                      wallet address, not required if address is specified, is
                      always required for the main creator(owner): Allowed
                      formats: 


                      `<chain>:<address>` or 


                      `email:<email_address>:<chain>` or


                      `userId:<userId>:<chain>` or


                      `twitter:<twitter_handle>:<chain>`


                      [see here for more
                      info](/minting/advanced/specify-recipient)
                    type: string
                    example: email:creator@example.com:story-testnet
                  address:
                    description: >-
                      Wallet address of the IP creator. This field is optional
                      only if a crossmint user locator is specified
                    type: string
                    example: '0x1234567890123456789012345678901234567890'
                  contributionPercent:
                    type: number
                    minimum: 0
                    maximum: 100
                  description:
                    type: string
                  image:
                    type: string
                  socialMedia:
                    type: array
                    items:
                      type: object
                      properties:
                        platform:
                          type: string
                        url:
                          type: string
                      required:
                        - platform
                        - url
                      description: Social media link for IP creator
                      example:
                        platform: Twitter
                        url: https://twitter.com/creator
                  role:
                    type: string
                required:
                  - name
                  - contributionPercent
                description: IP creator metadata
                example:
                  name: John Doe
                  email: JohnDoe@example.com
                  address: '0x1234567890123456789012345678901234567890'
                  contributionPercent: 50
                  description: Lead Artist
                  image: https://example.com/profile.jpg
                  socialMedia:
                    - platform: Twitter
                      url: https://twitter.com/johndoe
                  role: Artist
              description: Information about the IP creators
            media:
              description: Supporting media assets
              type: array
              items:
                type: object
                properties:
                  name:
                    type: string
                  url:
                    type: string
                  mimeType:
                    type: string
                required:
                  - name
                  - url
                  - mimeType
                description: IP media asset metadata
                example:
                  name: Rise Again
                  url: >-
                    https://cdn1.suno.ai/937e3060-65c0-4934-acab-7d8cc05eb9a6.mp3
                  mimeType: audio/mpeg
            watermarkImage:
              description: >-
                A separate image with your watermark already applied. This way
                apps choosing to use it can render this version of the image
                (with watermark applied).
              type: string
            attributes:
              description: >-
                An array of key-value pairs that can be used for arbitrary
                mappings. Attribute type defined below.
              type: array
              items:
                type: object
                properties:
                  key:
                    type: string
                  value:
                    anyOf:
                      - type: string
                      - type: number
                required:
                  - key
                  - value
            ipType:
              description: >-
                Type of the IP Asset, can be defined arbitrarily by the creator.
                I.e. "character", "chapter", "location", "items", "music", etc
              type: string
            tags:
              description: Any tags that can help surface this IPA
              type: array
              items:
                type: string
            robotTerms:
              description: Allows you to set Do Not Train for a specific agent
              type: object
              properties:
                userAgent:
                  type: string
                allow:
                  type: string
              required:
                - userAgent
                - allow
          description: Metadata containing information about the IP asset itself
          example:
            title: Harry Potter and the Philosopher's Stone
            createdAt: '1997-06-26T00:00:00'
            ipType: literature
            image: https://example.com/book-cover.jpg
            imageHash: '0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef'
            mediaUrl: link_to_epub
            mediaHash: '0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef'
            mediaType: application/epub+zip
            creators:
              - name: JK Rowling
                email: JKRowling@example.com
                crossmintUserLocator: email:JKRowling@example.com:story
                description: Author
                contributionPercent: 80
                socialMedia:
                  - platform: Wikipedia
                    url: https://en.wikipedia.org/wiki/J._K._Rowling
              - name: Thomas Taylor
                address: '0x1234567890123456789012345678901234567890'
                description: Illustrator
                contributionPercent: 15
              - name: Bloomsbury Publishing
                email: BloomsburyPublishing@example.com
                address: '0x1234567890123456789012345678901234567890'
                description: Publisher
                contributionPercent: 5
                socialMedia:
                  - platform: Website
                    url: https://www.bloomsbury.com/
            media:
              - name: ePub
                url: link_to_epub
                mimeType: application/epub+zip
              - name: Book Summary PDF
                url: link_to_book_summary_pdf
                mimeType: application/pdf
            attributes:
              - key: ISBN
                value: 978-0-7475-3269-0
              - key: Genre
                value: Fantasy
        derivData:
          description: >-
            Data for the parent IP asset and license terms (for derivative IP
            assets only)
          type: object
          properties:
            parentIpIds:
              type: array
              items: {}
              description: The parent IP IDs of the derivative IP asset
              example: '0x123'
            licenseTermsIds:
              type: array
              items:
                type: number
              description: The license terms IDs of the derivative IP asset
              example: 1
            maxMintingFee:
              default: 0
              description: The max minting fee of the derivative IP asset
              type: number
              example: 0
            maxRevenueShare:
              default: 100
              description: The max revenue share of the derivative IP asset
              type: number
              example: 100
            maxRts:
              default: 100000000
              description: The max RTS of the derivative IP asset
              type: number
              example: 10000
          example:
            parentIpIds:
              - '0x123'
            licenseTermsIds:
              - 1
        sendNotification:
          anyOf:
            - type: boolean
              description: >-
                Whether to send a notification to the custodial wallet address,
                or the recipient if it was minted to an email address.
            - type: object
              properties:
                recipientEmail:
                  type: string
                  format: email
                  pattern: >-
                    ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$
                  description: The email address to send the notification to.
              required:
                - recipientEmail
        locale:
          description: The locale for the recipient's notification.
          type: string
          enum:
            - en-US
            - es-ES
            - fr-FR
            - it-IT
            - ko-KR
            - pt-PT
            - ja-JP
            - zh-CN
            - zh-TW
            - de-DE
            - ru-RU
            - tr-TR
            - uk-UA
            - th-TH
            - vi-VN
            - Klingon
      required:
        - owner
        - nftMetadata
        - ipAssetMetadata
        - derivData
    IPAssetResponseDto:
      type: object
      properties:
        id:
          type: string
          description: The id of the IPAsset
          example: d290f1ee-6c54-4b01-90e6-d701748f0851
        actionId:
          type: string
          description: The action id for the IPAsset creation
          example: d290f1ee-6c54-4b01-90e6-d701748f0851
        nftMetadata:
          type: object
          properties:
            name:
              type: string
            image:
              type: string
            description:
              type: string
              maxLength: 5000
            external_url:
              type: string
            animation_url:
              type: string
            attributes:
              type: array
              items:
                type: object
                properties:
                  trait_type:
                    type: string
                  value:
                    anyOf:
                      - type: string
                      - type: number
                  display_type:
                    type: string
                required:
                  - trait_type
                  - value
            uri:
              type: string
          description: Metadata for the NFT representation of this IP asset
          example:
            name: 'Art #123'
            description: A unique story NFT
            image: https://example.com/nft/123.png
        ipAssetMetadata:
          type: object
          properties:
            title:
              type: string
              description: Title of the IP
            description:
              description: Description of the IP
              type: string
            createdAt:
              description: Creation date of the IP (ISO8601 or unix format)
              type: string
            image:
              description: Primary image URL for the IP asset
              type: string
            imageHash:
              description: Hash of the primary image
              type: string
            mediaUrl:
              description: Primary media URL for the IP asset
              type: string
            mediaHash:
              description: Hash of the primary media
              type: string
            mediaType:
              description: MIME type of the primary media
              type: string
            relationships:
              description: >-
                The detailed relationship info with the IPA's direct parent
                asset, such as APPEARS_IN, FINETUNED_FROM, etc. See more
                examples
                https://docs.story.foundation/docs/ipa-metadata-standard#relationship-types
              type: array
              items:
                type: object
                properties:
                  type:
                    type: string
                  parentIpId:
                    type: string
                required:
                  - type
                  - parentIpId
              example:
                type: FOLLOWS_FROM
                parentIpId: '0x123'
            creators:
              type: array
              items:
                type: object
                properties:
                  name:
                    type: string
                  email:
                    description: The creator of the IP asset email
                    type: string
                    example: creator@example.com
                  crossmintUserLocator:
                    description: >
                      A internal locator for the creator of the IP asset,
                      crossmint will automatically map this to the correct
                      wallet address, not required if address is specified, is
                      always required for the main creator(owner): Allowed
                      formats: 


                      `<chain>:<address>` or 


                      `email:<email_address>:<chain>` or


                      `userId:<userId>:<chain>` or


                      `twitter:<twitter_handle>:<chain>`


                      [see here for more
                      info](/minting/advanced/specify-recipient)
                    type: string
                    example: email:creator@example.com:story-testnet
                  address:
                    description: >-
                      Wallet address of the IP creator. This field is optional
                      only if a crossmint user locator is specified
                    type: string
                    example: '0x1234567890123456789012345678901234567890'
                  contributionPercent:
                    type: number
                    minimum: 0
                    maximum: 100
                  description:
                    type: string
                  image:
                    type: string
                  socialMedia:
                    type: array
                    items:
                      type: object
                      properties:
                        platform:
                          type: string
                        url:
                          type: string
                      required:
                        - platform
                        - url
                      description: Social media link for IP creator
                      example:
                        platform: Twitter
                        url: https://twitter.com/creator
                  role:
                    type: string
                required:
                  - name
                  - contributionPercent
                description: IP creator metadata
                example:
                  name: John Doe
                  email: JohnDoe@example.com
                  address: '0x1234567890123456789012345678901234567890'
                  contributionPercent: 50
                  description: Lead Artist
                  image: https://example.com/profile.jpg
                  socialMedia:
                    - platform: Twitter
                      url: https://twitter.com/johndoe
                  role: Artist
              description: Information about the IP creators
            media:
              description: Supporting media assets
              type: array
              items:
                type: object
                properties:
                  name:
                    type: string
                  url:
                    type: string
                  mimeType:
                    type: string
                required:
                  - name
                  - url
                  - mimeType
                description: IP media asset metadata
                example:
                  name: Rise Again
                  url: >-
                    https://cdn1.suno.ai/937e3060-65c0-4934-acab-7d8cc05eb9a6.mp3
                  mimeType: audio/mpeg
            watermarkImage:
              description: >-
                A separate image with your watermark already applied. This way
                apps choosing to use it can render this version of the image
                (with watermark applied).
              type: string
            attributes:
              description: >-
                An array of key-value pairs that can be used for arbitrary
                mappings. Attribute type defined below.
              type: array
              items:
                type: object
                properties:
                  key:
                    type: string
                  value:
                    anyOf:
                      - type: string
                      - type: number
                required:
                  - key
                  - value
            ipType:
              description: >-
                Type of the IP Asset, can be defined arbitrarily by the creator.
                I.e. "character", "chapter", "location", "items", "music", etc
              type: string
            tags:
              description: Any tags that can help surface this IPA
              type: array
              items:
                type: string
            robotTerms:
              description: Allows you to set Do Not Train for a specific agent
              type: object
              properties:
                userAgent:
                  type: string
                allow:
                  type: string
              required:
                - userAgent
                - allow
          description: Metadata containing information about the IP asset itself
          example:
            title: Harry Potter and the Philosopher's Stone
            createdAt: '1997-06-26T00:00:00'
            ipType: literature
            image: https://example.com/book-cover.jpg
            imageHash: '0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef'
            mediaUrl: link_to_epub
            mediaHash: '0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef'
            mediaType: application/epub+zip
            creators:
              - name: JK Rowling
                email: JKRowling@example.com
                crossmintUserLocator: email:JKRowling@example.com:story
                description: Author
                contributionPercent: 80
                socialMedia:
                  - platform: Wikipedia
                    url: https://en.wikipedia.org/wiki/J._K._Rowling
              - name: Thomas Taylor
                address: '0x1234567890123456789012345678901234567890'
                description: Illustrator
                contributionPercent: 15
              - name: Bloomsbury Publishing
                email: BloomsburyPublishing@example.com
                address: '0x1234567890123456789012345678901234567890'
                description: Publisher
                contributionPercent: 5
                socialMedia:
                  - platform: Website
                    url: https://www.bloomsbury.com/
            media:
              - name: ePub
                url: link_to_epub
                mimeType: application/epub+zip
              - name: Book Summary PDF
                url: link_to_book_summary_pdf
                mimeType: application/pdf
            attributes:
              - key: ISBN
                value: 978-0-7475-3269-0
              - key: Genre
                value: Fantasy
        licenseTerms:
          description: >-
            Licensing parameters for the IP asset, NOTE: For detailed and
            updated license terms, refer to the 'Get IP Asset License' endpoint
          type: array
          items:
            description: License parameters
            oneOf:
              - type: object
                properties:
                  type:
                    type: string
                    enum:
                      - non-commercial-social-remixing
                  offChain:
                    type: object
                    properties:
                      territory:
                        description: >-
                          Limit usage of the IP to certain regions and/or
                          countries. By default, the IP can be used globally.
                        type: array
                        items:
                          type: string
                        example: United States
                      channelsOfDistribution:
                        description: >-
                          Restrict usage of the IP to certain media formats and
                          channels of distribution. By default, the IP can be
                          used across all possible channels.
                        type: array
                        items:
                          type: string
                        example: television
                      attribution:
                        description: >-
                          If and how the original author should be credited for
                          usage of the IP. By default, no credit is required.
                        type: object
                        properties:
                          required:
                            type: boolean
                          instructions:
                            type: string
                        required:
                          - required
                        example:
                          required: true
                          instructions: 'Please credit as: Original work by [Author Name]'
                      contentStandards:
                        description: >-
                          Set content standards around use of the IP. By
                          default, no standards apply.
                        type: array
                        items:
                          type: string
                        example: No-Hate
                      sublicensable:
                        description: >-
                          If true, derivative works can grant the same rights
                          they received under this license to a 3rd party,
                          without approval from the original licensor.
                        type: boolean
                        example: false
                      aiLearningModels:
                        description: >-
                          Whether or not the IP can be used to develop AI
                          learning models. By default, the IP cannot be used for
                          such development.
                        type: boolean
                        example: false
                      restrictionOnCrossPlatformUse:
                        description: >-
                          If true, limits licensing and creation of derivative
                          works solely on the app on which the IP is made
                          available.
                        type: boolean
                        example: false
                      governingLaw:
                        description: >-
                          The laws of a certain jurisdiction by which this
                          license abides. By default, this is California, USA.
                        type: string
                        example: California, USA
                      alternativeDisputeResolution:
                        description: >-
                          Alternative dispute resolution mechanisms for handling
                          disagreements
                        type: object
                        properties:
                          method:
                            type: string
                          details:
                            type: string
                        required:
                          - method
                          - details
                        example:
                          method: Arbitration
                          details: >-
                            All disputes will be resolved through binding
                            arbitration in accordance with...
                      additionalTerms:
                        description: >-
                          Additional license parameters or terms the licensor
                          would like to specify
                        type: array
                        items:
                          type: object
                          properties:
                            term:
                              type: string
                            description:
                              type: string
                          required:
                            - term
                            - description
                        example:
                          term: Quality Control
                          description: >-
                            All derivative works must maintain similar quality
                            standards as the original work
                    description: >-
                      Additional license terms that are stored off-chain due to
                      their descriptive nature
                    example:
                      territory:
                        - Global
                      channelsOfDistribution:
                        - All
                      attribution:
                        required: true
                        instructions: Credit original creator in all derivative works
                      contentStandards:
                        - Suitable-for-All-Ages
                      sublicensable: false
                      aiLearningModels: false
                      restrictionOnCrossPlatformUse: false
                      governingLaw: California, USA
                  uri:
                    description: >-
                      License terms stored off-chain. If not provided, and if
                      'offChain' is also omitted, this will default to the
                      Non-Commercial Social Remixing license terms.
                    type: string
                    example: ipfs://<CID>
                required:
                  - type
                title: Non-commercial Social Remixing License Terms
                description: Non-commercial social remixing license terms
                example:
                  type: non-commercial-social-remixing
              - type: object
                properties:
                  type:
                    type: string
                    enum:
                      - commercial-use
                  terms:
                    type: object
                    properties:
                      defaultMintingFee:
                        type: number
                        description: Default minting fee
                        example: 100
                      currency:
                        default: '0x1514000000000000000000000000000000000000'
                        description: >-
                          Currency address (must be whitelisted in
                          RoyaltyModule.sol). Defaults to the $WIP token.
                          Whitelisted tokens: WIP
                          (0x1514000000000000000000000000000000000000) on all
                          networks, MERC20
                          (0xF2104833d386a2734a4eB3B8ad6FC6812F29E38E) on Aeneid
                          Testnet
                        type: string
                        example: '0x1514000000000000000000000000000000000000'
                    required:
                      - defaultMintingFee
                    title: Commercial Use License Terms
                    description: Commercial use license terms
                    example:
                      defaultMintingFee: 100
                      currency: '0x1514000000000000000000000000000000000000'
                  offChain:
                    type: object
                    properties:
                      territory:
                        description: >-
                          Limit usage of the IP to certain regions and/or
                          countries. By default, the IP can be used globally.
                        type: array
                        items:
                          type: string
                        example: United States
                      channelsOfDistribution:
                        description: >-
                          Restrict usage of the IP to certain media formats and
                          channels of distribution. By default, the IP can be
                          used across all possible channels.
                        type: array
                        items:
                          type: string
                        example: television
                      attribution:
                        description: >-
                          If and how the original author should be credited for
                          usage of the IP. By default, no credit is required.
                        type: object
                        properties:
                          required:
                            type: boolean
                          instructions:
                            type: string
                        required:
                          - required
                        example:
                          required: true
                          instructions: 'Please credit as: Original work by [Author Name]'
                      contentStandards:
                        description: >-
                          Set content standards around use of the IP. By
                          default, no standards apply.
                        type: array
                        items:
                          type: string
                        example: No-Hate
                      sublicensable:
                        description: >-
                          If true, derivative works can grant the same rights
                          they received under this license to a 3rd party,
                          without approval from the original licensor.
                        type: boolean
                        example: false
                      aiLearningModels:
                        description: >-
                          Whether or not the IP can be used to develop AI
                          learning models. By default, the IP cannot be used for
                          such development.
                        type: boolean
                        example: false
                      restrictionOnCrossPlatformUse:
                        description: >-
                          If true, limits licensing and creation of derivative
                          works solely on the app on which the IP is made
                          available.
                        type: boolean
                        example: false
                      governingLaw:
                        description: >-
                          The laws of a certain jurisdiction by which this
                          license abides. By default, this is California, USA.
                        type: string
                        example: California, USA
                      alternativeDisputeResolution:
                        description: >-
                          Alternative dispute resolution mechanisms for handling
                          disagreements
                        type: object
                        properties:
                          method:
                            type: string
                          details:
                            type: string
                        required:
                          - method
                          - details
                        example:
                          method: Arbitration
                          details: >-
                            All disputes will be resolved through binding
                            arbitration in accordance with...
                      additionalTerms:
                        description: >-
                          Additional license parameters or terms the licensor
                          would like to specify
                        type: array
                        items:
                          type: object
                          properties:
                            term:
                              type: string
                            description:
                              type: string
                          required:
                            - term
                            - description
                        example:
                          term: Quality Control
                          description: >-
                            All derivative works must maintain similar quality
                            standards as the original work
                    description: >-
                      Additional license terms that are stored off-chain due to
                      their descriptive nature
                    example:
                      territory:
                        - Global
                      channelsOfDistribution:
                        - All
                      attribution:
                        required: true
                        instructions: Credit original creator in all derivative works
                      contentStandards:
                        - Suitable-for-All-Ages
                      sublicensable: false
                      aiLearningModels: false
                      restrictionOnCrossPlatformUse: false
                      governingLaw: California, USA
                  uri:
                    description: >-
                      License terms stored off-chain. If not provided, and if
                      'offChain' is also omitted, this will default to the
                      Non-Commercial Social Remixing license terms.
                    type: string
                    example: ipfs://<CID>
                required:
                  - type
                  - terms
                title: Commercial Use License Terms
                description: Commercial use license terms
                example:
                  type: commercial-use
                  terms:
                    defaultMintingFee: 100
                    currency: '0x0000000000000000000000000000000000000000'
              - type: object
                properties:
                  type:
                    type: string
                    enum:
                      - commercial-remix
                  terms:
                    type: object
                    properties:
                      defaultMintingFee:
                        type: number
                        description: Default minting fee
                        example: 100
                      currency:
                        default: '0x1514000000000000000000000000000000000000'
                        description: >-
                          Currency address (must be whitelisted in
                          RoyaltyModule.sol). Defaults to the $WIP token.
                          Whitelisted tokens: WIP
                          (0x1514000000000000000000000000000000000000) on all
                          networks, MERC20
                          (0xF2104833d386a2734a4eB3B8ad6FC6812F29E38E) on Aeneid
                          Testnet
                        type: string
                        example: '0x1514000000000000000000000000000000000000'
                      commercialRevShare:
                        type: number
                        description: >-
                          Commercial revenue share percentage (number between 0
                          and 100)
                        example: 50
                    required:
                      - defaultMintingFee
                      - commercialRevShare
                    title: Commercial Remix License Terms
                    description: Commercial remix license terms
                    example:
                      defaultMintingFee: 100
                      currency: '0x1514000000000000000000000000000000000000'
                      commercialRevShare: 50
                  offChain:
                    type: object
                    properties:
                      territory:
                        description: >-
                          Limit usage of the IP to certain regions and/or
                          countries. By default, the IP can be used globally.
                        type: array
                        items:
                          type: string
                        example: United States
                      channelsOfDistribution:
                        description: >-
                          Restrict usage of the IP to certain media formats and
                          channels of distribution. By default, the IP can be
                          used across all possible channels.
                        type: array
                        items:
                          type: string
                        example: television
                      attribution:
                        description: >-
                          If and how the original author should be credited for
                          usage of the IP. By default, no credit is required.
                        type: object
                        properties:
                          required:
                            type: boolean
                          instructions:
                            type: string
                        required:
                          - required
                        example:
                          required: true
                          instructions: 'Please credit as: Original work by [Author Name]'
                      contentStandards:
                        description: >-
                          Set content standards around use of the IP. By
                          default, no standards apply.
                        type: array
                        items:
                          type: string
                        example: No-Hate
                      sublicensable:
                        description: >-
                          If true, derivative works can grant the same rights
                          they received under this license to a 3rd party,
                          without approval from the original licensor.
                        type: boolean
                        example: false
                      aiLearningModels:
                        description: >-
                          Whether or not the IP can be used to develop AI
                          learning models. By default, the IP cannot be used for
                          such development.
                        type: boolean
                        example: false
                      restrictionOnCrossPlatformUse:
                        description: >-
                          If true, limits licensing and creation of derivative
                          works solely on the app on which the IP is made
                          available.
                        type: boolean
                        example: false
                      governingLaw:
                        description: >-
                          The laws of a certain jurisdiction by which this
                          license abides. By default, this is California, USA.
                        type: string
                        example: California, USA
                      alternativeDisputeResolution:
                        description: >-
                          Alternative dispute resolution mechanisms for handling
                          disagreements
                        type: object
                        properties:
                          method:
                            type: string
                          details:
                            type: string
                        required:
                          - method
                          - details
                        example:
                          method: Arbitration
                          details: >-
                            All disputes will be resolved through binding
                            arbitration in accordance with...
                      additionalTerms:
                        description: >-
                          Additional license parameters or terms the licensor
                          would like to specify
                        type: array
                        items:
                          type: object
                          properties:
                            term:
                              type: string
                            description:
                              type: string
                          required:
                            - term
                            - description
                        example:
                          term: Quality Control
                          description: >-
                            All derivative works must maintain similar quality
                            standards as the original work
                    description: >-
                      Additional license terms that are stored off-chain due to
                      their descriptive nature
                    example:
                      territory:
                        - Global
                      channelsOfDistribution:
                        - All
                      attribution:
                        required: true
                        instructions: Credit original creator in all derivative works
                      contentStandards:
                        - Suitable-for-All-Ages
                      sublicensable: false
                      aiLearningModels: false
                      restrictionOnCrossPlatformUse: false
                      governingLaw: California, USA
                  uri:
                    description: >-
                      License terms stored off-chain. If not provided, and if
                      'offChain' is also omitted, this will default to the
                      Non-Commercial Social Remixing license terms.
                    type: string
                    example: ipfs://<CID>
                required:
                  - type
                  - terms
                title: Commercial Remix License Terms
                description: Commercial remix license terms
                example:
                  type: commercial-remix
                  terms:
                    defaultMintingFee: 100
                    currency: '0x0000000000000000000000000000000000000000'
                    commercialRevShare: 50
        derivData:
          description: >-
            Data for the parent IP asset and license terms (for derivative IP
            assets only)
          type: object
          properties:
            parentIpIds:
              type: array
              items: {}
              description: The parent IP IDs of the derivative IP asset
              example: '0x123'
            licenseTermsIds:
              type: array
              items:
                type: number
              description: The license terms IDs of the derivative IP asset
              example: 1
            maxMintingFee:
              default: 0
              description: The max minting fee of the derivative IP asset
              type: number
              example: 0
            maxRevenueShare:
              default: 100
              description: The max revenue share of the derivative IP asset
              type: number
              example: 100
            maxRts:
              default: 100000000
              description: The max RTS of the derivative IP asset
              type: number
              example: 10000
          example:
            parentIpIds:
              - '0x123'
            licenseTermsIds:
              - 1
            maxMintingFee: 0
            maxRevenueShare: 100
            maxRts: 10000000
        onChain:
          oneOf:
            - type: object
              properties:
                chain:
                  type: string
                  description: The chain of the collection
                  example: story-testnet
                contractAddress:
                  description: The address of the collection on the chain
                  type: string
                  example: '0x123'
                status:
                  type: string
                  description: The status of the IP asset on the chain
                  enum:
                    - success
                  example: success
                ipAssetId:
                  type: string
                  description: >-
                    The id of the IP asset on the chain. This ID is also the
                    address of the IP Account that is bound to the IP Asset.
                  example: d290f1ee-6c54-4b01-90e6-d701748f0851
                tokenId:
                  type: string
                  description: The token id of the associatedNFT
                  example: '1'
                txId:
                  type: string
                  description: The transaction id of the IP asset creation on chain
                  example: '0x123'
                owner:
                  type: string
                  description: The owner of the IP asset
                  example: '0x123'
                explorerLink:
                  description: The explorer link of the ip asset
                  type: string
                  format: uri
                  example: >-
                    https://portal.story.foundation/assets/0xAC6062FF53fa41e61Fe01B89B83d9dB96b5F9280
              required:
                - chain
                - contractAddress
                - status
                - ipAssetId
                - tokenId
                - txId
                - owner
            - type: object
              properties:
                chain:
                  type: string
                  description: The chain of the collection
                  example: story-testnet
                contractAddress:
                  description: The address of the collection on the chain
                  type: string
                  example: '0x123'
                status:
                  type: string
                  description: The status of the IP asset on the chain
                  enum:
                    - pending
                  example: pending
              required:
                - chain
                - status
              description: Response schema for a pending IP asset creation request
              example:
                chain: story-testnet
                contractAddress: '0x123'
                status: pending
      required:
        - id
        - actionId
        - nftMetadata
        - ipAssetMetadata
        - derivData
        - onChain

````