LayerZero ofts API

The ofts API from LayerZero — 2 operation(s) for ofts.

OpenAPI Specification

layerzero-ofts-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: LayerZero OFT Transfer Discovery ofts API
  version: 1.0.0
  description: API for LayerZero Omnichain Fungible Tokens (OFTs)
servers:
- url: https://metadata.layerzero-api.com/v1/metadata/experiment/ofts
tags:
- name: ofts
paths:
  /list:
    get:
      description: Get list of available OFTs with their deployments across chains
      tags:
      - ofts
      parameters:
      - in: query
        name: chainNames
        description: Comma-separated list of chain names to filter by
        schema:
          type: string
          description: Comma-separated list of chain names to filter by
          example: ethereum,arbitrum,optimism,base
      - in: query
        name: symbols
        description: Comma-separated list of token symbols to filter by
        schema:
          type: string
          description: Comma-separated list of token symbols to filter by
          example: ZRO,USDT0,XAUT0,WBTC
      - in: query
        name: protocols
        description: Comma-separated list of protocol names to filter by
        schema:
          type: string
          description: Comma-separated list of protocol names to filter by
          example: wBTC,ZRO Token,USDT0
      - in: query
        name: contractAddresses
        description: Comma-separated list of contract addresses to filter by
        schema:
          type: string
          description: Comma-separated list of contract addresses to filter by
          example: 0x6985884c4392d348587b19cb9eaaf157f13271cd,0x6c96de32cea08842dcc4058c14d3aaad7fa41dee
      responses:
        '200':
          description: Successfully retrieved OFT list
          content:
            application/json:
              schema:
                type: object
                additionalProperties:
                  type: array
                  items:
                    type: object
                    properties:
                      name:
                        type: string
                      sharedDecimals:
                        type: number
                      endpointVersion:
                        type: string
                        enum:
                        - v1
                        - v2
                      deployments:
                        type: object
                        additionalProperties:
                          type: object
                          properties:
                            address:
                              type: string
                            localDecimals:
                              type: number
                            type:
                              type: string
                              enum:
                              - OFT
                              - OFT_ADAPTER
                              - NATIVE_OFT_ADAPTER
                            innerToken:
                              type: string
                            approvalRequired:
                              type: boolean
                            details:
                              type: object
                              additionalProperties: {}
                          required:
                          - address
                          - localDecimals
                          - type
                    required:
                    - name
                    - sharedDecimals
                    - endpointVersion
                    - deployments
                description: Record of token symbols to their OFT configurations
                example:
                  ZRO:
                  - name: ZRO Token
                    sharedDecimals: 6
                    endpointVersion: v2
                    deployments:
                      ethereum:
                        address: '0x6985884c4392d348587b19cb9eaaf157f13271cd'
                        localDecimals: 18
                        type: OFT
                      arbitrum:
                        address: '0x6985884c4392d348587b19cb9eaaf157f13271cd'
                        localDecimals: 18
                        type: OFT
                      optimism:
                        address: '0x6985884c4392d348587b19cb9eaaf157f13271cd'
                        localDecimals: 18
                        type: OFT
                      base:
                        address: '0x6985884c4392d348587b19cb9eaaf157f13271cd'
                        localDecimals: 18
                        type: OFT
  /transfer:
    get:
      description: Create an OFT transfer transaction between chains
      tags:
      - ofts
      parameters:
      - in: query
        name: srcChainName
        description: Source chain name where the OFT transfer originates
        schema:
          type: string
          description: Source chain name where the OFT transfer originates
          example: ethereum
        required: true
      - in: query
        name: dstChainName
        description: Destination chain name where the OFT will be received
        schema:
          type: string
          description: Destination chain name where the OFT will be received
          example: bera
        required: true
      - in: query
        name: oftAddress
        description: Address of the OFT contract on the source chain
        schema:
          type: string
          description: Address of the OFT contract on the source chain
          example: '0x6c96de32cea08842dcc4058c14d3aaad7fa41dee'
        required: true
      - in: query
        name: amount
        description: Amount to transfer in the smallest unit (wei/satoshi equivalent)
        schema:
          type: string
          description: Amount to transfer in the smallest unit (wei/satoshi equivalent)
          example: '1000000'
        required: true
      - in: query
        name: from
        description: Address of the sender wallet
        schema:
          type: string
          description: Address of the sender wallet
          example: '0xd8538FA8FDd5872E68c4040449F64452ae536fA6'
        required: true
      - in: query
        name: to
        description: Address of the recipient wallet (EVM hex or Solana base58)
        schema:
          type: string
          description: Address of the recipient wallet (EVM hex or Solana base58)
          example: '0xd8538FA8FDd5872E68c4040449F64452ae536fA6'
        required: true
      - in: query
        name: validate
        description: Whether to validate balances before creating transaction
        schema:
          anyOf:
          - type: boolean
          - type: string
          description: Whether to validate balances before creating transaction
          example: false
      - in: query
        name: options
        description: 'Structured LayerZero execution options as JSON string. EXECUTOR OPTIONS: - lzReceive: Set gas limit and optional native drop for lzReceive execution - nativeDrops: Array of native token drops to specific addresses - composeOptions: Array of compose message execution settings with gas and native drop All numeric values for gas limits and native drops should be strings or numbers. Native drop amounts are in wei (e.g., "1000000000000000" = 0.001 ETH).'
        schema:
          type: string
          description: 'Structured LayerZero execution options as JSON string. EXECUTOR OPTIONS: - lzReceive: Set gas limit and optional native drop for lzReceive execution - nativeDrops: Array of native token drops to specific addresses - composeOptions: Array of compose message execution settings with gas and native drop All numeric values for gas limits and native drops should be strings or numbers. Native drop amounts are in wei (e.g., "1000000000000000" = 0.001 ETH).'
          example: '{"executor":{"lzReceive":{"gasLimit":300000},"nativeDrops":[{"amount":"1","receiver":"0xd8538fa8fdd5872e68c4040449f64452ae536fa6"}]}}'
      - in: query
        name: composeMsg
        description: Compose message for advanced OFT operations (hex encoded)
        schema:
          type: string
          description: Compose message for advanced OFT operations (hex encoded)
          example: 0x
      - in: query
        name: oftCmd
        description: OFT command for advanced operations (hex encoded)
        schema:
          type: string
          description: OFT command for advanced operations (hex encoded)
          example: 0x
      - in: header
        name: x-layerzero-api-key
        description: LayerZero API key for authentication
        schema:
          type: string
          description: LayerZero API key for authentication
          example: c017d03d-5860-4b33-aeff-92e7bccb5d87
      responses:
        '200':
          description: Successfully created OFT transfer transaction
          content:
            application/json:
              schema:
                type: object
                properties:
                  created:
                    type: number
                  dstChainName:
                    type: string
                  wallet:
                    type: object
                    properties:
                      address:
                        type: string
                      nonce:
                        type: number
                      success:
                        type: boolean
                      name:
                        type: string
                    required:
                    - address
                    - nonce
                  transactionData:
                    type: object
                    properties:
                      populatedTransaction:
                        type: object
                        properties:
                          to:
                            type: string
                          from:
                            type: string
                          nonce:
                            type: number
                          gasLimit:
                            type: string
                          gasPrice:
                            type: string
                          data:
                            type: string
                          value:
                            type: string
                          chainId:
                            type: number
                          type:
                            type: number
                          accessList: {}
                          maxPriorityFeePerGas:
                            type: string
                          maxFeePerGas:
                            type: string
                          customData:
                            type: object
                            additionalProperties: {}
                          ccipReadEnabled:
                            type: boolean
                      inflightTransactions:
                        type: array
                        items:
                          type: object
                          properties:
                            txHash:
                              type: string
                            signedTransaction:
                              type: string
                            gasPrice:
                              type: string
                            maxPriorityFeePerGas:
                              type: string
                            maxFeePerGas:
                              type: string
                            txType:
                              anyOf:
                              - type: number
                                enum:
                                - 0
                              - type: number
                                enum:
                                - 2
                          required:
                          - txHash
                          - txType
                      minedTransactionHash:
                        type: string
                      minedTransactionHashes:
                        type: array
                        items:
                          type: string
                      txHash:
                        type: string
                      signedTransaction:
                        type: string
                      burnNonceTxIndex:
                        type: number
                      approvalTransaction:
                        type: object
                        properties:
                          to:
                            type: string
                          from:
                            type: string
                          nonce:
                            type: number
                          gasLimit:
                            type: string
                          gasPrice:
                            type: string
                          data:
                            type: string
                          value:
                            type: string
                          chainId:
                            type: number
                          type:
                            type: number
                          accessList: {}
                          maxPriorityFeePerGas:
                            type: string
                          maxFeePerGas:
                            type: string
                          customData:
                            type: object
                            additionalProperties: {}
                          ccipReadEnabled:
                            type: boolean
                  dstTxError:
                    type: string
                  nextInlineSince:
                    type: number
                  transactionType:
                    type: string
                  metadata:
                    type: object
                    properties:
                      properties:
                        type: object
                        additionalProperties: {}
                      remoteChainName:
                        type: string
                      timestamps:
                        type: object
                        properties:
                          created:
                            type: number
                          nonceAcquired:
                            type: number
                          signed:
                            type: number
                          sent:
                            type: number
                          mined:
                            type: object
                            properties:
                              serverTs:
                                type: number
                              blockNum:
                                type: number
                              blockTs:
                                type: number
                            required:
                            - serverTs
                            - blockTs
                          confirmed:
                            type: number
                      sendCount:
                        type: number
                  parallelizingKey:
                    type: string
                required:
                - created
                - dstChainName
                - transactionData
                description: Transaction object ready for signing and submission
                example:
                  created: 1750332889266
                  dstChainName: ethereum
                  metadata:
                    properties:
                      dstOftAddress: '0x3dc96399109df5ceb2c226664a086140bd0379cb'
                      dstOftType: OFT_ADAPTER
                      dstChainName: bera
                      approvalRequired: true
                      amount: '1000000'
                      sharedDecimals: 6
                      localDecimals: 6
                    timestamps:
                      created: 1750332889266
                  transactionData:
                    populatedTransaction:
                      data: '0xc7c7f5b30000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000007625075988a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d8538fa8fdd5872e68c4040449f64452ae536fa6000000000000000000000000000000000000000000000000000000000000769a000000000000000000000000d8538fa8fdd5872e68c4040449f64452ae536fa600000000000000000000000000000000000000000000000000000000000f424000000000000000000000000000000000000000000000000000000000000f424000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
                      to: '0x6C96dE32CEa08842dcc4058c14d3aaAD7Fa41dee'
                      gasLimit: '500000'
                      value: '8118838073482'
                    approvalTransaction:
                      data: '0x095ea7b30000000000000000000000006c96de32cea08842dcc4058c14d3aaad7fa41dee00000000000000000000000000000000000000000000000000000000000f4240'
                      to: '0xdAC17F958D2ee523a2206206994597C13D831ec7'
                      gasLimit: '100000'
                  transactionType: OFT_SEND