Ting Agent API
Scan recipients, send reward messages, check delivery, and read inbox data.
1. Overview
Agents use Ting to find recipients, send Base USDC reward messages, and read inbox data.
Reward split
Ting sends 20% to the recipient wallet for direct notification and deposits 80% into the claim contract.
Two lookups
Use requestId to check a send request. Use a wallet address to read messages sent to that wallet.
2. Endpoints
POST/api/ting/scanFind ERC-20 token holders.
$0.02 USDC
/api/ting/scanFind ERC-20 token holders.
Use this when an agent needs holders of an ERC-20 token contract before sending.
Requirement
Parameters
chainOptionalOptional. Default: base. Supported EVM chain.
tokenRequiredERC-20 token contract address. Do not use a wallet address here.
limitOptionalOptional. Default: 100. Range: 1-1000.
minBalanceRawOptionalOptional inclusive lower bound in raw token units.
maxBalanceRawOptionalOptional inclusive upper bound in raw token units.
Response
POST https://ting.openads.world/api/ting/scan
{
"chain": "base",
"token": "0x2867554B46E3b1Ea0bCa2aEc08973B24C8EB1977",
"limit": 100
}{
"holders": [
{
"address": "0x...",
"addressLabel": null,
"tokenAmount": 1000000,
"ownershipPercentage": null,
"valueUsd": null
}
],
"pagination": {
"nextCursor": null
},
"meta": {
"provider": "ting",
"chain": "base",
"token": "0x...",
"matched": 10,
"scanned": 100,
"completed": true
}
}POST/api/ting/sendSend a Base USDC direct reward message.
Reward + protocol fee
/api/ting/sendSend a Base USDC direct reward message.
Base USDC only. Direct recipients only. The response gives the requestId for status checks.
Requirement
Parameters
chainOptionalOptional fixed value. Base only.
tokenOptionalOptional fixed value. USDC only.
toRequired1-100 EVM wallet addresses.
rewardRequiredUSDC per recipient. Minimum 0.05.
messageRequiredMessage text. Max 1000 characters.
titleOptionalOptional card title. Max 80 characters.
imageUrlOptionalOptional image URL. Must start with https://.
senderNameOptionalOptional display name. Max 40 characters.
linkUrlOptionalOptional action URL. Must start with https://.
ctaTextOptionalOptional action label. Max 40 characters.
idempotencyKeyOptionalOptional retry key for the exact same request.
Response
POST https://ting.openads.world/api/ting/send
{
"chain": "base",
"token": "USDC",
"to": [
"0xb9a3faeb416580f4bc1c8f6e2d4773b580e9d18c"
],
"reward": "0.05",
"message": "Hello from Ting"
}{
"requestId": "req_...",
"status": "paid",
"message": "Payment accepted. Ting is sending the message on Base."
}GET/api/ting/send?requestId=...Check a send request.
Free
/api/ting/send?requestId=...Check a send request.
Use the requestId returned by Send message. This checks a send request, not received inbox messages.
Requirement
Parameters
requestIdRequiredReturned by POST /api/ting/send.
Response
GET https://ting.openads.world/api/ting/send?requestId=YOUR_REQUEST_ID{
"requestId": "req_...",
"status": "succeeded",
"campaignId": "12",
"txHash": "0x..."
}POST/api/ting/inboxRead a wallet inbox with a session signature.
Free
/api/ting/inboxRead a wallet inbox with a session signature.
Requires a Ting session signature for the same wallet. Sign `Ting:{lowercase address}:{sessionDate}`.
Requirement
Parameters
addressRequiredEVM wallet address to read inbox messages for.
signatureRequiredWallet signature over Ting:{lowercase address}:{sessionDate}.
sessionDateRequiredUTC date used in the signed Ting session message.
limitOptionalOptional. Default: 50. Maximum: 100.
offsetOptionalOptional pagination offset. Use nextOffset from the previous response.
Response
POST https://ting.openads.world/api/ting/inbox
{
"address": "0xb9a3faeb416580f4bc1c8f6e2d4773b580e9d18c",
"signature": "0x...",
"sessionDate": "YYYY-MM-DD",
"limit": 50,
"offset": 0
}{
"address": "0x...",
"messages": [],
"unclaimedCount": 0,
"totalEarned": "0",
"hasMore": false,
"nextOffset": null
}3. Recipients
Use holder scan for ERC-20 token holders. For direct messages, pass wallet addresses directly into to.
Token holders
Call /api/ting/scan with a token contract address, then use the returned holders as recipients.
Direct message
Skip scan and set to to one or more wallet addresses. To read messages for a wallet, use /api/ting/inboxwith that wallet's Ting session signature.
4. Send
Required fields are to, reward, and message. The response includes requestId.
5. Status
Poll with the requestId returned by Send. This checks a sent request, not received inbox messages.
6. Limits
Network
Base only. USDC only.
Recipients
Direct only. Up to 100 recipients per send.
Reward
Minimum 0.05 USDC per recipient. At 0.05 USDC, 0.01 is sent immediately and 0.04 is claimable.