{
  "openapi": "3.1.0",
  "info": {
    "title": "Mob API",
    "version": "1.3.0",
    "summary": "Launch a coin on pump.fun through Mob and set up its books, programmatically.",
    "description": "Mob films Solana launches and runs creator-fee books for coins launched through it. Coins can launch on **pump.fun**, on **Raydium LaunchLab** through Mob's platform, or on **Meteora** through Mob's config. This API does the same launch flow as a program would: it **builds transactions and hands them back**; you sign them with your own keys and send them (through `POST /api/v1/send`, or any RPC). Mob never sees a private key.\n\nFor pump.fun the flow is six calls; on Raydium and Meteora it ends after step 2 (the books are pump.fun only for now). Fees on every launchpad: https://mob.markets/fees.\n\nThe flow is six calls:\n\n1. `POST /api/v1/launches` builds the create transaction on the launchpad you pick (`launchpad`: `pump`, the default, `raydium` or `meteora`). Sign it with the creator and a fresh mint keypair.\n2. `POST /api/v1/send` sends it.\n3. `POST /api/v1/launches/{mint}/treasury` builds the Family treasury, a Squads multisig.\n4. `POST /api/v1/launches/{mint}/burn-wallet` (optional) makes the buy-and-burn wallet.\n5. `POST /api/v1/launches/{mint}/split` builds the fee split. **pump.fun allows it once.**\n6. `POST /api/v1/launches/{mint}/register` hands the coin to the 12-hour crank and lists it under \"Made here\" on the Count.\n\n`GET /api/v1/launches/{mint}` tells you where a launch stands and what comes next, read from the chain.\n\nNo API key. Builders are limited to 30 calls a minute and sends to 10 a minute, per caller. Transactions carry a recent blockhash, so sign and send them within about a minute of building. Names and tickers pass the same blocklist as the Count.\n\nRead-only data (the Count, a coin, its books) is under the same base path and needs nothing.",
    "contact": {
      "name": "Mob",
      "url": "https://mob.markets/api",
      "email": "hello@mob.markets"
    },
    "termsOfService": "https://mob.markets/terms",
    "license": {
      "name": "Proprietary: use under Mob's terms",
      "url": "https://mob.markets/terms"
    },
    "x-rate-limits": {
      "builders": "30 per minute per caller",
      "send": "10 per minute per caller"
    }
  },
  "servers": [
    {
      "url": "https://mob.markets",
      "description": "Mainnet"
    }
  ],
  "externalDocs": {
    "description": "Guide with a complete example",
    "url": "https://mob.markets/api"
  },
  "tags": [
    {
      "name": "Launch",
      "description": "Build the transactions that launch a coin and set up its books. You sign every one."
    },
    {
      "name": "Send",
      "description": "Submit a signed transaction and wait for it."
    },
    {
      "name": "Read",
      "description": "What Mob sees: the Count, a coin, its books."
    }
  ],
  "paths": {
    "/api/v1": {
      "get": {
        "tags": [
          "Read"
        ],
        "operationId": "index",
        "summary": "What this API is and the launch flow",
        "responses": {
          "200": {
            "description": "The index",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "429": {
            "$ref": "#/components/responses/Slow"
          }
        }
      }
    },
    "/api/v1/launches": {
      "post": {
        "tags": [
          "Launch"
        ],
        "operationId": "buildLaunch",
        "summary": "Build a coin's create transaction on pump.fun, Raydium LaunchLab or Meteora",
        "description": "Generate a fresh keypair for the mint yourself; pass only its public key. The returned transaction needs two signatures: the creator's and the mint keypair's. The creator pays the network fees and account rent and becomes the coin's creator. The name, ticker and metadata link are permanent once it lands. `preflight` is a simulation without signatures, so a funding problem shows before you sign.\n\n**pump** (default): a pump.fun coin. Traders pay pump.fun's fees; Mob's 1% comes from the creator fees, through the split, and the creator can drop it.\n\n**raydium**: a Raydium LaunchLab coin on Mob's platform (`1QG13utW4S4eaEFsBGebCbx2PFV2WhZzW2vr9VjKSgs`), SOL pair, Raydium's default curve, graduates to a CPMM pool. 1.55% a trade on the curve: 0.25% Raydium, 1% Mob, 0.3% the creator. Returns a v0 transaction.\n\n**meteora**: a Meteora Dynamic Bonding Curve coin (Token-2022) on Mob's config (`EAEXfTYiTtU3dugkdNw4fq3wXPfgKiU57NXpWC7CH1eR`), graduating at about 86 SOL into a DAMM v2 pool. 1.25% a trade on the curve: 0.25% Meteora, 1% Mob. The graduated pool's liquidity is locked for good, half the creator's.\n\nMob's 1% on Raydium and Meteora is set on chain by the launchpad and can't be removed per coin.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LaunchRequest"
              },
              "examples": {
                "pump": {
                  "summary": "pump.fun",
                  "value": {
                    "name": "Operation",
                    "symbol": "OP",
                    "uri": "ipfs://bafkrei\u2026/metadata.json",
                    "creator": "Creator11111111111111111111111111111111111",
                    "mint": "Mint1111111111111111111111111111111111111111"
                  }
                },
                "raydium": {
                  "summary": "Raydium LaunchLab",
                  "value": {
                    "launchpad": "raydium",
                    "name": "Operation",
                    "symbol": "OP",
                    "uri": "ipfs://bafkrei\u2026/metadata.json",
                    "creator": "Creator11111111111111111111111111111111111",
                    "mint": "Mint1111111111111111111111111111111111111111"
                  }
                },
                "meteora": {
                  "summary": "Meteora",
                  "value": {
                    "launchpad": "meteora",
                    "name": "Operation",
                    "symbol": "OP",
                    "uri": "ipfs://bafkrei\u2026/metadata.json",
                    "creator": "Creator11111111111111111111111111111111111",
                    "mint": "Mint1111111111111111111111111111111111111111"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The transaction to sign",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LaunchBuilt"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Bad"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "description": "The name or ticker isn't allowed on Mob",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "$ref": "#/components/responses/Slow"
          }
        }
      }
    },
    "/api/v1/launches/{mint}": {
      "get": {
        "tags": [
          "Launch"
        ],
        "operationId": "launchStatus",
        "summary": "Where a launch stands, and the next step",
        "description": "Read from the chain each time: whether the coin exists, the treasury, the burn wallet, the split, and whether the crank runs it.",
        "parameters": [
          {
            "$ref": "#/components/parameters/Mint"
          }
        ],
        "responses": {
          "200": {
            "description": "Status",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LaunchStatus"
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        }
      }
    },
    "/api/v1/launches/{mint}/treasury": {
      "post": {
        "tags": [
          "Launch"
        ],
        "operationId": "buildTreasury",
        "summary": "Build the Family treasury (a Squads multisig)",
        "description": "The coin must be on chain. Members default to the creator alone with a threshold of 1. The transaction is already signed by the one-time key that seeds the multisig's address; add the creator's signature. Calling again after it exists returns the same treasury.\n\nWorks for coins on every launchpad. On LaunchLab it's where `/claim` sends the creator's fees.",
        "parameters": [
          {
            "$ref": "#/components/parameters/Mint"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TreasuryRequest"
              },
              "example": {}
            }
          }
        },
        "responses": {
          "200": {
            "description": "The transaction to sign",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TreasuryBuilt"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Bad"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "429": {
            "$ref": "#/components/responses/Slow"
          }
        }
      }
    },
    "/api/v1/launches/{mint}/burn-wallet": {
      "post": {
        "tags": [
          "Launch"
        ],
        "operationId": "burnWallet",
        "summary": "Get the coin's buy-and-burn wallet",
        "description": "Mob makes a wallet for this coin and holds its key. Its only use: once it holds 0.03 SOL, Mob's keeper buys this coin with it and burns what it buys, each step a public transaction. Give it a share in the split (`burnBps`) or don't call this at all. Also returns Mob's revenue and film-fund vaults.\n\npump.fun coins only; a Raydium or Meteora launch gets 409.",
        "parameters": [
          {
            "$ref": "#/components/parameters/Mint"
          }
        ],
        "responses": {
          "200": {
            "description": "The wallet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BurnWallet"
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          }
        }
      }
    },
    "/api/v1/launches/{mint}/split": {
      "post": {
        "tags": [
          "Launch"
        ],
        "operationId": "buildSplit",
        "summary": "Build the fee split (pump.fun allows it ONCE)",
        "description": "Sets where the coin's creator fees go, forever. The Family treasury gets whatever the other shares leave. Mob's 1% is in by default; pass `\"mob\": false` to leave it out. Two transactions, because all of it together is over Solana's size limit: send the first (sweep, collect, fund recipients' rent), then the second (create and set the split). Both are signed by the creator.\n\npump.fun coins only; a Raydium or Meteora launch gets 409.",
        "parameters": [
          {
            "$ref": "#/components/parameters/Mint"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SplitRequest"
              },
              "example": {
                "burnBps": 2400,
                "filmBps": 500,
                "mob": true,
                "recipients": [
                  {
                    "wallet": "Partner111111111111111111111111111111111111",
                    "bps": 1000
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The two transactions to sign, in order",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SplitBuilt"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Bad"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "429": {
            "$ref": "#/components/responses/Slow"
          }
        }
      }
    },
    "/api/v1/launches/{mint}/register": {
      "post": {
        "tags": [
          "Launch"
        ],
        "operationId": "register",
        "summary": "Hand the coin to the crank and list it as made on Mob",
        "description": "Reads the split from the chain (nothing you send is trusted for it), records the books, and from then on Mob's crank pays the fees out every 12 hours. Pass the split and treasury signatures to have them written to the coin's public ledger.",
        "parameters": [
          {
            "$ref": "#/components/parameters/Mint"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RegisterRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Registered",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Registered"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Bad"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          }
        }
      }
    },
    "/api/v1/send": {
      "post": {
        "tags": [
          "Send"
        ],
        "operationId": "send",
        "summary": "Send a signed transaction and wait for it",
        "description": "Submits through Mob's RPC with preflight on, then waits up to 45 seconds for confirmation. Optional: you can send through any RPC instead.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "transaction"
                ],
                "properties": {
                  "transaction": {
                    "type": "string",
                    "description": "The fully signed transaction, base64"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Sent",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Sent"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Bad"
          },
          "422": {
            "description": "Refused by the network, or landed with an error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "$ref": "#/components/responses/Slow"
          }
        }
      }
    },
    "/api/v1/count": {
      "get": {
        "tags": [
          "Read"
        ],
        "operationId": "count",
        "summary": "The Count: every coin moving right now",
        "description": "Busiest by dollars traded in the last five minutes, across pump.fun, LaunchLab and the launchpads Jupiter tags. Copycats are rolled into themes. Recounted every five seconds.",
        "responses": {
          "200": {
            "description": "The Count",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "429": {
            "$ref": "#/components/responses/Slow"
          }
        }
      }
    },
    "/api/v1/coins/{mint}": {
      "get": {
        "tags": [
          "Read"
        ],
        "operationId": "coin",
        "summary": "One coin",
        "description": "A filmed coin returns its trades since launch (`film` is absent or true). Any other coin returns `film: false`, the reason, and its numbers.",
        "parameters": [
          {
            "$ref": "#/components/parameters/Mint"
          }
        ],
        "responses": {
          "200": {
            "description": "The coin",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        }
      }
    },
    "/api/v1/coins/{mint}/books": {
      "get": {
        "tags": [
          "Read"
        ],
        "operationId": "books",
        "summary": "A coin's books: balances, split and ledger",
        "parameters": [
          {
            "$ref": "#/components/parameters/Mint"
          }
        ],
        "responses": {
          "200": {
            "description": "The books",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        }
      }
    },
    "/api/v1/launches/{mint}/claim": {
      "post": {
        "tags": [
          "Books"
        ],
        "operationId": "claimCreatorFees",
        "summary": "Build the creator's fee claim (LaunchLab, or Meteora after graduation)",
        "description": "Raydium LaunchLab and Meteora coins. The creator signs; Mob never holds the fees. Fees are sent to the Family treasury (`to: treasury`, the default once a treasury exists) or to the creator (`to: creator`).\n\nLaunchLab: LaunchLab pays the creator's 0.3% into one vault per creator, across all of their LaunchLab coins, and this claims all of it, unwrapped to SOL. After graduation, the pool's 0.97% creator fee needs no claim: Mob's daily claimer sends it to the creator's wallet as wrapped SOL, and Mob pays the network fee.\n\nMeteora: on Mob's config the creator earns from the graduated pool's locked liquidity, not from trades on the curve. Before graduation this returns 409. After it, this claims the creator's locked position's share of the pool's fees, in SOL.",
        "parameters": [
          {
            "$ref": "#/components/parameters/Mint"
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "to": {
                    "type": "string",
                    "enum": [
                      "treasury",
                      "creator"
                    ]
                  }
                }
              },
              "example": {
                "to": "treasury"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The transaction for the creator to sign",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ok": {
                      "const": true
                    },
                    "claimSol": {
                      "type": "number"
                    },
                    "to": {
                      "$ref": "#/components/schemas/Address"
                    },
                    "transaction": {
                      "type": "string"
                    },
                    "encoding": {
                      "const": "base64"
                    },
                    "version": {
                      "const": "legacy"
                    },
                    "signers": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Address"
                      }
                    },
                    "lastValidBlockHeight": {
                      "type": "integer"
                    },
                    "preflight": {
                      "$ref": "#/components/schemas/Preflight"
                    },
                    "note": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Bad"
          },
          "404": {
            "description": "No Mob launch for this mint",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "429": {
            "$ref": "#/components/responses/Slow"
          }
        }
      }
    }
  },
  "components": {
    "parameters": {
      "Mint": {
        "name": "mint",
        "in": "path",
        "required": true,
        "description": "The coin's mint address",
        "schema": {
          "$ref": "#/components/schemas/Address"
        }
      }
    },
    "responses": {
      "Bad": {
        "description": "Malformed request",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      },
      "NotFound": {
        "description": "Mob has no record of this",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      },
      "Conflict": {
        "description": "Not possible in the coin's current state (read the error)",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      },
      "Slow": {
        "description": "Over the per-minute limit",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      }
    },
    "schemas": {
      "Address": {
        "type": "string",
        "pattern": "^[1-9A-HJ-NP-Za-km-z]{32,44}$",
        "description": "A Solana address (base58)"
      },
      "Error": {
        "type": "object",
        "required": [
          "ok",
          "error"
        ],
        "properties": {
          "ok": {
            "const": false
          },
          "error": {
            "type": "string"
          },
          "detail": {
            "type": "string"
          }
        }
      },
      "Preflight": {
        "type": "object",
        "description": "A simulation without signatures",
        "properties": {
          "ok": {
            "type": "boolean"
          },
          "units": {
            "type": "integer"
          },
          "error": {
            "type": "string"
          },
          "logs": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "LaunchRequest": {
        "type": "object",
        "required": [
          "name",
          "symbol",
          "uri",
          "creator",
          "mint"
        ],
        "properties": {
          "launchpad": {
            "$ref": "#/components/schemas/Launchpad"
          },
          "name": {
            "type": "string",
            "maxLength": 32
          },
          "symbol": {
            "type": "string",
            "maxLength": 10,
            "description": "Without the $"
          },
          "uri": {
            "type": "string",
            "maxLength": 200,
            "description": "https://, ipfs:// or ar:// link to the metadata JSON (name, symbol, description, image, links), hosted by you"
          },
          "creator": {
            "$ref": "#/components/schemas/Address"
          },
          "mint": {
            "$ref": "#/components/schemas/Address",
            "description": "Public key of a fresh keypair you generated"
          }
        }
      },
      "LaunchBuilt": {
        "type": "object",
        "properties": {
          "ok": {
            "const": true
          },
          "mint": {
            "$ref": "#/components/schemas/Address"
          },
          "transaction": {
            "type": "string",
            "description": "base64; legacy for pump and meteora, v0 for raydium"
          },
          "encoding": {
            "const": "base64"
          },
          "version": {
            "enum": [
              "legacy",
              "v0"
            ]
          },
          "signers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Address"
            },
            "description": "Who must sign: the creator and the mint"
          },
          "lastValidBlockHeight": {
            "type": "integer"
          },
          "preflight": {
            "$ref": "#/components/schemas/Preflight"
          },
          "next": {
            "type": "string"
          },
          "launchpad": {
            "$ref": "#/components/schemas/Launchpad"
          },
          "pool": {
            "$ref": "#/components/schemas/Address",
            "description": "Raydium and Meteora: the coin's bonding-curve pool"
          },
          "fees": {
            "type": "string",
            "description": "Raydium and Meteora: what a trade on the curve costs and who gets it"
          }
        }
      },
      "LaunchStatus": {
        "type": "object",
        "properties": {
          "ok": {
            "const": true
          },
          "mint": {
            "$ref": "#/components/schemas/Address"
          },
          "name": {
            "type": "string"
          },
          "symbol": {
            "type": "string"
          },
          "creator": {
            "$ref": "#/components/schemas/Address"
          },
          "steps": {
            "type": "object",
            "properties": {
              "created": {
                "type": "boolean"
              },
              "treasury": {
                "type": "boolean"
              },
              "burnWallet": {
                "type": "boolean"
              },
              "split": {
                "type": "boolean"
              },
              "registered": {
                "type": "boolean"
              }
            }
          },
          "next": {
            "type": "string"
          },
          "treasury": {
            "type": [
              "object",
              "null"
            ]
          },
          "sharingConfig": {
            "type": [
              "string",
              "null"
            ]
          },
          "split": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "object",
              "properties": {
                "key": {
                  "type": "string"
                },
                "bps": {
                  "type": "integer"
                }
              }
            }
          },
          "page": {
            "type": "string",
            "format": "uri"
          },
          "launchpad": {
            "$ref": "#/components/schemas/Launchpad"
          },
          "pool": {
            "$ref": "#/components/schemas/Address"
          },
          "books": {
            "type": "string",
            "description": "Raydium and Meteora: how fees reach the creator there"
          },
          "creatorFees": {
            "type": [
              "object",
              "null"
            ],
            "description": "LaunchLab: what the creator can claim now",
            "properties": {
              "claimableSol": {
                "type": "number"
              },
              "vault": {
                "type": "string"
              },
              "note": {
                "type": "string"
              }
            }
          }
        }
      },
      "TreasuryRequest": {
        "type": "object",
        "properties": {
          "members": {
            "type": "array",
            "maxItems": 10,
            "items": {
              "$ref": "#/components/schemas/Address"
            },
            "description": "Default: the creator alone"
          },
          "threshold": {
            "type": "integer",
            "minimum": 1,
            "description": "Approvals needed to move money. Default 1"
          }
        }
      },
      "TreasuryBuilt": {
        "type": "object",
        "properties": {
          "ok": {
            "const": true
          },
          "multisig": {
            "$ref": "#/components/schemas/Address"
          },
          "vault": {
            "$ref": "#/components/schemas/Address",
            "description": "The treasury address that receives fees"
          },
          "transaction": {
            "type": "string"
          },
          "encoding": {
            "const": "base64"
          },
          "version": {
            "const": "legacy"
          },
          "signers": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "alreadyExists": {
            "type": "boolean"
          },
          "preflight": {
            "$ref": "#/components/schemas/Preflight"
          }
        }
      },
      "BurnWallet": {
        "type": "object",
        "properties": {
          "ok": {
            "const": true
          },
          "wallet": {
            "$ref": "#/components/schemas/Address"
          },
          "mob": {
            "$ref": "#/components/schemas/Address"
          },
          "film": {
            "$ref": "#/components/schemas/Address"
          }
        }
      },
      "SplitRequest": {
        "type": "object",
        "properties": {
          "burnBps": {
            "type": "integer",
            "minimum": 0,
            "maximum": 10000,
            "description": "Share to the buy-and-burn wallet (call burn-wallet first)"
          },
          "filmBps": {
            "type": "integer",
            "minimum": 0,
            "maximum": 10000,
            "description": "Share to Mob's film fund"
          },
          "mob": {
            "type": "boolean",
            "default": true,
            "description": "Mob's 1%"
          },
          "recipients": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "wallet",
                "bps"
              ],
              "properties": {
                "wallet": {
                  "$ref": "#/components/schemas/Address"
                },
                "bps": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "description": "Basis points (100 = 1%). The treasury gets 10000 minus everything else. At most 10 recipients in all."
      },
      "SplitBuilt": {
        "type": "object",
        "properties": {
          "ok": {
            "const": true
          },
          "sharingConfig": {
            "$ref": "#/components/schemas/Address"
          },
          "shares": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "key": {
                  "type": "string"
                },
                "bps": {
                  "type": "integer"
                },
                "what": {
                  "type": "string"
                }
              }
            }
          },
          "transactions": {
            "type": "array",
            "minItems": 2,
            "maxItems": 2,
            "items": {
              "type": "string"
            },
            "description": "base64 v0 transactions: send the first, then the second"
          },
          "encoding": {
            "const": "base64"
          },
          "version": {
            "const": "v0"
          },
          "warning": {
            "type": "string"
          },
          "preflight": {
            "$ref": "#/components/schemas/Preflight"
          }
        }
      },
      "RegisterRequest": {
        "type": "object",
        "properties": {
          "splitSignature": {
            "type": "string"
          },
          "treasurySignature": {
            "type": "string"
          }
        }
      },
      "Registered": {
        "type": "object",
        "properties": {
          "ok": {
            "const": true
          },
          "coin": {
            "type": "object"
          },
          "page": {
            "type": "string",
            "format": "uri"
          }
        }
      },
      "Sent": {
        "type": "object",
        "properties": {
          "ok": {
            "const": true
          },
          "signature": {
            "type": "string"
          },
          "status": {
            "enum": [
              "confirmed",
              "finalized",
              "sent"
            ]
          }
        }
      },
      "Launchpad": {
        "type": "string",
        "enum": [
          "pump",
          "raydium",
          "meteora"
        ],
        "default": "pump",
        "description": "pump = pump.fun \u00b7 raydium = Raydium LaunchLab (Mob's platform) \u00b7 meteora = Meteora Dynamic Bonding Curve (Mob's config)"
      }
    }
  },
  "security": []
}
