# Accounts

> Intear API accounts.search: NEAR accounts by prefix, the most recently active first. And the accounts a public key can sign for, by key or ML-DSA-65 key handle.

This page is part of the Intear API docs. The Intear API is at `https://api.intea.rs` and `wss://api.intea.rs/ws`, with no API key. https://docs.intear.tech/api/llms-full.txt has all of its pages in one file, and https://docs.intear.tech/llms.txt lists every page of the Intear docs.

Accounts are indexed from 16 October 2026 on, with the full access keys added since. An account is indexed once a transaction it signed, or a successful receipt to it, shows that it exists. It's removed once a receipt deletes it. An older account that hasn't done anything since isn't found.

## `accounts.search`

Accounts starting with a prefix. HTTP: `/accounts/search`.

| Param | Description |
| --- | --- |
| `prefix` | **Required.** The start of an account id: 3 to 64 of `a-z`, `0-9`, `.`, `_` and `-`. Uppercase letters are read as lowercase |
| `limit` | 1 to 50, default 50 |

The account the prefix names in full comes first, if there is one. The rest are ordered by their last transaction, the most recent first. Accounts that haven't signed a transaction come last.

Result:

```json
{
  "height": 220512870,
  "timestamp_millis": 1792326870365,
  "columns": ["account_id", "last_transaction_millis"],
  "rows": [["intearbots.near", 1792326752235], ["intear.pool.near", null], ["intear.user.intear.near", null]]
}
```

- `last_transaction_millis`: when the account last signed a transaction since indexing began, `null` when it hasn't.

## Accounts by public key

`GET /public_key/{key}` returns the accounts that have `key` as a full access key, if it was added to them since indexing began. It answers in the same shape as FastNEAR's `/v0/public_key/{key}`. It's HTTP only.

`key` is a public key (`ed25519:…`, `secp256k1:…`, `ml-dsa-65:…`) or a key handle. On chain, an ML-DSA-65 key is stored as its hash, `ml-dsa-65-hash:…`. Looking that handle up here gives the whole key back.

```json
{
  "public_key": "ed25519:BWxsRE6rAtn4ED8UGJ5jCh8ZrMPT9W4vXsHLkQxYQH6U",
  "account_ids": ["086c1f8a9c8600dacd074c13776407e7a9afc260d1fe0064fa2727e37e91fc2b"]
}
```

- `public_key`: the whole key. It's `null` for a handle that no account has.
- For an ED25519 key, its implicit account (the key in hex) is included if it holds any NEAR.

## Key stats

`GET /stats` returns hourly counts of transactions by the type of key that signed them, and of active accounts whose full access keys are all ML-DSA-65. It's HTTP only, and counted again at most every 10 seconds.

```json
{
  "hourly_transactions_by_key_type": [{"hour": "2026-10-17T00:00:00Z", "ed25519": 28758, "secp256k1": 0, "ml_dsa_65": 3}],
  "hourly_pq_adoption": [{"hour": "2026-10-17T00:00:00Z", "active_accounts": 1955, "exclusively_ml_dsa_65_accounts": 0}],
  "totals": {"quantum_safe_accounts": 6, "quantum_safe_transactions": 276}
}
```
