POSTcontract_code_changes

NEAR Mainnethttps://near-mainnet.nodit.io/

Returns, per block, the contract code changes (deployments and deletions) of the given accounts. When code is deployed, the full Wasm code is included in base64.

Call the changes method with changes_type: "contract_code_changes" and the account IDs in account_ids. If the code did not change in that block, changes is an empty array. If the block cannot be found, the UNKNOWN_BLOCK error is returned. EXPERIMENTAL_changes is the former name of this method.

Request Body
jsonrpcstringrequired
idstringrequired

Request ID. Any string; it is returned unchanged in the response.

methodstringrequired
changes_typestring (enum)required

Change query type. Fixed to contract_code_changes.

finalitystring (enum)

Specifies the block finality. Cannot be used together with block_id.

  • optimistic: the latest block the node has received (may be reorganized)
  • near-final: a Doomslug-final block (not reverted in most cases)
  • final: a fully finalized block
block_idinteger

Specifies the block to query by block height (integer) or block hash (base58 string). Cannot be used together with finality.

account_idsstring[]required

Account IDs to get changes for

Responses
jsonrpcstring

JSON-RPC version

idstring

Request ID

block_hashstring

Hash of the queried block (base58)

changesobject[]

List of contract code changes. Empty when nothing changed in that block.

causeobject

Cause of the change

typestring (enum)

Cause type

  • transaction_processing: transaction processing (includes tx_hash)
  • receipt_processing: receipt processing (includes receipt_hash)
  • action_receipt_processing_started: action receipt processing started (includes receipt_hash)
  • action_receipt_gas_reward: gas reward paid for receipt execution (includes receipt_hash)
  • postponed_receipt: receipt postponed while waiting for data (includes receipt_hash)
  • updated_delayed_receipts: delayed receipt queue updated
  • validator_accounts_update: validator accounts updated at an epoch change
  • migration: protocol migration
  • initial_state: genesis initial state
  • not_writable_to_disk: change that is not written to disk
  • bandwidth_scheduler_state_update: bandwidth scheduler state updated
tx_hashstring

Hash of the causing transaction. Present only when type is transaction_processing. (base58)

receipt_hashstring

Hash of the causing receipt. Present only for receipt-related causes. (base58)

typestring (enum)

Change type

  • contract_code_update: contract code deployed
  • contract_code_deletion: contract code deleted
changeobject

The changed contract code. For contract_code_deletion, only account_id is present.

account_idstring

Contract account ID

code_base64string

Full deployed Wasm code (base64)

namestring (enum)

Error class. REQUEST_VALIDATION_ERROR (invalid request), HANDLER_ERROR (processing error), INTERNAL_ERROR (node internal error)

causeobject

The specific cause of the error.

namestring

Name of the error cause (e.g. UNKNOWN_BLOCK, UNKNOWN_ACCOUNT, PARSE_ERROR)

infoobject

Additional information about the error (block hash, height, account ID, etc.)

codeinteger

Legacy JSON-RPC error code (e.g. -32000 server error, -32700 parse error, -32601 method not found)

messagestring

Legacy error message

datastring

Legacy error details

X-API-KEY
RequestCU30
cURL
curl -X POST "https://near-mainnet.nodit.io/" \
  -H "X-API-KEY: {YOUR_API_KEY}" \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": "dontcare",
    "method": "changes",
    "params": {
      "changes_type": "contract_code_changes",
      "finality": "final",
      "block_id": 220785385,
      "account_ids": [
        "wrap.near"
      ]
    }
  }'
Response
Example · 200
{
  "jsonrpc": "2.0",
  "id": "dontcare",
  "result": {
    "block_hash": "8EjuQRnAJiWkRmqxfexQFJWXXonuSMbz5AZziJLCWnWS",
    "changes": []
  }
}