# Execution APIs v1.0.0 - Versioning Proposal > **Purpose**: Establish the first tagged release to enable version referencing > **Related Issue**: [#690 - API versioning via GitHub releases/tags](https://github.com/ethereum/execution-apis/issues/690) > **Repository**: [ethereum/execution-apis](https://github.com/ethereum/execution-apis) > **Date**: February 2026 --- ## Background ### Why We Need This Currently there's no way to refer to a specific version of the API specifications ([Issue #690](https://github.com/ethereum/execution-apis/issues/690)). This creates problems: - **Service providers** cannot advertise which API version they support - **Clients** don't know when API changes occur - **No GitHub releases/tags** exist for version tracking ### Related Discussions - [Issue #690](https://github.com/ethereum/execution-apis/issues/690) - API versioning via GitHub releases/tags (Aug 2025) - [Issue #408](https://github.com/ethereum/execution-apis/issues/408) - Uniform versioning scheme for methods (May 2023) ### Existing Versioning Strategy The repository already documents [semantic versioning](https://semver.org/) in the README: | Release Type | What It Includes | |--------------|------------------| | **Major** | Breaking changes: new required fields, changed response types, renamed fields, new tests | | **Minor** | Backward-compatible: optional params, new error codes, removing tests | | **Patch** | Internal: typos, docs, tooling | **However**, this has not been implemented via GitHub releases/tags. --- ## Analysis: What Should Go in v1 ### Current State Summary The repository currently contains: | Namespace | Method Count | Notes | |-----------|--------------|-------| | `eth_*` | 41 methods | Core JSON-RPC interface | | `engine_*` | 25 methods | Consensus/execution layer communication | | `debug_*` | 5 methods | Raw data retrieval | **Additional context:** - Comprehensive test coverage for 30 methods (11 methods lack tests per [#737](https://github.com/ethereum/execution-apis/issues/737)) - Method-level versioning for Engine API (e.g., `newPayloadV1` through `newPayloadV5`) - Fork-based organization: Paris → Shanghai → Cancun → Prague → Osaka → Amsterdam --- ## Open PRs - Categorized for v1 Decision ### Include in v1 | PR | Title | Rationale | |----|-------|-----------| | [#753](https://github.com/ethereum/execution-apis/pull/753) | Fix: engine nits | Bug fixes/nits should be merged before release | | [#742](https://github.com/ethereum/execution-apis/pull/742) | test(debug_getRawReceipts): use post-Byzantium block for get-block-n test | Test improvement, no risk | ### Needs Discussion | PR | Title | Rationale | |----|-------|-----------| | [#746](https://github.com/ethereum/execution-apis/pull/746) | Add `maxUseGas` field to `eth_simulateV1` | Enhancement to existing method - could be minor release | ### Defer to Later Release | PR | Title | Rationale | |----|-------|-----------| | [#747](https://github.com/ethereum/execution-apis/pull/747) | Add `testing_buildBlockV1` RPC Method | New experimental method | | [#710](https://github.com/ethereum/execution-apis/issues/710) | Add RPC endpoint `testing_buildBlockV1` | Duplicate of #747 | | [#735](https://github.com/ethereum/execution-apis/pull/735) | EIP-8025 | New EIP, not yet widely adopted | | [#726](https://github.com/ethereum/execution-apis/pull/726) | Add EIP-7928 Block-level Access Lists JSON RPC methods | New EIP, still evolving | --- ## Key Issues to Resolve Before v1 ### Critical Priority | Issue | Title | Impact | |-------|-------|--------| | [#690](https://github.com/ethereum/execution-apis/issues/690) | API versioning via GitHub releases/tags | Directly about the versioning process itself | | [#658](https://github.com/ethereum/execution-apis/issues/658) | Standardize JSON-RPC Error codes | Affects all methods; breaking if changed later | | [#650](https://github.com/ethereum/execution-apis/issues/650) | JSON RPC Error codes standardization using open-rpc extension specs | Related to #658 | ### High Priority | Issue | Title | Impact | |-------|-------|--------| | [#713](https://github.com/ethereum/execution-apis/issues/713) | Fully apply EIP-1898 in specs | Consistency issue across methods | ### Medium Priority | Issue | Title | Impact | |-------|-------|--------| | [#737](https://github.com/ethereum/execution-apis/issues/737) | Missing Test Coverage for 11 JSON-RPC Methods | Gaps in validation | | [#663](https://github.com/ethereum/execution-apis/issues/663) | GenericTransaction Should Contain `data` in the schema | Schema correctness | | [#634](https://github.com/ethereum/execution-apis/issues/634) | Is the pattern for the byte type correct? | Schema correctness | | [#648](https://github.com/ethereum/execution-apis/issues/648) | Correct example value type for `terminalTotalDifficulty` | Documentation accuracy | --- ## Suggested v1 Scope ### Include (Stable, Core) - All existing `eth_*` methods with full test coverage - Engine API through Cancun fork (V1-V3 methods) - Debug API as-is - [PR #753](https://github.com/ethereum/execution-apis/pull/753) (engine nits fix) - [PR #742](https://github.com/ethereum/execution-apis/pull/742) (test improvement) ### Defer to v1.1/v2 - Prague/Osaka/Amsterdam fork methods (still in development) - New EIP-specific methods ([#726](https://github.com/ethereum/execution-apis/pull/726), [#735](https://github.com/ethereum/execution-apis/pull/735)) - `testing_buildBlockV1` ([#747](https://github.com/ethereum/execution-apis/pull/747), [#710](https://github.com/ethereum/execution-apis/issues/710)) - experimental - `eth_getCapabilities` ([#697](https://github.com/ethereum/execution-apis/issues/697)) - still a proposal ### Must Resolve Before v1 - [Issue #690](https://github.com/ethereum/execution-apis/issues/690) - versioning scheme itself - [Issue #658](https://github.com/ethereum/execution-apis/issues/658) - error code standardization --- ## Detailed v1.0.0 Scope ### Eth Namespace (41 methods) #### Account Methods (4) | Method | Description | |--------|-------------| | `eth_accounts` | Returns list of addresses owned by client | | `eth_getBalance` | Returns balance of account at given address | | `eth_getCode` | Returns code at a given address | | `eth_getProof` | Returns account and storage values with Merkle proof | #### Block Methods (6) | Method | Description | |--------|-------------| | `eth_blockNumber` | Returns current block number | | `eth_getBlockByHash` | Returns block by hash | | `eth_getBlockByNumber` | Returns block by number | | `eth_getBlockReceipts` | Returns all receipts for a block | | `eth_getBlockTransactionCountByHash` | Returns transaction count in block by hash | | `eth_getBlockTransactionCountByNumber` | Returns transaction count in block by number | #### Transaction Methods (8) | Method | Description | |--------|-------------| | `eth_getTransactionByHash` | Returns transaction by hash | | `eth_getTransactionByBlockHashAndIndex` | Returns transaction by block hash and index | | `eth_getTransactionByBlockNumberAndIndex` | Returns transaction by block number and index | | `eth_getTransactionCount` | Returns number of transactions sent from address | | `eth_getTransactionReceipt` | Returns receipt of transaction by hash | | `eth_sendRawTransaction` | Submits pre-signed transaction | | `eth_sendTransaction` | Creates and sends transaction | | `eth_signTransaction` | Signs transaction without sending | #### Execution Methods (4) | Method | Description | |--------|-------------| | `eth_call` | Executes call without creating transaction | | `eth_estimateGas` | Estimates gas for transaction | | `eth_createAccessList` | Creates access list for transaction | | `eth_simulateV1` | Simulates sequence of calls | #### Filter Methods (7) | Method | Description | |--------|-------------| | `eth_newFilter` | Creates filter for logs | | `eth_newBlockFilter` | Creates filter for new blocks | | `eth_newPendingTransactionFilter` | Creates filter for pending transactions | | `eth_getFilterChanges` | Returns filter changes since last poll | | `eth_getFilterLogs` | Returns all logs matching filter | | `eth_uninstallFilter` | Uninstalls filter | | `eth_getLogs` | Returns logs matching filter object | #### Fee/Gas Methods (4) | Method | Description | |--------|-------------| | `eth_gasPrice` | Returns current gas price | | `eth_maxPriorityFeePerGas` | Returns max priority fee per gas | | `eth_feeHistory` | Returns historical gas information | | `eth_blobBaseFee` | Returns current blob base fee | #### Network Methods (4) | Method | Description | |--------|-------------| | `eth_chainId` | Returns chain ID | | `eth_syncing` | Returns sync status | | `eth_coinbase` | Returns client coinbase address | | `net_version` | Returns network ID | #### Storage Methods (1) | Method | Description | |--------|-------------| | `eth_getStorageAt` | Returns storage value at position | #### Signing Methods (1) | Method | Description | |--------|-------------| | `eth_sign` | Signs data with account | #### Legacy/Uncle Methods (2) | Method | Description | |--------|-------------| | `eth_getUncleCountByBlockHash` | Returns uncle count by block hash | | `eth_getUncleCountByBlockNumber` | Returns uncle count by block number | --- ### Engine Namespace (Through Cancun Fork) #### V1 Methods (Paris/Merge) | Method | Description | |--------|-------------| | `engine_newPayloadV1` | Validate and execute payload | | `engine_getPayloadV1` | Get execution payload | | `engine_forkchoiceUpdatedV1` | Update fork choice state | | `engine_exchangeTransitionConfigurationV1` | Exchange transition configuration | #### V2 Methods (Shanghai) | Method | Description | |--------|-------------| | `engine_newPayloadV2` | Validate and execute payload (with withdrawals) | | `engine_getPayloadV2` | Get execution payload (with withdrawals) | | `engine_forkchoiceUpdatedV2` | Update fork choice state (with withdrawals) | | `engine_getPayloadBodiesByHashV1` | Get payload bodies by hash | | `engine_getPayloadBodiesByRangeV1` | Get payload bodies by range | #### V3 Methods (Cancun) | Method | Description | |--------|-------------| | `engine_newPayloadV3` | Validate and execute payload (with blobs) | | `engine_getPayloadV3` | Get execution payload (with blobs) | | `engine_forkchoiceUpdatedV3` | Update fork choice state (with blobs) | | `engine_getBlobsV1` | Get blobs by versioned hashes | #### Utility Methods | Method | Description | |--------|-------------| | `engine_exchangeCapabilities` | Exchange supported methods | | `engine_getClientVersionV1` | Get client version info | --- ### Debug Namespace (5 methods) | Method | Description | |--------|-------------| | `debug_getRawBlock` | Returns RLP-encoded block | | `debug_getRawHeader` | Returns RLP-encoded header | | `debug_getRawReceipts` | Returns RLP-encoded receipts | | `debug_getRawTransaction` | Returns RLP-encoded transaction | --- ### PRs to Merge Before Tagging v1.0.0 | PR | Title | Status | Rationale | |----|-------|--------|-----------| | [#753](https://github.com/ethereum/execution-apis/pull/753) | Fix: engine nits | Open | Cleanup before release | | [#742](https://github.com/ethereum/execution-apis/pull/742) | test(debug_getRawReceipts): use post-Byzantium block | Open | Test improvement | --- ## Deferred to v1.1 or v2 ### Future Fork Methods (Prague/Osaka/Amsterdam) These methods are still in development and should not be included in v1: | Method | Fork | Status | |--------|------|--------| | `engine_newPayloadV4` | Prague | In development | | `engine_newPayloadV5` | Osaka/Amsterdam | In development | | `engine_getPayloadV4` | Prague | In development | | `engine_getPayloadV5` | Osaka | In development | | `engine_getPayloadV6` | Amsterdam | In development | | `engine_forkchoiceUpdatedV4` | Prague | In development | | `engine_getBlobsV2` | Prague | In development | | `engine_getBlobsV3` | Osaka/Amsterdam | In development | | `engine_getPayloadBodiesByHashV2` | Prague | In development | | `engine_getPayloadBodiesByRangeV2` | Prague | In development | ### New Method Proposals | Issue/PR | Method | Reason to Defer | |----------|--------|-----------------| | [#747](https://github.com/ethereum/execution-apis/pull/747), [#710](https://github.com/ethereum/execution-apis/issues/710) | `testing_buildBlockV1` | Experimental testing utility, duplicate PRs need consolidation | | [#705](https://github.com/ethereum/execution-apis/issues/705) | `admin_mineBlock` | Testing utility, not core functionality | | [#697](https://github.com/ethereum/execution-apis/issues/697) | `eth_getCapabilities` | Still a proposal, needs discussion | | [#752](https://github.com/ethereum/execution-apis/issues/752) | `eth_getStorageValues` | New proposal for batch storage retrieval | ### New EIP Support | Issue/PR | EIP | Reason to Defer | |----------|-----|-----------------| | [#735](https://github.com/ethereum/execution-apis/pull/735) | EIP-8025 | Not yet widely adopted | | [#726](https://github.com/ethereum/execution-apis/pull/726) | EIP-7928 Block-level Access Lists | Still evolving | | [#678](https://github.com/ethereum/execution-apis/issues/678) | EIP-7910 `eth_config` | Needs more community input | ### Enhancements to Existing Methods | Issue/PR | Enhancement | Reason to Defer | |----------|-------------|-----------------| | [#746](https://github.com/ethereum/execution-apis/pull/746) | `maxUseGas` field for `eth_simulateV1` | Additive enhancement, suitable for minor release | | [#700](https://github.com/ethereum/execution-apis/issues/700) | EIP-7702 authorization handling in `eth_call`/`eth_estimateGas` | Needs more discussion | | [#640](https://github.com/ethereum/execution-apis/issues/640) | Authorization status in EIP-7702 transaction receipts | Dependent on EIP-7702 adoption | | [#638](https://github.com/ethereum/execution-apis/issues/638) | `eth_estimateGas` tests for EIP-7702 and EIP-7623 | Dependent on EIP adoption | | [#696](https://github.com/ethereum/execution-apis/issues/696) | Add example for `eth_simulateV1` | Documentation, can be added anytime | ### Documentation/Tooling Issues (Non-blocking) | Issue | Title | Notes | |-------|-------|-------| | [#660](https://github.com/ethereum/execution-apis/issues/660) | Metamask OpenRPC Docusaurus Plugin - Deprecated | Tooling migration | | [#655](https://github.com/ethereum/execution-apis/issues/655) | Separate `debug`, `engine`, and `eth` namespaces in docs | Documentation organization | | [#651](https://github.com/ethereum/execution-apis/issues/651) | Call to Standardize `debug` Methods | Future standardization effort | | [#673](https://github.com/ethereum/execution-apis/issues/673) | Add open-rpc linter to CI | Tooling improvement | | [#644](https://github.com/ethereum/execution-apis/issues/644) | Fee Recipient is not COINBASE | Documentation clarification | --- ## Open Questions for Team Please provide input on the following decisions: ### 1. Error Code Standardization **Issue**: [#658](https://github.com/ethereum/execution-apis/issues/658), [#650](https://github.com/ethereum/execution-apis/issues/650) Should we standardize JSON-RPC error codes before v1, or accept the current state and standardize in v2? - **Option A**: Standardize before v1 (delays release, but avoids breaking change later) - **Option B**: Accept current state, standardize in v2 (ships sooner, but breaking change in future) ### 2. Test Coverage Gap **Issue**: [#737](https://github.com/ethereum/execution-apis/issues/737) 11 methods currently lack test coverage. Should we: - **Option A**: Block v1 release until all 41 `eth_*` methods have tests - **Option B**: Release v1 with current coverage, add missing tests in v1.x ### 3. eth_simulateV1 Enhancement **PR**: [#746](https://github.com/ethereum/execution-apis/pull/746) Should we include the `maxUseGas` field addition in v1? - **Option A**: Include in v1 (additive, backward-compatible) - **Option B**: Defer to v1.1 (keep v1 minimal) ### 4. EIP-1898 Compliance **Issue**: [#713](https://github.com/ethereum/execution-apis/issues/713) Should we fully apply EIP-1898 across all specs before v1? - **Option A**: Yes, ensure full compliance (may require spec updates) - **Option B**: Document current state, address in v1.x ### 5. Prague Fork Methods Are any V4/V5 Engine API methods stable enough to include in v1, or should all Prague+ methods be deferred? --- ## Next Steps ### Before Tagging v1.0.0 - [ ] Reach consensus on open questions above - [ ] Merge [PR #753](https://github.com/ethereum/execution-apis/pull/753) (engine nits) - [ ] Merge [PR #742](https://github.com/ethereum/execution-apis/pull/742) (debug test fix) - [ ] Decide on [#658](https://github.com/ethereum/execution-apis/issues/658) (error codes) - block or defer? - [ ] Update [Issue #690](https://github.com/ethereum/execution-apis/issues/690) with versioning decision - [ ] Create release notes documenting what's included - [ ] Tag `v1.0.0` on GitHub ### Post v1.0.0 - [ ] Close [Issue #690](https://github.com/ethereum/execution-apis/issues/690) - [ ] Plan v1.1 scope (Prague methods, deferred enhancements) - [ ] Address remaining medium-priority issues --- ## Feedback Please add your comments below or react with: | Reaction | Meaning | |----------|---------| | :+1: | Agree with proposal | | :-1: | Have concerns (please comment) | | :eyes: | Need more information | | :rocket: | Ready to ship |