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

# Retrieve fulfillment data for orders

> Retrieve signed fulfillment data based on the list of order IDs and corresponding fees.



## OpenAPI

````yaml https://imx-openapiv3-mr-sandbox.s3.us-east-2.amazonaws.com/openapi.json post /v1/chains/{chain_name}/orders/fulfillment-data
openapi: 3.0.3
info:
  title: Immutable zkEVM API
  version: 1.0.0
  description: Immutable Multi Rollup API
  contact:
    name: Immutable API Support
    email: support@immutable.com
    url: https://support.immutable.com
servers:
  - url: https://api.sandbox.immutable.com
security: []
tags:
  - name: activities
    description: Activities Endpoints
    x-displayName: activities
  - name: chains
    description: Chains Endpoints
    x-displayName: chains
  - name: collections
    description: Collections Endpoints
    x-displayName: collections
  - name: nfts
    description: NFTs Endpoints
    x-displayName: nfts
  - name: nft owners
    description: NFT Owner Endpoints
    x-displayName: nft owners
  - name: metadata
    description: NFT Metadata Endpoints
    x-displayName: metadata
  - name: tokens
    description: ERC20 Token Endpoints
    x-displayName: tokens
  - name: demopage
    description: Temporary HTML endpoint for demo purposes
    x-displayName: demopage
  - name: verification
    x-displayName: verification
  - name: operatorallowlist
    x-displayName: operatorallowlist
  - name: crafting
    x-displayName: crafting
  - name: listings
    description: Listings Endpoints
    x-displayName: listings
  - name: orders
    x-displayName: orders
  - name: passport
    description: Passport operations
    x-displayName: passport
  - name: gamefi
    description: team gamefi
    x-displayName: gamefi
  - name: health
    x-displayName: health
  - name: passport profile
    description: Passport Profile endpoints
    x-displayName: passport profile
  - name: feed-items
    x-displayName: feed-items
  - name: assets
    x-displayName: assets
  - name: guardian
    description: Guardian endpoints
    x-displayName: guardian
  - name: pricing
    description: Pricing Endpoints
    x-displayName: pricing
  - name: metadata-search
    x-displayName: metadata-search
paths:
  /v1/chains/{chain_name}/orders/fulfillment-data:
    post:
      tags:
        - orders
      summary: Retrieve fulfillment data for orders
      description: >-
        Retrieve signed fulfillment data based on the list of order IDs and
        corresponding fees.
      operationId: fulfillment_data
      parameters:
        - name: chain_name
          in: path
          required: true
          schema:
            $ref: '#/components/schemas/ChainName'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/FulfillmentDataRequest'
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: object
                    properties:
                      fulfillable_orders:
                        type: array
                        items:
                          $ref: '#/components/schemas/FulfillableOrder'
                      unfulfillable_orders:
                        type: array
                        items:
                          $ref: '#/components/schemas/UnfulfillableOrder'
                    required:
                      - fulfillable_orders
                      - unfulfillable_orders
                required:
                  - result
        '400':
          $ref: '#/components/responses/BadRequest'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
        '504':
          $ref: '#/components/responses/GatewayTimeout'
components:
  schemas:
    ChainName:
      type: string
      description: The name of chain
      example: imtbl-zkevm-testnet
    FulfillmentDataRequest:
      type: object
      properties:
        order_id:
          type: string
          format: uuid
        taker_address:
          type: string
          description: Address of the intended account fulfilling the order
          example: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266'
          pattern: ^0x[a-fA-F0-9]{40}$
        fees:
          type: array
          items:
            $ref: '#/components/schemas/Fee'
          example:
            - type: TAKER_ECOSYSTEM
              amount: '2250000000000000000'
              recipient_address: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92233'
          minItems: 0
          maxItems: 2
        token_id:
          type: string
          description: >-
            Token ID for the ERC721 or ERC1155 token when fulfilling a
            collection order
          example: '123'
          pattern: \d+
      required:
        - order_id
        - fees
        - taker_address
    FulfillableOrder:
      type: object
      properties:
        order:
          $ref: '#/components/schemas/Order'
        token_id:
          type: string
          description: >-
            Token ID for the ERC721 or ERC1155 token when fulfilling a
            collection order
          example: '123'
          pattern: \d+
        extra_data:
          type: string
      required:
        - extra_data
        - order
    UnfulfillableOrder:
      type: object
      properties:
        order_id:
          type: string
          description: OrderID for the requested but unfulfillable order
          example: 7df3e99e-f7b3-459c-bef6-ffb66a18bb59
        token_id:
          type: string
          description: >-
            Token ID for the ERC721 or ERC1155 token when fulfilling a
            collection order
          example: '123'
          pattern: \d+
        reason:
          type: string
          description: >-
            Nullable string containing error reason if the signing is
            unsuccessful for the order
          example: >-
            Invalid order status INACTIVE for order
            7df3e99e-f7b3-459c-bef6-ffb66a18bb59
      required:
        - reason
        - order_id
    Fee:
      type: object
      properties:
        amount:
          type: string
          description: Fee payable to recipient upon settlement
          example: '2250000000000000000'
          pattern: \d+
        type:
          type: string
          description: Fee type
          example: ROYALTY
          enum:
            - ROYALTY
            - MAKER_ECOSYSTEM
            - TAKER_ECOSYSTEM
            - PROTOCOL
        recipient_address:
          type: string
          description: Wallet address of fee recipient
          example: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92233'
          pattern: ^0x[a-fA-F0-9]{40}$
      example:
        amount: '2250000000000000000'
        type: ROYALTY
        recipient_address: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92233'
      required:
        - type
        - amount
        - recipient_address
    Order:
      type: object
      properties:
        account_address:
          type: string
          example: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266'
        buy:
          type: array
          items:
            $ref: '#/components/schemas/Item'
          example:
            - type: NATIVE
              amount: '9750000000000000000'
              contract_address: '0x0165878A594ca255338adfa4d48449f69242Eb8F'
          minItems: 1
          maxItems: 1
        fees:
          type: array
          items:
            $ref: '#/components/schemas/Fee'
          example: []
          minItems: 0
        chain:
          $ref: '#/components/schemas/Chain'
        created_at:
          type: string
          description: Time the Order is created
          format: date-time
          example: '2022-03-07T07:20:50.52Z'
        end_at:
          type: string
          description: Time after which the Order is considered expired
          format: date-time
          example: '2022-03-10T05:00:50.52Z'
        id:
          type: string
          description: Global Order identifier
          example: 018792C9-4AD7-8EC4-4038-9E05C598534A
        order_hash:
          type: string
          example: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266'
        protocol_data:
          $ref: '#/components/schemas/ProtocolData'
        salt:
          type: string
          description: A random value added to the create Order request
          example: '12686911856931635052326433555881236148'
        sell:
          type: array
          items:
            $ref: '#/components/schemas/Item'
          example:
            - type: ERC721
              contract_address: '0x692edAd005237c7E737bB2c0F3D8ccCc10D3479E'
              token_id: '1'
          minItems: 1
          maxItems: 1
        signature:
          type: string
          description: Digital signature generated by the user for the specific Order
          example: 0x
        start_at:
          type: string
          description: Time after which Order is considered active
          format: date-time
          example: '2022-03-09T05:00:50.52Z'
        status:
          $ref: '#/components/schemas/OrderStatus'
        type:
          type: string
          description: Order type
          example: LISTING
          enum:
            - LISTING
            - BID
            - COLLECTION_BID
            - TRAIT_BID
            - METADATA_BID
        updated_at:
          type: string
          description: Time the Order is last updated
          format: date-time
          example: '2022-03-07T07:20:50.52Z'
        fill_status:
          $ref: '#/components/schemas/FillStatus'
        trait_criteria:
          type: array
          description: Trait filters for TRAIT_BID orders; omitted for other order types.
          items:
            $ref: '#/components/schemas/TraitFilter'
          minItems: 1
          example:
            - trait_type: Background
              values:
                - Blue
                - Red
        metadata_id:
          type: string
          format: uuid
          description: >-
            Metadata identifier for METADATA_BID orders; omitted for other order
            types.
          example: 018792C9-4AD7-8EC4-4038-9E05C598534B
      example:
        account_address: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266'
        buy:
          - type: NATIVE
            amount: '9750000000000000000'
            contract_address: '0x0165878A594ca255338adfa4d48449f69242Eb8F'
        fees: []
        chain:
          id: eip155:11155111
          name: sepolia
        created_at: '2022-03-07T07:20:50.52Z'
        end_at: '2022-03-10T05:00:50.52Z'
        id: 018792C9-4AD7-8EC4-4038-9E05C598534A
        protocol_data:
          order_type: FULL_RESTRICTED
          counter: '1'
          zone_address: '0x12'
          seaport_address: '0x12'
          seaport_version: '1.4'
        salt: '12686911856931635052326433555881236148'
        sell:
          - type: ERC721
            contract_address: '0x692edAd005237c7E737bB2c0F3D8ccCc10D3479E'
            token_id: '1'
        signature: 0x
        start_at: '2022-03-09T05:00:50.52Z'
        status:
          name: ACTIVE
        fill_status:
          numerator: 1
          denominator: 2
        type: LISTING
        updated_at: '2022-03-07T07:20:50.52Z'
      required:
        - id
        - type
        - account_address
        - buy
        - sell
        - fees
        - chain
        - created_at
        - end_at
        - start_at
        - updated_at
        - order_hash
        - protocol_data
        - salt
        - signature
        - status
        - fill_status
    APIError400:
      allOf:
        - $ref: '#/components/schemas/BasicAPIError'
        - type: object
          properties:
            code:
              type: string
              description: Error Code
              enum:
                - VALIDATION_ERROR
              example: VALIDATION_ERROR
            details:
              type: object
              nullable: true
              description: Additional details to help resolve the error
          required:
            - code
            - details
    APIError404:
      allOf:
        - $ref: '#/components/schemas/BasicAPIError'
        - type: object
          properties:
            code:
              type: string
              description: Error Code
              enum:
                - RESOURCE_NOT_FOUND
              example: RESOURCE_NOT_FOUND
            details:
              type: object
              nullable: true
              description: Additional details to help resolve the error
          required:
            - code
            - details
    APIError500:
      allOf:
        - $ref: '#/components/schemas/BasicAPIError'
        - type: object
          properties:
            code:
              type: string
              description: Error Code
              enum:
                - INTERNAL_SERVER_ERROR
              example: INTERNAL_SERVER_ERROR
            details:
              type: object
              nullable: true
              description: Additional details to help resolve the error
          required:
            - code
            - details
    APIError503:
      allOf:
        - $ref: '#/components/schemas/BasicAPIError'
        - type: object
          properties:
            code:
              type: string
              description: Error Code
              enum:
                - SERVICE_UNAVAILABLE
              example: SERVICE_UNAVAILABLE
            details:
              type: object
              nullable: true
              description: Additional details to help resolve the error
          required:
            - code
            - details
    APIError504:
      allOf:
        - $ref: '#/components/schemas/BasicAPIError'
        - type: object
          properties:
            code:
              type: string
              description: Error Code
              enum:
                - GATEWAY_TIMEOUT
              example: GATEWAY_TIMEOUT
            details:
              type: object
              nullable: true
              description: Additional details to help resolve the error
          required:
            - code
            - details
    Item:
      oneOf:
        - $ref: '#/components/schemas/NativeItem'
        - $ref: '#/components/schemas/ERC20Item'
        - $ref: '#/components/schemas/ERC721Item'
        - $ref: '#/components/schemas/ERC1155Item'
        - $ref: '#/components/schemas/ERC721CollectionItem'
        - $ref: '#/components/schemas/ERC1155CollectionItem'
      discriminator:
        propertyName: type
        mapping:
          NATIVE:
            $ref: '#/components/schemas/NativeItem'
          ERC20:
            $ref: '#/components/schemas/ERC20Item'
          ERC721:
            $ref: '#/components/schemas/ERC721Item'
          ERC1155:
            $ref: '#/components/schemas/ERC1155Item'
          ERC721_COLLECTION:
            $ref: '#/components/schemas/ERC721CollectionItem'
          ERC1155_COLLECTION:
            $ref: '#/components/schemas/ERC1155CollectionItem'
    Chain:
      type: object
      description: The chain details
      properties:
        id:
          type: string
          description: The id of chain
          example: eip155:13372
        name:
          type: string
          description: The name of chain
          example: imtbl-zkevm-testnet
      required:
        - id
        - name
    ProtocolData:
      type: object
      properties:
        order_type:
          type: string
          description: >-
            Seaport order type. Orders containing ERC721 tokens will need to
            pass in the order type as FULL_RESTRICTED while orders with ERC1155
            tokens will need to pass in the order_type as PARTIAL_RESTRICTED
          example: FULL_RESTRICTED
          enum:
            - FULL_RESTRICTED
            - PARTIAL_RESTRICTED
        counter:
          type: string
          description: big.Int or uint256 string for order counter
          example: '92315562'
        zone_address:
          type: string
          description: Immutable zone address
          example: '0x12'
        seaport_address:
          type: string
          description: Immutable Seaport contract address
          example: '0x12'
        seaport_version:
          type: string
          description: Immutable Seaport contract version
          example: '1.5'
      example:
        order_type: FULL_RESTRICTED
        counter: '92315562'
        zone_address: '0x12'
        seaport_address: '0x12'
        seaport_version: '1.5'
      required:
        - order_type
        - counter
        - zone_address
        - seaport_address
        - seaport_version
    OrderStatus:
      description: The Order status
      oneOf:
        - $ref: '#/components/schemas/CancelledOrderStatus'
        - $ref: '#/components/schemas/PendingOrderStatus'
        - $ref: '#/components/schemas/ActiveOrderStatus'
        - $ref: '#/components/schemas/InactiveOrderStatus'
        - $ref: '#/components/schemas/FilledOrderStatus'
        - $ref: '#/components/schemas/ExpiredOrderStatus'
      discriminator:
        propertyName: name
        mapping:
          CANCELLED:
            $ref: '#/components/schemas/CancelledOrderStatus'
          PENDING:
            $ref: '#/components/schemas/PendingOrderStatus'
          ACTIVE:
            $ref: '#/components/schemas/ActiveOrderStatus'
          INACTIVE:
            $ref: '#/components/schemas/InactiveOrderStatus'
          FILLED:
            $ref: '#/components/schemas/FilledOrderStatus'
          EXPIRED:
            $ref: '#/components/schemas/ExpiredOrderStatus'
    FillStatus:
      description: >-
        The ratio of the order that has been filled, an order that has been
        fully filled will have the same numerator and denominator values.
      type: object
      properties:
        numerator:
          type: string
          description: The numerator of the fill status
          example: '1'
        denominator:
          type: string
          description: The denominator of the fill status
          example: '2'
      required:
        - numerator
        - denominator
    TraitFilter:
      type: object
      description: A trait filter used to match NFTs by metadata attribute
      properties:
        trait_type:
          type: string
          description: The trait type (attribute name)
          example: Background
        values:
          type: array
          description: The trait values to match against
          items:
            type: string
          minItems: 1
          example:
            - Blue
            - Red
      required:
        - trait_type
        - values
    BasicAPIError:
      type: object
      properties:
        message:
          type: string
          description: Error Message
          example: all fields must be provided
        link:
          type: string
          description: Link to IMX documentation that can help resolve this error
          example: https://docs.x.immutable.com/reference/#/
        trace_id:
          type: string
          description: Trace ID of the initial request
          example: e47634b79a5cd6894ddc9639ec4aad26
      required:
        - message
        - link
        - trace_id
    NativeItem:
      type: object
      properties:
        type:
          type: string
          description: >-
            Token type user is offering, which in this case is the native IMX
            token
          example: NATIVE
          enum:
            - NATIVE
        amount:
          type: string
          description: >-
            A string representing the price at which the user is willing to sell
            the token. This value is provided in the smallest unit of the token
            (e.g., wei for Ethereum).
          example: '9750000000000000000'
          pattern: \d+
      required:
        - type
        - amount
    ERC20Item:
      type: object
      properties:
        type:
          type: string
          description: Token type user is offering, which in this case is ERC20
          example: ERC20
          enum:
            - ERC20
        contract_address:
          type: string
          description: Address of ERC20 token
          example: '0x0165878A594ca255338adfa4d48449f69242Eb8F'
          pattern: ^0x[a-fA-F0-9]{40}$
        amount:
          type: string
          description: >-
            A string representing the price at which the user is willing to sell
            the token. This value is provided in the smallest unit of the token
            (e.g., wei for Ethereum).
          example: '9750000000000000000'
          pattern: \d+
      required:
        - type
        - contract_address
        - amount
    ERC721Item:
      type: object
      properties:
        type:
          type: string
          description: Token type user is offering, which in this case is ERC721
          example: ERC721
          enum:
            - ERC721
        contract_address:
          type: string
          description: Address of ERC721 token
          example: '0x692edAd005237c7E737bB2c0F3D8ccCc10D3479E'
          pattern: ^0x[a-fA-F0-9]{40}$
        token_id:
          type: string
          description: ID of ERC721 token
          example: '1'
          pattern: \d+
      required:
        - type
        - contract_address
        - token_id
    ERC1155Item:
      type: object
      properties:
        type:
          type: string
          description: Token type user is offering, which in this case is ERC1155
          example: ERC1155
          enum:
            - ERC1155
        contract_address:
          type: string
          description: Address of ERC1155 token
          example: '0x692edAd005237c7E737bB2c0F3D8ccCc10D3479E'
          pattern: ^0x[a-fA-F0-9]{40}$
        token_id:
          type: string
          description: ID of ERC1155 token
          example: '1'
          pattern: \d+
        amount:
          type: string
          description: >-
            A string representing the price at which the user is willing to sell
            the token. This value is provided in the smallest unit of the token
            (e.g., wei for Ethereum).
          example: '9750000000000000000'
          pattern: \d+
      required:
        - type
        - contract_address
        - token_id
        - amount
    ERC721CollectionItem:
      type: object
      properties:
        type:
          type: string
          description: Token type user is offering, which in this case is ERC721
          example: ERC721_COLLECTION
          enum:
            - ERC721_COLLECTION
        contract_address:
          type: string
          description: Address of ERC721 collection
          example: '0x692edAd005237c7E737bB2c0F3D8ccCc10D3479E'
          pattern: ^0x[a-fA-F0-9]{40}$
        amount:
          type: string
          description: >-
            A string representing the price at which the user is willing to sell
            the token. This value is provided in the smallest unit of the token
            (e.g., wei for Ethereum).
          example: '9750000000000000000'
          pattern: \d+
      required:
        - type
        - contract_address
        - amount
    ERC1155CollectionItem:
      type: object
      properties:
        type:
          type: string
          description: Token type user is offering, which in this case is ERC1155
          example: ERC1155_COLLECTION
          enum:
            - ERC1155_COLLECTION
        contract_address:
          type: string
          description: Address of ERC1155 collection
          example: '0x692edAd005237c7E737bB2c0F3D8ccCc10D3479E'
          pattern: ^0x[a-fA-F0-9]{40}$
        amount:
          type: string
          description: >-
            A string representing the price at which the user is willing to sell
            the token. This value is provided in the smallest unit of the token
            (e.g., wei for Ethereum).
          example: '9750000000000000000'
          pattern: \d+
      required:
        - type
        - contract_address
        - amount
    CancelledOrderStatus:
      type: object
      properties:
        name:
          type: string
          description: >-
            The order status indicating a order is has been cancelled or about
            to be cancelled.
          enum:
            - CANCELLED
        pending:
          type: boolean
          description: Whether the cancellation of the order is pending
          example: false
        cancellation_type:
          type: string
          description: >-
            Whether the cancellation was done on-chain or off-chain or as a
            result of an underfunded account
          enum:
            - ON_CHAIN
            - OFF_CHAIN
            - UNDERFUNDED
          example: ON_CHAIN
      required:
        - name
        - pending
        - cancellation_type
    PendingOrderStatus:
      type: object
      properties:
        name:
          type: string
          description: >-
            The order status that indicates the order is yet to be active due to
            various reasons.
          enum:
            - PENDING
        evaluated:
          type: boolean
          description: Whether the order has been evaluated after its creation
          example: false
        started:
          type: boolean
          description: Whether the order has reached its specified start time
          example: false
      required:
        - name
        - evaluated
        - started
    ActiveOrderStatus:
      type: object
      properties:
        name:
          type: string
          description: The order status that indicates an order can be fulfilled.
          enum:
            - ACTIVE
      required:
        - name
    InactiveOrderStatus:
      type: object
      properties:
        name:
          type: string
          description: The order status that indicates an order cannot be fulfilled.
          enum:
            - INACTIVE
        sufficient_approvals:
          type: boolean
          description: Whether the order offerer has sufficient approvals
          example: false
        sufficient_balances:
          type: boolean
          description: >-
            Whether the order offerer still has sufficient balance to complete
            the order
          example: false
      required:
        - name
        - sufficient_approvals
        - sufficient_balances
    FilledOrderStatus:
      type: object
      properties:
        name:
          type: string
          description: A terminal order status indicating that an order has been fulfilled.
          enum:
            - FILLED
      required:
        - name
    ExpiredOrderStatus:
      type: object
      properties:
        name:
          type: string
          description: >-
            A terminal order status indicating that an order cannot be fulfilled
            due to expiry.
          enum:
            - EXPIRED
      required:
        - name
  responses:
    BadRequest:
      description: Bad Request (400)
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/APIError400'
    NotFound:
      description: The specified resource was not found (404)
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/APIError404'
    InternalServerError:
      description: Internal Server Error (500)
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/APIError500'
    ServiceUnavailable:
      description: >-
        Service Unavailable (503) - RPC or upstream service temporarily
        unavailable
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/APIError503'
    GatewayTimeout:
      description: Gateway Timeout (504) - Upstream validation request timed out
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/APIError504'

````