Introduction

Hello and welcome the Mochi API documentation! If you're a developer, you've come to the right place, this document contains all public APIs that the Mochi team uses, now you can also use it with a Mochi API Key.

Mochi API is what we consider to be the first and central part of our system, it contains all general APIs found in the Mochi Discord Bot.

To get started, follow these 2 simple steps:

Below is more introductions to other Mochi services.

Mochisan scanning alien lifeforms

Mochi Profile

This is where we store user's data, each user will have their unique Profile, associated with that Profile will be a list of accounts of various platforms, be it Discord, Twitter, Web3, etc...

Mochi Profile plays an important role in our system, almost every other APIs that involves dealing with user's data will require a profile id.

Mochisan scanning alien lifeforms

Mochi Pay

All transactional operations will be directed to Mochi Pay, e.g for sending tips, hosting airdrops, creating paylinks, etc...If you see any APIs that deal with money but is sent to api.mochi.pod.town domain (Mochi API), it it because that we need to resolve Discord ID to profile ID first in Mochi API then forward that request to Mochi Pay.

Mochisan scanning alien lifeforms

Errors

For errors data we follow the standard HTTP code e.g. 200 for success calls, 400 for user input errors and 500 for internal system erros (expect these to be rare)

HTTP STATUS CODE SUMMARY
200 - OKEverything worked as expected.400 -
Bad Request
The server couldn't process the request, often due to malformed or lack of parameters.401 - UnauthorizedThere is no API key found in the request.50x -
Internal Error
Something went wrong with Mochi server

Pagination

For APIs that return paginated data, there will be an extra called metadata field that contains pagination data such as page, size and total.

You'll know which API supports pagination if it has the metadata field.

DATA WITH PAGINATION
{
  "data": "[object]",
  "metadata": {
    "page": "number",
    "size": "number",
    "total": "number"
  }
}