Documentation menu

Members API

The Members API gives your own tools read-only access to your server's NXT data: members, their roles, and their proven wallets.

The Members API is included on every plan, including Free.

Authentication

Create a key in Dashboard > API. Only the server owner and members with Administrator or Manage Server can create or revoke keys. Each server can have up to 5 active keys. The full key is shown once when it is created, so store it somewhere safe.

Send the key in the Authorization header:

Authorization: Bearer <your key>

A key only reads data for the server it was created in.

Base URL

https://nxtnft.app/api/v1/

All endpoints use GET and return JSON.

Endpoints

GET /server

Returns the server the key belongs to.

{
  "id": "1234567890123456789",
  "name": "My Community",
  "plan": "pro",
  "members_synced_at": "2026-10-16T12:00:00.000Z"
}

GET /members

Lists members with cursor pagination.

Query parameter Description
verified true or false. Filter by verification status.
role A Discord role ID. Only members who hold it.
limit 1 to 500. Default 100.
cursor The next_cursor value from the previous page
{
  "members": [
    {
      "discord_id": "112233445566778899",
      "name": "Holder",
      "username": "holder",
      "in_server": true,
      "verified": true,
      "roles": [{ "id": "998877665544332211", "name": "Holder" }],
      "wallets": ["0x8f3a5c0d2e4b6a7f9c1d3e5f7a9b1c3d5e7f19c2"],
      "joined_server_at": "2026-09-01T18:22:04.000Z",
      "first_role_at": "2026-09-01T18:24:10.000Z"
    }
  ],
  "next_cursor": "112233445566778899"
}

Members are ordered by Discord ID. next_cursor is the Discord ID of the last member on the page, and null on the last page. roles is null when the member's roles are not known.

Without verified=true, only current members of the server are listed. With verified=true, members who verified and later left are included too. wallets is filled only for members who verified in your server, and is empty for everyone else.

GET /members/{discord_id}

Returns one member in the same shape as an item of the list above.

GET /wallets/{address}

Looks up a wallet address and returns the member it belongs to, if that member has verified in your server. Otherwise the API returns not_found.

{
  "wallet": "0x8f3a5c0d2e4b6a7f9c1d3e5f7a9b1c3d5e7f19c2",
  "member": { "discord_id": "112233445566778899", "name": "Holder", "username": "holder", "in_server": true, "verified": true, "roles": [], "wallets": [], "joined_server_at": null, "first_role_at": null }
}

GET /roles

Lists the server's roles with member counts.

{
  "roles": [
    {
      "id": "998877665544332211",
      "name": "Holder",
      "position": 12,
      "members": 640,
      "verified_members": 612,
      "granted_by_nxt": true
    }
  ]
}

Member counts come from NXT's latest member sync. granted_by_nxt is true when at least one NXT rule, enabled or disabled, grants the role.

Rate limits

Each server can make 60 requests per minute and 10,000 requests per day, shared across its keys. Every response to a valid key includes:

Header Description
X-RateLimit-Limit The per-minute limit
X-RateLimit-Remaining Requests left in the current minute

When a limit is exceeded, the API returns 429 with a Retry-After header giving the number of seconds to wait.

Errors

Errors use a consistent shape:

{ "error": { "code": "not_found", "message": "No member with that ID." } }
Code Status Meaning
invalid_parameter 400 A query or path parameter is malformed
invalid_key 401 Missing, unknown, or revoked key
plan_required 403 The server's plan does not include API access (reserved; every current plan includes it)
not_found 404 The member, wallet, or resource does not exist
rate_limited 429 Too many requests. Retry after the Retry-After delay.
internal_error 500 Something went wrong on NXT's side, for example Discord did not respond. Try again.

Example

curl -s "https://nxtnft.app/api/v1/members?verified=true&limit=50" \
  -H "Authorization: Bearer $NXT_API_KEY"

Something unclear or out of date? Tell us at support@nxtnft.app.