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

# Create a Moment

> Simulate a moment creation without submitting an onchain transaction. Useful for validating inputs and estimating gas before committing.

This endpoint performs two validation steps:
1. **Contract simulation** — validates contract-level logic (no gas spent)
2. **UserOperation preparation** — validates at AA/paymaster level (no broadcast)

Uses the same request body schema as `POST /moment/create`.

> **Ready to create?** Use [POST /moment/create](/api-reference/moment/create) to broadcast the real transaction.



## OpenAPI

````yaml POST /moment/create/simulate
openapi: 3.1.0
info:
  title: In•Process API
  description: >-
    The In•Process API enables browsing and managing moments from timelines.
    Retrieve moments from a specific artist's timeline, browse the in•process
    collective timeline, or filter by collection. The API supports creating
    moments, managing collections, handling payments, and interacting with the
    In•Process protocol ecosystem.
  version: 1.0.0
servers:
  - url: https://api.inprocess.world/api
    description: Production server
security: []
paths:
  /moment/create/simulate:
    post:
      summary: Create a Moment
      description: >-
        Simulate a moment creation without submitting an onchain transaction.
        Useful for validating inputs and estimating gas before committing.


        This endpoint performs two validation steps:

        1. **Contract simulation** — validates contract-level logic (no gas
        spent)

        2. **UserOperation preparation** — validates at AA/paymaster level (no
        broadcast)


        Uses the same request body schema as `POST /moment/create`.


        > **Ready to create?** Use [POST
        /moment/create](/api-reference/moment/create) to broadcast the real
        transaction.
      operationId: simulateCreateMoment
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateMomentRequest'
      responses:
        '200':
          description: Successful simulation response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SimulateCreateMomentResponse'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security: []
components:
  schemas:
    CreateMomentRequest:
      type: object
      required:
        - contract
        - token
        - account
      properties:
        contract:
          $ref: '#/components/schemas/MomentContractInput'
        token:
          type: object
          required:
            - tokenMetadataURI
            - createReferral
            - salesConfig
            - mintToCreatorCount
          properties:
            tokenMetadataURI:
              type: string
              description: The URI pointing to the token's metadata (e.g., Arweave URI)
            createReferral:
              type: string
              description: >-
                The address that will receive referral rewards for this moment
                creation
            salesConfig:
              $ref: '#/components/schemas/SalesConfig'
            mintToCreatorCount:
              type: number
              description: >-
                Number of tokens to mint to the creator upon creation (typically
                1)
            payoutRecipient:
              type: string
              description: >-
                Optional address that will receive sale proceeds. If splits are
                configured, this will be automatically set to the splits
                contract address
            maxSupply:
              type: integer
              description: >-
                Optional maximum number of tokens that can be minted. Must be an
                integer >= 1. If not provided, the token will be an open edition
                with unlimited supply
              minimum: 1
        splits:
          type: array
          description: >-
            Optional revenue splits configuration. Must have at least 2
            recipients and sum to 100%
          items:
            $ref: '#/components/schemas/Split'
          minItems: 2
        account:
          type: string
          description: Creator's address
        chainId:
          type: integer
          description: >-
            Chain ID (optional; defaults to Base mainnet in production and Base
            Sepolia in preview or development)
          default: 8453
    SimulateCreateMomentResponse:
      type: object
      required:
        - contractSimulation
        - userOperation
      properties:
        contractSimulation:
          type: object
          required:
            - success
          properties:
            success:
              type: boolean
              description: Whether the contract-level simulation passed
        userOperation:
          type: object
          required:
            - userOpHash
            - status
          properties:
            userOpHash:
              type: string
              description: The user operation hash from the AA/paymaster preparation
            status:
              type: string
              description: Status of the prepared user operation
    Error:
      type: object
      required:
        - status
        - message
      properties:
        status:
          type: string
          enum:
            - error
          description: Error status
        message:
          type: string
          description: Error message
        errors:
          type: array
          description: >-
            Optional array of field-level validation errors. Typically included
            in 400 Bad Request responses for validation errors.
          items:
            type: object
            required:
              - field
              - message
            properties:
              field:
                type: string
                description: The field name that failed validation
              message:
                type: string
                description: The validation error message for this field
    MomentContractInput:
      type: object
      description: >-
        Collection target. Provide `address` to mint on an existing ERC-1155
        collection, or provide both `name` and `uri` to deploy a new collection
        in the same request.
      properties:
        address:
          type: string
          description: Existing collection contract address
        name:
          type: string
          description: >-
            New collection name (required together with `uri` when `address` is
            omitted)
        uri:
          type: string
          description: >-
            New collection metadata URI (required together with `name` when
            `address` is omitted)
    SalesConfig:
      type: object
      required:
        - type
        - pricePerToken
        - saleStart
        - saleEnd
      properties:
        type:
          type: string
          enum:
            - fixedPrice
            - erc20Mint
          description: The sale type
        pricePerToken:
          oneOf:
            - type: string
            - type: integer
            - type: number
          description: >-
            Price per token in wei (18 decimals), as a decimal integer string or
            JSON number. For example, "100000000000000000" or 100000000000000000
            represents 0.1 ETH
        saleStart:
          oneOf:
            - type: string
            - type: integer
            - type: number
          description: >-
            Sale start time: Unix timestamp as a decimal integer string or JSON
            number
        saleEnd:
          oneOf:
            - type: string
            - type: integer
            - type: number
          description: >-
            Sale end time: Unix timestamp as a decimal integer string or JSON
            number
        currency:
          type: string
          description: >-
            Optional ERC20 token address. If not provided, defaults to the
            native token (ETH)
    Split:
      type: object
      required:
        - address
        - percentAllocation
      properties:
        address:
          type: string
          description: Recipient address for revenue sharing
        percentAllocation:
          type: number
          description: Allocation percentage (0-100)
          minimum: 0
          maximum: 100

````