# Introduction

This page will give you an outline of what Felon Security entails, and what services we offer for you, and your community.

{% hint style="warning" %}
Some of our products are still in BETA version, bugs should be expected, though, they will be fixed swiftly once found.
{% endhint %}

## Services We Offer

Below are the current services we offer.

> #### Moderation & Management (Communities)
>
> Alongside our automated bots we also offer moderation and management services. We currently have 6 full time, certified discord moderators and 2 community managers that are available to work for you and your community.

> #### Discord Bots (Communities)
>
> Our discord bots provide you solutions to manage, secure, and run your discord servers in a smooth way. Whether you need a simple moderation bot, or a fully modulated bot that can run your whole discord.

> #### Discord Bots (Personal)
>
> Looking for an automated way to track cryptocurrency wallets, check crypto and nft pricing/data, or even automatic minting/selling?&#x20;
>
> Our personal use discord bots fulfill the following needs, and more!
>
> * Automated Wallet Tracking (NFT & Crypto)
> * Crypto & NFT Collection Tracking (Sales, Listings, Price Changes, etc)
> * and more!

> #### Analytics Panel
>
> A free to use, analytics panel that displays all data that one might need for collection and NFT data. Will include everything from in-depth collection market data to past security issues, etc.

> #### Guides
>
> Our guides provide information on NFTs in general, how to use common tools, alongside how to keep your discord and communities safe.

> #### API
>
> A slick, performant, and easy to use API that retrieves data on user accounts, collections, tokens, and more.

{% hint style="info" %}
Some of are products are free to use, while others have a monthly fee.
{% endhint %}

## Clients & Partners

We work with some of the best in the industry providing security, management, and more.

<table data-view="cards"><thead><tr><th></th><th></th><th></th><th data-hidden data-card-cover data-type="files"></th></tr></thead><tbody><tr><td></td><td>Rolling Loud's NFT project community runs off of our multi-purpose discord bot which includes; security, auto moderation, ticketing, music, and more.</td><td></td><td><a href="/files/DcBd5O3wzXcQV8uFem8W">/files/DcBd5O3wzXcQV8uFem8W</a></td></tr><tr><td></td><td>LookLab's community runs off of our multi-purpose discord bot which includes; security, auto moderation, ticketing, music, and more.</td><td></td><td><a href="/files/oNg8cFqOWydCgBKYiCv0">/files/oNg8cFqOWydCgBKYiCv0</a></td></tr><tr><td></td><td></td><td></td><td></td></tr></tbody></table>


# Discord Security

Your communities safety is the highest priority one must have when leading a project. From fixing common mistakes, to preventing intricate scams.

{% hint style="info" %}
This guide will outline a lot of information, so we recommend you taking the time to learn them, and test them out yourself. Alongside this, we will attempt to outline every thing you must do, but the space is always evolving meaning that you must be ready for anything.
{% endhint %}

### Part 1 - The Setup

A step by step guide on setting up a discord, things to lookout for, and how to properly manage your moderators and team members.

{% content-ref url="/pages/GWmMBuc8w1jj2MPEM4Na" %}
[Setting Up A Discord](/guides/discord-security/setting-up-a-discord)
{% endcontent-ref %}

### Part 2 - Common Scams, and Phishing Practices

An outline of common scams and phishing practices that have been used in the past to breach communities, and projects.

{% content-ref url="/pages/5mHoYhgL5B4D1Z0qrdY0" %}
[Common Scams, and Phishing Practices](/guides/discord-security/common-scams-and-phishing-practices)
{% endcontent-ref %}


# Setting Up A Discord

A step by step guide on setting up a discord, things to lookout for, and how to properly manage your moderators and team members.

### Step 1 - Creating Your Server

Creating your discord is easy, it takes 3 clicks to be done.

&#x20;

<figure><img src="/files/tI8BWljozaT8CuiGuj2y" alt=""><figcaption><p>Firstly, press the; "Add a Server" button.</p></figcaption></figure>

<figure><img src="/files/0bY9pkVcQKIkio46anNk" alt=""><figcaption><p>Then, find the; "Create My Own", and press it.</p></figcaption></figure>

<figure><img src="/files/qu6iZPP35zTwJRN1hEsn" alt=""><figcaption><p>Pick whichever use case this will be for.</p></figcaption></figure>

<figure><img src="/files/9X1ELzdYiil0T85UaPIP" alt=""><figcaption><p>Pick a server icon and name (both can be changed later on)</p></figcaption></figure>

Congratulations, you've created your first discord server.

### Step 2 - Initial Configuration

Now, some basic configuration must be done in the server.

<figure><img src="/files/Iy7puY4Iy4YRwcv2q7Hj" alt=""><figcaption><p>Firstly, click on the top bar that displays the server's name, and press; "Server Settings".</p></figcaption></figure>

<figure><img src="/files/Ysw2ezFnxaXSKLgvfcb3" alt=""><figcaption><p>Then, find the roles category and press; "Default Permissions".</p></figcaption></figure>

Now, once you're here, there's a few things to do depending on how you want your discord setup.

Though, the most important thing you must do is disabling the; "Mention @ everyone, @ here, and All Roles" permission. This will make it so members cannot mass tag users.

<figure><img src="/files/TBW3nHSEi67XRhod6EP8" alt=""><figcaption><p>Make sure that the toggle is grey, and not green.</p></figcaption></figure>

### Step 3 - Member Role&#x20;

Now, what I recommend you do is create a; "Member" role that your users will receive once they verify they are humans. You can follow the same setup if you wish your discord to be holder only, though, instead of verifying them through a simple catpcha, you'll want to verify their NFT holdings, which you can do through our bot, Protus.

<figure><img src="/files/QVIxfBO0QUDYmjlptLgr" alt=""><figcaption><p>Head back to the role category and press the; "Create Role" button.</p></figcaption></figure>

Now, user the prompts to name your role and set a color/icon for it. Alongside this, for a more aesthetic display, I recommend you enable; "Display role members separately from online members".&#x20;

There are three ways that you'll be able to hand out the; "Member" role.

1. Auto-role - New users will automatically be given the member role (HIGHLY DISCOURAGED).
2. Captcha Verification - New users will have to complete a captcha to verify they're human.
3. NFT Asset Verification - New users will have to verify that they own an asset in your collection(s) to receive the member role.

The setup for the above 3 methods is different depending on what method you use. Captcha  Verification and NFT Asset Verification is available in two of our products; Plutus and Soteria.

**Step 4 - Initial Channel Setup**

The channel setup tends to be the more messy aspect for most people who setup discords. Common mistakes are;

1. Denying channel specific permissions when role permissions are already denied.
2. Denying permissions that are not useful in the specific channel.
3. Mass allowing permissions that are already granted in the role permissions category.

Now, the channel that ends up having the most confusing channel setup is; the verification channel. The way this works is;

* Allowing the @ everyone role to see the channel.
* Denying the @ member role from seeing the channel.

  <figure><img src="/files/ymMe9Kj2918ORzYhQwqC" alt=""><figcaption></figcaption></figure>

  <figure><img src="/files/yeJCGQKUiuMMB2lardtW" alt=""><figcaption></figcaption></figure>

What this does is:

1. Every new member that joins the discord will see the verification channel, while every member that is already verified won't see it.

### Step 4 - All Channel Setups

Once you have setup the verification channel, there's going to be a pattern to all your channels, and it goes as follows:

* The "Member" role will be allowed to see every channel apart from your verification channel.
* Non-verified members (members without the member role) will ONLY be able to see the verification channel.

To do this, you must follow the following permission setup for your channels/categories.

<figure><img src="/files/d8QGZ6IKJSWgtBSmwUje" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/bBdZietTUr5d1pvLD5Ak" alt=""><figcaption></figcaption></figure>

Take a moment to notice that I don't deny @ everyone the; "View Channel" permission since it's already denied in the roles category, in the server settings.

A few recommendations from us to you:

1. In announcement/information channels we recommend you disable the: "Add Reactions" permission. This makes it so your announcenments/information posts only have reactions that you wish to have, and keep it clean.
2. In the @everyone role permissions, disable; "Create Public Threads" & "Create Private Threads" permissions disabled. This makes it so regular members cannot make threads in your channels, which keeps the discord clean and organized.

### Step 5 - Moderator Role / Roles Setup

We guided you in regards to creating a Member role, and how to toggle certain permissions. We know that projects like to have moderators to moderate their chats, and to stop scams.&#x20;

Common Permissions to grand moderators:

1. Ban/Kick Members
2. Timeout members
3. Mute/Deafen Members

The biggest mistakes we see in the space;

1. Giving too many permissions to moderators.
2. Having too many moderators.
3. Handling bans, kicks, roles, and timeouts through native discord.
4. Allowing moderators to @ everyone, @ here, and @ roles.

All of the above mistakes introduce many security issues throughout your discord. We recommend you to use a secure, safe, and trusted discord bot to handle all moderative actions in your discord, like our product; Soteria. Using a bot allows a regulated, logged form of using moderative actions.

**NEVER GIVE OUT "ADMINISTRATOR" PERMISSIONS TO ANYONE BUT LEAD TEAM MEMBERS IF NEEDED.**

### Step 6 - Channel and Role Structure

Now, your channels and roles should have a structure.

1. @ everyone should have; "Read Channels" permission disabled on all channels apart from your verification channel.
2. @ everyone should have; "Tag @ everyone, @ here, and @ All Roles" disabled.
3. @ everyone / members roles should have; "Add Reactions" disabled in your announcement channels.
4. @ everyone / member roles should have; "Create Public Threads" / "Create Private Threads" disabled in all channels.
5. Moderator roles should only have special permissions through a trusted bot like Cronus, or Soteria.

### Step 7 - Safety Setup

Enabling the moderative settings in your discord server is a must. It adds an automated way handled by discord that makes your discord a safer place for your users.

<figure><img src="/files/7SqU629ycuGF0QBbJLL2" alt=""><figcaption><p>Head over to server settings, find the; "Safety Setup" category, and copy the settings as shown in the screenshot.</p></figcaption></figure>

Tip - High is the best setting to have for your Safety Setup. Requiring verified phone numbers for your discord server cuts around 40% of your discord users.

<figure><img src="/files/cIrf8sXRetf7PlZcUpsm" alt=""><figcaption><p>Alongside the above setup, make sure that you enable the; "2FA Requirement" for your moderators.</p></figcaption></figure>

### Step 8 - Enable Community

A recommended step for you is to enable the discord; "Community" feature. This allows your discord to be discovered by new users through the discord discovery feature. To do this, follow the  steps below.

<figure><img src="/files/95JZC35di3KCmMkt4LHY" alt=""><figcaption><p>Firstly, click on the top bar that displays the server's name, and press; "Server Settings".</p></figcaption></figure>

<figure><img src="/files/3s0quQiPjn5iqaCQupH6" alt=""><figcaption><p>Find the; "Enable Community" category and press; "Get Started".</p></figcaption></figure>

<figure><img src="/files/nfdnY2sL5hueQEJGec8t" alt=""><figcaption><p>Press both of the checkboxes, and press next.</p></figcaption></figure>

<figure><img src="/files/BSKnBWiGbEFa7J3bPfpQ" alt=""><figcaption><p>Agree to the rules, and then press; "Finish Setup".</p></figcaption></figure>

Congratulations, your discord is now discoverable through the discord discovery tab.

### Step 9 - Bots & Automation

A big part of running discord servers in an easier way is using bots and automation, though, a lot of times, that ends up being a discord servers downfall.&#x20;

Mistakes that people make;

1. Using untrusted bots for tasks they want automated.
2. Giving too many permissions to bots.
3. Configuring bots incorrectly allowing entry level moderations/regular users to exploit it.

The best practice to use for bots are;

1. Hiring a developer/team to create a custom bot for you.
2. Using a well trusted bot/service for automating tasks in your discord.
3. Only giving permissions required to bots.

   1. For example: A bot that plays music in your discord should NOT require permissions such as; "Administrator" & "Ban Members", but instead should require; "Join Voice Channels", "Read Channels", "Send Messages in Channels".

### **Step 10 - Webhooks**

Webhooks are highly discouraged in discords. We actually recommend you to use bots such as Soteria that automatically delete webhooks that are created.

Webhooks allow harmful actors to automatically spam send messages in certain channels in a discord promoting scam links. Completely disallowing webhooks creates yet another barrier for attackers to have to go through to harm your community.

### Conclusion

Congratulations, you should have a basic and secure discord server made. You'll now need to figure out how you want to theme your discord, alongside the system you want for your moderators, and which bots you'll want to use. We offer other guides in regards to specific discord topics, feel free to read through them to continue learning more.


# Common Scams, and Phishing Practices

Scams and Phishing have been a thing ever since discord first started gaining popularity, though, over the past 2 years, as NFTs blew up, we've seen a huge increase in these scams.

### DM Bots

The most popular scam at one point was the mass DM bots. What these bots did was join hundreds of NFT discord servers and then proceed to MASS DM users in those discords.

These are still being used, but aren't as common as they once were.

**Common Ways To Stop Them**

1. Using a verification bot that automatically kicks users after 15 minutes of being in the server without verifying.&#x20;
2. Anti-Bots, these tend to use an intricate filter system that includes; checking PFP, creation date, linked accounts, etc.&#x20;
   1. Fair warning, these bots sometimes have false flags and will kick real users.

### Phishing Servers, & Fake Teams

Another popular method that has tricked moderators and team members in high value communities such as Doodles, BAYC, and more is the use of fake projects reaching out to collaborate.

These fake projects will use multiple different methods to try to take your discord token.

1. Discord tokens are ways to login to discord accounts without requiring a password alongside bypassing any and all 2FA setup on the account.
   1. The only way for one to reset their discord token and re-secure their account is by resetting their discord account password.&#x20;

**Things To Lookout For**

1. Having to add a bookmark to your browser and then oppening it to verify in a server.
2. Them requiring you to scan a QR code to continue with a collaboration effort.
3. Fake engagement in their discord, and twitter communities.


# Cronus

Below is information about one of our products, Cronus.

{% hint style="success" %}
Cronus is our enterprise tier discord bot which comes with 24/7 support, up to date news to your team on new scams and exploits, weekly security sessions, and free updates and new feature implementation.
{% endhint %}

{% hint style="info" %}
Purchase Cronus by joining our discord and creating a ticket.&#x20;
{% endhint %}

**Server(s) Currently Using Cronus**

{% embed url="<https://discord.gg/loudpunx>" %}
Rolling Loud's official NFT project.
{% endembed %}

Each Cronus bot is hosted on it's own instance and allows you to change it's name, themeing, and PFP to really make it a part of your community. This also means that you will have your own dedicated server hosting just your Cronus bot, allowing you to not worry about resource usage, downtime, and latency.

### Features&#x20;

* General Commands
  * Gas, Price, TokenInfo, CollectionStats, ServerInfo, etc
* Leveling System
  * Both VC and Text
* Giveaway System
  * Allows you to set requirements like having your ETH wallet linked.
* Logging System
  * Hyper detailed logging system.
* Moderation Commands
  * Ban, Kick, Mute, Deafen, Timeout, Warn, Lock, Unlock, etc.
* Music System
  * High quality VC music streaming, with youtube and spotity support.
  * Voting system skipping songs/stopping the music (moderator bypass).
  * Blacklist system to stop certain users from using the music module.
* Ticket System
  * Multiple categories (configurable).
  * Transcripts logged, and hosted on a dashboard.
  * Blacklist system to stop certain users from creating tickets.
* Verification System
  * Image based.
  * Makes users accept the rules before allowing them to complete the captcha.
  * Allows moderators to manually verify a user if they can't complete the captcha.
* Warning System
  * Allows moderators to warn users, check user warnings, and edit/delete warnings.
* Automod System
  * Blacklist certain words/links.
  * Anti ghost pinging.
  * Anti mass pinging.
  * Automatically warns and puinishes users for multiple infractions.
* AntiRaid System
* AntiBot System
  * Filters new accounts through a bot check.
  * Allows you to set custom name checks to autoban on join.
    * For example, "Admin", would ban any new members with the name Admin.
* NFT Asset Verification
  * Secure, easy to use NFT authentication. **NO signature/TX required**, we will just ask users to change their Opensea bio's to a random string to allow us to verify the account's authenticity.&#x20;
* NFT Sales/Listings Tracker
* NFT Collection Information/Stats&#x20;
* NFT Traits&#x20;
* Twitter Feed System
  * Posts new tweets to a specific channel.<br>


# Soteria

Below is information about one of our products, Soteria.

{% hint style="success" %}
Soteria is a free to use discord moderation and security bot. It can protect your discord from malicious link announcements, has moderation, logging, and more.
{% endhint %}

{% hint style="info" %}
Invite the bot here - <https://discord.com/oauth2/authorize?client_id=1063436179271331840&scope=bot&permissions=268790982>
{% endhint %}

### Free Features&#x20;

* Captcha/Verification
  * Customizable and easy to use Captcha/Verification system that allows you to verify your users as humans.
    * Includes ability to make members read the rules before verifying.
    * Check's users discord privacy settings informing them to turn off their DMs from server members, promiting security.
    * Provides information on turning 2FA on, and good security practices.
    * Allows moderators to manually verify a user if they can't complete the captcha.
* Moderation Commands
  * Allows you to remove permissions such as kick, ban, timeout, and more from your moderator/administrator roles and makes them use the bot's command list for a safer punishment system.
* Block Harmful Announcements
  * Allows you to block harmful @ everyone, here, and role pings that include unwhitelisted links.
* Powerful Logging
  * Audit logs are cool and all, but they are annoying to look for, and don't provide indepth information. Our logging module allows you to see in-depth information about every action executed in your server.

### \[⭐] Premium Features&#x20;

{% hint style="info" %}
Purchase premium here: [https://buy.felonsecurity.net](https://whop.com/felonsecurity/?accessPassId=pass_O9m9KLnWUNM4O)
{% endhint %}

* AntiRaid System
  * Automatically stop harmful raids without affecting your real, normal users.
* AntiBot System
  * Advanced filtering system that stops bots and scammers from joining your discord.
* Global Ban List
  * Ability to toggle global ban list for raid accounts, scammers, bots, and more.
* Custom Messages
  * Edit the contents of the verification/captcha module.


# Commands

Commands for our product, Soteria.

**AntiBot**

* /antibot \[enable/disable]
* /antibot filter

**AntiLink**

* /antilink \[enable/disable]
* /antilink whitelist

**AntiRaid**

* /antiraid \[enable/disable]
* /antiraid ban&#x20;
* /antiraid threshold
* /antiraid lockdown
* /antiraid role \[@role]

**Global Ban**

* /global ban \[enable/disable]

**Logging**

* /logging \[enable/disable]
* /logging channel \[#channel]

**Verification**

* /verification message&#x20;
* /verification role \[@role]
* /verification channel \[#channel]
* /verify \[@user]

**Moderation Commands**

* /kick \[@user] \[reason]
* /ban \[@user] \[reason]
* /timeout \[@user] \[duration] \[reason]
* /prune \[amount]
* /warnings&#x20;
  * view \[@user]
  * edit \[warningID]
  * remove \[warningID]

**Server Admin Commands**

* /moderator \[add/remove] \[@user]


# Plutus

Below is information about one of our products, Plutus.

{% hint style="success" %}
Plutus is a free to use NFT utility bot. It can track sales/listings/minting from the following marketplaces and aggregators: Opensea, X2Y2, Looksrare, Blur, Genie, and Gem.
{% endhint %}

{% hint style="info" %}
Coming Soon...
{% endhint %}

### Free Features&#x20;

* NFT Asset Verification
  * Secure and easy way to verify user assets.
  * Will prompt users to submit an address to verify through a command, and will then require users to change their Opensea bio to a random string.
* NFT Sales
  * Tracks sales from: Opensea, X2Y2, Looksrare, Blur, Genie, and Gem.
  * Ability to pick which channel to send sales in.
* NFT Token Info Command
  * Allows users to retrieve information about a specific token.
* NFT Collection Info Command
  * Allows user to retrieve collection information such as: Volume, SalesCount, AveragePrice, TokensListedCount, floorPrice, holderCount.

### \[⭐] Premium Features&#x20;

{% hint style="info" %}
Purchase premium here: [https://buy.felonsecurity.net](https://whop.com/felonsecurity/?accessPassId=pass_O9m9KLnWUNM4O)
{% endhint %}

* Ability to add more than one collection to sale track for.
* Ability to add more contractAddresses for NFT verification alongside having different roles for each one.
* NFT Listings
  * Tracks listings from: Opensea, X2Y2, Looksrare, Blur, Genie, and Gem.
  * Ability to pick which channel to send listings in.
* NFT Mints
  * Tracks new tokens being minted in a specific collection.
  * Ability to pick which channel to send mints in.


# Commands

Commands for our product, Plutus.

### NFT Asset Verification

Allows users to verify their NFT assets for specific collections.

* **/nftverification edit -** Edit the contractAddress(s) and role(s) to give when verification is succesfull.
* **/nftverification message \[channel]** - Sends the NFT asset verification message to a channel.

### NFT Tracking

Tracks sales/listings/mints from: Opensea, X2Y2, Looksrare, Blur, Genie, and Gem.

* **/tracker sales** - Edit the contractAddress(s) and select the channel to post sales in.
* **/tracker listings -** Edit the contractAddress(s) and select the channel to post listings in.
* **/tracker mints -** Edit the contractAddress(s) and select the channel to post mints in.

### Token & Collection Info

Displays information on tokens and collections.

* **/collection edit -** Edit's the default collection to display info when using the collection command.
* **/collection info \[slug]** - Displays information on specified collection. If no collection is provided, it will check if default collection has been set.
* **/token info \[tokenId] \[slug]** - Displays information on specific token in collection. If no collection is provided, it will check if default collection has been set.


# NFT & Marketplace API

This API allows you to fetch information such as; NFT account information (OS bios, etc), as well as sales/listing data & faucets for multiple marketplaces and aggregators.

{% hint style="info" %}
We have made the OpenSea account information endpoint public. We understand that developers currently have an issue with fetching bio information for accounts, so we wanted to help out.
{% endhint %}

{% hint style="success" %}
The free API key's have a rate limit of 3 requests a second. If you're looking to upgrade plans, either join our discord or visit our store: [https://buy.felonsecurity.net](https://whop.com/felonsecurity/?accessPassId=pass_O9m9KLnWUNM4O)
{% endhint %}

### Obtaining An API Key

Visit the link, [HERE](https://api.felonsecurity.net/login). (api.felonsecurity.net/login).

This will ask you to login with discord, you can check exactly what you're giving us access to which is your username. We cannot do anything malicious with this, we only record: your username and discord ID.

{% hint style="info" %}
If you feel uncomfortable signing into your discord account, feel free to join our discord and create a ticket. We can always manually give you an API key.
{% endhint %}

{% embed url="<https://api.felonsecurity.net/login>" %}
If you need a refresher on your API key, just head to; <https://api.felonsecurity.net/dashboard>
{% endembed %}

After you login, you're good to use the following endpoint(s). Just include the header: "token" to authenticate your requests.

### NFT Account Endpoints

## Fetch Account Info

<mark style="color:blue;">`GET`</mark> `https://api.felonsecurity.net/v1/nft/account/opensea/address=`

Fetch an accounts information, includes opensea bio.

#### Path Parameters

| Name                                      | Type | Description      |
| ----------------------------------------- | ---- | ---------------- |
| address<mark style="color:red;">\*</mark> |      | Ethereum address |

{% tabs %}
{% tab title="200: OK " %}

```javascript
{
    // Response
}
```

{% endtab %}

{% tab title="404: Not Found " %}

```javascript
{"status":0,"message":"Endpoint not found. If you believe this is an error, contact me on twitter: @carvethedegen."}
```

{% endtab %}

{% tab title="401: Unauthorized " %}

```javascript
{
    // Response
}
```

{% endtab %}
{% endtabs %}

## Account Trading History

<mark style="color:blue;">`GET`</mark> `https://api.felonsecurity.net/v1/nft/account/trading/info/address=`

Fetches an address' NFT trading history.

#### Path Parameters

| Name                                      | Type   | Description      |
| ----------------------------------------- | ------ | ---------------- |
| address<mark style="color:red;">\*</mark> | String | Ethereum address |

{% tabs %}
{% tab title="200: OK " %}

```javascript
{
    // Response
}
```

{% endtab %}

{% tab title="401: Unauthorized " %}

```javascript
{
    // Response
}
```

{% endtab %}

{% tab title="404: Not Found " %}

```javascript
{
    // Response
}
```

{% endtab %}
{% endtabs %}

## Tokens Owned

<mark style="color:blue;">`GET`</mark> `https://api.felonsecurity.net/v1/nft/account/token/owns/address=&contractAddress=&count=&offset=&withMetadata=`

Fetches an address' owned tokens in a specific collection.

#### Path Parameters

| Name                                           | Type    | Description                            |
| ---------------------------------------------- | ------- | -------------------------------------- |
| address<mark style="color:red;">\*</mark>      | String  | Ethereum address                       |
| contractAddress                                | String  | Specific contract to check             |
| count<mark style="color:red;">\*</mark>        | Integer | Amount to fetch (between 1 and 100)    |
| offset<mark style="color:red;">\*</mark>       | Integer | Offset to use (must be greater than 0) |
| withMetadata<mark style="color:red;">\*</mark> | Boolean | Option to return token metadata        |

{% tabs %}
{% tab title="200: OK " %}

```javascript
{
    // Response
}
```

{% endtab %}

{% tab title="401: Unauthorized " %}

```javascript
{
    // Response
}
```

{% endtab %}

{% tab title="404: Not Found " %}

```javascript
{
    // Response
}
```

{% endtab %}
{% endtabs %}

### NFT Collection Endpoints

## Collection Info

<mark style="color:blue;">`GET`</mark> `https://api.felonsecurity.net/v1/nft/collections/info/contractAddress=`

Fetches collection info, retrieves info from Opensea.

#### Path Parameters

| Name                                              | Type   | Description      |
| ------------------------------------------------- | ------ | ---------------- |
| contractAddress<mark style="color:red;">\*</mark> | String | Contract address |

{% tabs %}
{% tab title="200: OK " %}

```javascript
{
    // Response
}
```

{% endtab %}

{% tab title="401: Unauthorized " %}

```javascript
{
    // Response
}
```

{% endtab %}

{% tab title="404: Not Found " %}

```javascript
{
    // Response
}
```

{% endtab %}
{% endtabs %}

## Collection Stats

<mark style="color:blue;">`GET`</mark> `https://api.felonsecurity.net/v1/nft/collections/stats/contractAddress=`

Fetches collection statistics, retrieves info from Opensea.

#### Path Parameters

| Name                                              | Type   | Description      |
| ------------------------------------------------- | ------ | ---------------- |
| contractAddress<mark style="color:red;">\*</mark> | String | Contract address |

{% tabs %}
{% tab title="200: OK " %}

```javascript
{
    // Response
}
```

{% endtab %}

{% tab title="404: Not Found " %}

```javascript
{
    // Response
}
```

{% endtab %}

{% tab title="401: Unauthorized " %}

```javascript
{
    // Response
}
```

{% endtab %}
{% endtabs %}

## Collection Floor

<mark style="color:blue;">`GET`</mark> `https://api.felonsecurity.net/v1/nft/collections/floor/contractAddress=`

Fetches a collections floor, retrieves info from multiple marketplaces.

#### Path Parameters

| Name                                              | Type   | Description      |
| ------------------------------------------------- | ------ | ---------------- |
| contractAddress<mark style="color:red;">\*</mark> | String | Contract address |

{% tabs %}
{% tab title="200: OK " %}

```javascript
{
    // Response
}
```

{% endtab %}

{% tab title="401: Unauthorized " %}

```javascript
{
    // Response
}
```

{% endtab %}

{% tab title="404: Not Found " %}

```javascript
{
    // Response
}
```

{% endtab %}
{% endtabs %}

## Collection Rankings

<mark style="color:blue;">`GET`</mark> `https://api.felonsecurity.net/v1/nft/collections/rankings/orderBy=&timeframe=&count=&offset=&marketplace=`

Fetch top collections by multiple statistics, on multiple different marketplaces.

#### Path Parameters

| Name                                          | Type    | Description                               |
| --------------------------------------------- | ------- | ----------------------------------------- |
| orderBy<mark style="color:red;">\*</mark>     | String  | Which statistic to order the rankings by. |
| timeframe<mark style="color:red;">\*</mark>   | String  | Timeframe for rankings.                   |
| count<mark style="color:red;">\*</mark>       | Integer | How many to display.                      |
| offset<mark style="color:red;">\*</mark>      | Integer | Offset to use.                            |
| marketplace<mark style="color:red;">\*</mark> | String  | Marketplace to fetch rankings from.       |

{% tabs %}
{% tab title="200: OK " %}

```javascript
{
    // Response
}
```

{% endtab %}

{% tab title="401: Unauthorized " %}

```javascript
{
    // Response
}
```

{% endtab %}

{% tab title="404: Not Found " %}

```javascript
{
    // Response
}
```

{% endtab %}
{% endtabs %}

## Owner Spread

<mark style="color:blue;">`GET`</mark> `https://api.felonsecurity.net/v1/nft/collections/ownerspread/contractAddress=`

Fetch the address list of all owners from a collection.

#### Path Parameters

| Name                                              | Type   | Description      |
| ------------------------------------------------- | ------ | ---------------- |
| contractAddress<mark style="color:red;">\*</mark> | String | Contract address |

{% tabs %}
{% tab title="200: OK " %}

```javascript
{
    // Response
}
```

{% endtab %}

{% tab title="401: Unauthorized " %}

```javascript
{
    // Response
}
```

{% endtab %}

{% tab title="404: Not Found " %}

```javascript
{
    // Response
}
```

{% endtab %}
{% endtabs %}

## Mint Volume

<mark style="color:blue;">`GET`</mark> `https://api.felonsecurity.net/v1/nft/collections/mintvolume/contractAddress=`

Fetches a collections minting volume.

#### Path Parameters

| Name                                              | Type   | Description      |
| ------------------------------------------------- | ------ | ---------------- |
| contractAddress<mark style="color:red;">\*</mark> | String | Contract address |

{% tabs %}
{% tab title="200: OK " %}

```javascript
{
    // Response
}
```

{% endtab %}

{% tab title="404: Not Found " %}

```javascript
{
    // Response
}
```

{% endtab %}

{% tab title="401: Unauthorized " %}

```javascript
{
    // Response
}
```

{% endtab %}
{% endtabs %}

## Compare Owners

<mark style="color:blue;">`GET`</mark> `https://api.felonsecurity.net/v1/nft/collections/compareowners/contractAddressOne=&contractAddressTwo=`

Compare owners from two different collections.

#### Path Parameters

| Name                                                 | Type   | Description             |
| ---------------------------------------------------- | ------ | ----------------------- |
| contractAddressOne<mark style="color:red;">\*</mark> | String | First contract address  |
| contractAddressTwo<mark style="color:red;">\*</mark> | String | Second contract address |

{% tabs %}
{% tab title="200: OK " %}

```javascript
{
    // Response
}
```

{% endtab %}

{% tab title="401: Unauthorized " %}

```javascript
{
    // Response
}
```

{% endtab %}

{% tab title="404: Not Found " %}

```javascript
{
    // Response
}
```

{% endtab %}
{% endtabs %}

### Token Endpoints

## Token Owner

<mark style="color:blue;">`GET`</mark> `https://api.felonsecurity.net/v1/nft/token/owner/contractAddress=&tokenId=`

Fetches the owner of a specific token.

#### Path Parameters

| Name                                              | Type   | Description      |
| ------------------------------------------------- | ------ | ---------------- |
| contractAddress<mark style="color:red;">\*</mark> | String | Contract address |
| tokenId<mark style="color:red;">\*</mark>         | String | Token ID         |

{% tabs %}
{% tab title="200: OK " %}

```javascript
{
    // Response
}
```

{% endtab %}

{% tab title="404: Not Found " %}

```javascript
{
    // Response
}
```

{% endtab %}

{% tab title="401: Unauthorized " %}

```javascript
{
    // Response
}
```

{% endtab %}
{% endtabs %}

## Token Info

<mark style="color:blue;">`GET`</mark> `https://api.felonsecurity.net/v1/nft/token/info/contractAddress=&tokenId=`

Retrieves a token's owner.

#### Path Parameters

| Name                                              | Type   | Description      |
| ------------------------------------------------- | ------ | ---------------- |
| contractAddress<mark style="color:red;">\*</mark> | String | Contract address |
| tokenId<mark style="color:red;">\*</mark>         | String | Token ID         |

{% tabs %}
{% tab title="200: OK " %}

```javascript
{
    // Response
}
```

{% endtab %}

{% tab title="401: Unauthorized " %}

```javascript
{
    // Response
}
```

{% endtab %}

{% tab title="404: Not Found " %}

```javascript
{
    // Response
}
```

{% endtab %}
{% endtabs %}

### Metadata Endpoints

## Token Metadata

<mark style="color:blue;">`GET`</mark> `https://api.felonsecurity.net/v1/nft/metadata/contractAddress=&tokenId=`

Fetch a tokens metadata.

#### Path Parameters

| Name                                              | Type   | Description      |
| ------------------------------------------------- | ------ | ---------------- |
| contractAddress<mark style="color:red;">\*</mark> | String | Contract address |
| tokenId<mark style="color:red;">\*</mark>         | String | Token ID         |

{% tabs %}
{% tab title="200: OK " %}

```javascript
{
    // Response
}
```

{% endtab %}

{% tab title="401: Unauthorized " %}

```javascript
{
    // Response
}
```

{% endtab %}

{% tab title="404: Not Found " %}

```javascript
{
    // Response
}
```

{% endtab %}
{% endtabs %}

## Collection Metadata Spread

<mark style="color:blue;">`GET`</mark> `https://api.felonsecurity.net/v1/nft/metadata/spread/contractAddress=`

Fetch a collections metadata spread.

#### Path Parameters

| Name                                              | Type   | Description      |
| ------------------------------------------------- | ------ | ---------------- |
| contractAddress<mark style="color:red;">\*</mark> | String | Contract address |

{% tabs %}
{% tab title="200: OK " %}

```javascript
{
    // Response
}
```

{% endtab %}

{% tab title="401: Unauthorized " %}

```javascript
{
    // Response
}
```

{% endtab %}

{% tab title="404: Not Found " %}

```javascript
{
    // Response
}
```

{% endtab %}
{% endtabs %}

## Collection's Contract ABI (BETA)

<mark style="color:blue;">`GET`</mark> `https://api.felonsecurity.net/v1/nft/metadata/abi/contractAddress=`

Retrieves the ABI from a contract.&#x20;

#### Path Parameters

| Name                                              | Type   | Description      |
| ------------------------------------------------- | ------ | ---------------- |
| contractAddress<mark style="color:red;">\*</mark> | String | Contract address |

{% tabs %}
{% tab title="200: OK " %}

```javascript
{
    // Response
}
```

{% endtab %}

{% tab title="401: Unauthorized " %}

```javascript
{
    // Response
}
```

{% endtab %}

{% tab title="404: Not Found " %}

```javascript
{
    // Response
}
```

{% endtab %}
{% endtabs %}


# Coming Soon...


# Coming Soon...


# Coming Soon...


