Nym Technologies Nym Nodes API
The Nym Nodes API from Nym Technologies — 15 operation(s) for nym nodes.
The Nym Nodes API from Nym Technologies — 15 operation(s) for nym nodes.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/nym-technologies-nym-nodes-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
openapi: 3.2.0
info:
title: Node Status API Status Nym Nodes API
description: ''
contact:
name: Nym Technologies SA
license:
name: Apache-2.0
identifier: Apache-2.0
version: 4.6.2
servers:
- url: https://validator.nymtech.net/api
description: Base URL declared by the provider in apis.yml (roadmap#122).
tags:
- name: Nym Nodes
paths:
/v1/nym-nodes/annotation/{node_id}:
get:
tags:
- Nym Nodes
operationId: get_node_annotation
parameters:
- name: node_id
in: path
required: true
schema:
$ref: '#/components/schemas/u32'
- name: output
in: query
required: false
schema:
oneOf:
- type: 'null'
- $ref: '#/components/schemas/Output'
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/AnnotationResponseV1'
application/yaml:
schema:
$ref: '#/components/schemas/AnnotationResponseV1'
application/bincode:
schema:
$ref: '#/components/schemas/AnnotationResponseV1'
/v1/nym-nodes/bonded:
get:
tags:
- Nym Nodes
operationId: get_bonded_nodes
parameters:
- name: output
in: query
required: false
schema:
$ref: '#/components/schemas/Output'
- name: page
in: query
required: false
schema:
type: integer
format: int32
minimum: 0
- name: per_page
in: query
required: false
schema:
type: integer
format: int32
minimum: 0
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/PaginatedResponse_NymNodeDetails'
application/yaml:
schema:
$ref: '#/components/schemas/PaginatedResponse_NymNodeDetails'
application/bincode:
schema:
$ref: '#/components/schemas/PaginatedResponse_NymNodeDetails'
/v1/nym-nodes/described:
get:
tags:
- Nym Nodes
operationId: get_described_nodes
parameters:
- name: output
in: query
required: false
schema:
$ref: '#/components/schemas/Output'
- name: page
in: query
required: false
schema:
type: integer
format: int32
minimum: 0
- name: per_page
in: query
required: false
schema:
type: integer
format: int32
minimum: 0
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/PaginatedResponse_NymNodeDescriptionV1'
application/yaml:
schema:
$ref: '#/components/schemas/PaginatedResponse_NymNodeDescriptionV1'
application/bincode:
schema:
$ref: '#/components/schemas/PaginatedResponse_NymNodeDescriptionV1'
deprecated: true
/v1/nym-nodes/historical-performance/{node_id}:
get:
tags:
- Nym Nodes
operationId: get_historical_performance
parameters:
- name: date
in: query
required: true
schema:
type: string
format: date
- name: output
in: query
required: false
schema:
$ref: '#/components/schemas/Output'
- name: node_id
in: path
required: true
schema:
$ref: '#/components/schemas/u32'
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/NodeDatePerformanceResponse'
application/yaml:
schema:
$ref: '#/components/schemas/NodeDatePerformanceResponse'
application/bincode:
schema:
$ref: '#/components/schemas/NodeDatePerformanceResponse'
/v1/nym-nodes/noise:
get:
tags:
- Nym Nodes
operationId: nodes_noise
parameters:
- name: output
in: query
required: false
schema:
$ref: '#/components/schemas/Output'
- name: page
in: query
required: false
schema:
type: integer
format: int32
minimum: 0
- name: per_page
in: query
required: false
schema:
type: integer
format: int32
minimum: 0
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/PaginatedResponse_NoiseDetails'
application/yaml:
schema:
$ref: '#/components/schemas/PaginatedResponse_NoiseDetails'
application/bincode:
schema:
$ref: '#/components/schemas/PaginatedResponse_NoiseDetails'
/v1/nym-nodes/performance-history/{node_id}:
get:
tags:
- Nym Nodes
operationId: get_node_performance_history
parameters:
- name: output
in: query
required: false
schema:
$ref: '#/components/schemas/Output'
- name: page
in: query
required: false
schema:
type: integer
format: int32
minimum: 0
- name: per_page
in: query
required: false
schema:
type: integer
format: int32
minimum: 0
- name: node_id
in: path
required: true
schema:
$ref: '#/components/schemas/u32'
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/PerformanceHistoryResponse'
application/yaml:
schema:
$ref: '#/components/schemas/PerformanceHistoryResponse'
application/bincode:
schema:
$ref: '#/components/schemas/PerformanceHistoryResponse'
/v1/nym-nodes/performance/{node_id}:
get:
tags:
- Nym Nodes
operationId: get_current_node_performance
parameters:
- name: node_id
in: path
required: true
schema:
$ref: '#/components/schemas/u32'
- name: output
in: query
required: false
schema:
oneOf:
- type: 'null'
- $ref: '#/components/schemas/Output'
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/NodePerformanceResponse'
application/yaml:
schema:
$ref: '#/components/schemas/NodePerformanceResponse'
application/bincode:
schema:
$ref: '#/components/schemas/NodePerformanceResponse'
/v1/nym-nodes/refresh-described:
post:
tags:
- Nym Nodes
operationId: refresh_described
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/NodeRefreshBody'
required: true
responses: {}
/v1/nym-nodes/rewarded-set:
get:
tags:
- Nym Nodes
operationId: rewarded_set
parameters:
- name: output
in: query
required: false
schema:
oneOf:
- type: 'null'
- $ref: '#/components/schemas/Output'
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/RewardedSetResponse'
application/yaml:
schema:
$ref: '#/components/schemas/RewardedSetResponse'
application/bincode:
schema:
$ref: '#/components/schemas/RewardedSetResponse'
/v1/nym-nodes/stake-saturation/{node_id}:
get:
tags:
- Nym Nodes
operationId: get_node_stake_saturation
parameters:
- name: node_id
in: path
required: true
schema:
$ref: '#/components/schemas/u32'
- name: output
in: query
required: false
schema:
oneOf:
- type: 'null'
- $ref: '#/components/schemas/Output'
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/StakeSaturationResponse'
application/yaml:
schema:
$ref: '#/components/schemas/StakeSaturationResponse'
application/bincode:
schema:
$ref: '#/components/schemas/StakeSaturationResponse'
/v1/nym-nodes/uptime-history/{node_id}:
get:
tags:
- Nym Nodes
operationId: get_node_uptime_history
parameters:
- name: output
in: query
required: false
schema:
$ref: '#/components/schemas/Output'
- name: page
in: query
required: false
schema:
type: integer
format: int32
minimum: 0
- name: per_page
in: query
required: false
schema:
type: integer
format: int32
minimum: 0
- name: node_id
in: path
required: true
schema:
$ref: '#/components/schemas/u32'
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/PerformanceHistoryResponse'
application/yaml:
schema:
$ref: '#/components/schemas/PerformanceHistoryResponse'
application/bincode:
schema:
$ref: '#/components/schemas/PerformanceHistoryResponse'
/v2/nym-nodes/annotation/{node_id}:
get:
tags:
- Nym Nodes
operationId: v2_get_node_annotation
parameters:
- name: node_id
in: path
required: true
schema:
$ref: '#/components/schemas/u32'
- name: output
in: query
required: false
schema:
oneOf:
- type: 'null'
- $ref: '#/components/schemas/OutputV2'
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/AnnotationResponseV2'
application/yaml:
schema:
$ref: '#/components/schemas/AnnotationResponseV2'
/v2/nym-nodes/described:
get:
tags:
- Nym Nodes
operationId: v2_get_described_nodes
parameters:
- name: output
in: query
required: false
schema:
$ref: '#/components/schemas/Output'
- name: page
in: query
required: false
schema:
type: integer
format: int32
minimum: 0
- name: per_page
in: query
required: false
schema:
type: integer
format: int32
minimum: 0
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/PaginatedResponse_NymNodeDescriptionV2'
application/yaml:
schema:
$ref: '#/components/schemas/PaginatedResponse_NymNodeDescriptionV2'
application/bincode:
schema:
$ref: '#/components/schemas/PaginatedResponse_NymNodeDescriptionV2'
/v3/nym-nodes/stress-testing/batch-submit:
post:
tags:
- Nym Nodes
summary: Accept a batch of stress-test results from an authorised network monitor orchestrator.
description: "The batch is rejected unless all of the following hold:\n- the submission timestamp is within a short staleness window of the current time,\n- the signer's key is currently registered in the network-monitors contract,\n- the submission timestamp is strictly greater than the signer's previous accepted submission\n (timestamp-based replay protection, so orchestrators don't need to keep a nonce counter),\n- the signature on the body verifies against the signer's key.\n\nIndividual result entries that fail per-entry validation (non-mixnode role, performance score\noutside `[0.0, 1.0]`) are logged as errors and dropped, but do not fail the batch."
operationId: batch_submit_stress_testing_results
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/SignedMessage'
required: true
responses:
'200':
description: the submitted batch has been accepted and stored
'400':
description: the submitted request is stale or replayed
'401':
description: the submitted request was unauthorised or failed integrity check
/v3/nym-nodes/stress-testing/known-monitors/{identity_key}:
get:
tags:
- Nym Nodes
summary: 'Report whether the given identity key is currently recognised by this nym-api as an
authorised network monitor orchestrator.'
description: 'Intended for orchestrators to self-check after (re)announcing their key on-chain - a
successful response with `authorised: true` means this nym-api has picked up the chain change
and is ready to accept stress-test submissions signed by that key.'
operationId: known_network_monitor
parameters:
- name: identity_key
in: path
description: base58-encoded ed25519 identity key of the queried network monitor
required: true
schema:
type: string
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/KnownNetworkMonitorResponse'
'400':
description: the provided identity key is not a valid base58-encoded ed25519 public key
components:
schemas:
ChainInteractionCapabilities:
type: object
required:
- has_sufficient_tokens
- is_fee_grant_grantee
properties:
has_sufficient_tokens:
type: boolean
is_fee_grant_grantee:
type: boolean
NodeRewarding:
type: object
required:
- cost_params
- operator
- delegates
- total_unit_reward
- unit_delegation
- last_rewarded_epoch
- unique_delegations
properties:
cost_params:
$ref: '#/components/schemas/NodeCostParams'
description: Information provided by the operator that influence the cost function.
delegates:
type: string
description: Total delegation and compounded reward earned by all node delegators.
last_rewarded_epoch:
$ref: '#/components/schemas/u32'
description: 'Marks the epoch when this node was last rewarded so that we wouldn''t accidentally attempt
to reward it multiple times in the same epoch.'
operator:
type: string
description: Total pledge and compounded reward earned by the node operator.
total_unit_reward:
type: string
description: Cumulative reward earned by the "unit delegation" since the block 0.
unique_delegations:
type: integer
format: int32
minimum: 0
unit_delegation:
type: string
description: Value of the theoretical "unit delegation" that has delegated to this node at block 0.
PaginatedResponse_NoiseDetails:
type: object
required:
- pagination
- data
properties:
data:
type: array
items:
type: object
required:
- key
- mixnet_port
- ip_addresses
properties:
ip_addresses:
type: array
items:
type: string
key:
$ref: '#/components/schemas/VersionedNoiseKeyV1'
mixnet_port:
type: integer
format: int32
minimum: 0
pagination:
$ref: '#/components/schemas/Pagination'
NodeDatePerformanceResponse:
type: object
required:
- node_id
- date
properties:
date:
type: string
example: '1970-01-01'
node_id:
type: integer
format: int32
minimum: 0
performance:
type:
- number
- 'null'
format: double
NetworkRequesterDetailsV1:
type: object
required:
- address
- uses_exit_policy
properties:
address:
type: string
description: address of the embedded network requester
uses_exit_policy:
type: boolean
description: flag indicating whether this network requester uses the exit policy rather than the deprecated allow list
NymNodeAuxiliaryDetailsV1:
type: object
properties:
accepted_operator_terms_and_conditions:
type: boolean
description: 'Specifies whether this node operator has agreed to the terms and conditions
as defined at <https://nymtech.net/terms-and-conditions/operators/v1.0.0>'
announce_ports:
$ref: '#/components/schemas/AnnouncePortsV1'
location:
type:
- string
- 'null'
description: Optional ISO 3166 alpha-2 two-letter country code of the node's **physical** location
example: PL
PerformanceHistoryResponse:
type: object
required:
- node_id
- history
properties:
history:
$ref: '#/components/schemas/PaginatedResponse_HistoricalPerformanceResponse'
node_id:
type: integer
format: int32
minimum: 0
AnnotationResponseV1:
type: object
required:
- node_id
properties:
annotation:
oneOf:
- type: 'null'
- $ref: '#/components/schemas/NodeAnnotationV1'
node_id:
type: integer
format: int32
minimum: 0
IpPacketRouterDetailsV1:
type: object
required:
- address
properties:
address:
type: string
description: address of the embedded ip packet router
Pagination:
type: object
required:
- total
- page
- size
properties:
page:
type: integer
format: int32
minimum: 0
size:
type: integer
minimum: 0
total:
type: integer
minimum: 0
NymNode:
type: object
description: Information provided by the node operator during bonding that are used to allow other entities to use the services of this node.
required:
- host
- identity_key
properties:
custom_http_port:
type:
- integer
- 'null'
format: int32
description: 'Allow specifying custom port for accessing the http, and thus self-described, api
of this node for the capabilities discovery.'
minimum: 0
host:
type: string
description: 'Network address of this nym-node, for example 1.1.1.1 or foo.mixnode.com
that is used to discover other capabilities of this node.'
identity_key:
type: string
description: Base58-encoded ed25519 EdDSA public key.
DetailedNodePerformanceV2:
type: object
required:
- performance_score
- routing_score
- config_score
- stress_testing_score
properties:
config_score:
$ref: '#/components/schemas/ConfigScoreV2'
performance_score:
type: number
format: double
description: 'routing_score * config_score
or
routing_score * config_score * stress_testing_score, if enabled'
routing_score:
$ref: '#/components/schemas/RoutingScore'
stress_testing_score:
$ref: '#/components/schemas/StressTestingScore'
VersionedNoiseKeyV1:
type: object
required:
- supported_version
- x25519_pubkey
properties:
supported_version:
type: integer
format: int32
minimum: 0
x25519_pubkey:
type: string
WebSocketsV1:
type: object
required:
- ws_port
properties:
ws_port:
type: integer
format: int32
minimum: 0
wss_port:
type:
- integer
- 'null'
format: int32
minimum: 0
HostInformationV1:
type: object
required:
- ip_address
- keys
properties:
hostname:
type:
- string
- 'null'
ip_address:
type: array
items:
type: string
keys:
$ref: '#/components/schemas/HostKeysV1'
WireguardDetailsV1:
type: object
required:
- port
- public_key
properties:
metadata_port:
type: integer
format: int32
minimum: 0
port:
type: integer
format: int32
minimum: 0
public_key:
type: string
tunnel_port:
type: integer
format: int32
minimum: 0
NodeRefreshBody:
type: object
required:
- node_identity
- request_timestamp
- signature
properties:
node_identity:
type: string
request_timestamp:
type: integer
format: int64
signature:
type: string
PaginatedResponse_NymNodeDescriptionV2:
type: object
required:
- pagination
- data
properties:
data:
type: array
items:
type: object
required:
- node_id
- contract_node_type
- description
properties:
contract_node_type:
$ref: '#/components/schemas/DescribedNodeTypeV1'
description:
$ref: '#/components/schemas/NymNodeDataV2'
node_id:
type: integer
format: int32
minimum: 0
pagination:
$ref: '#/components/schemas/Pagination'
DisplayRole:
type: string
enum:
- entryGateway
- layer1
- layer2
- layer3
- exitGateway
- standby
NodeAnnotationV1:
type: object
required:
- last_24h_performance
- detailed_performance
properties:
current_role:
oneOf:
- type: 'null'
- $ref: '#/components/schemas/DisplayRole'
detailed_performance:
$ref: '#/components/schemas/DetailedNodePerformanceV1'
last_24h_performance:
type: string
CoinSchema:
type: object
title: Coin
required:
- denom
- amount
properties:
amount:
type: integer
minimum: 0
denom:
type: string
OutputV2:
type: string
enum:
- json
- yaml
BlockHeader:
type: object
description: 'Block `Header` values contain metadata about the block and about the
consensus, as well as commitments to the data in the current block, the
previous block, and the results returned by the application.
<https://github.com/tendermint/spec/blob/d46cd7f573a2c6a2399fcab2cde981330aa63f37/spec/core/data_structures.md#header>'
required:
- version
- chain_id
- height
- time
- validators_hash
- next_validators_hash
- consensus_hash
- app_hash
- proposer_address
properties:
app_hash:
type: string
description: State after txs from the previous block
chain_id:
type: string
description: Chain ID
consensus_hash:
type: string
description: Consensus params for the current block
data_hash:
type:
- string
- 'null'
description: Merkle root of transaction hashes
evidence_hash:
type:
- string
- 'null'
description: Hash of evidence included in the block
height:
type: integer
format: int64
description: Current block height
minimum: 0
last_block_id:
oneOf:
- type: 'null'
- $ref: '#/components/schemas/BlockId'
description: Previous block info
last_commit_hash:
type:
- string
- 'null'
description: Commit from validators from the last block
last_results_hash:
type:
- string
- 'null'
description: Root hash of all results from the txs from the previous block
next_validators_hash:
type: string
description: Validators for the next block
proposer_address:
type: string
description: Original proposer of the block
time:
type: string
description: Current timestamp
validators_hash:
type: string
description: Validators for the current block
version:
$ref: '#/components/schemas/HeaderVersion'
description: Header version
RewardedSetResponse:
type: object
required:
- entry_gateways
- exit_gateways
- layer1
- layer2
- layer3
- standby
properties:
entry_gateways:
type: array
items:
$ref: '#/components/schemas/u32'
epoch_id:
type: integer
format: int32
minimum: 0
exit_gateways:
type: array
items:
$ref: '#/components/schemas/u32'
layer1:
type: array
items:
$ref: '#/components/schemas/u32'
layer2:
type: array
items:
$ref: '#/components/schemas/u32'
layer3:
type: array
items:
$ref: '#/components/schemas/u32'
standby:
type: array
items:
$ref: '#/components/schemas/u32'
StressTestingScore:
type: object
required:
- score
- was_reachable
properties:
score:
type: number
format: double
was_reachable:
type: boolean
description: 'Distinguishes a genuine zero score (node was tested and scored 0) from
"node was unreachable" (no successful sample was collected). Consumers may use
this to decide whether to penalise the node or treat the score as missing.'
ChainBlocksStatusResponseBody:
type: object
required:
- currentTime
- chainStatus
properties:
chainStatus:
$ref: '#/components/schemas/ChainStatus'
currentTime:
type: string
latestCachedBlock:
oneOf:
- type: 'null'
- $ref: '#/components/schemas/DetailedChainStatus'
BlockInfo:
type: object
required:
- block_id
- block
properties:
block:
$ref: '#/components/schemas/FullBlockInfo'
block_id:
$ref: '#/components/schemas/BlockId'
FullBlockInfo:
type: object
required:
- header
properties:
header:
$ref: '#/components/schemas/BlockHeader'
HostKeysV1:
type: object
required:
- ed25519
- x25519
- current_x25519_sphinx_key
properties:
current_x25519_sphinx_key:
$ref: '#/components/schemas/SphinxKeyV1'
ed25519:
type: string
pre_announced_x25519_sphinx_key:
oneOf:
- type: 'null'
- $ref: '#/components/schemas/SphinxKeyV1'
x25519:
type: string
deprecated: true
x25519_versioned_noise:
oneOf:
- type: 'null'
- $ref: '#/components/schemas/VersionedNoiseKeyV1'
DetailedChainStatus:
type: object
required:
- abci
- latest_block
properties:
abci:
$ref: '#/components/schemas/AbciInfo'
latest_block:
$ref: '#/components/schemas/BlockInfo'
AnnouncePortsV1:
type: object
properties:
mix_port:
type:
- integer
- 'null'
format: int32
minimum: 0
verloc_port:
type:
- integer
- 'null'
format: int32
minimum: 0
SphinxKeyV1:
type: object
required:
- rotation_id
- public_key
properties:
public_key:
type: string
rotation_id:
type: integer
format: int32
minimum: 0
NodeAnnotationV2:
type: object
required:
- detailed_performance
properties:
chain_interaction_capabilities:
oneOf:
- type: 'null'
- $ref: '#/components/schemas/ChainInteractionCapabilitiesDetailed'
current_role:
oneOf:
- type: 'null'
- $ref: '#/components/schemas/DisplayRole'
detailed_performance:
$ref: '#/components/schemas/DetailedNodePerformanceV2'
RoutingScore:
type: object
required:
- score
properties:
score:
type: number
format: double
description: Total score after taking all the criteria into consideration
LewesProtocolDetailsV1:
type: object
required:
- content
- signature
properties:
content:
$ref: '#/components/schemas/LewesProtocolDetailsDataV1'
signature:
type: string
ConfigScoreV1:
type: object
required:
- score
- self_described_api_available
- accepted_terms_and_conditions
- runs_nym_node_binary
properties:
accepted_terms_and_conditions:
type: boolean
runs_nym_node_binary:
type: boolean
score:
type: number
format: double
description: Total score after taking all the criteria into consideration
self_described_api_available:
type: boolean
versions_behind:
type:
- integer
- 'null'
format: int32
minimum: 0
SignedMessage:
type: object
required:
- body
- signature
properties:
body:
$ref: '#/components/schemas/ChainBlocksStatusResponseBody'
signature:
type: string
DeclaredRolesV1:
type: object
required:
- mixnode
- entry
- exit_nr
- exit_ipr
properties:
entry:
type: boolean
exit_ipr:
type: boolean
exit_nr:
type: boolean
mixnode:
type: boolean
LewesProtocolDetailsDataV1:
type: object
required:
- enabled
- control_port
- data_port
- x25519
- kem_keys
properties:
control_port:
type: integer
format: int32
description: 'LP TCP control address (default: 41264) for establishing LP sessions'
minimum: 0
data_port:
type: integer
format: int32
description: 'LP UDP data address (default: 51264) for Sphinx packets wrapped in LP'
minimum: 0
enabled:
type: boolean
description: 'Helper field that specifies whether the LP listener(s) is enabled on this node.
It is directly controlled by the node''s role (i.e. it is enabled if it supports ''entry'' mode)'
kem_keys:
type: object
description: 'Digests
# --- truncated at 32 KB (48 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/nym-technologies/refs/heads/main/openapi/nym-technologies-nym-nodes-api-openapi.yml