# Loopring Dev Docs

## Loopring Dev Docs

- [Introduction](https://docs-protocol.loopring.io/readme.md)
- [Endpoints](https://docs-protocol.loopring.io/endpoints.md)
- [SDK](https://docs-protocol.loopring.io/sdk.md): Our TypeScript SDK makes it easy to integrate Loopring protocol into websites.
- [SDK Guides](https://docs-protocol.loopring.io/sdk/sdk-guides.md): Loopring SDK Initialize and Mock Data structure
- [Test Mock Data](https://docs-protocol.loopring.io/sdk/test-mock-data.md)
- [Mock Account](https://docs-protocol.loopring.io/sdk/test-mock-data/mock-account.md)
- [Mock provider](https://docs-protocol.loopring.io/sdk/test-mock-data/mock-provider.md)
- [Mock ERC20 Token Map](https://docs-protocol.loopring.io/sdk/test-mock-data/mock-erc20-token-map.md)
- [Mock AMM MAP](https://docs-protocol.loopring.io/sdk/test-mock-data/mock-amm-map.md)
- [Mock EIP712 Typed Data](https://docs-protocol.loopring.io/sdk/test-mock-data/mock-eip712-typed-data.md)
- [Mock Generate eddsaKey](https://docs-protocol.loopring.io/sdk/test-mock-data/mock-generate-eddsakey.md)
- [Glossary](https://docs-protocol.loopring.io/glossary.md): Definition of terms
- [Introduction](https://docs-protocol.loopring.io/loopring-account/introduction.md): In order to use this SDK for Loopring Layer 2, you will need a Loopring account.
- [SDK Guides](https://docs-protocol.loopring.io/loopring-account/sdk-guides.md)
- [Setup a Loopring Account](https://docs-protocol.loopring.io/loopring-account/sdk-guides/setup-a-loopring-account.md): Open an account via the Loopring DEX.
- [Unlock Account (Login)](https://docs-protocol.loopring.io/loopring-account/sdk-guides/unlock-account-login.md): Exist Account Login again
- [API References](https://docs-protocol.loopring.io/loopring-account/api-references.md)
- [Get Account info](https://docs-protocol.loopring.io/loopring-account/api-references/get-account-info.md)
- [Sample code](https://docs-protocol.loopring.io/loopring-account/api-references/get-account-info/sample-code.md)
- [Update EddsaKey](https://docs-protocol.loopring.io/loopring-account/api-references/update-eddsakey.md)
- [Sample code](https://docs-protocol.loopring.io/loopring-account/api-references/update-eddsakey/sample-code.md)
- [Get apiKey](https://docs-protocol.loopring.io/loopring-account/api-references/get-apikey.md): Get the ApiKey associated with the user's account
- [Sample code](https://docs-protocol.loopring.io/loopring-account/api-references/get-apikey/sample-code.md)
- [Update apiKey](https://docs-protocol.loopring.io/loopring-account/api-references/update-apikey.md): Change the ApiKey associated with the user's account. The current ApiKey must be provided as the value of the X-API-KEY HTTP header.
- [Sample code](https://docs-protocol.loopring.io/loopring-account/api-references/update-apikey/sample-code.md)
- [Introduction](https://docs-protocol.loopring.io/counterfactual-nft/introduction.md)
- [Compute NFT Address API](https://docs-protocol.loopring.io/counterfactual-nft/introduction/compute-nft-address-api.md)
- [When to deploy counterfactual NFT contracts?](https://docs-protocol.loopring.io/counterfactual-nft/introduction/when-to-deploy-counterfactual-nft-contracts.md)
- [SDK Guides](https://docs-protocol.loopring.io/counterfactual-nft/sdk-guides.md): Loopring SDK Initialize and Mock Data structure
- [Deposit NFT](https://docs-protocol.loopring.io/counterfactual-nft/sdk-guides/deposit-nft.md): Deposit NFTs (ERC1155 and ERC721) from Ethereum Layer 1 to Loopring Layer 2
- [Create Collection](https://docs-protocol.loopring.io/counterfactual-nft/sdk-guides/create-collection.md): Allows user to create an NFT Collection with a different contract (token) address.
- [Mint Counterfactual NFT](https://docs-protocol.loopring.io/counterfactual-nft/sdk-guides/mint-counterfactual-nft.md): Mint a Layer 2 NFT. Loopring follows the IPFS NFT format.
- [Transfer NFT](https://docs-protocol.loopring.io/counterfactual-nft/sdk-guides/transfer-nft.md): Send NFT to another account on Loopring L2
- [Deploy NFT](https://docs-protocol.loopring.io/counterfactual-nft/sdk-guides/deploy-nft.md): Construct a transfer to Layer 2 broker and trigger deployment of tokenAddress in Layer 1
- [Withdraw NFT](https://docs-protocol.loopring.io/counterfactual-nft/sdk-guides/withdraw-nft.md): Withdraw Loopring L2 NFT to Ethereum L1
- [Trade NFT](https://docs-protocol.loopring.io/counterfactual-nft/sdk-guides/trade-nft.md): Use this method to understand how to match an NFT maker order with an NFT taker order.
- [Validate NFT Order](https://docs-protocol.loopring.io/counterfactual-nft/sdk-guides/trade-nft/validate-nft-order.md): Loopring L2 supports a method for validating one side of an NFT order. NFT order validation is not required for Loopring, but when making an NFT trade, it should pass this validation
- [Meta & IPFS](https://docs-protocol.loopring.io/counterfactual-nft/sdk-guides/meta-and-ipfs.md)
- [API References](https://docs-protocol.loopring.io/counterfactual-nft/api-references.md)
- [NFT Collection](https://docs-protocol.loopring.io/counterfactual-nft/api-references/nft-collection.md)
- [Create collection](https://docs-protocol.loopring.io/counterfactual-nft/api-references/nft-collection/create-collection.md): Create an empty collection and return a tokenAddress
- [Sample code](https://docs-protocol.loopring.io/counterfactual-nft/api-references/nft-collection/create-collection/sample-code.md)
- [Edit collection](https://docs-protocol.loopring.io/counterfactual-nft/api-references/nft-collection/edit-collection.md): Create an empty collection and return a tokenAddress
- [Sample code](https://docs-protocol.loopring.io/counterfactual-nft/api-references/nft-collection/edit-collection/sample-code.md)
- [Delete collection](https://docs-protocol.loopring.io/counterfactual-nft/api-references/nft-collection/delete-collection.md): Delete collection by id
- [Sample code](https://docs-protocol.loopring.io/counterfactual-nft/api-references/nft-collection/delete-collection/sample-code.md)
- [List owned collections](https://docs-protocol.loopring.io/counterfactual-nft/api-references/nft-collection/list-owned-collections.md): List all collections of a creator
- [Sample code](https://docs-protocol.loopring.io/counterfactual-nft/api-references/nft-collection/list-owned-collections/sample-code.md)
- [List user's NFTs under one collection](https://docs-protocol.loopring.io/counterfactual-nft/api-references/nft-collection/list-users-nfts-under-one-collection.md): List user-owned NFTs under one collection
- [Sample code](https://docs-protocol.loopring.io/counterfactual-nft/api-references/nft-collection/list-users-nfts-under-one-collection/sample-code.md)
- [List user's NFT balances group by Collection ID](https://docs-protocol.loopring.io/counterfactual-nft/api-references/nft-collection/list-users-nft-balances-group-by-collection-id.md): View user's NFT balance group by collection
- [Sample code](https://docs-protocol.loopring.io/counterfactual-nft/api-references/nft-collection/list-users-nft-balances-group-by-collection-id/sample-code.md)
- [List all NFTs of a collection](https://docs-protocol.loopring.io/counterfactual-nft/api-references/nft-collection/list-all-nfts-of-a-collection.md): List all NFTs in one collection
- [Sample code](https://docs-protocol.loopring.io/counterfactual-nft/api-references/nft-collection/list-all-nfts-of-a-collection/sample-code.md)
- [Get collection by Collection ID](https://docs-protocol.loopring.io/counterfactual-nft/api-references/nft-collection/get-collection-by-collection-id.md): Get collection info by id
- [Sample code](https://docs-protocol.loopring.io/counterfactual-nft/api-references/nft-collection/get-collection-by-collection-id/sample-code.md)
- [Get collections by contract address](https://docs-protocol.loopring.io/counterfactual-nft/api-references/nft-collection/get-collections-by-contract-address.md)
- [Sample code](https://docs-protocol.loopring.io/counterfactual-nft/api-references/nft-collection/get-collections-by-contract-address/sample-code.md)
- [Get NFT Assets](https://docs-protocol.loopring.io/counterfactual-nft/api-references/get-nft-assets.md)
- [Sample code](https://docs-protocol.loopring.io/counterfactual-nft/api-references/get-nft-assets/sample-code.md)
- [Get NFT Balances](https://docs-protocol.loopring.io/counterfactual-nft/api-references/get-nft-balances.md): Query a wallet's NFT balance for token gating
- [Sample code](https://docs-protocol.loopring.io/counterfactual-nft/api-references/get-nft-balances/sample-code.md): Query a wallet's NFT balance for token gating
- [Mint NFT](https://docs-protocol.loopring.io/counterfactual-nft/api-references/mint-nft.md): mint nft in Loopring layer2, only can mint ERC1155 in layer2 now
- [Sample code](https://docs-protocol.loopring.io/counterfactual-nft/api-references/mint-nft/sample-code.md)
- [Transfer NFT](https://docs-protocol.loopring.io/counterfactual-nft/api-references/transfer-nft.md)
- [Sample code](https://docs-protocol.loopring.io/counterfactual-nft/api-references/transfer-nft/sample-code.md)
- [Validate NFT Order](https://docs-protocol.loopring.io/counterfactual-nft/api-references/validate-nft-order.md): validate a NFT order
- [Sample code](https://docs-protocol.loopring.io/counterfactual-nft/api-references/validate-nft-order/sample-code.md)
- [Trade NFT](https://docs-protocol.loopring.io/counterfactual-nft/api-references/trade-nft.md): Settle down an NFT trade which has two matched orders
- [Sample code](https://docs-protocol.loopring.io/counterfactual-nft/api-references/trade-nft/sample-code.md)
- [Deploy NFT TokenAddress](https://docs-protocol.loopring.io/counterfactual-nft/api-references/deploy-nft-tokenaddress.md): Use L2 token to pay and deploy the NFT tokenAddress in Layer 1
- [Sample code](https://docs-protocol.loopring.io/counterfactual-nft/api-references/deploy-nft-tokenaddress/sample-code.md)
- [Withdraw NFT](https://docs-protocol.loopring.io/counterfactual-nft/api-references/withdraw-nft.md): withdraw nft to layer1
- [Sample code](https://docs-protocol.loopring.io/counterfactual-nft/api-references/withdraw-nft/sample-code.md)
- [Get NFT Transactions](https://docs-protocol.loopring.io/counterfactual-nft/api-references/get-nft-transactions.md): Get deposit/transfer/withdraw history
- [Sample code](https://docs-protocol.loopring.io/counterfactual-nft/api-references/get-nft-transactions/sample-code.md)
- [Get NFT Trade History](https://docs-protocol.loopring.io/counterfactual-nft/api-references/get-nft-trade-history.md): Get NFT Trade History
- [Sample code](https://docs-protocol.loopring.io/counterfactual-nft/api-references/get-nft-trade-history/sample-code.md)
- [Get AvailableBroker](https://docs-protocol.loopring.io/counterfactual-nft/api-references/get-availablebroker.md): get broker for deploy NFT tokenAddress
- [Sample code](https://docs-protocol.loopring.io/counterfactual-nft/api-references/get-availablebroker/sample-code.md)
- [Get NFT Info](https://docs-protocol.loopring.io/counterfactual-nft/api-references/get-nft-info.md): Query NFT info by looprings nftData
- [Sample code](https://docs-protocol.loopring.io/counterfactual-nft/api-references/get-nft-info/sample-code.md)
- [Get NFT Data](https://docs-protocol.loopring.io/counterfactual-nft/api-references/get-nft-data.md): Query nftDatas by minter, tokenAddress and nftID.
- [Sample code](https://docs-protocol.loopring.io/counterfactual-nft/api-references/get-nft-data/sample-code.md)
- [Get NFT Holders](https://docs-protocol.loopring.io/counterfactual-nft/api-references/get-nft-holders.md): Query NFT holders by Looprings nftData
- [Sample code](https://docs-protocol.loopring.io/counterfactual-nft/api-references/get-nft-holders/sample-code.md)
- [Introduction](https://docs-protocol.loopring.io/erc20-tokens/introduction.md)
- [SDK Guides](https://docs-protocol.loopring.io/erc20-tokens/sdk-guides.md): Loopring SDK Initialize and Mock Data structure
- [Transfer ERC20](https://docs-protocol.loopring.io/erc20-tokens/sdk-guides/transfer-erc20.md): Send ERC20 tokens to another account on Loopring L2
- [Withdraw ERC20](https://docs-protocol.loopring.io/erc20-tokens/sdk-guides/withdraw-erc20.md): Withdraw ERC20 from Loopring L2 to Ethereum L1
- [Deposit ERC20](https://docs-protocol.loopring.io/erc20-tokens/sdk-guides/deposit-erc20.md): Deposit ERC20 from Ethereum L1 to Loopring L2
- [Order ERC20](https://docs-protocol.loopring.io/erc20-tokens/sdk-guides/order-erc20.md): Demo for making an immediate swap
- [API References](https://docs-protocol.loopring.io/erc20-tokens/api-references.md)
- [Get Assets](https://docs-protocol.loopring.io/erc20-tokens/api-references/get-assets.md)
- [Sample code](https://docs-protocol.loopring.io/erc20-tokens/api-references/get-assets/sample-code.md)
- [Transfer](https://docs-protocol.loopring.io/erc20-tokens/api-references/transfer.md): Sending ERC20 tokens from your Loopring L2 to another Loopring L2 address.
- [Sample code](https://docs-protocol.loopring.io/erc20-tokens/api-references/transfer/sample-code.md)
- [Submit Order](https://docs-protocol.loopring.io/erc20-tokens/api-references/submit-order.md): Place an order
- [Sample code](https://docs-protocol.loopring.io/erc20-tokens/api-references/submit-order/sample-code.md)
- [Cancel Order](https://docs-protocol.loopring.io/erc20-tokens/api-references/cancel-order.md): Cancel order using order hash or client-side ID.
- [Sample code](https://docs-protocol.loopring.io/erc20-tokens/api-references/cancel-order/sample-code.md)
- [Withdraw](https://docs-protocol.loopring.io/erc20-tokens/api-references/withdraw.md): Withdraw ERC20 tokens from your layer2 to address in layer1
- [Sample code](https://docs-protocol.loopring.io/erc20-tokens/api-references/withdraw/sample-code.md)
- [Get Transactions](https://docs-protocol.loopring.io/erc20-tokens/api-references/get-transactions.md): Get history for deposit, transfer and/or withdraw
- [Sample code](https://docs-protocol.loopring.io/erc20-tokens/api-references/get-transactions/sample-code.md)
- [Get Orders](https://docs-protocol.loopring.io/erc20-tokens/api-references/get-orders.md)
- [Sample code](https://docs-protocol.loopring.io/erc20-tokens/api-references/get-orders/sample-code.md)
- [Get Trade History](https://docs-protocol.loopring.io/erc20-tokens/api-references/get-trade-history.md)
- [Sample code](https://docs-protocol.loopring.io/erc20-tokens/api-references/get-trade-history/sample-code.md)
- [Advanced](https://docs-protocol.loopring.io/resources/advanced.md)
- [UpdateAccount with custom seed](https://docs-protocol.loopring.io/resources/advanced/updateaccount-with-custom-seed.md)
- [Pay payee updateAccount fee](https://docs-protocol.loopring.io/resources/advanced/pay-payee-updateaccount-fee.md)
- [Common error and solutions](https://docs-protocol.loopring.io/resources/advanced/common-error-and-solutions.md)
- [Submit erc20 order](https://docs-protocol.loopring.io/resources/advanced/submit-erc20-order.md)
- [Common Info](https://docs-protocol.loopring.io/resources/common-info.md)
- [Get relayer current time](https://docs-protocol.loopring.io/resources/common-info/get-relayer-current-time.md)
- [Sample code](https://docs-protocol.loopring.io/resources/common-info/get-relayer-current-time/sample-code.md)
- [Get exchange info](https://docs-protocol.loopring.io/resources/common-info/get-exchange-info.md)
- [Sample code](https://docs-protocol.loopring.io/resources/common-info/get-exchange-info/sample-code.md)
- [Get token info](https://docs-protocol.loopring.io/resources/common-info/get-token-info.md)
- [Sample code](https://docs-protocol.loopring.io/resources/common-info/get-token-info/sample-code.md)
- [Get markets info](https://docs-protocol.loopring.io/resources/common-info/get-markets-info.md): Loopring supported markets
- [Sample code](https://docs-protocol.loopring.io/resources/common-info/get-markets-info/sample-code.md)
- [Error codes](https://docs-protocol.loopring.io/resources/error-codes.md)
- [Fees](https://docs-protocol.loopring.io/resources/fees.md): Each Loopring L2 transaction requires a fee to be paid (L2 transactions are packed, batched, and submitted to Ethereum L1 which has a gas fee).
- [GET ERC20 Offchain Fee](https://docs-protocol.loopring.io/resources/fees/get-erc20-offchain-fee.md): get fee of updateAccount, transfer, withdraw. etc
- [Sample code](https://docs-protocol.loopring.io/resources/fees/get-erc20-offchain-fee/sample-code.md)
- [GET ERC20 Order Fee](https://docs-protocol.loopring.io/resources/fees/get-erc20-order-fee.md): ERC20 get fee of order
- [Sample code](https://docs-protocol.loopring.io/resources/fees/get-erc20-order-fee/sample-code.md)
- [GET NFT Offchain Fee](https://docs-protocol.loopring.io/resources/fees/get-nft-offchain-fee.md): get fee of mint, transfer, withdraw. etc
- [Sample code](https://docs-protocol.loopring.io/resources/fees/get-nft-offchain-fee/sample-code.md)
- [GET NFT Order Fee](https://docs-protocol.loopring.io/resources/fees/get-nft-order-fee.md): get NFT order fee
- [Sample code](https://docs-protocol.loopring.io/resources/fees/get-nft-order-fee/sample-code.md)
- [SDK Fees](https://docs-protocol.loopring.io/resources/fees/sdk-fees.md): Definition: Loopring L2 transactions have fees. The following is the list of charges.
- [Layer 2 block info](https://docs-protocol.loopring.io/resources/layer-2-block-info.md)
- [Get pending transactions](https://docs-protocol.loopring.io/resources/layer-2-block-info/get-pending-transactions.md): Get pending txs to be packed into the next block
- [Request signing](https://docs-protocol.loopring.io/resources/request-signing.md)
- [Special API Request Signatures](https://docs-protocol.loopring.io/resources/request-signing/special-api-request-signatures.md)
- [Off-chain Request Signatures](https://docs-protocol.loopring.io/resources/request-signing/off-chain-request-signatures.md)
- [Extra ECDSA authentic in header](https://docs-protocol.loopring.io/resources/request-signing/extra-ecdsa-authentic-in-header.md)
- [Signature](https://docs-protocol.loopring.io/resources/signature.md): Definition:  Loopring SDK support EOA (EOA hardware wallet) & Loopring smart wallet signature.
- [ECDSA signature](https://docs-protocol.loopring.io/resources/signature/ecdsa-signature.md)
- [ECDSA key generation](https://docs-protocol.loopring.io/resources/signature/ecdsa-signature/ecdsa-key-generation.md)
- [ECDSA sign](https://docs-protocol.loopring.io/resources/signature/ecdsa-signature/ecdsa-sign.md)
- [ECDSA verify signature](https://docs-protocol.loopring.io/resources/signature/ecdsa-signature/ecdsa-verify-signature.md)
- [EdDSA signature](https://docs-protocol.loopring.io/resources/signature/eddsa-signature.md)
- [EdDSA key generation](https://docs-protocol.loopring.io/resources/signature/eddsa-signature/eddsa-key-generation.md)
- [EdDSA sign](https://docs-protocol.loopring.io/resources/signature/eddsa-signature/eddsa-sign.md)
- [EdDSA verify signature](https://docs-protocol.loopring.io/resources/signature/eddsa-signature/eddsa-verify-signature.md)
- [SDK Signature](https://docs-protocol.loopring.io/resources/signature/sdk-signature.md): Loopring SDK supports EOA (EOA hardware wallet) & Loopring Smart Wallet signature
- [Mock Signature](https://docs-protocol.loopring.io/resources/signature/sdk-signature/mock-signature.md)
- [Smart Contracts](https://docs-protocol.loopring.io/resources/smart-contracts.md)
- [Storage Id](https://docs-protocol.loopring.io/resources/storage-id.md)
- [Sample code](https://docs-protocol.loopring.io/resources/storage-id/sample-code.md)
- [WebSocket](https://docs-protocol.loopring.io/resources/websocket.md)
- [Account Notification](https://docs-protocol.loopring.io/resources/websocket/account-notification.md): Subscribe to this topic to receive notifications about user balance update.
- [Order Notification](https://docs-protocol.loopring.io/resources/websocket/order-notification.md): Subscribe to this topic to receive notifications about order updates for specific trading pairs.
- [Orderbook Notification](https://docs-protocol.loopring.io/resources/websocket/orderbook-notification.md): Subscribe to this topic to receive notifications about orderbook updates for specific trading pairs.
- [Trade Notification](https://docs-protocol.loopring.io/resources/websocket/trade-notification.md): Subscribe to this topic to receive notifications about new trades for specific trading pairs.
- [Ticker Notification](https://docs-protocol.loopring.io/resources/websocket/ticker-notification.md): Subscribe to this topic to receive notifications about ticker updates for specific trading pairs.
- [Candlestick Notification](https://docs-protocol.loopring.io/resources/websocket/candlestick-notification.md): Subscribe to this topic to receive notifications about candlestick updates for specific trading pairs.
- [AMM Pool Snapshot Notification](https://docs-protocol.loopring.io/resources/websocket/amm-pool-snapshot-notification.md): Subscribe to this topic to receive notifications about token balance updates for specific AMM Pools.
- [Block Generation Notification](https://docs-protocol.loopring.io/resources/websocket/block-generation-notification.md): Subscribe to this topic to receive notifications about Loopring L2 block.
- [Loopring Smart Wallet](https://docs-protocol.loopring.io/resources/loopring-smart-wallet.md)
- [Signature and verification](https://docs-protocol.loopring.io/resources/loopring-smart-wallet/signature-and-verification.md)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information, you can query the documentation dynamically by asking a question.
Perform an HTTP GET request on a page URL with the `ask` query parameter:
```
GET https://docs-protocol.loopring.io/readme.md?ask=<question>
```
The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.
Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
