v1

latestOpenAPI 3.1.02026-07-13143194365.4 KB
tipping

Send a paid message via tip

Send a tip that delivers a message to the recipient via email. The recipient must have a Grove account with an email identity. All accounts accept paid messages by default (tip_to_talk_min=0). Recipients can set a higher minimum or opt out entirely (tip_to_talk_min=NULL). Every tip sent via this endpoint lands with context.is_paid_message=true on the resulting TipContextResponse — it's a server-owned signal (the route writes it unconditionally) that feed / activity consumers can use to render "X messaged Y" without re-deriving intent from the tip amount.

post/v1/tip/message

Headers

authorizationstring nullable

Bearer JWT that identifies the sending account.

Bearer JWT that identifies the sending account.

Request body

destinationstring required

Who to message. Accepts the same formats as /tip: Grove handle, EVM/Solana address, ENS name, domain, or social URL.

amountstring required

Amount to tip. Same formats as /tip: '5', '$5', '5USDC'.

messagestring required

Message to deliver to the recipient (1-840 characters).

networkstring nullable

Target blockchain network.

tokenstring nullable

Token symbol to tip.

Example request

{
  "context": {
    "source_post_url": "https://x.com/olshansky/status/1234567890",
    "sender_username": "olshansky",
    "sender_profile_url": "https://x.com/olshansky",
    "recipient_username": "vitalik",
    "recipient_profile_url": "https://x.com/vitalik",
    "campaign": "hackathon-2024",
    "referrer": "grove-twitter-bot",
    "custom_metadata": "{\"note\": \"great work!\"}",
    "discrete_giveaway_id": "gw_5f3c2a1b-..."
  }
}

Response

Successful Response

tip_idstring required
statusstring required
destinationstring required
from_addressstring required
receiver_addressstring required
amount_sentstring required
amount_receivedstring required
fee_amountstring required
tx_hashstring required
new_balancestring required
networkstring required