Admin

List accounts

A cursor page of every account, newest first, each with the plan it is on and the balance of its credit ledger. Needs the admin role. email narrows the page to one account. It matches the whole address case-insensitively and takes no wildcards: an operator looking for Ana@Acme.com finds a row stored as ana@acme.com, and there is no substring search across customers' addresses. An account with no subscription reads as free with a balance of 0: the absence of a row is the free plan, and the least-privileged rung is also what any unresolvable lookup should answer.

get/v1/admin/users

Request

  • Base URL: https://api.naturali.ai
  • URL: https://api.naturali.ai/v1/admin/users
  • Auth: one of:
    • HTTP bearer
    • OAuth 2 (authorization code, authorization URL https://api.naturali.ai/authorize, token URL https://api.naturali.ai/token, scopes: mcp:access)

Query parameters

emailstring email

Match one account by its full address, case-insensitively.

limitinteger

Results per page, 1 to 100 (default 50). Above 100 it is clamped; below 1 or not an integer it is 400.

cursorstring

The next_cursor of the previous page.

Response

A page of accounts.

next_cursorstring nullable required

Pass as cursor for the next page; null on the last one.

Example response

{
  "data": [
    {
      "id": "user_V1StGXR8Z5jdHi6B",
      "email": "ana@acme.com",
      "name": "Ana Silva",
      "email_verified": true,
      "roles": [],
      "usage_alerts": true,
      "created_at": "2026-07-17T00:00:00.000Z",
      "plan": "business",
      "next_plan": "pro",
      "retention_days": 90,
      "credit_balance_usd": 25,
      "spend_reconciled_at": "2026-07-17T00:15:00.000Z",
      "storage": {
        "used": 12.4137,
        "limit": 30,
        "sampled_at": "2026-07-17T00:15:00.000Z"
      }
    }
  ]
}

Changes

No recorded changes to this operation across all 1 revision of this API.