[Service Notice] Aptos Event APIs Added & Aptos Webhook Improvements

Posted on January 14, 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.


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.

Recommended Actions

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) signature.type Normalization (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) Signature Structure Update (Keyless + Fee Payer)

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 Normalization (multisig_payload)

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) Empty transaction_payload Omitted (multisig_payload null case)

When transaction_payload is null, unnecessary empty fields 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..."
  }
}

Recommended Actions

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