[Breaking] 2026-01-15
The updates described in this notice will be applied on February 3, 2026.
Aptos event querying and Webhook payload formats are being updated to improve developer experience and data clarity. This update introduces two new Event APIs and provides more accurate fee payer signature information in Aptos Webhooks.
What’s Changing
✅ New: Aptos Event APIs Added
The following APIs are newly added:
- Get Events By Type
- Get Events By Account
The Event schema previously available through the Aptos Indexer API will no longer be provided for event queries.
Instead, you can query events using the new Event APIs with a unified experience across event types.
The Aptos Indexer API Event schema is not being removed on February 3, 2026.
Any deprecation timeline and removal plan will be shared in a separate announcement.
Recommended Actions
- Migrate Aptos event queries to the new Event APIs
- Remove dependency on the Indexer Event schema
✅ Improved: More Accurate Webhook
Aptos Webhook payloads will return more accurate fee payer signature details and cleaner payload structures:
signature.typeis normalized for transactions that include a fee payer- For some signature types,
public_keyandsignaturecan be returned as structured objects - Multisig payloads return actual values and omit unnecessary empty fields
Recommended Actions
- Update Webhook parsers to handle
signature.type = fee_payer_signature - Support
public_key/signaturefields as either a string or an object depending on signature type - Optionally leverage the new fee payer and secondary signer fields if needed
1. New Aptos Event APIs
Aptos Events have historically required different query methods depending on event type:
- Module event types → Indexer API
- Legacy event types (event-handle) → Node API
With the new Event APIs, you can query both module events and legacy(event-handle) events through the same interface.
As-is
To fetch Aptos Events, you needed to choose APIs based on event type:
- Module events → use Indexer API
- Legacy (event-handle) events → use Node API
As a result, event querying often required maintaining multiple query paths and separate response handling.
To-be
Events can now be queried via the new unified Event APIs:
- Get Events By Type
- Get Events By Account
These APIs support both module-based and legacy(event-handle) event types, so you no longer need to switch between Indexer and Node APIs.
Action Required (Aptos Event APIs)
If your integration currently queries Aptos Events:
- Replace event queries with the new APIs:
- Use Get Events By Type when the event type is known
- Use Get Events By Account when you want events scoped to an account
- Remove dependency on the Indexer Event schema for event queries
- Simplify event-query logic by using the new Event APIs only (no need to branch by module vs. event-handle event types)
2. Aptos Webhook Changes
These changes are intended to provide more accurate fee payer signature information and a more explicit structure for certain signature and multisig payload fields.
Changes Summary
| Field | As-is | To-be |
|---|---|---|
signature.type | multi_agent_signature | fee_payer_signature |
signature.type | single_sender_keyless_signature | fee_payer_signature |
signature.public_key / signature.signature | flat string ("0x...") | object ({type, value}) |
signature.fee_payer_address | not returned | returned |
signature.fee_payer_signer | not returned | returned |
signature.secondary_signers | not returned | returned |
payload.type_arguments (multisig) | [] | actual values |
payload.transaction_payload (null case) | {function: "", arguments: []} | removed |
2-1) type (Fee Payer Transactions)
When a transaction includes a fee payer, the signature type is now returned as fee_payer_signature.
| As-is | To-be |
|---|---|
multi_agent_signature | fee_payer_signature |
single_sender_keyless_signature | fee_payer_signature |
2-2) public_key, signature (Keyless/Fee Payer Transactions)
For keyless transactions that include a fee payer, the signature object becomes more explicit and structured.
As-is
{
"type": "single_sender_keyless_signature",
"public_key": "0x1b68...",
"signature": "0x0000c69c..."
}
To-be
{
"type": "fee_payer_signature",
"fee_payer_address": "0x6d3e0c4576274ce99f20958925edaf74412b850ce01fb933deb4b70509f62d0a",
"fee_payer_signer": {
"public_key": "0xcac0431f...",
"signature": "0x19abd661...",
"type": "ed25519_signature"
},
"secondary_signer_addresses": [],
"secondary_signers": [],
"sender": {
"public_key": { "type": "keyless", "value": "0x1b68..." },
"signature": { "type": "keyless", "value": "0x0000c69c..." },
"type": "single_key_signature"
}
}
Key updates:
- New fee payer fields are included:
fee_payer_addressfee_payer_signer
- Secondary signer fields are included when applicable:
secondary_signer_addressessecondary_signers
- For special signature types (e.g., keyless),
public_keyandsignaturecan be returned as{type, value}objects
2-3) type_arguments (Multisig Payload Transactions)
For multisig_payload transactions, type_arguments now returns actual values instead of an empty array.
As-is
{
"payload": {
"type": "multisig_payload",
"transaction_payload": {
"function": "0x1::aptos_account::transfer_coins",
"type_arguments": [],
"arguments": []
}
}
}
To-be
{
"payload": {
"type": "multisig_payload",
"transaction_payload": {
"function": "0x1::aptos_account::transfer_coins",
"type_arguments": ["0x1::aptos_coin::AptosCoin"],
"arguments": []
}
}
}
2-4) transaction_payload (multisig_payload null case)
When transaction_payload is null, unnecessary empty fields(e.g., type_arguments, transaction_payload) are no longer included.
As-is
{
"payload": {
"type": "multisig_payload",
"multisig_address": "0xaea4...",
"type_arguments": [],
"transaction_payload": {
"function": "",
"arguments": []
}
}
}
To-be
{
"payload": {
"type": "multisig_payload",
"multisig_address": "0xaea4..."
}
}
Action Required (Aptos Webhook)
If your integration parses Aptos Webhook payloads:
- Update logic to handle
signature.type = fee_payer_signature - Parse
public_keyandsignatureas either:- a string (
"0x..."), or - an object (
{type, value}) for special signature types
- a string (
- Optionally adopt the new fields when fee payer transactions are relevant:
fee_payer_addressfee_payer_signersecondary_signers