{
  "openapi": "3.1.0",
  "info": {
    "title": "NEAR Terminal API",
    "version": "1.0.0",
    "description": "Realtime market data for every token on NEAR — trades, candles, holders, traders, new deploys from every launchpad, trending, wallets and copy-trade leaderboards — plus swap quotes that return ready-to-sign transactions.",
    "contact": {
      "name": "NEAR Terminal",
      "url": "https://nearterminal.tech",
      "email": "team@nearterminal.tech"
    }
  },
  "servers": [
    {
      "url": "https://api.nearterminal.tech",
      "description": "Production"
    }
  ],
  "tags": [
    {
      "name": "Status"
    },
    {
      "name": "Tokens"
    },
    {
      "name": "Search"
    },
    {
      "name": "Launchpads"
    },
    {
      "name": "Wallets"
    },
    {
      "name": "Copy trading"
    },
    {
      "name": "Trading"
    },
    {
      "name": "Streaming"
    }
  ],
  "paths": {
    "/v1/status": {
      "get": {
        "tags": [
          "Status"
        ],
        "summary": "API and chain status",
        "description": "The block the indexer has reached, how many tokens and trades it holds, and the NEAR price the API uses for USD values. Use it as a health check: if `last_block_at` is more than a minute old, data is behind.",
        "operationId": "api_and_chain_status",
        "parameters": [],
        "security": [
          {
            "ApiKey": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "api_version": "1.0.0",
                    "chain": "near-mainnet",
                    "block_height": 217997068,
                    "indexed_tokens": 5016,
                    "indexed_trades": 345617,
                    "near_usd": 5.216268,
                    "near_change_24h_pct": 4.654,
                    "stats_updated_at": "2026-10-01T01:57:57.298Z",
                    "last_block_at": "2026-10-01T01:58:08.030Z"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          },
          "429": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          }
        },
        "x-sample-call": "/v1/status"
      }
    },
    "/v1/tokens": {
      "get": {
        "tags": [
          "Tokens"
        ],
        "summary": "List tokens",
        "description": "Tokens ranked the way the NEAR Terminal trenches rank them. `volume`, `gainers` and the `*_window` fields use the `window` you pass; `market_cap` and `new` ignore it.",
        "operationId": "list_tokens",
        "parameters": [
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "volume",
                "market_cap",
                "gainers",
                "new"
              ],
              "default": "volume"
            },
            "description": "Ranking: `volume` (NEAR traded in the window), `market_cap`, `gainers` (price change in the window), `new` (newest first)."
          },
          {
            "name": "window",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "5m",
                "30m",
                "1h",
                "6h",
                "12h",
                "24h"
              ],
              "default": "24h"
            },
            "description": "Time window for `volume` and `gainers`."
          },
          {
            "name": "launchpad",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "Only tokens from this launchpad (an `id` from `GET /v1/launchpads`, e.g. `nearlytrade`)."
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 50
            },
            "description": "How many items to return (1–100)."
          }
        ],
        "security": [
          {
            "ApiKey": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "id": "token.rhealab.near",
                      "symbol": "RHEA",
                      "name": "Rhea",
                      "launchpad": null,
                      "category": "project",
                      "icon_url": "https://api.nearterminal.tech/v1/tokens/token.rhealab.near/icon",
                      "created_at": "2025-05-06T11:51:48.333Z",
                      "first_seen_at": "2026-09-29T00:41:16.673Z",
                      "price_usd": 0.10268571475442774,
                      "price_near": 0.019685666985367264,
                      "market_cap_usd": 102685714.75436418,
                      "liquidity_near": null,
                      "holders": 1144,
                      "change_pct": {
                        "5m": 0,
                        "1h": -0.41322949744305726,
                        "24h": -0.20765277901597656
                      },
                      "volume_24h_near": 226858.0002149878,
                      "last_trade_at": "2026-10-01T01:55:42.994Z",
                      "volume_window_near": 226858.0002149878,
                      "change_window_pct": -0.20765277901597656,
                      "buys_window": 1878,
                      "sells_window": 1588,
                      "url": "https://nearterminal.tech/token/token.rhealab.near"
                    },
                    {
                      "id": "hoot-8ecf65.launchpad.justhoot.near",
                      "symbol": "HOOT",
                      "name": "Hoot Test 4 (DO NOT SNIPE)",
                      "launchpad": "justhoot",
                      "category": "meme",
                      "icon_url": "https://api.nearterminal.tech/v1/tokens/hoot-8ecf65.launchpad.justhoot.near/icon",
                      "created_at": "2026-09-30T12:52:38.770Z",
                      "first_seen_at": "2026-09-30T12:52:41.434Z",
                      "price_usd": 0.0009955900684550736,
                      "price_near": 0.00019086252248831415,
                      "market_cap_usd": 880765.8277170236,
                      "liquidity_near": null,
                      "holders": 571,
                      "change_pct": {
                        "5m": null,
                        "1h": -12.95933271267411,
                        "24h": 9272.06810806857
                      },
                      "volume_24h_near": 171579.71592935757,
                      "last_trade_at": "2026-10-01T01:51:12.347Z",
                      "volume_window_near": 171579.71592935757,
                      "change_window_pct": 9272.06810806857,
                      "buys_window": 1929,
                      "sells_window": 1114,
                      "url": "https://nearterminal.tech/token/hoot-8ecf65.launchpad.justhoot.near"
                    }
                  ],
                  "meta": {
                    "sort": "volume",
                    "window": "24h",
                    "launchpad": null,
                    "count": 2
                  }
                }
              }
            }
          },
          "400": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          },
          "429": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          }
        },
        "x-sample-call": "/v1/tokens?sort=volume&window=24h&limit=2"
      }
    },
    "/v1/tokens/new": {
      "get": {
        "tags": [
          "Tokens"
        ],
        "summary": "New deploys (all launchpads)",
        "description": "Every new token the indexer has seen, newest first — from every launchpad on NEAR (nearly.trade, Cooking Labs, Just Hoot, Shore Markets, …) and plain contract deploys. Filter to one launchpad with `launchpad`. For a push feed instead of polling, subscribe to `token.created` on `/v1/stream`.",
        "operationId": "new_deploys_all_launchpads",
        "parameters": [
          {
            "name": "launchpad",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "Only tokens from this launchpad (an `id` from `GET /v1/launchpads`, e.g. `nearlytrade`)."
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 200,
              "default": 50
            },
            "description": "How many items to return (1–200)."
          }
        ],
        "security": [
          {
            "ApiKey": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "id": "non-2.nearlytrade.near",
                      "symbol": "NON",
                      "name": "NearbyOnNear",
                      "launchpad": "nearlytrade",
                      "category": "meme",
                      "icon_url": "https://api.nearterminal.tech/v1/tokens/non-2.nearlytrade.near/icon",
                      "created_at": "2026-10-01T01:54:12.251Z",
                      "first_seen_at": "2026-10-01T01:54:14.590Z",
                      "price_usd": 0.000005390877047055292,
                      "price_near": 0.0000010334739409584193,
                      "market_cap_usd": 5390.877047055293,
                      "liquidity_near": null,
                      "holders": 4,
                      "change_pct": {
                        "5m": 0,
                        "1h": 0,
                        "24h": 0
                      },
                      "volume_24h_near": 3.01,
                      "last_trade_at": "2026-10-01T01:54:24.666Z",
                      "creator": "4ea681c0ed38f02cd0f8648e13065164698c9341068cdc4b4f44faefebe2dfd3",
                      "url": "https://nearterminal.tech/token/non-2.nearlytrade.near"
                    },
                    {
                      "id": "nwoj.nearlytrade.near",
                      "symbol": "NWOJ",
                      "name": "NearWoj",
                      "launchpad": "nearlytrade",
                      "category": "meme",
                      "icon_url": "https://api.nearterminal.tech/v1/tokens/nwoj.nearlytrade.near/icon",
                      "created_at": "2026-10-01T01:43:12.509Z",
                      "first_seen_at": "2026-10-01T01:43:15.473Z",
                      "price_usd": 0.0000054215685275725525,
                      "price_near": 0.0000010393577415064855,
                      "market_cap_usd": 5421.568527572553,
                      "liquidity_near": null,
                      "holders": 3,
                      "change_pct": {
                        "5m": 0,
                        "1h": 0.37701423996943095,
                        "24h": 0.37701423996943095
                      },
                      "volume_24h_near": 27.30942661748815,
                      "last_trade_at": "2026-10-01T01:53:31.902Z",
                      "creator": "4ea681c0ed38f02cd0f8648e13065164698c9341068cdc4b4f44faefebe2dfd3",
                      "url": "https://nearterminal.tech/token/nwoj.nearlytrade.near"
                    }
                  ],
                  "meta": {
                    "launchpad": null,
                    "count": 2
                  }
                }
              }
            }
          },
          "400": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          },
          "429": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          }
        },
        "x-sample-call": "/v1/tokens/new?limit=2"
      }
    },
    "/v1/trending": {
      "get": {
        "tags": [
          "Tokens"
        ],
        "summary": "Trending tokens",
        "description": "The NEAR Terminal trending board, in order. The ranking blends recent volume, transaction count, search interest and community sentiment; only the order is published, not the score. To be told when a token enters the top 15 or takes #1, subscribe to `trending` on `/v1/stream`.",
        "operationId": "trending_tokens",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 30
            },
            "description": "How many items to return (1–100)."
          }
        ],
        "security": [
          {
            "ApiKey": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "rank": 1,
                      "id": "nomo.nearlytrade.near",
                      "symbol": "NOMO",
                      "name": "NOMO",
                      "launchpad": "nearlytrade",
                      "category": "meme",
                      "icon_url": "https://api.nearterminal.tech/v1/tokens/nomo.nearlytrade.near/icon",
                      "created_at": "2026-09-29T23:00:23.750Z",
                      "first_seen_at": "2026-09-29T23:00:26.752Z",
                      "price_usd": 0.0003000218662277772,
                      "price_near": 0.0000575165743454472,
                      "market_cap_usd": 300021.8662277772,
                      "liquidity_near": null,
                      "holders": 237,
                      "change_pct": {
                        "5m": -1.8124328841922388,
                        "1h": -5.387861561667517,
                        "24h": 69.64548362026102
                      },
                      "volume_24h_near": 27687.85943271465,
                      "last_trade_at": "2026-10-01T01:56:04.998Z",
                      "url": "https://nearterminal.tech/token/nomo.nearlytrade.near"
                    },
                    {
                      "rank": 2,
                      "id": "neart-2.nearlytrade.near",
                      "symbol": "NEART",
                      "name": "Near Terminal",
                      "launchpad": "nearlytrade",
                      "category": "meme",
                      "icon_url": "https://api.nearterminal.tech/v1/tokens/neart-2.nearlytrade.near/icon",
                      "created_at": "2026-10-01T00:49:05.774Z",
                      "first_seen_at": "2026-10-01T00:49:08.773Z",
                      "price_usd": 0.000017253516402810215,
                      "price_near": 0.000003307636111260045,
                      "market_cap_usd": 17253.516402810215,
                      "liquidity_near": null,
                      "holders": 67,
                      "change_pct": {
                        "5m": -6.619054745163666,
                        "1h": 33.32816812641912,
                        "24h": 217.90319078987852
                      },
                      "volume_24h_near": 3444.8829201573994,
                      "last_trade_at": "2026-10-01T01:57:06.627Z",
                      "url": "https://nearterminal.tech/token/neart-2.nearlytrade.near"
                    }
                  ],
                  "meta": {
                    "count": 2
                  }
                }
              }
            }
          },
          "400": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          },
          "429": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          }
        },
        "x-sample-call": "/v1/trending?limit=2"
      }
    },
    "/v1/tokens/mooners": {
      "get": {
        "tags": [
          "Tokens"
        ],
        "summary": "Mooners",
        "description": "Tokens that have multiplied since launch (at least the site's mooner threshold) and still have a real market — liquidity, holders and recent volume — behind them. `multiple_since_launch` is the current market cap over the market cap at launch.",
        "operationId": "mooners",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 50
            },
            "description": "How many items to return (1–100)."
          }
        ],
        "security": [
          {
            "ApiKey": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "id": "nearly-993927.nearlytrade.near",
                      "symbol": "NEARLY",
                      "name": "NEARLY",
                      "launchpad": "nearlytrade",
                      "category": "meme",
                      "icon_url": "https://api.nearterminal.tech/v1/tokens/nearly-993927.nearlytrade.near/icon",
                      "created_at": "2026-09-22T00:36:42.372Z",
                      "first_seen_at": "2026-09-29T00:40:39.716Z",
                      "price_usd": 0.004609056027779512,
                      "price_near": 0.0008835926428204055,
                      "market_cap_usd": 4395643.0336520355,
                      "liquidity_near": null,
                      "holders": 1200,
                      "change_pct": {
                        "5m": 1.5849558718756596,
                        "1h": -0.9593865213010422,
                        "24h": 32.706581725290526
                      },
                      "volume_24h_near": 150041.95360449815,
                      "last_trade_at": "2026-10-01T01:56:13.158Z",
                      "multiple_since_launch": 795.2784553519537,
                      "url": "https://nearterminal.tech/token/nearly-993927.nearlytrade.near"
                    },
                    {
                      "id": "hoot-8ecf65.launchpad.justhoot.near",
                      "symbol": "HOOT",
                      "name": "Hoot Test 4 (DO NOT SNIPE)",
                      "launchpad": "justhoot",
                      "category": "meme",
                      "icon_url": "https://api.nearterminal.tech/v1/tokens/hoot-8ecf65.launchpad.justhoot.near/icon",
                      "created_at": "2026-09-30T12:52:38.770Z",
                      "first_seen_at": "2026-09-30T12:52:41.434Z",
                      "price_usd": 0.0009955900684550736,
                      "price_near": 0.00019086252248831415,
                      "market_cap_usd": 880765.8277170236,
                      "liquidity_near": null,
                      "holders": 571,
                      "change_pct": {
                        "5m": null,
                        "1h": -12.95933271267411,
                        "24h": 9272.06810806857
                      },
                      "volume_24h_near": 171579.71592935757,
                      "last_trade_at": "2026-10-01T01:51:12.347Z",
                      "multiple_since_launch": 81.1099575339652,
                      "url": "https://nearterminal.tech/token/hoot-8ecf65.launchpad.justhoot.near"
                    }
                  ],
                  "meta": {
                    "count": 2
                  }
                }
              }
            }
          },
          "400": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          },
          "429": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          }
        },
        "x-sample-call": "/v1/tokens/mooners?limit=2"
      }
    },
    "/v1/tokens/{token_id}": {
      "get": {
        "tags": [
          "Tokens"
        ],
        "summary": "Token details",
        "description": "Everything the token page shows: price, market cap, liquidity, changes and volume per window, buys/sells, all-time high, measured buy/sell tax, pool flags and risk signals (top-10 share, dev holdings, snipers, bot volume, trap pools). Socials fall back to the token's paid profile where its own metadata has none.",
        "operationId": "token_details",
        "parameters": [
          {
            "name": "token_id",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "description": "The token's contract account, e.g. `neart-2.nearlytrade.near`.",
            "required": true,
            "example": "neart-2.nearlytrade.near"
          }
        ],
        "security": [
          {
            "ApiKey": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "id": "neart-2.nearlytrade.near",
                    "symbol": "NEART",
                    "name": "Near Terminal",
                    "launchpad": "nearlytrade",
                    "category": null,
                    "icon_url": "https://api.nearterminal.tech/v1/tokens/neart-2.nearlytrade.near/icon",
                    "created_at": "2026-10-01T00:49:05.774Z",
                    "first_seen_at": "2026-10-01T00:49:08.773Z",
                    "price_usd": 0.000017253516402810215,
                    "price_near": 0.000003307636111260045,
                    "market_cap_usd": 17253.516402810215,
                    "liquidity_near": 2828.366113850528,
                    "holders": 67,
                    "change_pct": {
                      "5m": -6.619054745163666,
                      "30m": 25.444300024849586,
                      "1h": 33.32816812641912,
                      "6h": 217.90319078987852,
                      "12h": 217.90319078987852,
                      "24h": 217.90319078987852
                    },
                    "volume_24h_near": 3444.8829201573994,
                    "last_trade_at": null,
                    "url": "https://nearterminal.tech/token/neart-2.nearlytrade.near",
                    "decimals": 18,
                    "total_supply": "1000000000000000000000000000",
                    "creator": "19efc05739d556b7aac07c8103363a4e9d4afb52c1764027ea934622f7ad376c",
                    "description": "Copy Trade & AFK Automation  on Near Chain.",
                    "links": {
                      "website": "https://nearterminal.tech/",
                      "twitter": "https://x.com/usenearterminal",
                      "telegram": null
                    },
                    "volume_near": {
                      "5m": 75.03886471213704,
                      "1h": 1911.2881554047042,
                      "6h": 3444.8829201573994,
                      "24h": 3444.8829201573994
                    },
                    "txns": {
                      "5m": {
                        "buys": 2,
                        "sells": 6
                      },
                      "1h": {
                        "buys": 87,
                        "sells": 67
                      },
                      "24h": {
                        "buys": 180,
                        "sells": 93
                      }
                    },
                    "ath": {
                      "price_usd": 0.000018814277166232802,
                      "market_cap_usd": 18814.2771662328,
                      "at": "2026-10-01T01:54:14.441Z"
                    },
                    "tax": {
                      "buy_bps": 100,
                      "sell_bps": 100
                    },
                    "pools": {
                      "has_amm": false,
                      "has_clmm": true,
                      "trap_pools": 0,
                      "max_fee_bps": 100
                    },
                    "risk": {
                      "top10_pct": 18.685548948658866,
                      "dev_holds_pct": 1.2408617522575387,
                      "snipers": 4,
                      "sniper_pct": 2.2890246063673847,
                      "bot_volume_pct": 0,
                      "fresh_buyers": 18,
                      "burned_pct": 0
                    },
                    "unique_traders_24h": 89,
                    "trending_rank": 2,
                    "has_profile": true,
                    "banner_url": "https://api.nearterminal.tech/v1/tokens/neart-2.nearlytrade.near/banner",
                    "viewers_now": 3
                  }
                }
              }
            }
          },
          "400": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          },
          "429": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          }
        },
        "x-sample-call": "/v1/tokens/neart-2.nearlytrade.near"
      }
    },
    "/v1/tokens/{token_id}/trades": {
      "get": {
        "tags": [
          "Tokens"
        ],
        "summary": "Token trades",
        "description": "The token's latest trades, newest first, from every DEX and router (Rhea v1/v2, DCL, launchpad curves, aggregators). Arbitrage bots trading balances held inside a DEX are hidden unless `include_bots=true`.",
        "operationId": "token_trades",
        "parameters": [
          {
            "name": "token_id",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "description": "The token's contract account, e.g. `neart-2.nearlytrade.near`.",
            "required": true,
            "example": "neart-2.nearlytrade.near"
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 500,
              "default": 50
            },
            "description": "How many items to return (1–500)."
          },
          {
            "name": "include_bots",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "description": "Include arbitrage-bot trades."
          }
        ],
        "security": [
          {
            "ApiKey": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "tx_hash": "E4etG6V24eSN2Tt1VKkyCMmVDohVmXUByRYiZgJXmrwM",
                      "block_height": 217996967,
                      "timestamp": "2026-10-01T01:57:06.627Z",
                      "token": "neart-2.nearlytrade.near",
                      "side": "sell",
                      "trader": "sharpdegen.near",
                      "source": "wallet",
                      "amount_raw": "2509641888272021134031715",
                      "amount_near": 8.300982135979385,
                      "amount_usd": 43.30014748448092,
                      "price_usd": 0.000017253516402810215,
                      "price_near": 0.000003307636111260045,
                      "market_cap_usd": 17253.516402810215,
                      "venues": [
                        "rhea_dcl"
                      ]
                    },
                    {
                      "tx_hash": "Ad6D6ACGRVyA23xZyW5envk95EFUzKkpuPbdQMBmxFns",
                      "block_height": 217996959,
                      "timestamp": "2026-10-01T01:57:01.875Z",
                      "token": "neart-2.nearlytrade.near",
                      "side": "sell",
                      "trader": "lambadaa.near",
                      "source": "wallet",
                      "amount_raw": "7246500565534935134132237",
                      "amount_near": 24.394221357279328,
                      "amount_usd": 127.24679625089273,
                      "price_usd": 0.000017559757996306648,
                      "price_near": 0.0000033663450567161518,
                      "market_cap_usd": 17559.75799630665,
                      "venues": [
                        "rhea_dcl"
                      ]
                    }
                  ],
                  "meta": {
                    "token": "neart-2.nearlytrade.near",
                    "count": 2
                  }
                }
              }
            }
          },
          "400": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          },
          "429": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          }
        },
        "x-sample-call": "/v1/tokens/neart-2.nearlytrade.near/trades?limit=2"
      }
    },
    "/v1/tokens/{token_id}/candles": {
      "get": {
        "tags": [
          "Tokens"
        ],
        "summary": "Candles (OHLCV)",
        "description": "Price or market-cap candles for charts. Empty intervals carry the previous close forward, so a quiet token draws flat, not as gaps. `volume_near` is NEAR traded in the interval.",
        "operationId": "candles_ohlcv",
        "parameters": [
          {
            "name": "token_id",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "description": "The token's contract account, e.g. `neart-2.nearlytrade.near`.",
            "required": true,
            "example": "neart-2.nearlytrade.near"
          },
          {
            "name": "interval",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "1s",
                "5s",
                "15s",
                "30s",
                "1m",
                "3m",
                "5m",
                "15m",
                "30m",
                "1h",
                "2h",
                "4h",
                "8h",
                "12h",
                "1d",
                "3d",
                "1w",
                "1M"
              ],
              "default": "5m"
            },
            "description": "Candle size."
          },
          {
            "name": "unit",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "price",
                "market_cap"
              ],
              "default": "price"
            },
            "description": "Candle values: USD price, or USD market cap (falls back to price when the supply is unknown)."
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 10,
              "maximum": 1000,
              "default": 300
            },
            "description": "How many candles (10–1000)."
          }
        ],
        "security": [
          {
            "ApiKey": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "time": "2026-10-01T00:00:00.000Z",
                      "open": 0.000005497934185238557,
                      "high": 0.000014014923448783148,
                      "low": 0.000005497934185238557,
                      "close": 0.000014014923448783148,
                      "volume_near": 1640.270366849951,
                      "trades": 126
                    },
                    {
                      "time": "2026-10-01T01:00:00.000Z",
                      "open": 0.000014014923448783148,
                      "high": 0.000018814277166232802,
                      "low": 0.00001198000676980074,
                      "close": 0.000017253516402810215,
                      "volume_near": 1804.6125533074478,
                      "trades": 147
                    }
                  ],
                  "meta": {
                    "token": "neart-2.nearlytrade.near",
                    "interval": "1h",
                    "unit": "price_usd",
                    "count": 2
                  }
                }
              }
            }
          },
          "400": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          },
          "429": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          }
        },
        "x-sample-call": "/v1/tokens/neart-2.nearlytrade.near/candles?interval=1h&limit=10"
      }
    },
    "/v1/tokens/{token_id}/holders": {
      "get": {
        "tags": [
          "Tokens"
        ],
        "summary": "Holders",
        "description": "Top holders by balance with their cost basis and PnL in this token. `kind` tells wallets from pools and contracts.",
        "operationId": "holders",
        "parameters": [
          {
            "name": "token_id",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "description": "The token's contract account, e.g. `neart-2.nearlytrade.near`.",
            "required": true,
            "example": "neart-2.nearlytrade.near"
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 500,
              "default": 100
            },
            "description": "How many items to return (1–500)."
          }
        ],
        "security": [
          {
            "ApiKey": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "rank": 1,
                      "wallet": "dclv2.ref-labs.near",
                      "tags": [],
                      "buys": 0,
                      "sells": 0,
                      "bought_near": 0,
                      "sold_near": 0,
                      "bought_usd": null,
                      "sold_usd": null,
                      "avg_buy_market_cap_usd": null,
                      "avg_sell_market_cap_usd": null,
                      "realized_near": 0,
                      "unrealized_near": 0,
                      "pnl_usd": null,
                      "pnl_pct": null,
                      "balance_raw": "557287791345723487783040727",
                      "remaining_usd": 9615.174049069317,
                      "first_trade_at": null,
                      "last_trade_at": null,
                      "supply_pct": 55.72877913457235,
                      "kind": "pool"
                    },
                    {
                      "rank": 2,
                      "wallet": "69654710bf67f188c670fb3de7cb872cb19a13f1e526d6e0da6b042283758c79",
                      "tags": [],
                      "buys": 3,
                      "sells": 0,
                      "bought_near": 69.3,
                      "sold_near": 0,
                      "bought_usd": 365.54794649999997,
                      "sold_usd": null,
                      "avg_buy_market_cap_usd": 13222.559164633025,
                      "avg_sell_market_cap_usd": null,
                      "realized_near": 0,
                      "unrealized_near": 21.92075468279842,
                      "pnl_usd": 114.34453118773156,
                      "pnl_pct": 31.63168063895876,
                      "balance_raw": "27369321061763147286821330",
                      "remaining_usd": 472.21702987290956,
                      "first_trade_at": "2026-10-01T00:58:44.247Z",
                      "last_trade_at": "2026-10-01T01:09:30.330Z",
                      "supply_pct": 2.7369321061763148,
                      "kind": "wallet"
                    }
                  ],
                  "meta": {
                    "token": "neart-2.nearlytrade.near",
                    "count": 2
                  }
                }
              }
            }
          },
          "400": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          },
          "429": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          }
        },
        "x-sample-call": "/v1/tokens/neart-2.nearlytrade.near/holders?limit=2"
      }
    },
    "/v1/tokens/{token_id}/traders": {
      "get": {
        "tags": [
          "Tokens"
        ],
        "summary": "Top traders",
        "description": "Everyone who traded the token, with buys, sells, average entry and exit market cap, realized and unrealized PnL.",
        "operationId": "top_traders",
        "parameters": [
          {
            "name": "token_id",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "description": "The token's contract account, e.g. `neart-2.nearlytrade.near`.",
            "required": true,
            "example": "neart-2.nearlytrade.near"
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 500,
              "default": 100
            },
            "description": "How many items to return (1–500)."
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "pnl",
                "realized",
                "bought",
                "sold",
                "txns",
                "remaining"
              ],
              "default": "pnl"
            },
            "description": "Ranking."
          }
        ],
        "security": [
          {
            "ApiKey": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "rank": 1,
                      "wallet": "7e4213671de0c86c89699517f354e02e817fac18ecedc9615dc09f72608672c0",
                      "tags": [],
                      "buys": 1,
                      "sells": 0,
                      "bought_near": 20.000000000000004,
                      "sold_near": 0,
                      "bought_usd": 105.68338000000001,
                      "sold_usd": null,
                      "avg_buy_market_cap_usd": 5657.9973732913595,
                      "avg_sell_market_cap_usd": null,
                      "realized_near": 0,
                      "unrealized_near": 41.36413981405304,
                      "pnl_usd": 215.76643885957083,
                      "pnl_pct": 206.82069907026514,
                      "balance_raw": "18491798298438741258997967",
                      "remaining_usd": 319.04854525957086,
                      "first_trade_at": "2026-10-01T00:49:13.983Z",
                      "last_trade_at": "2026-10-01T00:49:13.983Z"
                    },
                    {
                      "rank": 2,
                      "wallet": "d45a2ac2ee729032224c3878a896fb94e05f45ae5a809fd48f33cbbb02b35fa6",
                      "tags": [],
                      "buys": 2,
                      "sells": 8,
                      "bought_near": 80,
                      "sold_near": 116.05957107453966,
                      "bought_usd": 422.73379972000004,
                      "sold_usd": 612.5577737485775,
                      "avg_buy_market_cap_usd": 9152.0080529614,
                      "avg_sell_market_cap_usd": 13530.881381978457,
                      "realized_near": 37.6515708406691,
                      "unrealized_near": 0,
                      "pnl_usd": 196.40068412591535,
                      "pnl_pct": 47.06446355083638,
                      "balance_raw": "0",
                      "remaining_usd": 0,
                      "first_trade_at": "2026-10-01T00:49:52.988Z",
                      "last_trade_at": "2026-10-01T01:09:45.035Z"
                    }
                  ],
                  "meta": {
                    "token": "neart-2.nearlytrade.near",
                    "sort": "pnl",
                    "count": 2
                  }
                }
              }
            }
          },
          "400": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          },
          "429": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          }
        },
        "x-sample-call": "/v1/tokens/neart-2.nearlytrade.near/traders?limit=2"
      }
    },
    "/v1/tokens/{token_id}/early-buyers": {
      "get": {
        "tags": [
          "Tokens"
        ],
        "summary": "Early buyers",
        "description": "The first buyers after launch, in order, with what they paid, the market cap they entered at, and whether they still hold, sold part or sold all. `moved_out` flags tokens sent to other wallets instead of sold.",
        "operationId": "early_buyers",
        "parameters": [
          {
            "name": "token_id",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "description": "The token's contract account, e.g. `neart-2.nearlytrade.near`.",
            "required": true,
            "example": "neart-2.nearlytrade.near"
          }
        ],
        "security": [
          {
            "ApiKey": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "rank": 1,
                      "wallet": "7e4213671de0c86c89699517f354e02e817fac18ecedc9615dc09f72608672c0",
                      "tags": [],
                      "buys": 1,
                      "sells": 0,
                      "bought_near": 20.000000000000004,
                      "sold_near": 0,
                      "bought_usd": 105.68338000000001,
                      "sold_usd": null,
                      "avg_buy_market_cap_usd": 5657.9973732913595,
                      "avg_sell_market_cap_usd": null,
                      "realized_near": 0,
                      "unrealized_near": 41.36413981405304,
                      "pnl_usd": 215.76643885957083,
                      "pnl_pct": 206.82069907026514,
                      "balance_raw": "18491798298438741258997967",
                      "remaining_usd": 319.04854525957086,
                      "first_trade_at": "2026-10-01T00:49:13.983Z",
                      "last_trade_at": "2026-10-01T00:49:13.983Z",
                      "is_dev": false,
                      "entry_market_cap_usd": 5657.9973732913595,
                      "first_buy_near": 20.000000000000004,
                      "status": "holding",
                      "moved_out": true
                    },
                    {
                      "rank": 2,
                      "wallet": "016268fda647ad144903475a1ff5977e9faacd8d1adcf36143782ae7325ef514",
                      "tags": [],
                      "buys": 1,
                      "sells": 0,
                      "bought_near": 15,
                      "sold_near": 0,
                      "bought_usd": 79.262535,
                      "sold_usd": null,
                      "avg_buy_market_cap_usd": 5848.327843629127,
                      "avg_sell_market_cap_usd": null,
                      "realized_near": 0,
                      "unrealized_near": 0,
                      "pnl_usd": 0,
                      "pnl_pct": 0,
                      "balance_raw": "0",
                      "remaining_usd": 0,
                      "first_trade_at": "2026-10-01T00:49:13.983Z",
                      "last_trade_at": "2026-10-01T00:49:13.983Z",
                      "is_dev": false,
                      "entry_market_cap_usd": 5848.327843629127,
                      "first_buy_near": 15,
                      "status": "sold all",
                      "moved_out": true
                    }
                  ],
                  "meta": {
                    "token": "neart-2.nearlytrade.near",
                    "launched_at": "2026-10-01T00:49:05.774Z",
                    "complete": true,
                    "counts": {
                      "holding": 35,
                      "sold all": 27,
                      "sold part": 8
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          },
          "429": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          }
        },
        "x-sample-call": "/v1/tokens/neart-2.nearlytrade.near/early-buyers"
      }
    },
    "/v1/tokens/{token_id}/dev": {
      "get": {
        "tags": [
          "Tokens"
        ],
        "summary": "Dev activity",
        "description": "The creator's buys, sells and transfers of their own token.",
        "operationId": "dev_activity",
        "parameters": [
          {
            "name": "token_id",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "description": "The token's contract account, e.g. `neart-2.nearlytrade.near`.",
            "required": true,
            "example": "neart-2.nearlytrade.near"
          }
        ],
        "security": [
          {
            "ApiKey": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "token": "neart-2.nearlytrade.near",
                    "dev": "19efc05739d556b7aac07c8103363a4e9d4afb52c1764027ea934622f7ad376c",
                    "actions": []
                  }
                }
              }
            }
          },
          "400": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          },
          "429": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          }
        },
        "x-sample-call": "/v1/tokens/neart-2.nearlytrade.near/dev"
      }
    },
    "/v1/tokens/{token_id}/tax": {
      "get": {
        "tags": [
          "Tokens"
        ],
        "summary": "Measured tax",
        "description": "Buy and sell tax measured from real trades (not read from the contract's claims), the pool fee, and how the token's fees are split.",
        "operationId": "measured_tax",
        "parameters": [
          {
            "name": "token_id",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "description": "The token's contract account, e.g. `neart-2.nearlytrade.near`.",
            "required": true,
            "example": "neart-2.nearlytrade.near"
          }
        ],
        "security": [
          {
            "ApiKey": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "token": "neart-2.nearlytrade.near",
                    "buy_tax_pct": 1,
                    "buy_samples": 118,
                    "sell_tax_pct": 0,
                    "sell_samples": 82,
                    "pool_fee_pct": 1,
                    "pool": "neart-2.nearlytrade.near|wrap.near|10000",
                    "fee_split": {
                      "creator": 70,
                      "protocol": 30
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          },
          "429": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          }
        },
        "x-sample-call": "/v1/tokens/neart-2.nearlytrade.near/tax"
      }
    },
    "/v1/tokens/{token_id}/icon": {
      "get": {
        "tags": [
          "Tokens"
        ],
        "summary": "Token icon",
        "description": "The token's logo as an image (`image/png`, `image/webp`, `image/svg+xml`…). 404 when the token has none. Every `icon_url` in the API points here.",
        "operationId": "token_icon",
        "parameters": [
          {
            "name": "token_id",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "description": "The token's contract account, e.g. `neart-2.nearlytrade.near`.",
            "required": true,
            "example": "neart-2.nearlytrade.near"
          }
        ],
        "security": [
          {
            "ApiKey": []
          }
        ],
        "responses": {
          "200": {
            "description": "The image",
            "content": {
              "image/*": {}
            }
          },
          "400": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          },
          "429": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          }
        },
        "x-sample-call": null
      }
    },
    "/v1/search": {
      "get": {
        "tags": [
          "Search"
        ],
        "summary": "Search",
        "description": "Tokens by symbol, name or contract, best match first.",
        "operationId": "search",
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 80
            },
            "description": "Search text.",
            "required": true,
            "example": "near"
          }
        ],
        "security": [
          {
            "ApiKey": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "tokens": [
                      {
                        "id": "neart-2.nearlytrade.near",
                        "symbol": "NEART",
                        "name": "Near Terminal",
                        "launchpad": "nearlytrade",
                        "category": "meme",
                        "icon_url": "https://api.nearterminal.tech/v1/tokens/neart-2.nearlytrade.near/icon",
                        "created_at": "2026-10-01T00:49:05.774Z",
                        "first_seen_at": "2026-10-01T00:49:08.773Z",
                        "price_usd": 0.000017253516402810215,
                        "price_near": null,
                        "market_cap_usd": 17253.516402810215,
                        "liquidity_near": 2828.366113850528,
                        "holders": 67,
                        "change_pct": {
                          "5m": null,
                          "1h": 33.32816812641912,
                          "24h": 217.90319078987852
                        },
                        "volume_24h_near": 3444.8829201573994,
                        "last_trade_at": "2026-10-01T01:57:06.627Z",
                        "match": 0,
                        "url": "https://nearterminal.tech/token/neart-2.nearlytrade.near"
                      },
                      {
                        "id": "nearty.nearlytrade.near",
                        "symbol": "NEARTY",
                        "name": "NEARTY",
                        "launchpad": "nearlytrade",
                        "category": "meme",
                        "icon_url": "https://api.nearterminal.tech/v1/tokens/nearty.nearlytrade.near/icon",
                        "created_at": "2026-09-27T23:20:21.842Z",
                        "first_seen_at": "2026-09-29T01:00:26.389Z",
                        "price_usd": 0.000012311695375616458,
                        "price_near": null,
                        "market_cap_usd": 12076.076826379256,
                        "liquidity_near": 2108.8368681887923,
                        "holders": 108,
                        "change_pct": {
                          "5m": null,
                          "1h": null,
                          "24h": 22.14225156046936
                        },
                        "volume_24h_near": 305.60200698594207,
                        "last_trade_at": "2026-10-01T00:46:15.607Z",
                        "match": 1,
                        "url": "https://nearterminal.tech/token/nearty.nearlytrade.near"
                      }
                    ],
                    "wallets": []
                  },
                  "meta": {
                    "q": "neart"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          },
          "429": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          }
        },
        "x-sample-call": "/v1/search?q=neart"
      }
    },
    "/v1/search/trending": {
      "get": {
        "tags": [
          "Search"
        ],
        "summary": "Top searches",
        "description": "The tokens people search for most on NEAR Terminal right now.",
        "operationId": "top_searches",
        "parameters": [],
        "security": [
          {
            "ApiKey": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "rank": 1,
                      "id": "nearlybot-4.nearlytrade.near",
                      "symbol": "NEARLYBOT",
                      "name": "NEARLYBOT",
                      "launchpad": "nearlytrade",
                      "category": "meme",
                      "icon_url": "https://api.nearterminal.tech/v1/tokens/nearlybot-4.nearlytrade.near/icon",
                      "created_at": "2026-09-30T13:58:40.542Z",
                      "first_seen_at": "2026-09-30T13:58:45.706Z",
                      "price_usd": 0.000008190946437493788,
                      "price_near": null,
                      "market_cap_usd": 8154.0114003798035,
                      "liquidity_near": 1532.7097903658284,
                      "holders": 83,
                      "change_pct": {
                        "5m": null,
                        "1h": 0,
                        "24h": 49.48485606900268
                      },
                      "volume_24h_near": 16251.237454506938,
                      "last_trade_at": "2026-10-01T01:09:51.736Z",
                      "url": "https://nearterminal.tech/token/nearlybot-4.nearlytrade.near"
                    },
                    {
                      "rank": 2,
                      "id": "nomo.nearlytrade.near",
                      "symbol": "NOMO",
                      "name": "NOMO",
                      "launchpad": "nearlytrade",
                      "category": "meme",
                      "icon_url": "https://api.nearterminal.tech/v1/tokens/nomo.nearlytrade.near/icon",
                      "created_at": "2026-09-29T23:00:23.750Z",
                      "first_seen_at": "2026-09-29T23:00:26.752Z",
                      "price_usd": 0.0003000218662277772,
                      "price_near": null,
                      "market_cap_usd": 300021.8662277772,
                      "liquidity_near": 14449.507757409914,
                      "holders": 237,
                      "change_pct": {
                        "5m": null,
                        "1h": -5.387861561667517,
                        "24h": 69.64548362026102
                      },
                      "volume_24h_near": 27687.85943271465,
                      "last_trade_at": "2026-10-01T01:56:04.998Z",
                      "url": "https://nearterminal.tech/token/nomo.nearlytrade.near"
                    }
                  ],
                  "meta": {
                    "window": "24h"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          },
          "429": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          }
        },
        "x-sample-call": "/v1/search/trending"
      }
    },
    "/v1/launchpads": {
      "get": {
        "tags": [
          "Launchpads"
        ],
        "summary": "Launchpads",
        "description": "Every launchpad the indexer recognises, with how many tokens it launched in total and in the last 24 hours. Use an `id` as the `launchpad` filter elsewhere.",
        "operationId": "launchpads",
        "parameters": [],
        "security": [
          {
            "ApiKey": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "id": "nearlytrade",
                      "name": "nearly.trade",
                      "tokens_total": 1982,
                      "tokens_24h": 320,
                      "icon_url": "https://api.nearterminal.tech/v1/tokens/nearly-993927.nearlytrade.near/icon"
                    },
                    {
                      "id": "tkn",
                      "name": "tkn.homes",
                      "tokens_total": 317,
                      "tokens_24h": 0,
                      "icon_url": null
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          },
          "429": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          }
        },
        "x-sample-call": "/v1/launchpads"
      }
    },
    "/v1/wallets/{wallet_id}": {
      "get": {
        "tags": [
          "Wallets"
        ],
        "summary": "Wallet summary",
        "description": "A wallet's trading profile: tokens traded, volume, PnL per window, win rate, average holding time, tags (whale, sniper, dev…) and how many NEAR Terminal users track it.",
        "operationId": "wallet_summary",
        "parameters": [
          {
            "name": "wallet_id",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "description": "A NEAR account: named (`alice.near`) or implicit (64 hex characters).",
            "required": true,
            "example": "buyitall.near"
          }
        ],
        "security": [
          {
            "ApiKey": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "wallet": "buyitall.near",
                    "tags": [
                      "whale"
                    ],
                    "tokens_traded": 51,
                    "trades": 253,
                    "volume_near": 12194.924084434602,
                    "pnl_near": {
                      "1d": 1423.445765237091,
                      "7d": 2281.453273510023,
                      "30d": 2281.453273510023
                    },
                    "unrealized_near": 72.41632693902542,
                    "win_rate_pct": 31.70731707317073,
                    "avg_hold_seconds": 24324.736142857142,
                    "tokens_launched": 0,
                    "bot_share_pct": 0,
                    "first_seen_at": "2026-09-28T17:27:20.155Z",
                    "last_trade_at": "2026-10-01T01:49:19.412Z",
                    "tracked_by": 1,
                    "stats_updated_at": "2026-10-01T01:57:07.208Z"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          },
          "429": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          }
        },
        "x-sample-call": "/v1/wallets/buyitall.near"
      }
    },
    "/v1/wallets/{wallet_id}/tokens": {
      "get": {
        "tags": [
          "Wallets"
        ],
        "summary": "Wallet tokens",
        "description": "Per token: what the wallet bought and sold (NEAR, USD, average market cap), tokens received or sent outside trades, realized and unrealized PnL, and what it still holds.",
        "operationId": "wallet_tokens",
        "parameters": [
          {
            "name": "wallet_id",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "description": "A NEAR account: named (`alice.near`) or implicit (64 hex characters).",
            "required": true,
            "example": "buyitall.near"
          }
        ],
        "security": [
          {
            "ApiKey": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "token": "trolear-2.nearlytrade.near",
                      "symbol": "TROLEAR",
                      "icon_url": "https://api.nearterminal.tech/v1/tokens/trolear-2.nearlytrade.near/icon",
                      "buys": 1,
                      "sells": 1,
                      "bought_near": 50,
                      "sold_near": 44.66569668707275,
                      "bought_usd": 264.72775,
                      "sold_usd": 233.64148014053205,
                      "avg_buy_market_cap_usd": 7518.395685117407,
                      "avg_sell_market_cap_usd": 6839.343062389485,
                      "realized_usd": -20.109139289467937,
                      "unrealized_usd": 0,
                      "pnl_usd": -20.109139289467937,
                      "pnl_pct": -7.596158426711192,
                      "balance": 0,
                      "balance_usd": 0,
                      "received": 0,
                      "sent": 0,
                      "first_activity_at": "2026-10-01T00:32:34.545Z",
                      "last_activity_at": "2026-10-01T01:49:19.412Z"
                    },
                    {
                      "token": "shore-4lzt.launch.shoremarkets.near",
                      "symbol": "SHORE",
                      "icon_url": "https://api.nearterminal.tech/v1/tokens/shore-4lzt.launch.shoremarkets.near/icon",
                      "buys": 19,
                      "sells": 23,
                      "bought_near": 1431,
                      "sold_near": 2001.2288204785073,
                      "bought_usd": 7005.135573000001,
                      "sold_usd": 9696.032603761676,
                      "avg_buy_market_cap_usd": 318644.0870374833,
                      "avg_sell_market_cap_usd": 441045.49079956964,
                      "realized_usd": 2697.4806658454927,
                      "unrealized_usd": 0,
                      "pnl_usd": 2697.4806658454927,
                      "pnl_pct": 38.50718715912412,
                      "balance": 0,
                      "balance_usd": 0,
                      "received": 0,
                      "sent": 0,
                      "first_activity_at": "2026-09-28T20:05:20.448Z",
                      "last_activity_at": "2026-10-01T00:33:01.497Z"
                    }
                  ],
                  "meta": {
                    "wallet": "buyitall.near",
                    "count": 64
                  }
                }
              }
            }
          },
          "400": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          },
          "429": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          }
        },
        "x-sample-call": "/v1/wallets/buyitall.near/tokens"
      }
    },
    "/v1/wallets/{wallet_id}/trades": {
      "get": {
        "tags": [
          "Wallets"
        ],
        "summary": "Wallet trades",
        "description": "The wallet's trades across all tokens, newest first, with PnL on each sell. Paginate with `cursor` = `meta.next_cursor` of the previous page (null on the last page).",
        "operationId": "wallet_trades",
        "parameters": [
          {
            "name": "wallet_id",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "description": "A NEAR account: named (`alice.near`) or implicit (64 hex characters).",
            "required": true,
            "example": "buyitall.near"
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 200,
              "default": 100
            },
            "description": "How many items to return (1–200)."
          },
          {
            "name": "cursor",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "`meta.next_cursor` from the previous page."
          }
        ],
        "security": [
          {
            "ApiKey": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "tx_hash": "NHzXEYeZLfqJJJ4ByPUGpFrstwNoRyyd3RxPnEW16NV",
                      "block_height": null,
                      "timestamp": "2026-10-01T01:49:19.412Z",
                      "token": "trolear-2.nearlytrade.near",
                      "side": "sell",
                      "trader": "buyitall.near",
                      "source": "wallet",
                      "amount_raw": "34161392111672182872906412",
                      "amount_near": 44.66569668707275,
                      "amount_usd": 233.64148014053205,
                      "price_usd": 0.000006839343062389485,
                      "price_near": null,
                      "market_cap_usd": 6839.343062389485,
                      "venues": null,
                      "symbol": "TROLEAR",
                      "pnl_usd": -20.109139289467937
                    },
                    {
                      "tx_hash": "Dn3zTJjc3PvSJrtNY5zHdcYUnWGfNNXA6WkTahHLxnBo",
                      "block_height": null,
                      "timestamp": "2026-10-01T00:33:01.497Z",
                      "token": "shore-4lzt.launch.shoremarkets.near",
                      "side": "sell",
                      "trader": "buyitall.near",
                      "source": "wallet",
                      "amount_raw": "1829386548437401950513835",
                      "amount_near": 196.2187049669711,
                      "amount_usd": 1038.8907254764017,
                      "price_usd": 0.0005678902178239946,
                      "price_near": null,
                      "market_cap_usd": 561435.1185216435,
                      "venues": null,
                      "symbol": "SHORE",
                      "pnl_usd": -20.02027452359831
                    }
                  ],
                  "meta": {
                    "wallet": "buyitall.near",
                    "count": 2,
                    "next_cursor": "2026-10-01T00:33:01.497Z"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          },
          "429": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          }
        },
        "x-sample-call": "/v1/wallets/buyitall.near/trades?limit=2"
      }
    },
    "/v1/wallets/{wallet_id}/tokens/{token_id}/history": {
      "get": {
        "tags": [
          "Wallets"
        ],
        "summary": "Wallet × token history",
        "description": "Every buy, sell, receive and send of one token by one wallet — the full story behind a position, airdrops included.",
        "operationId": "wallet_token_history",
        "parameters": [
          {
            "name": "wallet_id",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "description": "A NEAR account: named (`alice.near`) or implicit (64 hex characters).",
            "required": true,
            "example": "buyitall.near"
          },
          {
            "name": "token_id",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "description": "The token's contract account, e.g. `neart-2.nearlytrade.near`.",
            "required": true,
            "example": "neart-2.nearlytrade.near"
          }
        ],
        "security": [
          {
            "ApiKey": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "timestamp": "2026-10-01T01:30:08.748Z",
                      "tx_hash": "Dzwr3haW9zmY6vUMfzw9GVnEoo9bYokiMXDfPpaatDfT",
                      "kind": "received",
                      "amount": 480653.90846279304,
                      "amount_near": null,
                      "price_usd": null,
                      "market_cap_usd": null,
                      "counterparty": "nearlytrade.near"
                    },
                    {
                      "timestamp": "2026-10-01T01:19:33.642Z",
                      "tx_hash": "EP1XvfmRqBm8eucTHHm8QsHGyjEFe6be5g3GRuMzshxG",
                      "kind": "received",
                      "amount": 1044147.5483140071,
                      "amount_near": null,
                      "price_usd": null,
                      "market_cap_usd": null,
                      "counterparty": "nearlytrade.near"
                    }
                  ],
                  "meta": {
                    "wallet": "19efc05739d556b7aac07c8103363a4e9d4afb52c1764027ea934622f7ad376c",
                    "token": "neart-2.nearlytrade.near",
                    "count": 3
                  }
                }
              }
            }
          },
          "400": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          },
          "429": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          }
        },
        "x-sample-call": "/v1/wallets/19efc05739d556b7aac07c8103363a4e9d4afb52c1764027ea934622f7ad376c/tokens/neart-2.nearlytrade.near/history"
      }
    },
    "/v1/leaderboard": {
      "get": {
        "tags": [
          "Copy trading"
        ],
        "summary": "Copy-trade leaderboard",
        "description": "The wallets NEAR Terminal ranks as worth copying: real traders with profit spread over at least three tokens (no single token above 70% of it), PnL per window, win rate and open positions. See the Copy trading guide for how the list is built.",
        "operationId": "copy_trade_leaderboard",
        "parameters": [
          {
            "name": "window",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "1d",
                "3d",
                "7d",
                "all"
              ],
              "default": "7d"
            },
            "description": "PnL window the ranking uses."
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 50
            },
            "description": "How many items to return (1–100)."
          }
        ],
        "security": [
          {
            "ApiKey": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "rank": 1,
                      "wallet": "buyitall.near",
                      "tags": [
                        "whale"
                      ],
                      "pnl_usd": {
                        "1d": 7574.6706888887265,
                        "3d": 11599.601874960908,
                        "7d": 11599.601874960908,
                        "all": 11599.601874960908
                      },
                      "win_rate_pct": 50,
                      "buys": 124,
                      "sells": 129,
                      "volume_usd": 61052.88272676128,
                      "tokens_traded": 51,
                      "last_trade_at": "2026-10-01T01:49:19.412Z",
                      "open_positions_usd": 676.098920553508
                    },
                    {
                      "rank": 2,
                      "wallet": "48a6361aadd072847ae837248d4a15afc4bbf24b8e277036dc59828063d8230f",
                      "tags": [
                        "whale"
                      ],
                      "pnl_usd": {
                        "1d": -1650.9248238806438,
                        "3d": 4654.297580948408,
                        "7d": 4654.297580948408,
                        "all": 4654.297580948408
                      },
                      "win_rate_pct": 43.90243902439025,
                      "buys": 64,
                      "sells": 43,
                      "volume_usd": 119271.88708571522,
                      "tokens_traded": 24,
                      "last_trade_at": "2026-09-30T22:06:53.526Z",
                      "open_positions_usd": 0
                    }
                  ],
                  "meta": {
                    "window": "7d",
                    "count": 2
                  }
                }
              }
            }
          },
          "400": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          },
          "429": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          }
        },
        "x-sample-call": "/v1/leaderboard?limit=2"
      }
    },
    "/v1/swap/quote": {
      "get": {
        "tags": [
          "Trading"
        ],
        "summary": "Swap quote (+ unsigned transactions)",
        "description": "A buy or sell quote over the best Rhea route, with the platform's 1% fee included. Pass `account` to also receive the exact transactions that account's wallet should sign — the API never signs or holds keys. Sign and send them in order with any NEAR wallet or library (see the Trading guide).",
        "operationId": "swap_quote_unsigned_transactions",
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "Token contract.",
            "required": true,
            "example": "neart-2.nearlytrade.near"
          },
          {
            "name": "side",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "buy",
                "sell"
              ]
            },
            "description": "`buy` spends NEAR; `sell` spends the token.",
            "required": true
          },
          {
            "name": "amount",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "Decimal amount in whole units: NEAR for a buy, tokens for a sell.",
            "required": true,
            "example": "1"
          },
          {
            "name": "slippage_pct",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": 0.1,
              "maximum": 50,
              "default": 1
            },
            "description": "Worst price move accepted (0.1–50). Fast or thin tokens need 5–15."
          },
          {
            "name": "account",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "The trader's account. Required to get `transactions`."
          }
        ],
        "security": [
          {
            "ApiKey": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "token": "neart-2.nearlytrade.near",
                    "side": "buy",
                    "amount_in": "1",
                    "spend_near": "1.0025",
                    "fee": {
                      "near": "0.01"
                    },
                    "expected_out": "294516.167385933516471091",
                    "minimum_out": "279790.359016636840647536",
                    "route": "Rhea DCL · 1% pool · 1% fee",
                    "two_step": false,
                    "transactions": [
                      {
                        "receiverId": "ntrade.near",
                        "actions": [
                          {
                            "type": "FunctionCall",
                            "params": {
                              "methodName": "buy",
                              "args": {
                                "token_out": "neart-2.nearlytrade.near",
                                "leg": {
                                  "venue": "dclv2.ref-labs.near",
                                  "pool_ids": [
                                    "neart-2.nearlytrade.near|wrap.near|10000"
                                  ],
                                  "min_out": "279790359016636840647536"
                                },
                                "register_user": true,
                                "register_router": true
                              },
                              "gas": "290000000000000",
                              "deposit": "1002500000000000000000000"
                            }
                          }
                        ]
                      }
                    ]
                  },
                  "meta": {
                    "slippage_pct": 5,
                    "account": "buyitall.near",
                    "signer_required": true
                  }
                }
              }
            }
          },
          "400": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          },
          "429": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          }
        },
        "x-sample-call": "/v1/swap/quote?token=neart-2.nearlytrade.near&side=buy&amount=1&slippage_pct=5&account=buyitall.near"
      }
    },
    "/v1/stream": {
      "get": {
        "tags": [
          "Streaming"
        ],
        "summary": "Realtime stream (SSE)",
        "description": "Server-Sent Events. One connection carries any mix of: `trade` (needs `tokens`), `token.created` (new deploys, all launchpads), `token.multiplier` (a token reaches 2×, 3×… its launch price), `trending.entered` (a token enters the top 15) and `trending.top1` (#1 changes hands). `token` and `trending` subscribe to their whole group. Up to 5 open streams per key; the server sends a comment every 20 s to keep the connection alive. See the Streaming guide.",
        "operationId": "realtime_stream_sse",
        "parameters": [
          {
            "name": "events",
            "in": "query",
            "schema": {
              "type": "string",
              "default": "trade"
            },
            "description": "Comma-separated: `trade`, `token.created`, `token.multiplier`, `trending.entered`, `trending.top1`, or the groups `token`, `trending`.",
            "example": "trade,token.created,trending"
          },
          {
            "name": "tokens",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "Comma-separated token contracts (up to 50). Required for `trade`.",
            "example": "neart-2.nearlytrade.near"
          }
        ],
        "security": [
          {
            "ApiKey": []
          }
        ],
        "responses": {
          "200": {
            "description": "An event stream",
            "content": {
              "text/event-stream": {
                "example": "event: ready\ndata: {\"events\":[\"trade\",\"token.created\"],\"tokens\":[\"neart-2.nearlytrade.near\"]}\n\nevent: trade\ndata: {\"tx_hash\":\"2jaUatPJ…\",\"timestamp\":\"2026-10-01T01:24:19.512Z\",\"token\":\"neart-2.nearlytrade.near\",\"side\":\"buy\",\"trader\":\"alice.near\",\"amount_near\":2.5,\"amount_usd\":13.2,\"price_usd\":0.0000271,\"market_cap_usd\":27100,\"venues\":[\"Rhea DCL\"]}\n\nevent: token.created\ndata: {\"id\":\"neguy.nearlytrade.near\",\"symbol\":\"NEGUY\",\"name\":\"NearGuy\",\"launchpad\":\"nearlytrade\",\"creator\":\"bob.near\",\"created_at\":\"2026-10-01T01:25:02.000Z\",\"market_cap_usd\":4980,\"url\":\"https://nearterminal.tech/token/neguy.nearlytrade.near\"}\n\nevent: trending.entered\ndata: {\"token\":\"nomo.nearlytrade.near\",\"symbol\":\"NOMO\",\"rank\":7,\"market_cap_usd\":188200,\"url\":\"https://nearterminal.tech/token/nomo.nearlytrade.near\"}\n"
              }
            }
          },
          "400": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          },
          "429": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": {
                    "status": 400,
                    "code": "invalid_request",
                    "message": "limit must be an integer from 1 to 100",
                    "request_id": "6f1c0e8a-…"
                  }
                }
              }
            }
          }
        },
        "x-sample-call": null
      }
    }
  },
  "components": {
    "securitySchemes": {
      "ApiKey": {
        "type": "apiKey",
        "in": "header",
        "name": "X-API-Key"
      }
    },
    "schemas": {
      "Error": {
        "type": "object",
        "properties": {
          "error": {
            "type": "object",
            "properties": {
              "status": {
                "type": "integer"
              },
              "code": {
                "type": "string",
                "enum": [
                  "invalid_request",
                  "unauthorized",
                  "not_found",
                  "method_not_allowed",
                  "rate_limited",
                  "too_many_streams",
                  "upstream_error",
                  "unavailable",
                  "internal_error"
                ]
              },
              "message": {
                "type": "string"
              },
              "request_id": {
                "type": "string"
              }
            }
          }
        }
      }
    }
  }
}