This is the production-recommended path for recording engagement. The indexer signs the on-chain EngagementOracle.recordAction(user, actionType, weight, targetId) call with the authorized oracle wallet. The user’s address is attributed inside the calldata, not in the tx signer, so the app never has to touch the user’s private key. Behaves identically to /api/mobile/engagement on chain — the only difference is the explicit no-private-key contract.

Request

Fields

string
required
User’s address (the account whose ES + pending YCR the action accrues to).
string
required
One of post, like, share, comment, watch, nft_create, tip.
string
required
Opaque string identifying the content acted upon (hashed to bytes32 on-chain).
object
Device context used for the quality signal (see Engagement Score).
integer
Unix seconds. Used to flag clock skew; the canonical timestamp is still the block’s.

Response — 200 OK

Example

How attribution works

The action is attributed to address, not to the oracle wallet. ES, pending YCR, and leaderboard rank all accrue to address.