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

# POST /EXPERIMENTAL_changes

`POST /EXPERIMENTAL_changes`

[Deprecated] Returns changes for a given account, contract or contract code for given block height or hash. Consider using changes instead.

## Request body

- JsonRpcRequestForEXPERIMENTALChanges
  - `id` string — JSON-RPC request id. Auto-populated; can be any string.
  - `jsonrpc` '2.0' — JSON-RPC protocol version. Always `2.0`.
  - `method` 'EXPERIMENTAL_changes', required
  - `params` union, required — It is a [serializable view] of [`StateChangesRequest`]. [serializable view]: ./index.html [`StateChangesRequest`]: ../types/struct.StateChangesRequest.html
    - object
      - `block_id` union, required
        - integer
        - string
      - `account_ids` AccountId[], required
      - `changes_type` 'account_changes', required
    - object
      - `block_id` union, required
        - integer
        - string
      - `changes_type` 'single_access_key_changes', required
      - `keys` AccountWithPublicKey[], required
        - `account_id` 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) ```
        - `public_key` string, required
    - object
      - `block_id` union, required
        - integer
        - string
      - `account_ids` AccountId[], required
      - `changes_type` 'all_access_key_changes', required
    - object
      - `block_id` union, required
        - integer
        - string
      - `account_ids` AccountId[], required
      - `changes_type` 'contract_code_changes', required
    - object
      - `block_id` union, required
        - integer
        - string
      - `account_ids` AccountId[], required
      - `changes_type` 'data_changes', required
      - `key_prefix_base64` string, bytes, required — This type is used to mark keys (arrays of bytes) that are queried from store. NOTE: Currently, this type is only used in the view_client and RPC to be able to transparently pretty-serialize the bytes arrays as base64-encoded strings (see `serialize.rs`).
    - object
      - `finality` 'optimistic' | 'near-final' | 'final', required — Different types of finality.
      - `account_ids` AccountId[], required
      - `changes_type` 'account_changes', required
    - object
      - `finality` 'optimistic' | 'near-final' | 'final', required — Different types of finality.
      - `changes_type` 'single_access_key_changes', required
      - `keys` AccountWithPublicKey[], required
        - `account_id` 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) ```
        - `public_key` string, required
    - object
      - `finality` 'optimistic' | 'near-final' | 'final', required — Different types of finality.
      - `account_ids` AccountId[], required
      - `changes_type` 'all_access_key_changes', required
    - object
      - `finality` 'optimistic' | 'near-final' | 'final', required — Different types of finality.
      - `account_ids` AccountId[], required
      - `changes_type` 'contract_code_changes', required
    - object
      - `finality` 'optimistic' | 'near-final' | 'final', required — Different types of finality.
      - `account_ids` AccountId[], required
      - `changes_type` 'data_changes', required
      - `key_prefix_base64` string, bytes, required — This type is used to mark keys (arrays of bytes) that are queried from store. NOTE: Currently, this type is only used in the view_client and RPC to be able to transparently pretty-serialize the bytes arrays as base64-encoded strings (see `serialize.rs`).
    - object
      - `sync_checkpoint` 'genesis' | 'earliest_available', required
      - `account_ids` AccountId[], required
      - `changes_type` 'account_changes', required
    - object
      - `sync_checkpoint` 'genesis' | 'earliest_available', required
      - `changes_type` 'single_access_key_changes', required
      - `keys` AccountWithPublicKey[], required
        - `account_id` 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) ```
        - `public_key` string, required
    - object
      - `sync_checkpoint` 'genesis' | 'earliest_available', required
      - `account_ids` AccountId[], required
      - `changes_type` 'all_access_key_changes', required
    - object
      - `sync_checkpoint` 'genesis' | 'earliest_available', required
      - `account_ids` AccountId[], required
      - `changes_type` 'contract_code_changes', required
    - object
      - `sync_checkpoint` 'genesis' | 'earliest_available', required
      - `account_ids` AccountId[], required
      - `changes_type` 'data_changes', required
      - `key_prefix_base64` string, bytes, required — This type is used to mark keys (arrays of bytes) that are queried from store. NOTE: Currently, this type is only used in the view_client and RPC to be able to transparently pretty-serialize the bytes arrays as base64-encoded strings (see `serialize.rs`).

## Response `200`

- union
  - object
    - `result` RpcStateChangesInBlockResponse, required
      - `block_hash` string, required
      - `changes` StateChangeWithCauseView[], required
        - union
          - object
            - `change` object, required — A view of the account
              - …
            - `type` 'account_update', required
            - `cause` union, required — See crate::types::StateChangeCause for details.
              - …
          - object
            - `change` object, required
              - …
            - `type` 'account_deletion', required
            - `cause` union, required — See crate::types::StateChangeCause for details.
              - …
          - object
            - `change` object, required
              - …
            - `type` 'access_key_update', required
            - `cause` union, required — See crate::types::StateChangeCause for details.
              - …
          - object
            - `change` object, required
              - …
            - `type` 'access_key_deletion', required
            - `cause` union, required — See crate::types::StateChangeCause for details.
              - …
          - object
            - `change` object, required
              - …
            - `type` 'gas_key_nonce_update', required
            - `cause` union, required — See crate::types::StateChangeCause for details.
              - …
          - object
            - `change` object, required
              - …
            - `type` 'data_update', required
            - `cause` union, required — See crate::types::StateChangeCause for details.
              - …
          - object
            - `change` object, required
              - …
            - `type` 'data_deletion', required
            - `cause` union, required — See crate::types::StateChangeCause for details.
              - …
          - object
            - `change` object, required
              - …
            - `type` 'contract_code_update', required
            - `cause` union, required — See crate::types::StateChangeCause for details.
              - …
          - object
            - `change` object, required
              - …
            - `type` 'contract_code_deletion', required
            - `cause` union, required — See crate::types::StateChangeCause for details.
              - …
    - `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` union, required
          - object
            - `info` object, required
            - `name` 'UNKNOWN_BLOCK', required
          - object
            - `name` 'NOT_SYNCED_YET', required
          - object
            - `info` object, required
              - …
            - `name` 'INTERNAL_ERROR', required
          - object
            - `info` object, required
              - …
            - `name` 'SHARD_NOT_APPLIED', 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)
