# Node proxy — API reference

Source: https://tenergy.me/docs/api/node-proxy
Last updated: 2026-09-27

Node keys for the TRON node proxy endpoint.

| Method | Path | Summary |
|---|---|---|
| `GET` | `/v1/node-keys` | List node keys (keys themselves are never returned) |
| `POST` | `/v1/node-keys` | Create a node key; the key and endpoint are shown once |
| `DELETE` | `/v1/node-keys/{id}` | Revoke a node key (active = false) |

Generated from [`openapi.yaml`](https://tenergy.me/openapi.yaml) at build time. Base URL `https://api.tenergy.me/v1`, or `https://api-nile.tenergy.me/v1` on Nile ([Environments](https://tenergy.me/docs/environments)). Every request below is signed as in [Authentication](https://tenergy.me/docs/authentication) unless its **Auth** line says otherwise.

## List node keys (keys themselves are never returned)

`GET /v1/node-keys` · `listNodeKeys`

**Auth:** API key (HMAC).

Same guard as `GET /api-keys` (scope `keys.read`). `used` counts active keys; `limit` is `NODE_KEYS_PER_ACCOUNT` (default 5).

### Responses

| Status | Meaning |
|---|---|
| `200` | The account's node keys. |

#### Response fields

| Field | Type | Required | Description |
|---|---|---|---|
| `data` | array of object (NodeKey) | yes |  |
| `data[].id` | string | yes |  |
| `data[].label` | string \| null | yes |  |
| `data[].active` | boolean | yes |  |
| `data[].created_at` | string (date-time) | yes |  |
| `data[].last_used_at` | string (date-time) \| null | yes |  |
| `limit` | integer | yes |  |
| `used` | integer | yes |  |

## Create a node key; the key and endpoint are shown once

`POST /v1/node-keys` · `createNodeKey`

**Auth:** API key (HMAC).

Same guard as `POST /api-keys` (scope `keys.create`, member editor); no new scope. A node
key lets the node proxy buy 5 m energy orders for transactions broadcast through it,
charged to this account's own balance, and nothing else. Only its SHA-256 is stored.
`3017 api_key_limit_reached` when the account already holds `NODE_KEYS_PER_ACCOUNT` active keys.

### Request body

JSON.

| Field | Type | Required | Description |
|---|---|---|---|
| `label` | string |  |  |

### Responses

| Status | Meaning |
|---|---|
| `201` | Created. `key` and `endpoint` appear in this response only. |
| `409` | `3017 api_key_limit_reached`. |

#### Response fields

| Field | Type | Required | Description |
|---|---|---|---|
| `id` | string | yes |  |
| `label` | string \| null | yes |  |
| `active` | boolean | yes |  |
| `created_at` | string (date-time) | yes |  |
| `last_used_at` | string (date-time) \| null | yes |  |
| `key` | string | yes | 26 chars base32, 128 bits. |
| `endpoint` | string | yes | `<PROXY_PUBLIC_HOST>/<key>`. |

## Revoke a node key (active = false)

`DELETE /v1/node-keys/{id}` · `revokeNodeKey`

**Auth:** API key (HMAC).

Same guard as `DELETE /api-keys/{keyId}` (scope `keys.revoke`). The proxy stops accepting the key within its cache TTL.

### Parameters

| Name | In | Type | Required | Description |
|---|---|---|---|---|
| `id` | path | string | yes |  |

### Responses

| Status | Meaning |
|---|---|
| `204` | Revoked. |
| `404` | No such node key on this account. |
