---
title: "POST /client_config"
method: POST
path: "/client_config"
---

# POST /client_config

`POST /client_config`

Queries client node configuration

## Request body

- JsonRpcRequestForClientConfig
  - `id` string — JSON-RPC request id. Auto-populated; can be any string.
  - `jsonrpc` '2.0' — JSON-RPC protocol version. Always `2.0`.
  - `method` 'client_config', required
  - `params` unknown, required

## Response `200`

- union
  - object
    - `result` RpcClientConfigResponse, required — ClientConfig where some fields can be updated at runtime.
      - `archive` boolean — Not clear old data, set `true` for archive nodes.
      - `block_header_fetch_horizon` integer — Behind this horizon header fetch kicks in.
      - `block_production_tracking_delay` string
      - `catchup_step_period` integer[] — Time between check to perform catchup.
      - `chain_id` string — Chain id for status.
      - `chunk_distribution_network` union — Optional config for the Chunk Distribution Network feature. If set to `None` then this node does not participate in the Chunk Distribution Network. Nodes not participating will still function fine, but possibly with higher latency due to the need of requesting chunks over the peer-to-peer network.
        - ChunkDistributionNetworkConfig — Config for the Chunk Distribution Network feature. This allows nodes to push and pull chunks from a central stream. The two benefits of this approach are: (1) less request/response traffic on the peer-to-peer network and (2) lower latency for RPC nodes indexing the chain.
          - `enabled` boolean
          - `uris` ChunkDistributionUris — URIs for the Chunk Distribution Network feature.
            - `get` string — URI for pulling chunks from the stream.
            - `set` string — URI for publishing chunks to the stream.
        - unknown
      - `chunk_request_retry_period` integer[] — Time between checking to re-request chunks.
      - `chunk_validation_threads` integer — Number of threads for ChunkValidationActor pool.
      - `chunk_wait_mult` string
      - `chunks_cache_height_horizon` integer — Height horizon for the chunk cache. A chunk is removed from the cache if its height + chunks_cache_height_horizon < largest_seen_height. The default value is DEFAULT_CHUNKS_CACHE_HEIGHT_HORIZON.
      - `client_background_migration_threads` integer — Number of threads to execute background migration work in client.
      - `cloud_archival_writer` union — Configuration for a cloud-based archival writer. If this config is present, the writer is enabled and writes chunk-related data based on the tracked shards.
        - CloudArchivalWriterConfig — Configuration for a cloud-based archival writer. If this config is present, the writer is enabled and writes chunk-related data based on the tracked shards. This config also controls additional archival behavior such as block data and polling interval.
          - `archive_block_data` boolean — Determines whether block-related data should be written to cloud storage.
          - `polling_interval` DurationAsStdSchemaProvider
            - `nanos` integer, required
            - `secs` integer, required
          - `snapshot_every_n_epochs` integer — Cadence of state snapshots, in epochs. Higher values reduce bucket cost at the expense of potentially longer delta replay during reader bootstrap.
        - unknown
      - `disable_tx_routing` boolean — If true, the node won't forward transactions to next the chunk producers.
      - `doomslug_step_period` string
      - `enable_early_prepare_transactions` boolean — If true, transactions for the next chunk will be prepared early, right after the previous chunk's post-state is ready. This can help produce chunks faster, for high-throughput chains. The current implementation increases latency on low-load chains, which will be fixed in the future. The default is disabled.
      - `enable_multiline_logging` boolean
      - `enable_statistics_export` boolean — Re-export storage layer statistics as prometheus metrics.
      - `epoch_length` integer — Epoch length.
      - `epoch_sync` EpochSyncConfig
        - `epoch_sync_horizon_num_epochs` integer — Number of epochs behind the network head beyond which the node will use epoch sync instead of header sync. At the consumption site, this is multiplied by epoch_length to get the horizon in blocks.
        - `timeout_for_epoch_sync` DurationAsStdSchemaProvider
          - `nanos` integer, required
          - `secs` integer, required
      - `expected_shutdown` string
      - `gc` GCConfig — Configuration for garbage collection.
        - `gc_blocks_limit` integer — Maximum number of blocks to garbage collect at every garbage collection call.
        - `gc_fork_clean_step` integer — Maximum number of height to go through at each garbage collection step when cleaning forks during garbage collection.
        - `gc_num_epochs_to_keep` integer — Number of epochs for which we keep store data.
        - `gc_step_period` DurationAsStdSchemaProvider
          - `nanos` integer, required
          - `secs` integer, required
      - `header_sync_expected_height_per_second` integer — Expected increase of header head height per second during header sync
      - `header_sync_initial_timeout` integer[] — How much time to wait after initial header sync
      - `header_sync_progress_timeout` integer[] — How much time to wait after some progress is made in header sync
      - `header_sync_stall_ban_timeout` integer[] — How much time to wait before banning a peer in header sync if sync is too slow
      - `log_summary_period` integer[] — Period between logging summary information.
      - `log_summary_style` 'plain' | 'colored'
      - `max_block_production_delay` string
      - `max_block_wait_delay` string
      - `max_gas_burnt_view` union — Max burnt gas per view method. If present, overrides value stored in genesis file. The value only affects the RPCs without influencing the protocol thus changing it per-node doesn’t affect the blockchain.
        - integer
        - unknown
      - `min_block_production_delay` string
      - `min_num_peers` integer — Minimum number of peers to start syncing.
      - `num_block_producer_seats` integer — Number of block producer seats
      - `orphan_state_witness_max_size` integer — Maximum size of state witnesses in the OrphanStateWitnessPool. We keep only orphan witnesses which are smaller than this size. This limits the maximum memory usage of OrphanStateWitnessPool.
      - `orphan_state_witness_pool_size` integer — OrphanStateWitnessPool keeps instances of ChunkStateWitness which can't be processed because the previous block isn't available. The witnesses wait in the pool until the required block appears. This variable controls how many witnesses can be stored in the pool.
      - `produce_chunk_add_transactions_time_limit` string — Limit the time of adding transactions to a chunk. A node produces a chunk by adding transactions from the transaction pool until some limit is reached. This time limit ensures that adding transactions won't take longer than the specified duration, which helps to produce the chunk quickly.
      - `produce_empty_blocks` boolean — Produce empty blocks, use `false` for testing.
      - `protocol_version_check` 'Next' | 'NextNext' — Configures whether the node checks the next or the next next epoch for network version compatibility.
      - `receipt_to_tx_max_hint_window` integer — Max `±window` accepted on `EXPERIMENTAL_receipt_to_tx` requests. Caps caller's `window`. Applies to pre-first-scan `CenterOut` against caller's literal hint; ancestor scans use `receipt_to_tx_max_hop_distance` instead. Operators raising this should also raise `receipt_to_tx_max_hop_distance` so backward reach matches caller's wider hint scope. Requests with `window` over this rejected with `WindowTooLarge`.
      - `receipt_to_tx_max_hop_distance` integer — Max block-distance ancestor scan walks per hop once any scan in walk refreshed `current_height`. Subsequent column-miss scans visit `h, h-1, ..., h-max_hop_distance` from most-recent scan-refreshed anchor, regardless of column hits between. Anchor included — same-shard local receipts execute in same block as producing outcome. Raise if cold archival traffic shows ancestor misses — gap = scan-refreshed anchor to producer-outcome height of receipt with missing column row (column hits don't reset anchor). Default 20 (matches `receipt_to_tx_max_hint_window`).
      - `receipt_to_tx_max_outcomes_per_request` integer — Per-request ceiling on outcome rows the `EXPERIMENTAL_receipt_to_tx` hint-fallback scanner reads across hops + shards. Caps cold-RocksDB worst case on unauthenticated public endpoint. Default 20_000. Operators serving cold archival traffic with deep walks or sparse outcomes may raise; benchmark first (see TODO in `view_client_actor.rs`). Mid-scan exhaustion fails with `BudgetExceeded { scanned, limit }`.
      - `resharding_config` string
      - `rpc_addr` string, nullable — Listening rpc port for status.
      - `save_invalid_witnesses` boolean — Save observed instances of invalid ChunkStateWitness to the database in DBCol::InvalidChunkStateWitnesses. Saving invalid witnesses is useful for analysis and debugging. This option can cause extra load on the database and is not recommended for production use.
      - `save_latest_witnesses` boolean — Save observed instances of ChunkStateWitness to the database in DBCol::LatestChunkStateWitnesses. Saving the latest witnesses is useful for analysis and debugging. This option can cause extra load on the database and is not recommended for production use.
      - `save_receipt_to_tx` boolean — Whether to persist receipt-to-tx origin mappings to disk or not.
      - `save_state_changes` boolean — Whether to persist state changes on disk or not.
      - `save_trie_changes` boolean — save_trie_changes should be set to true iff - archive if false - non-archival nodes need trie changes to perform garbage collection - archive is true, cold_store is configured and migration to split_storage is finished - node working in split storage mode needs trie changes in order to do garbage collection on hot.
      - `save_tx_outcomes` boolean — Whether to persist transaction outcomes to disk or not.
      - `save_untracked_partial_chunks_parts` boolean — Whether to persist partial chunk parts for untracked shards or not.
      - `skip_sync_wait` boolean — Skip waiting for sync (for testing or single node testnet).
      - `state_request_server_threads` integer — Number of threads for StateRequestActor pool.
      - `state_request_throttle_period` integer[] — Number of seconds between state requests for view client. Throttling window for state requests (headers and parts).
      - `state_requests_per_throttle_period` integer — Maximum number of state requests served per throttle period
      - `state_sync` StateSyncConfig
        - `concurrency` SyncConcurrency
          - `apply` integer — Maximum number of "apply parts" tasks that can be performed in parallel. This is a very disk-heavy task and therefore we set this to a low limit, or else the rocksdb contention makes the whole server freeze up.
          - `apply_during_catchup` integer — Maximum number of "apply parts" tasks that can be performed in parallel during catchup. We set this to a very low value to avoid overloading the node while it is still performing normal tasks.
          - `peer_downloads` integer — Maximum number of outstanding requests for decentralized state sync.
          - `per_shard` integer — The maximum parallelism to use per shard. This is mostly for fairness, because the actual rate limiting is done by the TaskTrackers, but this is useful for balancing the shards a little.
        - `dump` union — `none` value disables state dump to external storage.
          - DumpConfig — Configures how to dump state to external storage.
            - `credentials_file` string, nullable — Location of a json file with credentials allowing access to the bucket.
            - `iteration_delay` union — How often to check if a new epoch has started. Feel free to set to `None`, defaults are sensible.
              - …
            - `location` union — Supported external storage backends and their minimal config.
              - …
            - `restart_dump_for_shards` ShardId[], nullable — Use in case a node that dumps state to the external storage gets in trouble.
          - unknown
        - `parts_compression_lvl` integer — Zstd compression level for state parts.
        - `sync` 'Peers' — Syncs state from the peers without reading anything from external storage.
      - `state_sync_external_timeout` integer[] — How long to wait for a state sync block request response
      - `state_sync_p2p_timeout` integer[] — How long to wait for a response from p2p state sync
      - `state_sync_retry_backoff` integer[] — How long to wait after a failed state sync request
      - `sync_check_period` integer[] — How often to check that we are not out of sync.
      - `sync_height_threshold` integer — Sync height threshold: below this difference in height don't start syncing.
      - `sync_max_block_requests` integer — Maximum number of block requests to send to peers to sync
      - `sync_step_period` integer[] — While syncing, how long to check for each step.
      - `tracked_shards_config` union — Describes the expected behavior of the node regarding shard tracking. If the node is an active validator, it will also track the shards it is responsible for as a validator.
        - 'NoShards' — Tracks no shards (light client).
        - object — Tracks arbitrary shards.
          - `Shards` ShardUId[], required
            - `shard_id` integer, required
            - `version` integer, required
        - 'AllShards' — Tracks all shards.
        - object — Tracks shards that are assigned to given validator account.
          - `ShadowValidator` string, required — NEAR Account Identifier. This is a unique, syntactically valid, human-readable account identifier on the NEAR network. [See the crate-level docs for information about validation.](index.html#account-id-rules) Also see [Error kind precedence](AccountId#error-kind-precedence). ## Examples ``` use near_account_id::AccountId; let alice: AccountId = "alice.near".parse().unwrap(); assert!("ƒelicia.near".parse::<AccountId>().is_err()); // (ƒ is not f) ```
        - object — Rotate between these sets of tracked shards. Used to simulate the behavior of chunk only producers without staking tokens.
          - `Schedule` array[], required
            - ShardId[]
        - object — Tracks shards that contain one of the given account.
          - `Accounts` AccountId[], required
      - `transaction_pool_size_limit` integer, nullable — Limit of the size of per-shard transaction pool measured in bytes. If not set, the size will be unbounded.
      - `transaction_pool_strict_nonce_ttl_blocks` integer — TTL in blocks for gapped strict-nonce transactions in the pool. Transactions with a nonce gap whose block_hash is older than this many blocks are evicted during prepare_transactions.
      - `transaction_request_handler_threads` integer
      - `trie_viewer_state_size_limit` integer, nullable — Upper bound of the byte size of contract state that is still viewable. None is no limit
      - `ttl_account_id_router` integer[] — Time to persist Accounts Id in the router without removing them.
      - `tx_routing_height_horizon` integer — If the node is not a chunk producer within that many blocks, then route to upcoming chunk producers.
      - `version` Version — Data structure for semver version and github tag or commit.
        - `build` string, required
        - `commit` string, required
        - `rustc_version` string
        - `version` string, required
      - `view_access_keys_limit` integer — Upper bound on the number of access keys returned by a `view_access_key_list` query.
      - `view_client_threads` integer — Number of threads for ViewClientActor pool.
    - `id` string, required
    - `jsonrpc` string, required
  - object
    - `error` union, required
      - object
        - `cause` union, required
          - object
            - `info` object, required
              - …
            - `name` 'METHOD_NOT_FOUND', required
          - object
            - `info` object, required
              - …
            - `name` 'PARSE_ERROR', required
        - `name` 'REQUEST_VALIDATION_ERROR', required
      - object
        - `cause` RpcClientConfigError, required
          - `info` object, required
            - `error_message` string, required
          - `name` 'INTERNAL_ERROR', required
        - `name` 'HANDLER_ERROR', required
      - object
        - `cause` InternalError, required
          - `info` object, required
            - `error_message` string, required
          - `name` 'INTERNAL_ERROR', required
        - `name` 'INTERNAL_ERROR', required
    - `id` string, required
    - `jsonrpc` string, required

---

[API](https://skmtc.net/near/apis/near-protocol-json-rpc-api.md) · [All operations](https://skmtc.net/near/apis/near-protocol-json-rpc-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/near/near-protocol-json-rpc-api/versions/cb6bdde6167d/schema)
