ONCHAIN MESSAGING PROTOCOL

Reach any wallet.
Reward every read.

Send token-incentivized messages to any holder across any chain. Recipients claim rewards in one tap. No installs.

New Message

1
Target
2
Reward
3
Compose
4
Review
Select Chain
BaseBase
Recipients
✓ 2,847 holders
Max recipients100

2,847 holders found

BaseBaseEthereumEthereumArbitrumArbitrumOptimismOptimismPolygonPolygonBNB ChainBNB Chain

WHY TING

Messages with real value

TARGET

For Senders

Reach thousands of token holders at once. Pick a token, write a message, attach a reward. Done.

REWARD

For Receivers

Get paid to read. Messages arrive in your inbox with rewards attached. Tap once to collect.

AI-NATIVE

Agent-Ready Protocol

Any AI agent can read SKILL.md and use Ting — scan holders, send messages, check inbox. No API key required.

MULTICHAIN

One Inbox, Every Chain

Base, Ethereum, Arbitrum, Optimism, Polygon, BNB — all messages unified in a single inbox.

FOR AI AGENTS

Send from an agent

Use Ting endpoints to find recipients, send reward messages, and read wallet inboxes.

Pick the action your agent needs. Open any endpoint for required fields, optional fields, and a ready example.

POST/api/ting/scan

Find token holders for a recipient list.

$0.02 USDC

Use this when an agent needs holder addresses before sending.

Requirement

Requiredchain, token, limit
OptionalminBalanceRaw, maxBalanceRaw

Parameters

chainRequired

Supported EVM chain.

tokenRequired

EVM ERC-20 contract address.

limitRequired

How many holders to return. Range: 1-1000.

minBalanceRawOptional

Optional inclusive lower bound in raw token units.

maxBalanceRawOptional

Optional inclusive upper bound in raw token units.

Response

Returnsholders, pagination, meta
Request
POST https://ting.openads.world/api/ting/scan
{
  "chain": "base",
  "token": "0x2867554B46E3b1Ea0bCa2aEc08973B24C8EB1977",
  "limit": 10
}
Response
{
  "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/send

Send a Base USDC reward message.

$0.054 USDC ~

Base USDC only. Direct recipients only. The response gives the requestId for status checks.

Requirement

Requiredto, reward, message
Optionaltitle, imageUrl, senderName, linkUrl, ctaText, idempotencyKey

Parameters

chainOptional

Optional fixed value. Base only.

tokenOptional

Optional fixed value. USDC only.

toRequired

1-100 EVM wallet addresses.

rewardRequired

USDC per recipient. Minimum 0.05.

messageRequired

Message text. Max 1000 characters.

titleOptional

Optional card title. Max 80 characters.

imageUrlOptional

Optional image URL. Must start with https://.

senderNameOptional

Optional display name. Max 40 characters.

linkUrlOptional

Optional action URL. Must start with https://.

ctaTextOptional

Optional action label. Max 40 characters.

idempotencyKeyOptional

Optional retry key for the exact same request.

Response

ReturnsrequestId
Request
POST https://ting.openads.world/api/ting/send
{
  "chain": "base",
  "token": "USDC",
  "to": [
    "0xb9a3faeb416580f4bc1c8f6e2d4773b580e9d18c"
  ],
  "reward": "0.05",
  "message": "Hello from Ting"
}
Response
{
  "requestId": "req_...",
  "status": "paid",
  "message": "Payment accepted. Ting is sending the message on Base."
}
GET/api/ting/send?requestId=...

Check request status by requestId.

Free

Use the requestId returned by Send message. This checks a send request, not received inbox messages.

Requirement

RequiredrequestId from Send message

Parameters

requestIdRequired

Returned by POST /api/ting/send.

Response

Returnsrequest status, txHash, campaignId
Request
GET https://ting.openads.world/api/ting/send?requestId=YOUR_REQUEST_ID
Response
{
  "requestId": "req_...",
  "status": "succeeded",
  "campaignId": "12",
  "txHash": "0x..."
}
POST/api/ting/inbox

Read Ting messages sent to a wallet.

Free

Use a wallet address here. Do not use requestId for inbox lookup.

Requirement

Requiredaddress

Parameters

addressRequired

EVM wallet address to read inbox messages for.

Response

Returnsmessages sent to that wallet
Request
POST https://ting.openads.world/api/ting/inbox
{
  "address": "0xb9a3faeb416580f4bc1c8f6e2d4773b580e9d18c"
}
Response
{
  "address": "0x...",
  "messages": [],
  "unclaimedCount": 0,
  "totalEarned": "0"
}