{
  "openapi": "3.1.0",
  "info": {
    "title": "Otomate public API",
    "version": "1.0.0",
    "description": "Launches, markets, trades and the real-time feed of Otomate's launch pools on Ink (57073), Robinhood Chain (4663), Base (8453), HyperEVM (999) and BNB Chain (56), each chain once it is open. Free to start without a key; a key (signed by a wallet) or a higher tier raises the limits. Fields may be added within v1; none is removed or renamed (a breaking change makes /api/v2). Amounts: raw and exact decimal strings. Rates: basis points.",
    "contact": {
      "name": "Otomate",
      "url": "https://www.otomate.fun/docs/developers"
    },
    "x-otomate-contracts": {
      "status": "live",
      "description": "Deployed on the chains of sameOnChains (codeHashes: each contract's runtime code hash read on each chain). Each chain opens to new launches on its own date: the config's creationEnabled() tells.",
      "sameOnChains": [
        57073,
        4663,
        999,
        8453
      ],
      "safe": "0xfA0ffF20DB7A2939cc402e395c1916Ba42f5E850",
      "timelock": "0xd14837BF79D73A4C73270889f8D822Bf7Fc77A5a",
      "config": "0x6Ab344Dcf639E99DB656cC8DeA76A9b5262ee545",
      "factory": "0xd8661806D749a6360348a0D4f94f8db36B43420e",
      "hook": "0xF8b5e7A4F3cEb6ba9F9a619611360750A7D728EC",
      "distributor": "0x021851048acE99Bc0fc3F064Ad699a335de9d35c",
      "lens": "0x9f9Ef622f5dafDFd69C54CAb1bcCe4E8E71B3f2b",
      "tokenDeployer": "0x208518704cC6b27c34A3ECd78A9ecf20c4959aE6",
      "nftVault": "0x5Ad95E0CEA3210f1F1E391f3A77405cBed128C9E",
      "nftGate": "0x5CD814311dD91B5fF7f4712Ae6c8A1BFb8319D70",
      "forge": "0xdb82153b0A0C9D31Bc4D0F85fc0F40E6753b0D5e",
      "collectionBeacon": "0x8A6a2BCbA7Ea5371d2eba795b67f207D0fd2f49a",
      "royaltyList": "0xE83248a0Af0fb083E0091c1E867b5b81accF45f9",
      "router": "0x173b1e9eCC06d53b239754602177F1707BFE76A1",
      "globalNftSink": {
        "4663": "0xe4973A293570C054AdCbb6769501D249Af67Aed5",
        "57073": "0x31E1c790C933acb9F8F2f9C1dE2FFd1F2834aB60"
      },
      "tokenRuntimeCodeHash": "0x938d5cdbed652485b57dca497696c734dc1ed93a34d1d92ddc561a7ae7f48756",
      "codeHashes": {
        "999": {
          "block": "48267300",
          "factoryImplementation": "0xaf2809e04D9E8A4512EF9A559d13157B359d5ef6",
          "codeHashes": {
            "contracts": {
              "timelock": "0x49368fb9b93407f9ba6cc9badeca7eabf5fa2bb4ffea566c8d05298fa9dfab1f",
              "config": "0x7b1e05ba59dbf774e334dde7b3cf88d35fca77989d5b61a203c351db542e449b",
              "factory": "0x7b1e05ba59dbf774e334dde7b3cf88d35fca77989d5b61a203c351db542e449b",
              "hook": "0x9802e0aa4c14827ff4b8014cd2744abf30a71c311bf0a716b616f8ad87312927",
              "distributor": "0x7b1e05ba59dbf774e334dde7b3cf88d35fca77989d5b61a203c351db542e449b",
              "lens": "0x7b1e05ba59dbf774e334dde7b3cf88d35fca77989d5b61a203c351db542e449b",
              "tokenDeployer": "0x8116f6d72628741b186950d4c15785fe0536ceeae14fb56df08f54cefa0c1987",
              "nftVault": "0x7b1e05ba59dbf774e334dde7b3cf88d35fca77989d5b61a203c351db542e449b",
              "nftGate": "0x7b1e05ba59dbf774e334dde7b3cf88d35fca77989d5b61a203c351db542e449b",
              "forge": "0x7b1e05ba59dbf774e334dde7b3cf88d35fca77989d5b61a203c351db542e449b",
              "collectionBeacon": "0xe10f4c3272b6191624a9736dbe8a3018063549cc6be7485d509020affab1eb85",
              "royaltyList": "0x4da2b4428b1ed104898abf29b503e665bd1972cd313c5ac8acf926c007cdfaff",
              "router": "0x138159f7083696b8ca36383757bfbda0245013f7aac136f6ce5aac3675417bd0"
            },
            "implementations": {
              "config": "0x7f6d281bd719d22be160bcaf557a0ac62f0f7b6e0a073d52c6e7f93aee257108",
              "distributor": "0x200cea5b0a8d11596c83b3baf1a3695e35ae68e2723539a036a64e186f5deefd",
              "lens": "0x6674bb231790967df52fa43720bad88344dbab8c135c26b7b137009c7bc783c0",
              "nftVault": "0x61e19f316d2f2bb4dd1f513aa385a5dc4fde18a519540a0a9e2e393d996886a9",
              "nftGate": "0x7cda535ae32ad618bd8d167a5dd84a352b03e0768971158ac8b111ed4ccdc374",
              "forge": "0x016f140fb8bf1f307dd5a66e4ec278603bfba894e1c02fc830f94ab4d0f5c952",
              "collectionTemplate": "0xdc71f6608d8d1e1adb56fbf265fc09bbe06e1d78340565d211b1653e226c1ba6",
              "collectionLogic": "0x65d9edd8f5e48e990e3693e56ee67f67243caef13b4ebe7460807320a7f27308",
              "factory": "0x2d77a25c5f3709aa4175afee687cc66be3d852b67d7bf8c2e955314e7c6ccf63"
            }
          }
        },
        "4663": {
          "block": "85939635",
          "factoryImplementation": "0xaf2809e04D9E8A4512EF9A559d13157B359d5ef6",
          "codeHashes": {
            "contracts": {
              "timelock": "0x49368fb9b93407f9ba6cc9badeca7eabf5fa2bb4ffea566c8d05298fa9dfab1f",
              "config": "0x7b1e05ba59dbf774e334dde7b3cf88d35fca77989d5b61a203c351db542e449b",
              "factory": "0x7b1e05ba59dbf774e334dde7b3cf88d35fca77989d5b61a203c351db542e449b",
              "hook": "0x176f714446022f6580ba923017a281da8ab1079d71c728ba3ab825d661cc875b",
              "distributor": "0x7b1e05ba59dbf774e334dde7b3cf88d35fca77989d5b61a203c351db542e449b",
              "lens": "0x7b1e05ba59dbf774e334dde7b3cf88d35fca77989d5b61a203c351db542e449b",
              "tokenDeployer": "0x8116f6d72628741b186950d4c15785fe0536ceeae14fb56df08f54cefa0c1987",
              "nftVault": "0x7b1e05ba59dbf774e334dde7b3cf88d35fca77989d5b61a203c351db542e449b",
              "nftGate": "0x7b1e05ba59dbf774e334dde7b3cf88d35fca77989d5b61a203c351db542e449b",
              "forge": "0x7b1e05ba59dbf774e334dde7b3cf88d35fca77989d5b61a203c351db542e449b",
              "collectionBeacon": "0xe10f4c3272b6191624a9736dbe8a3018063549cc6be7485d509020affab1eb85",
              "royaltyList": "0x51c90fbd8f8c64fde8b11fe738ac48d3726e34ca19b6b2e469d677a151e4b3f3",
              "router": "0xa38a4593ac8d299a35ef62826c1439ec1631b95c7485a89b8c28140013dd632e",
              "globalNftSink": "0x8209748ac6dd7d6dafb110e772fe76765df4144c14793d9fb21b1aafa6ca6b85"
            },
            "implementations": {
              "config": "0x7f6d281bd719d22be160bcaf557a0ac62f0f7b6e0a073d52c6e7f93aee257108",
              "distributor": "0x200cea5b0a8d11596c83b3baf1a3695e35ae68e2723539a036a64e186f5deefd",
              "lens": "0x6674bb231790967df52fa43720bad88344dbab8c135c26b7b137009c7bc783c0",
              "nftVault": "0x61e19f316d2f2bb4dd1f513aa385a5dc4fde18a519540a0a9e2e393d996886a9",
              "nftGate": "0x7cda535ae32ad618bd8d167a5dd84a352b03e0768971158ac8b111ed4ccdc374",
              "forge": "0x016f140fb8bf1f307dd5a66e4ec278603bfba894e1c02fc830f94ab4d0f5c952",
              "collectionTemplate": "0xdd2498ac93fc75f22709d3403e4b315fa82b6412405b303db64205d05cdb6854",
              "collectionLogic": "0x65d9edd8f5e48e990e3693e56ee67f67243caef13b4ebe7460807320a7f27308",
              "factory": "0x2d77a25c5f3709aa4175afee687cc66be3d852b67d7bf8c2e955314e7c6ccf63"
            }
          }
        },
        "8453": {
          "block": "52471679",
          "factoryImplementation": "0xaf2809e04D9E8A4512EF9A559d13157B359d5ef6",
          "codeHashes": {
            "contracts": {
              "timelock": "0x49368fb9b93407f9ba6cc9badeca7eabf5fa2bb4ffea566c8d05298fa9dfab1f",
              "config": "0x7b1e05ba59dbf774e334dde7b3cf88d35fca77989d5b61a203c351db542e449b",
              "factory": "0x7b1e05ba59dbf774e334dde7b3cf88d35fca77989d5b61a203c351db542e449b",
              "hook": "0xbf307412fc1f3c5f2150355b05fc0cb7faf14af61c5352c4d94942a8c8d36c28",
              "distributor": "0x7b1e05ba59dbf774e334dde7b3cf88d35fca77989d5b61a203c351db542e449b",
              "lens": "0x7b1e05ba59dbf774e334dde7b3cf88d35fca77989d5b61a203c351db542e449b",
              "tokenDeployer": "0x8116f6d72628741b186950d4c15785fe0536ceeae14fb56df08f54cefa0c1987",
              "nftVault": "0x7b1e05ba59dbf774e334dde7b3cf88d35fca77989d5b61a203c351db542e449b",
              "nftGate": "0x7b1e05ba59dbf774e334dde7b3cf88d35fca77989d5b61a203c351db542e449b",
              "forge": "0x7b1e05ba59dbf774e334dde7b3cf88d35fca77989d5b61a203c351db542e449b",
              "collectionBeacon": "0xe10f4c3272b6191624a9736dbe8a3018063549cc6be7485d509020affab1eb85",
              "royaltyList": "0x13bbae9471f0ade27d3a1bdc1959055f6e4991067330d5c9598b2d873a2432a8",
              "router": "0x2367caef4fa4caf63564553aafe9bf15edce0fc25fa5c27ca47e30f470c86497"
            },
            "implementations": {
              "config": "0x7f6d281bd719d22be160bcaf557a0ac62f0f7b6e0a073d52c6e7f93aee257108",
              "distributor": "0x200cea5b0a8d11596c83b3baf1a3695e35ae68e2723539a036a64e186f5deefd",
              "lens": "0x6674bb231790967df52fa43720bad88344dbab8c135c26b7b137009c7bc783c0",
              "nftVault": "0x61e19f316d2f2bb4dd1f513aa385a5dc4fde18a519540a0a9e2e393d996886a9",
              "nftGate": "0x7cda535ae32ad618bd8d167a5dd84a352b03e0768971158ac8b111ed4ccdc374",
              "forge": "0x016f140fb8bf1f307dd5a66e4ec278603bfba894e1c02fc830f94ab4d0f5c952",
              "collectionTemplate": "0x658416132243d4e2ed25bcc8aec96554c7a6aca8e344f67a45eb44672125c49a",
              "collectionLogic": "0x65d9edd8f5e48e990e3693e56ee67f67243caef13b4ebe7460807320a7f27308",
              "factory": "0x2d77a25c5f3709aa4175afee687cc66be3d852b67d7bf8c2e955314e7c6ccf63"
            }
          }
        },
        "57073": {
          "block": "58234294",
          "factoryImplementation": "0x29f139D780C571e165d3f84f8a685A36471e7A2f",
          "codeHashes": {
            "contracts": {
              "timelock": "0x49368fb9b93407f9ba6cc9badeca7eabf5fa2bb4ffea566c8d05298fa9dfab1f",
              "config": "0x7b1e05ba59dbf774e334dde7b3cf88d35fca77989d5b61a203c351db542e449b",
              "factory": "0x7b1e05ba59dbf774e334dde7b3cf88d35fca77989d5b61a203c351db542e449b",
              "hook": "0x5946fd00137b79b8a23227c2fcc956e78bef8793144347eb78401c889ebfde42",
              "distributor": "0x7b1e05ba59dbf774e334dde7b3cf88d35fca77989d5b61a203c351db542e449b",
              "lens": "0x7b1e05ba59dbf774e334dde7b3cf88d35fca77989d5b61a203c351db542e449b",
              "tokenDeployer": "0x8116f6d72628741b186950d4c15785fe0536ceeae14fb56df08f54cefa0c1987",
              "nftVault": "0x7b1e05ba59dbf774e334dde7b3cf88d35fca77989d5b61a203c351db542e449b",
              "nftGate": "0x7b1e05ba59dbf774e334dde7b3cf88d35fca77989d5b61a203c351db542e449b",
              "forge": "0x7b1e05ba59dbf774e334dde7b3cf88d35fca77989d5b61a203c351db542e449b",
              "collectionBeacon": "0xe10f4c3272b6191624a9736dbe8a3018063549cc6be7485d509020affab1eb85",
              "royaltyList": "0xcd66d5c03826e79d279addf8627bb2033710f9f3c70ef80b112348f4126e1659",
              "router": "0x94329763de8cb9665cd73ab27937b0232889d01c20b24634037098f6e87bbbc5",
              "globalNftSink": "0xb62227c0d8b91806a6d8c1106d91e48cd4e43af6c4efb09115ed56160e7cc39a"
            },
            "implementations": {
              "config": "0x7f6d281bd719d22be160bcaf557a0ac62f0f7b6e0a073d52c6e7f93aee257108",
              "distributor": "0x200cea5b0a8d11596c83b3baf1a3695e35ae68e2723539a036a64e186f5deefd",
              "lens": "0x6674bb231790967df52fa43720bad88344dbab8c135c26b7b137009c7bc783c0",
              "nftVault": "0x61e19f316d2f2bb4dd1f513aa385a5dc4fde18a519540a0a9e2e393d996886a9",
              "nftGate": "0x7cda535ae32ad618bd8d167a5dd84a352b03e0768971158ac8b111ed4ccdc374",
              "forge": "0x016f140fb8bf1f307dd5a66e4ec278603bfba894e1c02fc830f94ab4d0f5c952",
              "collectionTemplate": "0xeb9028990655d346d0cdd0baf63a65fa70d6a5b4470ded5af48cd1ed11875c67",
              "collectionLogic": "0x65d9edd8f5e48e990e3693e56ee67f67243caef13b4ebe7460807320a7f27308",
              "factory": "0xda4bca60d2bcef4d3b3a46b9527995a707e63615884f68c6d71911dfd7903ed9"
            }
          }
        }
      },
      "notDeployedYet": [
        56,
        42161,
        10,
        130,
        1
      ]
    }
  },
  "servers": [
    {
      "url": "https://api.otomate.fun",
      "description": "Every chain (/api/v1/ink/…, /api/v1/robinhood/…, /api/v1/base/…, /api/v1/hyperevm/…, /api/v1/bnb/…)"
    },
    {
      "url": "https://otomate-launcher-api-production.up.railway.app",
      "description": "Fallback: Ink (57073) only — chain: ink"
    },
    {
      "url": "https://otomate-launcher-api-rh4663-production.up.railway.app",
      "description": "Fallback: Robinhood Chain (4663) only — chain: robinhood"
    }
  ],
  "components": {
    "schemas": {
      "Error": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "description": "A closed code.",
            "enum": [
              "API_QUERY",
              "API_CHAIN",
              "API_NOT_FOUND",
              "API_RATE_LIMITED",
              "API_UNAVAILABLE",
              "FEED_KEY",
              "QUOTE_REVERTED",
              "QUOTE_AMOUNT",
              "SWAP_ACCOUNT",
              "FEED_QUERY",
              "FEED_CURSOR_CHAIN",
              "FEED_FULL",
              "FEED_CLIENT_LIMIT",
              "FEED_RATE_LIMITED",
              "FEED_UNAVAILABLE",
              "KEY_QUERY",
              "KEY_CHALLENGE_INVALID",
              "KEY_CHALLENGE_EXPIRED",
              "KEY_SIGNATURE_INVALID",
              "KEY_RATE_LIMITED",
              "KEY_REVOKED",
              "KEYS_UNAVAILABLE"
            ]
          },
          "field": {
            "type": "string"
          },
          "reason": {
            "type": "string"
          },
          "origin": {
            "type": "string"
          }
        },
        "required": [
          "error"
        ]
      },
      "Amount": {
        "type": "object",
        "properties": {
          "raw": {
            "type": "string",
            "description": "An integer amount as a decimal string.",
            "pattern": "^-?[0-9]+$"
          },
          "decimal": {
            "type": "string",
            "description": "A decimal number as a string (exact, never a float)."
          }
        },
        "required": [
          "raw",
          "decimal"
        ],
        "description": "raw: in the token's smallest unit; decimal: the same amount with its decimals, exact."
      },
      "Status": {
        "type": "string",
        "description": "mined: included at the latest block; final: its block is finalized and can no longer change.",
        "enum": [
          "mined",
          "final"
        ]
      },
      "QuoteAsset": {
        "type": "object",
        "properties": {
          "address": {
            "type": "string",
            "description": "An address, lower case 0x hex.",
            "pattern": "^0x[0-9a-f]{40}$"
          },
          "symbol": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "decimals": {
            "type": "integer"
          },
          "usd": {
            "anyOf": [
              {
                "type": "string",
                "description": "A decimal number as a string (exact, never a float)."
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "address",
          "symbol",
          "decimals",
          "usd"
        ]
      },
      "Image": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "HTTPS URL."
          },
          "ipfs": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "url",
          "ipfs"
        ]
      },
      "WindowStats": {
        "type": "object",
        "properties": {
          "volume": {
            "type": "object",
            "properties": {
              "quote": {
                "$ref": "#/components/schemas/Amount"
              },
              "usd": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "A decimal number as a string (exact, never a float)."
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "required": [
              "quote",
              "usd"
            ]
          },
          "buys": {
            "type": "integer"
          },
          "sells": {
            "type": "integer"
          },
          "priceChangePct": {
            "anyOf": [
              {
                "type": "string",
                "description": "A decimal number as a string (exact, never a float)."
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "volume",
          "buys",
          "sells",
          "priceChangePct"
        ]
      },
      "Fees": {
        "type": "object",
        "properties": {
          "buyBps": {
            "type": "integer",
            "description": "Total rate a buyer pays now: quote fee plus burn."
          },
          "sellBps": {
            "type": "integer"
          },
          "quoteFeeBps": {
            "type": "integer"
          },
          "burnBps": {
            "type": "integer"
          },
          "phase": {
            "type": "string",
            "description": "Which rates apply now: the curve's until graduation, the rates after graduation from then on.",
            "enum": [
              "curve",
              "graduated"
            ]
          },
          "curve": {
            "type": "object",
            "properties": {
              "quoteFeeBps": {
                "type": "integer"
              },
              "burnBps": {
                "type": "integer"
              }
            },
            "required": [
              "quoteFeeBps",
              "burnBps"
            ]
          },
          "afterGraduation": {
            "type": "object",
            "properties": {
              "quoteFeeBps": {
                "type": "integer"
              },
              "burnBps": {
                "type": "integer"
              }
            },
            "required": [
              "quoteFeeBps",
              "burnBps"
            ]
          },
          "shares": {
            "type": "object",
            "properties": {
              "creatorBps": {
                "type": "integer"
              },
              "nftHoldersBps": {
                "type": "integer"
              },
              "treasuryBps": {
                "type": "integer"
              },
              "otoBurnBps": {
                "type": "integer"
              },
              "globalNftBps": {
                "type": "integer"
              },
              "creatorBurnBps": {
                "type": "integer"
              }
            },
            "required": [
              "creatorBps",
              "nftHoldersBps",
              "treasuryBps",
              "otoBurnBps",
              "globalNftBps",
              "creatorBurnBps"
            ]
          },
          "surcharge": {
            "type": "object",
            "properties": {
              "startBps": {
                "type": "integer"
              },
              "durationSeconds": {
                "type": "integer"
              },
              "halvings": {
                "type": "integer"
              },
              "activeUntil": {
                "type": "integer",
                "description": "Unix seconds."
              },
              "currentBps": {
                "type": "integer"
              }
            },
            "required": [
              "startBps",
              "durationSeconds",
              "halvings",
              "activeUntil",
              "currentBps"
            ],
            "description": "The launch protection: an extra quote fee on buys during the first seconds (at most 3,600), decreasing over time."
          }
        },
        "required": [
          "buyBps",
          "sellBps",
          "quoteFeeBps",
          "burnBps",
          "phase",
          "curve",
          "afterGraduation",
          "shares",
          "surcharge"
        ],
        "description": "The pool's rates from its registration snapshot, in basis points."
      },
      "TokenCard": {
        "type": "object",
        "properties": {
          "chain": {
            "type": "string"
          },
          "chainId": {
            "type": "integer"
          },
          "token": {
            "type": "string",
            "description": "An address, lower case 0x hex.",
            "pattern": "^0x[0-9a-f]{40}$"
          },
          "poolId": {
            "type": "string"
          },
          "name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "symbol": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "quote": {
            "$ref": "#/components/schemas/QuoteAsset"
          },
          "creator": {
            "type": "string",
            "description": "An address, lower case 0x hex.",
            "pattern": "^0x[0-9a-f]{40}$"
          },
          "createdAt": {
            "type": "integer"
          },
          "logo": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Image"
              },
              {
                "type": "null"
              }
            ]
          },
          "moderation": {
            "type": "string",
            "enum": [
              "visible",
              "pending",
              "hidden"
            ]
          },
          "collection": {
            "anyOf": [
              {
                "type": "string",
                "description": "An address, lower case 0x hex.",
                "pattern": "^0x[0-9a-f]{40}$"
              },
              {
                "type": "null"
              }
            ]
          },
          "price": {
            "type": "object",
            "properties": {
              "quote": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "A decimal number as a string (exact, never a float)."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "usd": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "A decimal number as a string (exact, never a float)."
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "required": [
              "quote",
              "usd"
            ]
          },
          "marketCap": {
            "type": "object",
            "properties": {
              "quote": {
                "$ref": "#/components/schemas/Amount"
              },
              "usd": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "A decimal number as a string (exact, never a float)."
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "required": [
              "quote",
              "usd"
            ]
          },
          "progressBps": {
            "type": "integer"
          },
          "graduated": {
            "type": "boolean"
          },
          "h24": {
            "$ref": "#/components/schemas/WindowStats"
          },
          "holders": {
            "type": "integer"
          },
          "lastTradeAt": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "status": {
            "$ref": "#/components/schemas/Status"
          }
        },
        "required": [
          "chain",
          "chainId",
          "token",
          "poolId",
          "name",
          "symbol",
          "quote",
          "creator",
          "createdAt",
          "logo",
          "moderation",
          "collection",
          "price",
          "marketCap",
          "progressBps",
          "graduated",
          "h24",
          "holders",
          "lastTradeAt",
          "status"
        ]
      },
      "TokenList": {
        "type": "object",
        "properties": {
          "chain": {
            "type": "string"
          },
          "chainId": {
            "type": "integer"
          },
          "sort": {
            "type": "string",
            "enum": [
              "new",
              "graduating",
              "graduated",
              "trending",
              "gainers"
            ]
          },
          "tokens": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TokenCard"
            }
          },
          "next": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "chain",
          "chainId",
          "sort",
          "tokens",
          "next"
        ]
      },
      "Token": {
        "type": "object",
        "properties": {
          "chain": {
            "type": "string"
          },
          "chainId": {
            "type": "integer"
          },
          "token": {
            "type": "string",
            "description": "An address, lower case 0x hex.",
            "pattern": "^0x[0-9a-f]{40}$"
          },
          "poolId": {
            "type": "string"
          },
          "hook": {
            "type": "string",
            "description": "An address, lower case 0x hex.",
            "pattern": "^0x[0-9a-f]{40}$"
          },
          "poolKey": {
            "type": "object",
            "properties": {
              "currency0": {
                "type": "string",
                "description": "An address, lower case 0x hex.",
                "pattern": "^0x[0-9a-f]{40}$"
              },
              "currency1": {
                "type": "string",
                "description": "An address, lower case 0x hex.",
                "pattern": "^0x[0-9a-f]{40}$"
              },
              "fee": {
                "type": "integer"
              },
              "tickSpacing": {
                "type": "integer"
              },
              "hooks": {
                "type": "string",
                "description": "An address, lower case 0x hex.",
                "pattern": "^0x[0-9a-f]{40}$"
              }
            },
            "required": [
              "currency0",
              "currency1",
              "fee",
              "tickSpacing",
              "hooks"
            ]
          },
          "identity": {
            "type": "object",
            "properties": {
              "name": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "symbol": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "decimals": {
                "type": "integer"
              },
              "metadataURI": {
                "type": "string"
              },
              "profileURI": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "creator": {
                "type": "string",
                "description": "An address, lower case 0x hex.",
                "pattern": "^0x[0-9a-f]{40}$"
              },
              "createdAt": {
                "type": "integer"
              },
              "creation": {
                "type": "object",
                "properties": {
                  "block": {
                    "type": "string",
                    "description": "An integer amount as a decimal string.",
                    "pattern": "^-?[0-9]+$"
                  },
                  "timestamp": {
                    "type": "integer"
                  },
                  "transactionHash": {
                    "type": "string"
                  },
                  "status": {
                    "$ref": "#/components/schemas/Status"
                  }
                },
                "required": [
                  "block",
                  "timestamp",
                  "transactionHash",
                  "status"
                ]
              },
              "moderation": {
                "type": "string",
                "enum": [
                  "visible",
                  "pending",
                  "hidden"
                ]
              },
              "description": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "links": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                }
              },
              "logo": {
                "anyOf": [
                  {
                    "$ref": "#/components/schemas/Image"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "banner": {
                "anyOf": [
                  {
                    "$ref": "#/components/schemas/Image"
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "required": [
              "name",
              "symbol",
              "decimals",
              "metadataURI",
              "profileURI",
              "creator",
              "createdAt",
              "creation",
              "moderation",
              "description",
              "links",
              "logo",
              "banner"
            ]
          },
          "quote": {
            "$ref": "#/components/schemas/QuoteAsset"
          },
          "market": {
            "type": "object",
            "properties": {
              "price": {
                "type": "object",
                "properties": {
                  "quote": {
                    "anyOf": [
                      {
                        "type": "string",
                        "description": "A decimal number as a string (exact, never a float)."
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "usd": {
                    "anyOf": [
                      {
                        "type": "string",
                        "description": "A decimal number as a string (exact, never a float)."
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "sqrtPriceX96": {
                    "type": "string",
                    "description": "An integer amount as a decimal string.",
                    "pattern": "^-?[0-9]+$"
                  },
                  "tick": {
                    "type": "integer"
                  }
                },
                "required": [
                  "quote",
                  "usd",
                  "sqrtPriceX96",
                  "tick"
                ]
              },
              "marketCap": {
                "type": "object",
                "properties": {
                  "quote": {
                    "$ref": "#/components/schemas/Amount"
                  },
                  "usd": {
                    "anyOf": [
                      {
                        "type": "string",
                        "description": "A decimal number as a string (exact, never a float)."
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "quote",
                  "usd"
                ]
              },
              "fdv": {
                "type": "object",
                "properties": {
                  "quote": {
                    "$ref": "#/components/schemas/Amount"
                  },
                  "usd": {
                    "anyOf": [
                      {
                        "type": "string",
                        "description": "A decimal number as a string (exact, never a float)."
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "quote",
                  "usd"
                ]
              },
              "circulatingSupply": {
                "$ref": "#/components/schemas/Amount"
              },
              "totalSupply": {
                "$ref": "#/components/schemas/Amount"
              },
              "burned": {
                "$ref": "#/components/schemas/Amount"
              },
              "liquidity": {
                "type": "object",
                "properties": {
                  "quote": {
                    "$ref": "#/components/schemas/Amount"
                  },
                  "token": {
                    "$ref": "#/components/schemas/Amount"
                  },
                  "usd": {
                    "anyOf": [
                      {
                        "type": "string",
                        "description": "A decimal number as a string (exact, never a float)."
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "quote",
                  "token",
                  "usd"
                ],
                "description": "What the hook's own positions hold at the current price."
              },
              "holders": {
                "type": "integer"
              },
              "trades": {
                "type": "string",
                "description": "An integer amount as a decimal string.",
                "pattern": "^-?[0-9]+$"
              },
              "lastTradeAt": {
                "anyOf": [
                  {
                    "type": "integer"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "m5": {
                "$ref": "#/components/schemas/WindowStats"
              },
              "h1": {
                "$ref": "#/components/schemas/WindowStats"
              },
              "h24": {
                "$ref": "#/components/schemas/WindowStats"
              }
            },
            "required": [
              "price",
              "marketCap",
              "fdv",
              "circulatingSupply",
              "totalSupply",
              "burned",
              "liquidity",
              "holders",
              "trades",
              "lastTradeAt",
              "m5",
              "h1",
              "h24"
            ]
          },
          "curve": {
            "type": "object",
            "properties": {
              "progressBps": {
                "type": "integer"
              },
              "threshold": {
                "$ref": "#/components/schemas/Amount"
              },
              "raised": {
                "$ref": "#/components/schemas/Amount"
              },
              "graduated": {
                "type": "boolean"
              },
              "graduatedAt": {
                "anyOf": [
                  {
                    "type": "integer"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "mintGateOpen": {
                "type": "boolean"
              }
            },
            "required": [
              "progressBps",
              "threshold",
              "raised",
              "graduated",
              "graduatedAt",
              "mintGateOpen"
            ]
          },
          "fees": {
            "$ref": "#/components/schemas/Fees"
          },
          "minimumTrade": {
            "$ref": "#/components/schemas/Amount"
          },
          "nft": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "collection": {
                    "type": "string",
                    "description": "An address, lower case 0x hex.",
                    "pattern": "^0x[0-9a-f]{40}$"
                  },
                  "artworkFinal": {
                    "type": "boolean"
                  },
                  "sealedMinted": {
                    "type": "string",
                    "description": "An integer amount as a decimal string.",
                    "pattern": "^-?[0-9]+$"
                  }
                },
                "required": [
                  "collection",
                  "artworkFinal",
                  "sealedMinted"
                ]
              },
              {
                "type": "null"
              }
            ]
          },
          "status": {
            "$ref": "#/components/schemas/Status"
          },
          "updatedAt": {
            "type": "integer"
          }
        },
        "required": [
          "chain",
          "chainId",
          "token",
          "poolId",
          "hook",
          "poolKey",
          "identity",
          "quote",
          "market",
          "curve",
          "fees",
          "minimumTrade",
          "nft",
          "status",
          "updatedAt"
        ]
      },
      "Trade": {
        "type": "object",
        "properties": {
          "block": {
            "type": "string",
            "description": "An integer amount as a decimal string.",
            "pattern": "^-?[0-9]+$"
          },
          "timestamp": {
            "type": "integer"
          },
          "transactionHash": {
            "type": "string"
          },
          "status": {
            "$ref": "#/components/schemas/Status"
          },
          "logIndex": {
            "type": "integer"
          },
          "token": {
            "type": "string",
            "description": "An address, lower case 0x hex.",
            "pattern": "^0x[0-9a-f]{40}$"
          },
          "side": {
            "type": "string",
            "enum": [
              "buy",
              "sell"
            ]
          },
          "trader": {
            "anyOf": [
              {
                "type": "string",
                "description": "An address, lower case 0x hex.",
                "pattern": "^0x[0-9a-f]{40}$"
              },
              {
                "type": "null"
              }
            ]
          },
          "traderBasis": {
            "type": "string",
            "description": "How the wallet was attributed: user-operation, router, token-flow, caller, event or unknown."
          },
          "router": {
            "anyOf": [
              {
                "type": "string",
                "description": "An address, lower case 0x hex.",
                "pattern": "^0x[0-9a-f]{40}$"
              },
              {
                "type": "null"
              }
            ]
          },
          "tokenAmount": {
            "$ref": "#/components/schemas/Amount"
          },
          "quoteAmount": {
            "$ref": "#/components/schemas/Amount"
          },
          "quoteFee": {
            "$ref": "#/components/schemas/Amount"
          },
          "burn": {
            "$ref": "#/components/schemas/Amount"
          },
          "price": {
            "anyOf": [
              {
                "type": "string",
                "description": "A decimal number as a string (exact, never a float)."
              },
              {
                "type": "null"
              }
            ]
          },
          "progressBps": {
            "type": "integer"
          },
          "sequence": {
            "anyOf": [
              {
                "type": "string",
                "description": "An integer amount as a decimal string.",
                "pattern": "^-?[0-9]+$"
              },
              {
                "type": "null"
              }
            ]
          },
          "builder": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "address": {
                    "anyOf": [
                      {
                        "type": "string",
                        "description": "An address, lower case 0x hex.",
                        "pattern": "^0x[0-9a-f]{40}$"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "fee": {
                    "$ref": "#/components/schemas/Amount"
                  },
                  "feeBps": {
                    "type": "integer"
                  },
                  "tag": {
                    "anyOf": [
                      {
                        "type": "string",
                        "description": "bytes32: 0x and 64 hex digits."
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "address",
                  "fee",
                  "feeBps",
                  "tag"
                ]
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "block",
          "timestamp",
          "transactionHash",
          "status",
          "logIndex",
          "token",
          "side",
          "trader",
          "traderBasis",
          "router",
          "tokenAmount",
          "quoteAmount",
          "quoteFee",
          "burn",
          "price",
          "progressBps",
          "sequence",
          "builder"
        ]
      },
      "TradeList": {
        "type": "object",
        "properties": {
          "chain": {
            "type": "string"
          },
          "chainId": {
            "type": "integer"
          },
          "token": {
            "type": "string",
            "description": "An address, lower case 0x hex.",
            "pattern": "^0x[0-9a-f]{40}$"
          },
          "trades": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Trade"
            }
          },
          "next": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "chain",
          "chainId",
          "token",
          "trades",
          "next"
        ]
      },
      "Candles": {
        "type": "object",
        "properties": {
          "chain": {
            "type": "string"
          },
          "chainId": {
            "type": "integer"
          },
          "token": {
            "type": "string",
            "description": "An address, lower case 0x hex.",
            "pattern": "^0x[0-9a-f]{40}$"
          },
          "interval": {
            "type": "string",
            "enum": [
              "1s",
              "1m",
              "5m",
              "15m",
              "1h",
              "4h",
              "1d"
            ]
          },
          "currency": {
            "type": "string",
            "enum": [
              "quote",
              "usd"
            ]
          },
          "usdRate": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "quoteUsd": {
                    "type": "string",
                    "description": "A decimal number as a string (exact, never a float)."
                  },
                  "at": {
                    "type": "integer"
                  }
                },
                "required": [
                  "quoteUsd",
                  "at"
                ]
              },
              {
                "type": "null"
              }
            ]
          },
          "candles": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "time": {
                  "type": "integer"
                },
                "open": {
                  "type": "string",
                  "description": "A decimal number as a string (exact, never a float)."
                },
                "high": {
                  "type": "string",
                  "description": "A decimal number as a string (exact, never a float)."
                },
                "low": {
                  "type": "string",
                  "description": "A decimal number as a string (exact, never a float)."
                },
                "close": {
                  "type": "string",
                  "description": "A decimal number as a string (exact, never a float)."
                },
                "volume": {
                  "type": "string",
                  "description": "A decimal number as a string (exact, never a float)."
                },
                "trades": {
                  "type": "integer"
                }
              },
              "required": [
                "time",
                "open",
                "high",
                "low",
                "close",
                "volume",
                "trades"
              ]
            }
          }
        },
        "required": [
          "chain",
          "chainId",
          "token",
          "interval",
          "currency",
          "usdRate",
          "candles"
        ]
      },
      "Holders": {
        "type": "object",
        "properties": {
          "chain": {
            "type": "string"
          },
          "chainId": {
            "type": "integer"
          },
          "token": {
            "type": "string",
            "description": "An address, lower case 0x hex.",
            "pattern": "^0x[0-9a-f]{40}$"
          },
          "count": {
            "type": "integer"
          },
          "status": {
            "$ref": "#/components/schemas/Status"
          },
          "holders": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "address": {
                  "type": "string",
                  "description": "An address, lower case 0x hex.",
                  "pattern": "^0x[0-9a-f]{40}$"
                },
                "balance": {
                  "$ref": "#/components/schemas/Amount"
                }
              },
              "required": [
                "address",
                "balance"
              ]
            }
          }
        },
        "required": [
          "chain",
          "chainId",
          "token",
          "count",
          "status",
          "holders"
        ]
      },
      "Creator": {
        "type": "object",
        "properties": {
          "chain": {
            "type": "string"
          },
          "chainId": {
            "type": "integer"
          },
          "address": {
            "type": "string",
            "description": "An address, lower case 0x hex.",
            "pattern": "^0x[0-9a-f]{40}$"
          },
          "launches": {
            "type": "object",
            "properties": {
              "total": {
                "type": "integer"
              },
              "graduated": {
                "type": "integer"
              }
            },
            "required": [
              "total",
              "graduated"
            ]
          },
          "tokens": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "token": {
                  "type": "string",
                  "description": "An address, lower case 0x hex.",
                  "pattern": "^0x[0-9a-f]{40}$"
                },
                "name": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "symbol": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "createdAt": {
                  "type": "integer"
                },
                "graduated": {
                  "type": "boolean"
                },
                "progressBps": {
                  "type": "integer"
                },
                "moderation": {
                  "type": "string"
                }
              },
              "required": [
                "token",
                "name",
                "symbol",
                "createdAt",
                "graduated",
                "progressBps",
                "moderation"
              ]
            }
          },
          "earnings": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "quote": {
                  "type": "string",
                  "description": "An address, lower case 0x hex.",
                  "pattern": "^0x[0-9a-f]{40}$"
                },
                "paid": {
                  "$ref": "#/components/schemas/Amount"
                },
                "owed": {
                  "$ref": "#/components/schemas/Amount"
                }
              },
              "required": [
                "quote",
                "paid",
                "owed"
              ]
            }
          },
          "next": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "chain",
          "chainId",
          "address",
          "launches",
          "tokens",
          "earnings",
          "next"
        ]
      },
      "Wallet": {
        "type": "object",
        "properties": {
          "chain": {
            "type": "string"
          },
          "chainId": {
            "type": "integer"
          },
          "address": {
            "type": "string",
            "description": "An address, lower case 0x hex.",
            "pattern": "^0x[0-9a-f]{40}$"
          },
          "next": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "positions": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "token": {
                  "type": "string",
                  "description": "An address, lower case 0x hex.",
                  "pattern": "^0x[0-9a-f]{40}$"
                },
                "name": {
                  "type": "string"
                },
                "symbol": {
                  "type": "string"
                },
                "balance": {
                  "$ref": "#/components/schemas/Amount"
                },
                "value": {
                  "anyOf": [
                    {
                      "type": "object",
                      "properties": {
                        "quote": {
                          "$ref": "#/components/schemas/Amount"
                        },
                        "usd": {
                          "anyOf": [
                            {
                              "type": "string",
                              "description": "A decimal number as a string (exact, never a float)."
                            },
                            {
                              "type": "null"
                            }
                          ]
                        }
                      },
                      "required": [
                        "quote",
                        "usd"
                      ]
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "costBasis": {
                  "anyOf": [
                    {
                      "type": "object",
                      "properties": {
                        "quote": {
                          "$ref": "#/components/schemas/Amount"
                        }
                      },
                      "required": [
                        "quote"
                      ]
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "pnl": {
                  "anyOf": [
                    {
                      "type": "object",
                      "properties": {
                        "quote": {
                          "$ref": "#/components/schemas/Amount"
                        }
                      },
                      "required": [
                        "quote"
                      ]
                    },
                    {
                      "type": "null"
                    }
                  ]
                }
              },
              "required": [
                "token",
                "name",
                "symbol",
                "balance",
                "value",
                "costBasis",
                "pnl"
              ]
            }
          },
          "claimable": {
            "type": "object",
            "properties": {
              "creator": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "token": {
                      "type": "string",
                      "description": "An address, lower case 0x hex.",
                      "pattern": "^0x[0-9a-f]{40}$"
                    },
                    "quote": {
                      "type": "string",
                      "description": "An address, lower case 0x hex.",
                      "pattern": "^0x[0-9a-f]{40}$"
                    },
                    "owed": {
                      "$ref": "#/components/schemas/Amount"
                    }
                  },
                  "required": [
                    "token",
                    "quote",
                    "owed"
                  ]
                }
              },
              "builder": {
                "anyOf": [
                  {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "currency": {
                          "type": "string",
                          "description": "An address, lower case 0x hex.",
                          "pattern": "^0x[0-9a-f]{40}$"
                        },
                        "hook": {
                          "type": "string",
                          "description": "An address, lower case 0x hex.",
                          "pattern": "^0x[0-9a-f]{40}$"
                        },
                        "amount": {
                          "$ref": "#/components/schemas/Amount"
                        }
                      },
                      "required": [
                        "currency",
                        "hook",
                        "amount"
                      ]
                    }
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "required": [
              "creator",
              "builder"
            ]
          }
        },
        "required": [
          "chain",
          "chainId",
          "address",
          "next",
          "positions",
          "claimable"
        ]
      },
      "Quote": {
        "type": "object",
        "properties": {
          "chain": {
            "type": "string"
          },
          "chainId": {
            "type": "integer"
          },
          "token": {
            "type": "string",
            "description": "An address, lower case 0x hex.",
            "pattern": "^0x[0-9a-f]{40}$"
          },
          "side": {
            "type": "string",
            "enum": [
              "buy",
              "sell"
            ]
          },
          "amountIn": {
            "$ref": "#/components/schemas/Amount"
          },
          "amountOut": {
            "$ref": "#/components/schemas/Amount"
          },
          "fees": {
            "type": "object",
            "properties": {
              "quoteFee": {
                "$ref": "#/components/schemas/Amount"
              },
              "surcharge": {
                "$ref": "#/components/schemas/Amount"
              },
              "burn": {
                "$ref": "#/components/schemas/Amount"
              },
              "builder": {
                "$ref": "#/components/schemas/Amount"
              },
              "totalBps": {
                "type": "integer"
              }
            },
            "required": [
              "quoteFee",
              "surcharge",
              "burn",
              "builder",
              "totalBps"
            ]
          },
          "priceImpactBps": {
            "type": "integer"
          },
          "executionPrice": {
            "type": "string",
            "description": "A decimal number as a string (exact, never a float)."
          },
          "spotPrice": {
            "type": "string",
            "description": "A decimal number as a string (exact, never a float)."
          },
          "block": {
            "type": "string",
            "description": "An integer amount as a decimal string.",
            "pattern": "^-?[0-9]+$"
          },
          "builder": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "address": {
                    "type": "string",
                    "description": "An address, lower case 0x hex.",
                    "pattern": "^0x[0-9a-f]{40}$"
                  },
                  "feeBps": {
                    "type": "integer",
                    "description": "The rate applied: lowered inside the launch-surcharge window to keep the total at 99 %."
                  },
                  "requestedFeeBps": {
                    "type": "integer"
                  },
                  "tag": {
                    "anyOf": [
                      {
                        "type": "string",
                        "description": "32 bytes, copied into BuilderFee."
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "address",
                  "feeBps",
                  "requestedFeeBps",
                  "tag"
                ]
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "chain",
          "chainId",
          "token",
          "side",
          "amountIn",
          "amountOut",
          "fees",
          "priceImpactBps",
          "executionPrice",
          "spotPrice",
          "block",
          "builder"
        ]
      },
      "Transaction": {
        "type": "object",
        "properties": {
          "to": {
            "type": "string",
            "description": "An address, lower case 0x hex.",
            "pattern": "^0x[0-9a-f]{40}$"
          },
          "data": {
            "type": "string"
          },
          "value": {
            "type": "string",
            "description": "An integer amount as a decimal string.",
            "pattern": "^-?[0-9]+$"
          }
        },
        "required": [
          "to",
          "data",
          "value"
        ]
      },
      "SwapTransaction": {
        "type": "object",
        "properties": {
          "chain": {
            "type": "string"
          },
          "chainId": {
            "type": "integer"
          },
          "quote": {
            "$ref": "#/components/schemas/Quote"
          },
          "minimumOut": {
            "$ref": "#/components/schemas/Amount"
          },
          "deadline": {
            "type": "integer"
          },
          "route": {
            "type": "string",
            "description": "router: Otomate's router (one approval of the input token to it); permit2: the chain's Universal Router with Permit2.",
            "enum": [
              "router",
              "permit2"
            ]
          },
          "approvals": {
            "type": "array",
            "items": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/Transaction"
                },
                {
                  "type": "object",
                  "properties": {
                    "kind": {
                      "type": "string",
                      "enum": [
                        "erc20",
                        "permit2"
                      ]
                    }
                  },
                  "required": [
                    "kind"
                  ]
                }
              ]
            }
          },
          "transaction": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Transaction"
              },
              {
                "type": "object",
                "properties": {
                  "gas": {
                    "type": "string",
                    "description": "The gas limit to send the swap with, a decimal string: the node's estimate plus 30 % (in a launch's first seconds an exact estimate can run out of gas). Absent while an approval is still to send, or without an estimate: estimate it yourself and add 30 %.",
                    "pattern": "^[0-9]+$"
                  }
                },
                "required": []
              }
            ]
          },
          "router": {
            "type": "string",
            "description": "An address, lower case 0x hex.",
            "pattern": "^0x[0-9a-f]{40}$"
          }
        },
        "required": [
          "chain",
          "chainId",
          "quote",
          "minimumOut",
          "deadline",
          "route",
          "approvals",
          "transaction",
          "router"
        ]
      },
      "FeedEvent": {
        "type": "object",
        "properties": {
          "v": {
            "type": "integer"
          },
          "type": {
            "type": "string",
            "enum": [
              "launch",
              "trade",
              "graduation",
              "mint_gate"
            ]
          },
          "id": {
            "type": "string",
            "description": "The cursor: store it, send it back to resume."
          },
          "chainId": {
            "type": "integer"
          },
          "block": {
            "type": "object",
            "properties": {
              "number": {
                "type": "string",
                "description": "An integer amount as a decimal string.",
                "pattern": "^-?[0-9]+$"
              },
              "hash": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "timestamp": {
                "type": "integer"
              }
            },
            "required": [
              "number",
              "hash",
              "timestamp"
            ]
          },
          "transactionHash": {
            "type": "string"
          },
          "logIndex": {
            "type": "integer"
          },
          "status": {
            "$ref": "#/components/schemas/Status"
          },
          "confirmed": {
            "type": "boolean"
          },
          "token": {
            "type": "string",
            "description": "An address, lower case 0x hex.",
            "pattern": "^0x[0-9a-f]{40}$"
          },
          "poolId": {
            "type": "string"
          },
          "data": {
            "type": "object",
            "description": "By type: launch (snapshot, metadata URI, fees, initial buy), trade (side, wallet, amounts, fees, price, sequence), graduation and mint_gate (time, L2 block, price)."
          }
        },
        "required": [
          "v",
          "type",
          "id",
          "chainId",
          "block",
          "transactionHash",
          "logIndex",
          "status",
          "confirmed",
          "token",
          "poolId",
          "data"
        ]
      },
      "FeedPage": {
        "type": "object",
        "properties": {
          "v": {
            "type": "integer"
          },
          "schema": {
            "type": "string"
          },
          "chainId": {
            "type": "integer"
          },
          "reorg": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "afterBlock": {
                    "type": "string",
                    "description": "An integer amount as a decimal string.",
                    "pattern": "^-?[0-9]+$"
                  }
                },
                "required": [
                  "afterBlock"
                ]
              },
              {
                "type": "null"
              }
            ]
          },
          "events": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FeedEvent"
            }
          },
          "next": {
            "type": "string"
          },
          "complete": {
            "type": "boolean"
          },
          "confirmedBlock": {
            "anyOf": [
              {
                "type": "string",
                "description": "An integer amount as a decimal string.",
                "pattern": "^-?[0-9]+$"
              },
              {
                "type": "null"
              }
            ]
          },
          "finalizedBlock": {
            "anyOf": [
              {
                "type": "string",
                "description": "An integer amount as a decimal string.",
                "pattern": "^-?[0-9]+$"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "v",
          "schema",
          "chainId",
          "reorg",
          "events",
          "next",
          "complete",
          "confirmedBlock",
          "finalizedBlock"
        ]
      }
    },
    "securitySchemes": {
      "apiKey": {
        "type": "http",
        "scheme": "bearer",
        "description": "Optional. A wallet-bound key (POST /api/v1/{chain}/keys) or a partner key."
      }
    }
  },
  "security": [
    {},
    {
      "apiKey": []
    }
  ],
  "paths": {
    "/api/v1/{chain}/tokens": {
      "get": {
        "summary": "Launches, sorted and filtered",
        "operationId": "listTokens",
        "parameters": [
          {
            "name": "chain",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "ink",
                "robinhood",
                "base",
                "hyperevm",
                "bnb"
              ]
            },
            "description": "ink (57073), robinhood (4663), base (8453), hyperevm (999) or bnb (56). A chain answers once it is open (GET /api/v1/{chain}/status)."
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "new",
                "graduating",
                "graduated",
                "trending",
                "gainers"
              ],
              "default": "new"
            }
          },
          {
            "name": "quote",
            "in": "query",
            "schema": {
              "type": "string",
              "description": "An address, lower case 0x hex.",
              "pattern": "^0x[0-9a-f]{40}$"
            }
          },
          {
            "name": "collection",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "q",
            "in": "query",
            "schema": {
              "type": "string",
              "description": "Name, symbol or the start of an address."
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TokenList"
                }
              }
            }
          },
          "400": {
            "description": "Malformed request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Unknown or revoked key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "Over the budget where x402 is enabled: the terms (x402 version 2, USDC on Base) in the PAYMENT-REQUIRED header (base64 JSON) and the body. Send the request again with PAYMENT-SIGNATURE; it is settled only when the answer succeeds (PAYMENT-RESPONSE).",
            "headers": {
              "PAYMENT-REQUIRED": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "421": {
            "description": "Another chain: its API origin is in `origin`",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Over the tier's budget (Retry-After)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Temporarily unavailable (Retry-After)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/{chain}/tokens/{token}": {
      "get": {
        "summary": "One launch in one read",
        "operationId": "getToken",
        "parameters": [
          {
            "name": "chain",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "ink",
                "robinhood",
                "base",
                "hyperevm",
                "bnb"
              ]
            },
            "description": "ink (57073), robinhood (4663), base (8453), hyperevm (999) or bnb (56). A chain answers once it is open (GET /api/v1/{chain}/status)."
          },
          {
            "name": "token",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "description": "An address, lower case 0x hex.",
              "pattern": "^0x[0-9a-f]{40}$"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Token"
                }
              }
            }
          },
          "400": {
            "description": "Malformed request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Unknown or revoked key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "Over the budget where x402 is enabled: the terms (x402 version 2, USDC on Base) in the PAYMENT-REQUIRED header (base64 JSON) and the body. Send the request again with PAYMENT-SIGNATURE; it is settled only when the answer succeeds (PAYMENT-RESPONSE).",
            "headers": {
              "PAYMENT-REQUIRED": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "421": {
            "description": "Another chain: its API origin is in `origin`",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Over the tier's budget (Retry-After)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Temporarily unavailable (Retry-After)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/{chain}/tokens/{token}/trades": {
      "get": {
        "summary": "Trades, newest first",
        "operationId": "getTrades",
        "parameters": [
          {
            "name": "chain",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "ink",
                "robinhood",
                "base",
                "hyperevm",
                "bnb"
              ]
            },
            "description": "ink (57073), robinhood (4663), base (8453), hyperevm (999) or bnb (56). A chain answers once it is open (GET /api/v1/{chain}/status)."
          },
          {
            "name": "token",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "description": "An address, lower case 0x hex.",
              "pattern": "^0x[0-9a-f]{40}$"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TradeList"
                }
              }
            }
          },
          "400": {
            "description": "Malformed request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "Over the budget where x402 is enabled: the terms (x402 version 2, USDC on Base) in the PAYMENT-REQUIRED header (base64 JSON) and the body. Send the request again with PAYMENT-SIGNATURE; it is settled only when the answer succeeds (PAYMENT-RESPONSE).",
            "headers": {
              "PAYMENT-REQUIRED": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "421": {
            "description": "Another chain: its API origin is in `origin`",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Over the tier's budget (Retry-After)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Temporarily unavailable (Retry-After)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/{chain}/tokens/{token}/candles": {
      "get": {
        "summary": "OHLCV candles in the quote or in USD",
        "operationId": "getCandles",
        "parameters": [
          {
            "name": "chain",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "ink",
                "robinhood",
                "base",
                "hyperevm",
                "bnb"
              ]
            },
            "description": "ink (57073), robinhood (4663), base (8453), hyperevm (999) or bnb (56). A chain answers once it is open (GET /api/v1/{chain}/status)."
          },
          {
            "name": "token",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "description": "An address, lower case 0x hex.",
              "pattern": "^0x[0-9a-f]{40}$"
            }
          },
          {
            "name": "interval",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "1s",
                "1m",
                "5m",
                "15m",
                "1h",
                "4h",
                "1d"
              ],
              "default": "1m"
            }
          },
          {
            "name": "currency",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "quote",
                "usd"
              ],
              "default": "quote"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "to",
            "in": "query",
            "schema": {
              "type": "integer",
              "description": "Unix seconds (exclusive end)."
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Candles"
                }
              }
            }
          },
          "400": {
            "description": "Malformed request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "Over the budget where x402 is enabled: the terms (x402 version 2, USDC on Base) in the PAYMENT-REQUIRED header (base64 JSON) and the body. Send the request again with PAYMENT-SIGNATURE; it is settled only when the answer succeeds (PAYMENT-RESPONSE).",
            "headers": {
              "PAYMENT-REQUIRED": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "421": {
            "description": "Another chain: its API origin is in `origin`",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Over the tier's budget (Retry-After)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Temporarily unavailable (Retry-After)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/{chain}/tokens/{token}/holders": {
      "get": {
        "summary": "The 50 largest holders and the count",
        "operationId": "getHolders",
        "parameters": [
          {
            "name": "chain",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "ink",
                "robinhood",
                "base",
                "hyperevm",
                "bnb"
              ]
            },
            "description": "ink (57073), robinhood (4663), base (8453), hyperevm (999) or bnb (56). A chain answers once it is open (GET /api/v1/{chain}/status)."
          },
          {
            "name": "token",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "description": "An address, lower case 0x hex.",
              "pattern": "^0x[0-9a-f]{40}$"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Holders"
                }
              }
            }
          },
          "400": {
            "description": "Malformed request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "Over the budget where x402 is enabled: the terms (x402 version 2, USDC on Base) in the PAYMENT-REQUIRED header (base64 JSON) and the body. Send the request again with PAYMENT-SIGNATURE; it is settled only when the answer succeeds (PAYMENT-RESPONSE).",
            "headers": {
              "PAYMENT-REQUIRED": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "421": {
            "description": "Another chain: its API origin is in `origin`",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Over the tier's budget (Retry-After)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Temporarily unavailable (Retry-After)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/{chain}/creators/{address}": {
      "get": {
        "summary": "A creator's launches, their outcome and earnings",
        "operationId": "getCreator",
        "parameters": [
          {
            "name": "chain",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "ink",
                "robinhood",
                "base",
                "hyperevm",
                "bnb"
              ]
            },
            "description": "ink (57073), robinhood (4663), base (8453), hyperevm (999) or bnb (56). A chain answers once it is open (GET /api/v1/{chain}/status)."
          },
          {
            "name": "address",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "description": "An address, lower case 0x hex.",
              "pattern": "^0x[0-9a-f]{40}$"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Creator"
                }
              }
            }
          },
          "400": {
            "description": "Malformed request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "Over the budget where x402 is enabled: the terms (x402 version 2, USDC on Base) in the PAYMENT-REQUIRED header (base64 JSON) and the body. Send the request again with PAYMENT-SIGNATURE; it is settled only when the answer succeeds (PAYMENT-RESPONSE).",
            "headers": {
              "PAYMENT-REQUIRED": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "421": {
            "description": "Another chain: its API origin is in `origin`",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Over the tier's budget (Retry-After)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Temporarily unavailable (Retry-After)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/{chain}/wallets/{address}": {
      "get": {
        "summary": "A wallet's positions, value and what it can expect or claim",
        "operationId": "getWallet",
        "parameters": [
          {
            "name": "chain",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "ink",
                "robinhood",
                "base",
                "hyperevm",
                "bnb"
              ]
            },
            "description": "ink (57073), robinhood (4663), base (8453), hyperevm (999) or bnb (56). A chain answers once it is open (GET /api/v1/{chain}/status)."
          },
          {
            "name": "address",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "description": "An address, lower case 0x hex.",
              "pattern": "^0x[0-9a-f]{40}$"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Wallet"
                }
              }
            }
          },
          "400": {
            "description": "Malformed request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "Over the budget where x402 is enabled: the terms (x402 version 2, USDC on Base) in the PAYMENT-REQUIRED header (base64 JSON) and the body. Send the request again with PAYMENT-SIGNATURE; it is settled only when the answer succeeds (PAYMENT-RESPONSE).",
            "headers": {
              "PAYMENT-REQUIRED": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "421": {
            "description": "Another chain: its API origin is in `origin`",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Over the tier's budget (Retry-After)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Temporarily unavailable (Retry-After)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/{chain}/quote": {
      "get": {
        "summary": "A quote from the chain's V4 Quoter, with every fee",
        "operationId": "quote",
        "parameters": [
          {
            "name": "chain",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "ink",
                "robinhood",
                "base",
                "hyperevm",
                "bnb"
              ]
            },
            "description": "ink (57073), robinhood (4663), base (8453), hyperevm (999) or bnb (56). A chain answers once it is open (GET /api/v1/{chain}/status)."
          },
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "description": "An address, lower case 0x hex.",
              "pattern": "^0x[0-9a-f]{40}$"
            }
          },
          {
            "name": "side",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "buy",
                "sell"
              ]
            }
          },
          {
            "name": "amountIn",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "description": "An integer amount as a decimal string.",
              "pattern": "^-?[0-9]+$"
            }
          },
          {
            "name": "builder",
            "in": "query",
            "schema": {
              "type": "string",
              "description": "An address, lower case 0x hex.",
              "pattern": "^0x[0-9a-f]{40}$"
            }
          },
          {
            "name": "builderFeeBps",
            "in": "query",
            "schema": {
              "type": "integer",
              "maximum": 200
            }
          },
          {
            "name": "builderTag",
            "in": "query",
            "schema": {
              "type": "string",
              "description": "A builder code's 32-byte tag (0x + 64 hex); alone, it attributes the trade without a fee."
            }
          }
        ],
        "description": "Counts as ten reads of the tier's budget (an eth_call).",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Quote"
                }
              }
            }
          },
          "400": {
            "description": "Malformed request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "Over the budget where x402 is enabled: the terms (x402 version 2, USDC on Base) in the PAYMENT-REQUIRED header (base64 JSON) and the body. Send the request again with PAYMENT-SIGNATURE; it is settled only when the answer succeeds (PAYMENT-RESPONSE).",
            "headers": {
              "PAYMENT-REQUIRED": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "421": {
            "description": "Another chain: its API origin is in `origin`",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "The chain would refuse it (reason: the contract error name)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Over the tier's budget (Retry-After)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Temporarily unavailable (Retry-After)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/{chain}/swap-transaction": {
      "post": {
        "summary": "A swap ready to sign, with its approvals",
        "operationId": "swapTransaction",
        "parameters": [
          {
            "name": "chain",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "ink",
                "robinhood",
                "base",
                "hyperevm",
                "bnb"
              ]
            },
            "description": "ink (57073), robinhood (4663), base (8453), hyperevm (999) or bnb (56). A chain answers once it is open (GET /api/v1/{chain}/status)."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "token": {
                    "type": "string",
                    "description": "An address, lower case 0x hex.",
                    "pattern": "^0x[0-9a-f]{40}$"
                  },
                  "side": {
                    "type": "string",
                    "enum": [
                      "buy",
                      "sell"
                    ]
                  },
                  "amountIn": {
                    "type": "string",
                    "description": "An integer amount as a decimal string.",
                    "pattern": "^-?[0-9]+$"
                  },
                  "account": {
                    "type": "string",
                    "description": "An address, lower case 0x hex.",
                    "pattern": "^0x[0-9a-f]{40}$"
                  },
                  "slippageBps": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 5000,
                    "default": 100
                  },
                  "nativeEth": {
                    "type": "boolean",
                    "description": "ETH in or out on WETH pairs."
                  },
                  "builder": {
                    "type": "string",
                    "description": "An address, lower case 0x hex.",
                    "pattern": "^0x[0-9a-f]{40}$"
                  },
                  "builderFeeBps": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 200
                  },
                  "builderTag": {
                    "type": "string",
                    "description": "32 bytes (0x + 64 hex)."
                  },
                  "deadlineSeconds": {
                    "type": "integer",
                    "minimum": 30,
                    "maximum": 1800,
                    "default": 120
                  },
                  "route": {
                    "type": "string",
                    "description": "Unset: Otomate's router where it serves the pool, else the Universal Router with Permit2. router: the router only (400 otherwise). permit2: the Universal Router.",
                    "enum": [
                      "router",
                      "permit2"
                    ]
                  }
                },
                "required": [
                  "token",
                  "side",
                  "amountIn",
                  "account"
                ]
              }
            }
          }
        },
        "description": "Nothing is signed or kept. Send the approvals first (in order; each for exactly the amount in), then the transaction, from `account`.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SwapTransaction"
                }
              }
            }
          },
          "400": {
            "description": "Malformed request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "Over the budget where x402 is enabled: the terms (x402 version 2, USDC on Base) in the PAYMENT-REQUIRED header (base64 JSON) and the body. Send the request again with PAYMENT-SIGNATURE; it is settled only when the answer succeeds (PAYMENT-RESPONSE).",
            "headers": {
              "PAYMENT-REQUIRED": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "421": {
            "description": "Another chain: its API origin is in `origin`",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "The chain would refuse it (reason: the contract error name)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Over the tier's budget (Retry-After)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Temporarily unavailable (Retry-After)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/{chain}/tokenlist.json": {
      "get": {
        "summary": "The chain's launches as a token list (tokenlists.org)",
        "operationId": "tokenList",
        "parameters": [
          {
            "name": "chain",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "ink",
                "robinhood",
                "base",
                "hyperevm",
                "bnb"
              ]
            },
            "description": "ink (57073), robinhood (4663), base (8453), hyperevm (999) or bnb (56). A chain answers once it is open (GET /api/v1/{chain}/status)."
          }
        ],
        "responses": {
          "200": {
            "description": "A token list"
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "421": {
            "description": "Another chain: its API origin is in `origin`",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Temporarily unavailable (Retry-After)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/{chain}/feed": {
      "get": {
        "summary": "Real-time feed (server-sent events)",
        "operationId": "feed",
        "parameters": [
          {
            "name": "chain",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "ink",
                "robinhood",
                "base",
                "hyperevm",
                "bnb"
              ]
            },
            "description": "ink (57073), robinhood (4663), base (8453), hyperevm (999) or bnb (56). A chain answers once it is open (GET /api/v1/{chain}/status)."
          },
          {
            "name": "topics",
            "in": "query",
            "schema": {
              "type": "string",
              "description": "Comma-separated: launch, trade, graduation, mint_gate."
            }
          },
          {
            "name": "tokens",
            "in": "query",
            "schema": {
              "type": "string",
              "description": "Comma-separated addresses (at most 100)."
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "schema": {
              "type": "string",
              "description": "Resume after this event id (a browser's EventSource may send the Last-Event-ID header instead)."
            }
          },
          {
            "name": "fromBlock",
            "in": "query",
            "schema": {
              "type": "string",
              "description": "An integer amount as a decimal string.",
              "pattern": "^-?[0-9]+$"
            }
          }
        ],
        "description": "Schema otomate.launch-pool-feed.v1. Events (event: launch | trade | graduation | mint_gate) carry their cursor as the SSE id. Markers: ready, reorg {afterBlock} (drop what you hold above it), final {block} (everything at or below it is final), error {code} before the server closes. The same events over WebSocket at /api/v1/{chain}/feed/ws (JSON text frames, same query).",
        "responses": {
          "200": {
            "description": "text/event-stream",
            "content": {
              "text/event-stream": {
                "schema": {
                  "$ref": "#/components/schemas/FeedEvent"
                }
              }
            }
          },
          "400": {
            "description": "Malformed request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Unknown or revoked key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "Over the budget where x402 is enabled: the terms (x402 version 2, USDC on Base) in the PAYMENT-REQUIRED header (base64 JSON) and the body. Send the request again with PAYMENT-SIGNATURE; it is settled only when the answer succeeds (PAYMENT-RESPONSE).",
            "headers": {
              "PAYMENT-REQUIRED": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "421": {
            "description": "Another chain: its API origin is in `origin`",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Over the tier's budget (Retry-After)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Temporarily unavailable (Retry-After)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/{chain}/feed/events": {
      "get": {
        "summary": "One page of the feed (polling, catching up)",
        "operationId": "feedPage",
        "parameters": [
          {
            "name": "chain",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "ink",
                "robinhood",
                "base",
                "hyperevm",
                "bnb"
              ]
            },
            "description": "ink (57073), robinhood (4663), base (8453), hyperevm (999) or bnb (56). A chain answers once it is open (GET /api/v1/{chain}/status)."
          },
          {
            "name": "topics",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "tokens",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "fromBlock",
            "in": "query",
            "schema": {
              "type": "string",
              "description": "An integer amount as a decimal string.",
              "pattern": "^-?[0-9]+$"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 500
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FeedPage"
                }
              }
            }
          },
          "400": {
            "description": "Malformed request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Unknown or revoked key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "Over the budget where x402 is enabled: the terms (x402 version 2, USDC on Base) in the PAYMENT-REQUIRED header (base64 JSON) and the body. Send the request again with PAYMENT-SIGNATURE; it is settled only when the answer succeeds (PAYMENT-RESPONSE).",
            "headers": {
              "PAYMENT-REQUIRED": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "421": {
            "description": "Another chain: its API origin is in `origin`",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Over the tier's budget (Retry-After)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Temporarily unavailable (Retry-After)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/{chain}/status": {
      "get": {
        "summary": "Indexer marks and the feed's health",
        "operationId": "status",
        "parameters": [
          {
            "name": "chain",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "ink",
                "robinhood",
                "base",
                "hyperevm",
                "bnb"
              ]
            },
            "description": "ink (57073), robinhood (4663), base (8453), hyperevm (999) or bnb (56). A chain answers once it is open (GET /api/v1/{chain}/status)."
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/{chain}/keys/challenge": {
      "get": {
        "summary": "The message a wallet signs to get an API key (EIP-4361)",
        "operationId": "keyChallenge",
        "parameters": [
          {
            "name": "chain",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "ink",
                "robinhood",
                "base",
                "hyperevm",
                "bnb"
              ]
            },
            "description": "ink (57073), robinhood (4663), base (8453), hyperevm (999) or bnb (56). A chain answers once it is open (GET /api/v1/{chain}/status)."
          },
          {
            "name": "address",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "description": "An address, lower case 0x hex.",
              "pattern": "^0x[0-9a-f]{40}$"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    },
                    "expiresAt": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "message",
                    "expiresAt"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Malformed request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "Over the budget where x402 is enabled: the terms (x402 version 2, USDC on Base) in the PAYMENT-REQUIRED header (base64 JSON) and the body. Send the request again with PAYMENT-SIGNATURE; it is settled only when the answer succeeds (PAYMENT-RESPONSE).",
            "headers": {
              "PAYMENT-REQUIRED": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "429": {
            "description": "Over the tier's budget (Retry-After)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Temporarily unavailable (Retry-After)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/{chain}/keys": {
      "post": {
        "summary": "An API key bound to the signing wallet (shown once; nothing is stored; valid on both chains)",
        "operationId": "createKey",
        "parameters": [
          {
            "name": "chain",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "ink",
                "robinhood",
                "base",
                "hyperevm",
                "bnb"
              ]
            },
            "description": "ink (57073), robinhood (4663), base (8453), hyperevm (999) or bnb (56). A chain answers once it is open (GET /api/v1/{chain}/status)."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "message": {
                    "type": "string"
                  },
                  "signature": {
                    "type": "string"
                  }
                },
                "required": [
                  "message",
                  "signature"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "key": {
                      "type": "string"
                    },
                    "wallet": {
                      "type": "string",
                      "description": "An address, lower case 0x hex.",
                      "pattern": "^0x[0-9a-f]{40}$"
                    },
                    "tier": {
                      "type": "string"
                    },
                    "limits": {
                      "type": "object"
                    },
                    "issuedAt": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "key",
                    "wallet",
                    "tier",
                    "limits",
                    "issuedAt"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Malformed request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Unknown or revoked key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "Over the budget where x402 is enabled: the terms (x402 version 2, USDC on Base) in the PAYMENT-REQUIRED header (base64 JSON) and the body. Send the request again with PAYMENT-SIGNATURE; it is settled only when the answer succeeds (PAYMENT-RESPONSE).",
            "headers": {
              "PAYMENT-REQUIRED": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "429": {
            "description": "Over the tier's budget (Retry-After)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Temporarily unavailable (Retry-After)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/{chain}/keys/me": {
      "get": {
        "summary": "The tier and limits of the request's key",
        "operationId": "keyInfo",
        "parameters": [
          {
            "name": "chain",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "ink",
                "robinhood",
                "base",
                "hyperevm",
                "bnb"
              ]
            },
            "description": "ink (57073), robinhood (4663), base (8453), hyperevm (999) or bnb (56). A chain answers once it is open (GET /api/v1/{chain}/status)."
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/{chain}/images/{token}/{cid}": {
      "get": {
        "summary": "A launch's moderated logo or banner",
        "operationId": "getImage",
        "parameters": [
          {
            "name": "chain",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "ink",
                "robinhood",
                "base",
                "hyperevm",
                "bnb"
              ]
            },
            "description": "ink (57073), robinhood (4663), base (8453), hyperevm (999) or bnb (56). A chain answers once it is open (GET /api/v1/{chain}/status)."
          },
          {
            "name": "token",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "description": "An address, lower case 0x hex.",
              "pattern": "^0x[0-9a-f]{40}$"
            }
          },
          {
            "name": "cid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "description": "Raw CIDv1 (b…)."
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The image"
          },
          "402": {
            "description": "Over the budget where x402 is enabled: the terms (x402 version 2, USDC on Base) in the PAYMENT-REQUIRED header (base64 JSON) and the body. Send the request again with PAYMENT-SIGNATURE; it is settled only when the answer succeeds (PAYMENT-RESPONSE).",
            "headers": {
              "PAYMENT-REQUIRED": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "421": {
            "description": "Another chain: its API origin is in `origin`",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Over the tier's budget (Retry-After)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/{chain}/metadata": {
      "post": {
        "summary": "Point of upload: moderated, drawn and pinned token or profile metadata",
        "operationId": "uploadMetadata",
        "parameters": [
          {
            "name": "chain",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "ink",
                "robinhood",
                "base",
                "hyperevm",
                "bnb"
              ]
            },
            "description": "ink (57073), robinhood (4663), base (8453), hyperevm (999) or bnb (56). A chain answers once it is open (GET /api/v1/{chain}/status)."
          }
        ],
        "description": "JSON body; images as data URLs or https URLs. Token: name, symbol, description, links, image, banner, withCollection. Profile (kind: profile): description, banner, links. Answers the URI to pass on chain. A token upload no creation uses is unpinned after 24 hours.",
        "responses": {
          "200": {
            "description": "The upload"
          },
          "400": {
            "description": "METADATA_INVALID, METADATA_IMAGE_INVALID, METADATA_IMAGE_URL"
          },
          "422": {
            "description": "METADATA_CONTENT_REVIEW"
          },
          "429": {
            "description": "METADATA_LIMIT"
          },
          "503": {
            "description": "METADATA_UNAVAILABLE"
          }
        }
      }
    },
    "/api/v1/{chain}/create-transaction": {
      "post": {
        "summary": "The factory call of a new launch, ready to sign",
        "operationId": "createTransaction",
        "parameters": [
          {
            "name": "chain",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "ink",
                "robinhood",
                "base",
                "hyperevm",
                "bnb"
              ]
            },
            "description": "ink (57073), robinhood (4663), base (8453), hyperevm (999) or bnb (56). A chain answers once it is open (GET /api/v1/{chain}/status)."
          }
        ],
        "description": "Answers an approval first for an ERC-20 pair whose allowance is short (sign it, then ask again with the same salt). Check that `to` is the official factory before signing.",
        "responses": {
          "200": {
            "description": "The call"
          },
          "400": {
            "description": "CREATE_INVALID"
          },
          "409": {
            "description": "CREATE_DISABLED, CREATE_QUOTE_DISABLED, CREATE_ARTWORK_AUTOMATIC_DISABLED"
          },
          "422": {
            "description": "CREATE_SIMULATION"
          },
          "429": {
            "description": "CREATE_LIMIT"
          },
          "503": {
            "description": "CREATE_UNAVAILABLE"
          }
        }
      }
    }
  }
}
