Skip to content

9Login API: system#

The state of 9Login and the account, the values that profile fields accept, and the reference of the API itself.

GET /v1/status#

Whether 9Login is signed in, the plan allows the API, and how many profiles run. Answers even when signed out or on a free plan, so a tool can tell those apart from a wrong key or a closed app.

MCP tool: get_status. Access: answers even when signed out or on a free plan.

No parameters.

Request
curl -H "Authorization: Bearer YOUR_API_KEY" "http://127.0.0.1:37286/v1/status"
Response
{
  "ok": true,
  "data": {
    "app": {
      "name": "9Login",
      "version": "6.0.1"
    },
    "api": {
      "version": 1
    },
    "signedIn": true,
    "account": {
      "username": "alice",
      "member": null
    },
    "plan": {
      "paid": true,
      "api": true
    },
    "profiles": 42,
    "running": 3
  }
}

GET /v1/account#

The plan, its limits, what is used, and what this session may do.

MCP tool: get_account. Access: read only.

No parameters.

Request
curl -H "Authorization: Bearer YOUR_API_KEY" "http://127.0.0.1:37286/v1/account"
Response
{
  "ok": true,
  "data": {
    "username": "alice",
    "member": null,
    "plan": {
      "paid": true,
      "tier": "pro",
      "expiresAt": 1767225600,
      "maxProfiles": 300,
      "usedProfiles": 42,
      "maxMembers": 2,
      "cloudData": true
    },
    "newFingerprints": {
      "max": 900,
      "used": 12,
      "left": 888,
      "freesAt": 0
    },
    "features": {
      "scripts": true,
      "extensions": true,
      "mobileOs": true,
      "api": true
    },
    "permissions": {
      "create": true,
      "edit": true,
      "delete": true,
      "export": true,
      "manageProxy": true,
      "manageExt": true,
      "manageScript": true
    },
    "apiPermissions": {
      "manage": true,
      "allowDelete": false
    }
  }
}

GET /v1/options#

Every value a profile field accepts: OS and browser versions, devices, time zones, modes, list entries. Read this before creating profiles instead of guessing version strings: a value outside these lists is refused.

MCP tool: get_options. Access: read only.

No parameters.

Request
curl -H "Authorization: Bearer YOUR_API_KEY" "http://127.0.0.1:37286/v1/options"
Response
{
  "ok": true,
  "data": {
    "platforms": {
      "windows": {
        "versions": [
          {
            "value": "15.0.0",
            "label": "11"
          }
        ],
        "browsers": [
          "chrome",
          "edge"
        ],
        "devices": [],
        "deviceMemory": [
          2,
          4,
          8,
          16,
          32
        ]
      }
    },
    "browsers": {
      "chrome": [
        "155.0.8059.39"
      ]
    },
    "timezones": [
      "Europe/Berlin"
    ],
    "enums": {
      "onStartup": [
        "restore",
        "custom"
      ]
    },
    "locked": {
      "mobileOs": false,
      "scripts": false,
      "extensions": false
    },
    "proxies": [
      {
        "id": "p1",
        "label": "US 1",
        "type": "http"
      }
    ],
    "extensions": [
      {
        "id": "e1",
        "name": "uBlock Origin"
      }
    ],
    "scripts": [
      {
        "id": "s1",
        "name": "Warm up"
      }
    ]
  }
}

GET /v1/docs#

Reference of this REST API, for scripts and programs that call it. Without endpoints: the base URL, the key, the request and response rules, every endpoint by group, the error codes and the limits. With endpoints: the fields, access and an example request and response of each. It is generated from the endpoints themselves, so it always matches this version of 9Login. The key never appears in it: the examples carry a placeholder instead.

MCP tool: api_docs. Access: answers even when signed out or on a free plan.

Field Type Required Description
endpoints string[] no Endpoints to describe in full, by id from the list such as profiles.create. A path such as /v1/profiles/create or an MCP tool name works too. Comma separated in a query string.
Request
curl -H "Authorization: Bearer YOUR_API_KEY" "http://127.0.0.1:37286/v1/docs?endpoints=profiles.get"
Response
{
  "ok": true,
  "data": {
    "endpoints": [
      {
        "id": "profiles.get",
        "method": "GET",
        "path": "/v1/profiles/{id}",
        "summary": "One profile with every field, its status, and a summary of its fingerprint.",
        "fields": [],
        "mcpTool": "get_profile"
      }
    ],
    "unknown": []
  }
}