# Introduction to idexo

idexo is on a mission to empower, enable and execute on the creation of mainstream applications that realize the promise of blockchain and web3 technologies.

To empower and enable we provide a suite of low-code and no-code tools to help anyone create these mainstream applications:&#x20;

1. **The low-code SDK**: Since the beginning of 2021, idexo has published its [javascript SDK](https://www.npmjs.com/package/idexo-sdk) that simplifies how developers can interact with different blockchains to achieve specific objectives. For instance, we were the first to offer minting of NFTs in "[1 line of code](https://twitter.com/samecwilliams/status/1369053433291018245)". Since then, we continue to expand on its features and anyone can use it to easily integrate any type of software or application with the blockchain.&#x20;
2. **No-code SaaS**: Since mid-2021, idexo has also offered a [no-code SaaS product](https://app.idexo.com/register) that provides a suite of modules for accomplishing different tasks such as [NFT Collection Creation](https://idexo.com/nft-creation-software.html) and Management, [Web3 Player Management](https://idexo.com/web3-player-management-system.html) for games, and [Web3 Marketing](https://idexo.com/web3-marketing-software.html) and CRM for companies.&#x20;
3. **Zapier Integration**: In addition to using the SDK, users can connect to idexo's API directly and idexo also provides an [integration with Zapier](https://zapier.com/apps/idexo/integrations) that makes it easy to set-up specific workflows, such as creating an NFT using OpenAI from any web form.&#x20;

To advance and accelerate mainstream adoption, idexo also leverages its own platform to create new apps, as supported by its community:&#x20;

1. Holders of the [idexo $IDO token](https://ido.cl/coingecko) can [stake it "directionally"](https://app.idexo.io/staking/?pool=NFTME) on new apps to decide what should get built and receive rewards from those new apps.&#x20;
2. idexo build these apps and then spins them out as their own projects.&#x20;


# Getting Started

This page walks you through the basics of installing and using the low-code Idexo Software Development Kit (SDK) and no-code SaaS app.

## Register an Account in the App

To set-up your smart contracts and transactions in a simple visual interface, you can register an account at <https://app.idexo.com/register>.

In the app you can accomplish everything from the SDK and more in a simple, intuitive and visual way.&#x20;

You can also combine using the visual app and the SDK if that suits your use case.&#x20;

To use the app you need to choose from one of the available plans. Further details about the plans are in the app and on the pricing page.&#x20;

## Install the SDK

Install the SDK using NPM:

```
$ npm install idexo-sdk
```

{% hint style="info" %}
&#x20;This installs the SDK and gives you access to simplified methods that communicate with the Idexo API for processing your multi-blockchain developer transactions.
{% endhint %}

Now that you've installed the SDK, let's make sure you have transaction and method credits to perform your desired methods on the chain you want. You do that inside the SaaS app:

<figure><img src="https://idexo.com/images/docs/purchase-transaction-credits.png" alt=""><figcaption><p>Purchasing 50 Transaction Credits for $25</p></figcaption></figure>

To buy transaction credits, you can choose to purchase using either FIAT or crypto. Once you have the credits, you can choose the methods you want, never having to worry about the underlying gas or settings.&#x20;

<figure><img src="https://idexo.com/images/docs/purchase-method-credits.png" alt=""><figcaption><p>Purchasing Method Credits using Transaction Credits</p></figcaption></figure>

For this example, let's assume we have chose to purchase some credits for creating a Royalty NFT collection that is capped to 100 NFTs to be deployed on the Polygon blockchain. First let's see how we would create the collection using either the SDK or the app UI.&#x20;

**Using the SDK**

```javascript
const ido = require('idexo-sdk')
ido.NFTs.createCappedRoyalty(apiKey, 'polygon', NFTCollectionName, NFTCollectionSymbol, 
RoyaltyCollectorWalletAddress, RoyaltyBasisPoints, 100) //100 is Cap value
.then((res) => console.log(res.data))

```

**Using the App**

<figure><img src="https://idexo.com/images/docs/royalty-collection-creation.png" alt=""><figcaption><p>Creating a Royalty NFT Collection within the idexo app</p></figcaption></figure>

Now that you have created the collection, you can begin using the many different methods for pre-minting or minting those 100 NFTs in the collection.&#x20;


# Get API Key

This describes how to obtain an idexo API key.

To obtain an API Key, sign-up an account at <https://app.idexo.com/register> and you can find your API key under Account -> API.&#x20;

<figure><img src="https://idexo.com/images/docs/idexo-api-key.png" alt=""><figcaption><p>API key and transactions history within the idexo app</p></figcaption></figure>


# Introduction

This section introduces the basics of deploying NFT Collections and minting their NFTs, on any supported blockchain network.

In the tabs below this introduction you will find different methods for creating NFT collections, minting individual NFTs or using other functions of Collections and NFTs. You must also specify what blockchain network you are using.&#x20;

When you create an NFT collection this creates a smart contract with a corresponding contract address. You'll need to record that address when you deploy it and then use it in subsequent functions.


# Create a Capped NFT Collection

This section describes how to create an NFT Collection on any supported blockchain.

To use this method, you need an [idexo API key](/get-api-key):

You will need to specify the network you want to use, choosing from the following network names:&#x20;

* avalanche
* bnbchain
* dogechain
* ethereum
* fantom
* polygon

Assuming you have [installed the SDK](/master), you can use the following code in your file (instructions on modifying it follows):

```javascript
const ido = require('idexo-sdk')
ido.NFTs.createCollectionCapped(apiKey, network, name, symbol, cap)
.then(res=> console.log(res.data))
```


# Create a Uncapped NFT Collection

This section describes how to create an NFT Collection on any supported blockchain.

To use this method, you need an [idexo API key](/get-api-key):

You will need to specify the network you want to use, choosing from the following network names:&#x20;

* avalanche
* bnbchain
* dogechain
* ethereum
* fantom
* polygon

Assuming you have [installed the SDK](/master), you can use the following code in your file (instructions on modifying it follows):

```javascript
const ido = require('idexo-sdk')
ido.NFTs.createCollectionUncapped(apiKey, network, name, symbol)
.then(res=> console.log(res.data))
```


# Create an Uncapped Soulbound NFT (SBT) Collection

This tutorial covers how to create an SBT collection using the idexo SDK.

A Soulbound NFT is one where the holder cannot transfer the NFT. Idexo first issued a Soulbound NFT with its own [Idexo Early Adopter NFTs](https://bscscan.com/token/0x5fd45a09a59fcb396c7c1754f018dd822ddd8ae6) back in April 2021 on Binance Smart Chain.&#x20;

This standard Uncapped SBT Collection removes the transfer function for holders and reserves it for the owner of the contract (for recovery purposes).&#x20;

To use this method, you need an [idexo API key](/get-api-key):

You will need to specify the network you want to use, choosing from the following network names:&#x20;

* avalanche
* bnbchain
* dogechain
* ethereum
* fantom
* polygon

Assuming you have [installed the SDK](/master), you can use the following code in your file (instructions on modifying it follows):

```javascript
const ido = require('idexo-sdk')

ido.NFTs.createSBTUncapped(apiKey, network, name, symbol)
.then(res => console.log(res.data))

```


# Create a Capped Soulbound NFT (SBT) Collection

This tutorial covers how to create an SBT collection using the idexo SDK.

A Soulbound NFT is one where the holder cannot transfer the NFT. Idexo first issued a Soulbound NFT with its own [Idexo Early Adopter NFTs](https://bscscan.com/token/0x5fd45a09a59fcb396c7c1754f018dd822ddd8ae6) back in April 2021 on Binance Smart Chain.&#x20;

This standard Capped SBT Collection removes the transfer function for holders and reserves it for the owner of the contract (for recovery purposes).&#x20;

To use this method, you need an [idexo API key](/get-api-key):

You will need to specify the network you want to use, choosing from the following network names:&#x20;

* avalanche
* bnbchain
* dogechain
* ethereum
* fantom
* polygon

Assuming you have [installed the SDK](/master), you can use the following code in your file (instructions on modifying it follows):

```javascript
const ido = require('idexo-sdk')

ido.NFTs.createSBTCapped(apiKey, network, name, symbol)
.then(res => console.log(res.data))

```


# Mint a NFT

This section describes how to mint a NFT within a Collection.

To use this method, you need an [idexo API key](/get-api-key).&#x20;

You also need to have the address of an XXX contract that you have deployed, the address you are minting to and the URI for the metadata file for the NFT that you are minting. You will need to specify the blockchain network the NFT Collection is on, i.e. one of the following supported networks:&#x20;

* avalanche
* bnbchain
* dogechain
* ethereum
* fantom
* polygon

Assuming you have [installed the SDK](/master), you can use the following code in your file (instructions on modifying it follows):

```javascript
const ido = require('idexo-sdk')
ido.NFTs.mintNFT(apiKey, network, contractAddress, addressToMintTo, tokenUri)
.then(res => console.log(res.data))
```


# Mint a SBT

This section describes how to mint a NFT within a Collection.

To use this method, you need an [idexo API key](/get-api-key).&#x20;

You also need to have the address of an XXX contract that you have deployed, the address you are minting to and the URI for the metadata file for the NFT that you are minting. You will need to specify the blockchain network the NFT Collection is on, i.e. one of the following supported networks:&#x20;

* avalanche
* bnbchain
* dogechain
* ethereum
* fantom
* polygon

Assuming you have [installed the SDK](/master), you can use the following code in your file (instructions on modifying it follows):

```javascript
const ido = require('idexo-sdk')
ido.NFTs.mintSBT(apiKey, network, contractAddress, addressToMintTo, tokenUri)
.then(res => console.log(res.data))
```


# Mint a NFT With Image and Metadata In 1 Transaction

This section describes how to mint a NFT within a Collection.

To use this method, you need an [idexo API key](/get-api-key).&#x20;

You also need to have the address of an XXX contract deployed, the address you are minting to, the path to the image, the name, description, and attributes for the NFT that will be minted. You will need to specify the blockchain network the NFT collection is on, i.e. one of the following supported networks:

* avalanche
* bnbchain
* dogechain
* ethereum
* fantom
* polygon

Assuming you have [installed the SDK](/master), you can use the following code in your file (instructions on modifying it follows):

```javascript
const ido = require('idexo-sdk')
ido.Multi.mintNFTWithImage(apiKey, network, contractAddress, addressToMintTo, image, nftName, nftDescription, attributes)
.then(res => console.log(res.data))
```

#### Parameters

<table><thead><tr><th width="185">Name</th><th width="111">Data Type</th><th width="113">Optional</th><th>Description</th></tr></thead><tbody><tr><td>apiKey</td><td>string</td><td>required</td><td>see here on how to get an <a href="/pages/-MVIAS35PB3yZxHyVL-W">API key</a></td></tr><tr><td>network</td><td>string</td><td>required</td><td>see above for valid networks</td></tr><tr><td>contractAddress</td><td>string</td><td>required</td><td>deployed contract address</td></tr><tr><td>addressToMintTo</td><td>string</td><td>required</td><td>valid EVM address</td></tr><tr><td>image</td><td>string</td><td>required</td><td>can be 1) image file path, 2) URL, or 3) base64 string</td></tr><tr><td>nftName</td><td>string</td><td>required</td><td></td></tr><tr><td>nftDescription</td><td>string</td><td>required</td><td></td></tr><tr><td>attributes</td><td>json</td><td>optional</td><td>must be an array. Example: [ { "trait_type": "color", "value": "blue" } ]</td></tr><tr><td>options</td><td>object</td><td>optional</td><td>set metadata storage option (default "arweave"). ex. { metadataStorage: "filecoin" }</td></tr></tbody></table>

#### Example

```javascript
const ido = require('idexo-sdk')

const image = "https://blog.idexo.io/wp-content/uploads/2021/02/cropped-Logo-dark.png"
const attributes =[ { "trait_type": "color", "value": "blue" } ]
const options = { metadataStorage:"filecoin" } 

ido.Multi.mintNFTWithImage(
  apiKey, 
  "polygon", 
  "0x51BB9B9cCdF04af385b8356F41e20140bAdF80a0", 
  "0x3448a183da142bc6eccfdc690572dfe2d276ddfa", 
  image, "nftName", "nftDescription", attributes, options
).then(res => console.log(res.data))
// Valid Response
// res.data => 
{
      message: 'ido_sdk',
      error: null,
      data: {
        network: 'polygon',
        function_name: 'mintWithImage',
        args: [
          '0x51BB9B9cCdF04af385b8356F41e20140bAdF80a0',
          '0x3448a183da142bc6eccfdc690572dfe2d276ddfa',
          'nftName',
          'nftDescription',
          [Array]
        ],
        tx_hash: '0x16e80e4fc91ac2eec909cda9ad124b7590bac44be4ca16ed60e151ba5ae4075b',
        tx_status: false,
        tx_group: 'collection',
        sender: '0x8142409931f554d99013de129cdDc70EA016d62d',
        nonce: 12702,
        tx_id: '82304090-8cab-11ed-80da-fd24f00cf799',
        metadataUri: 'https://arweave.net/xtQEsAyWKEb1Hjov36d4ojlFVkXa9i2MOooF6WI3OS4'
      },
      code: 200
}
```


# Create a Project Token

This section describes how to deploy a smart contract that creates a token that conforms to the ERC20 standard used by many project utility tokens.

To use this method, you need an [idexo API key](https://idexo.gitbook.io/docs/get-api-key) that has been upgraded to a customer API key. To upgrade, please [contact us](https://t.me/idexo_io). You will need to specify a network, from the following list of supported networks:&#x20;

* avalanche
* bnbchain
* dogechain
* ethereum
* fantom
* polygon

Assuming you have [installed the SDK](https://idexo.gitbook.io/docs/), you can use the following code in your file (instructions on modifying it follows - for more information on how to use it see our [Getting Started](https://idexo.gitbook.io/docs/) tutorial):

```javascript
const ido = require('idexo-sdk')
ido.Tokens.deployToken(apiKey, network, name, symbol, capped, cap)
.then(res => console.log(res.data))
```


# Mint a Token

This describes how to mint a specified amount of tokens to a specified wallet address on the network specified, for the token contract specified.

To use this method, you need an [idexo API key](https://idexo.gitbook.io/docs/get-api-key) that has been upgraded to a customer API key. To upgrade, please [contact us](https://t.me/idexo_io).&#x20;

You will also need the address of a deployed ERC20 token contract to use. You can [create one here](https://idexo.gitbook.io/docs/how-to/deploy-an-erc20-token-with-capped-supply-to-ethereum-mainnet).&#x20;

Assuming you have [installed the SDK](https://idexo.gitbook.io/docs/), you can use the following code in your file (instructions on modifying it follows - for more information on how to use it see our [Getting Started](https://idexo.gitbook.io/docs/) tutorial):

```javascript
const ido = require('idexo-sdk')
ido.network.mintToken(apiKey, contractAddress, mintToAddress, amount)
.then((res) => console.log(res.data))
```

To use the above code, you need to set values for:

* contractAddress: the address of the BEP20 token contract
* mintToAddress: the address of the wallet you want to the tokens to
* amount: the amount of tokens to mint
* apiKey: your [idexo API key](https://idexo.gitbook.io/docs/get-api-key)

The method in summary is:&#x20;

ido.Ethereum.mintERC20(contractAddress, addressToMintTo, image, apiKey)


# Upload Plain Text

This describes how to upload a plain text file to decentralized storage.

Supported networks:&#x20;

* arweave

```javascript
const ido = require('idexo-sdk')
const plainText = 'Hello World' // replace this with your plain text 
ido.Storage.uploadPlain(network, plainText)
```


# Upload an HTML file

This describes how to upload an HTML to decentralized storage.

Supported networks:&#x20;

* arweave

```javascript
const ido = require('idexo-sdk')
ido.Storage.uploadHTML(network, data)
.then((res) => console.log(res.data))
```


# Request A New Blockchain Integration

Instructions on how to request a new blockchain integration to be made available through idexo and/or new features to an existing integration.

&#x20;To request a new blockchain integration and/or updates to an existing integration, please [add an issue](https://github.com/ZIPWeb3/idexo-engine-sdk/issues) to the that describes your request in detail to the idexo-engine-sdk on Github.


# How To Add A New Blockchain

This describes how to add a new blockchain integration to the SDK yourself. This is mainly targeted at blockchain protocol developers, however anyone can add an integration.

To add a new blockchain, fork [the idexo-engine-sdk repository](https://github.com/ZIPWeb3/idexo-engine-sdk), create a new class file that represents the blockchain (i.e. BlockchainName.js, where BlockchainName is the name of the blockchain you are integrating, making sure that it doesn't conflict with any existing named files) and submit a pull request.


# Create a Vesting Smart Contract

This section describes how to deploy a vesting smart contract on your specified blockchain.

To use this method, you need an [idexo API key](https://idexo.gitbook.io/docs/get-api-key) that has been upgraded to a customer API key. To upgrade, please [contact us](https://t.me/idexo_io). You will need to specify a network, from the following list of supported networks:&#x20;

* avalanche
* bnbchain
* dogechain
* ethereum
* fantom
* polygon

Assuming you have [installed the SDK](https://idexo.gitbook.io/docs/), you can use the following code in your file (instructions on modifying it follows - for more information on how to use it see our [Getting Started](https://idexo.gitbook.io/docs/) tutorial):

```javascript
const ido = require('idexo-sdk')
ido.Vesting.deployVesting(apiKey, network, depositToken, beneficiary, startTime, cliffMonth, durationMonth)
.then(res => console.log(res.data))
```


# Introduction

This section introduces the basics of utils

In this section you find useful methods:

* [**getContractAddress**](/utils/get-contract) This method returns the contract address so you can use it when calling other methods;
* [**getTransactions**](/utils/get-transactions) This method returns transactions that meet the filter criteria (network, timestampFrom and timestampTo)


# Get Contract

This section describes how you can get the previously contract data.

To use this method, you need an [idexo API key](https://idexo.gitbook.io/docs/get-api-key) that has been upgraded to a customer API key. To upgrade, please [contact us](https://t.me/idexo_io). You will need to specify a network, from the following list of supported networks:&#x20;

* avalanche
* bnbchain
* ethereum
* fantom
* polygon

Assuming you have [installed the SDK](https://idexo.gitbook.io/docs/), you can use the following code in your file (instructions on modifying it follows - for more information on how to use it see our [Getting Started](https://idexo.gitbook.io/docs/) tutorial):

```javascript
const ido = require('idexo-sdk')
ido.Utils.getContractAddress(apiKey, network, transactionHash)
.then(res => console.log(res.data))
```


# Get Transactions

This section describes how you can get the previously contract data.

To use this method, you need an [idexo API key](https://idexo.gitbook.io/docs/get-api-key) that has been upgraded to a customer API key. To upgrade, please [contact us](https://t.me/idexo_io). You will need to specify a network, from the following list of supported networks:&#x20;

* avalanche
* bnbchain
* ethereum
* fantom
* polygon

Assuming you have [installed the SDK](https://idexo.gitbook.io/docs/), you can use the following code in your file (instructions on modifying it follows - for more information on how to use it see our [Getting Started](https://idexo.gitbook.io/docs/) tutorial):

```javascript
const ido = require('idexo-sdk')
ido.Utils.getTransactions(apiKey, network, timestampFrom, timestampTo)
.then(res => console.log(res.data))
```


# Introduction

Directional staking utility concepts of the $IDO innovation token and the idexo ecosystem.

From its outset, the idexo ecoystem has pioneered the concept of using staking and rewards mechanisms to guide decision-making in innovation processes.&#x20;

**The Value of Staker Insight**

It is easy to understand the concept of people who "have a stake in something" making decisions to better the long-term outcome of the thing they have a stake in. It's also a good measure of the seriousness of suggestions and ideas being put forward, since stakers have to "put their tokens where their mouth is". With this in mind, a core concept of directional staking is that stakers will provide a greater degree of insight in the plan -> execute -> learn -> adapt -> plan process of innovation.&#x20;

**The Benefits to Ecosystem**

Users of the idexo product suite can use general and directional staking to provide feedback and requirements requests that go far beyond typical roadmap feedback and have more ageny in those decisions. Innovators with their own ideas can propose new app ideas that leverage the product foundations and see those ideas rapidly realized.&#x20;

The community as a whole can learn more quickly what it takes to ideate and bring to market the type of mainstream apps and their features/benefits required to realize the vision and value of web3.&#x20;

**Additional Utility of Staker NFTs**

Every time a stake transaction is made (i.e. tokens are deposited), a stake NFT is generated and send to the staker. These NFTs have recorded on them the size of the stake and other key information that can be queried from the blockchain.&#x20;

Any stake NFT in any idexo pool has the ability to vote on key initiatives, including in the special Spendable Voting contracts that determine how community tokens should be allocated on Idexo Improvement Proposals and other initiatives.&#x20;

As NFTs they can also be used to unlock special access in community portals etc. like any other type of NFT.&#x20;

&#x20;


# NFTMe

A mobile app that enables users to easily create and list NFT collections. If you can take a selfie, you can create NFTs and new monetization streams.

NFTMe is a mobile app available on iOS and Android and scheduled for first full release in July 2023. It is currently available in alpha test phase and can be downloaded for either platform on the [NFTMe website](https://nftm3.com).&#x20;

Stakers in the [$IDO directional staking pool on zkSync](https://app.idexo.io/staking/?pool=NFTME) can stake now under the below terms. It is expected and planned that there will be an $NFTME token as part of the spinoff and $IDO stakers would then split an allocation of 6% of the total supply, with vesting terms being a 3-month cliff post-TGE and 24-months vesting. Since the staking term for this pool is a lock of 15-months from the date of staking, it would be possible to withdraw the $IDO stake before the end of the $NFTME vesting period. Thus, the earlier a user stakes, the earlier they can withdraw, regardless of whenever a date of a TGE took place.&#x20;

The expected core revenue model of the NFTMe app will consist of:&#x20;

* Listing Sales Commissions
* Split of Royalty Fees
* Advertising Fees for Ranking Higher

**Term of Stake and Reward Mechanism**

* **Term**: 15-months lock from date of staking
* **Reward Mechanism**:&#x20;
  * In case of TGE: Stakers will split 6% of the total supply of $NFTMe tokens, based on their proportion of total $IDO staked in the pool before cut-off, with vesting terms being a 3-month cliff post-TGE and 24-months vesting.
  * In case of no TGE by Jan 2024: If the expected TGE does not take place for any reason, the reward mechanism will be $IDO that is bought back from the market (using 35% of revenues generated from the app) and distributed as rewards to stakers proportional to their stake. This would continue until a TGE took place and if not, then indefinitely. In this case, stakers would only receive rewards while remaining staked.&#x20;
* **Cut-off for staking**: The pool will close for new entrants once the app has achieved 1,000 Daily Active Users.&#x20;

Link to staking: The [NFTMe Directional Pool on zkSync](https://app.idexo.io/staking/?pool=NFTME)

**How to acquire $IDO to stake**:&#x20;

Given that the pool is on zkSync the *most convenient way to acquire $IDO* innovation *tokens* is from the [IDO/ETH DEX pool on Mute on zkSync](https://info.mute.io/token/0xdea6d5161978d36b5c0fa6a491faa754f4bc809c).&#x20;

If you don't already have $ETH on zkSync you can bridge them using the [zkSync bridge portal.](https://portal.zksync.io/bridge)&#x20;

It is also possible to buy $IDO on Ethereum from the [Ascendex CEX](https://ido.cl/ascendex). You will then need to bridge the $IDO to zkSync using the zkSync bridge.&#x20;


