[Breaking Changes] Aptos Event APIs Added & Aptos Webhook Improvements

Posted on January 15, 2026

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.type is normalized for transactions that include a fee payer
  • For some signature types, public_key and signature can 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 / signature fields 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:

  1. 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
  2. Remove dependency on the Indexer Event schema for event queries
  3. 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

FieldAs-isTo-be
signature.typemulti_agent_signaturefee_payer_signature
signature.typesingle_sender_keyless_signaturefee_payer_signature
signature.public_key / signature.signatureflat string ("0x...")object ({type, value})
signature.fee_payer_addressnot returnedreturned
signature.fee_payer_signernot returnedreturned
signature.secondary_signersnot returnedreturned
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-isTo-be
multi_agent_signaturefee_payer_signature
single_sender_keyless_signaturefee_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_address
    • fee_payer_signer
  • Secondary signer fields are included when applicable:
    • secondary_signer_addresses
    • secondary_signers
  • For special signature types (e.g., keyless), public_key and signature can 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:

  1. Update logic to handle signature.type = fee_payer_signature
  2. Parse public_key and signature as either:
    • a string ("0x..."), or
    • an object ({type, value}) for special signature types
  3. Optionally adopt the new fields when fee payer transactions are relevant:
    • fee_payer_address
    • fee_payer_signer
    • secondary_signers


Date Title
2025-12-30 [Service Notice] Decoded Input Format Update for Array & Tuple Parameters
2025-12-11 [Service Notice] Scheduled Network Upgrade
2025-11-11 [Service Notice] Aptos Node Operation Policy Update
2025-11-07 [Service Notice] Polygon Mainnet/Amoy Web3 Data API Partial Outage
2025-10-23 [Breaking Changes] Upcoming Testnet Data Retention Policy Update
2025-10-20 [Maintenance Notice] Scheduled Infrastructure Security Patch
2025-10-08 [Service Notice] Polygon Mainnet Archive Node Outage
2025-10-01 [Service Notice] Solana Devnet Network Disruption
2025-09-23 [Maintenance Notice] Scheduled Infrastructure Upgrade
2025-09-11 [Incident Update] Aptos Mainnet Node API Errors