Skip to content
grabs.gg

Build on grabs

grabs runs task-based contests: members complete verifiable actions across X, Telegram, Discord and more, and the best of them get paid. You can run one on our site, inside your own Telegram group, or entirely inside your own product using the partner API.

Pick your integration model

These differ in three ways that change everything else: who funds the prize, who decides a task was completed, and who sends the money.

Site contest

You create a contest on grabs.gg and we escrow and pay the prize.

Funded by
The creator, into a grabs-controlled escrow, before the contest goes live.
Scored by
grabs — our verifiers check each task against the target the creator configured.
Paid by
grabs, automatically, in SOL or ETH.
You build
  • Nothing. This is the no-code path — create it at /create and share the link.
  • Optionally read the public contest JSON to mirror the leaderboard on your own site.
Cannot
  • Pay out before the escrow deposit is confirmed on chain — an unfunded contest is not listed and its page 404s.
  • Award points for actions that happen on your own site. Only tasks in the grabs catalog score.

Best for: A project that wants a campaign running today without writing code.

Telegram group contest

A contest inside your Telegram group, scored and paid by the Trendify bot.

Funded by
The group's own prize wallet, funded by the group owner.
Scored by
The Trendify bot, from activity it observes in the group.
Paid by
The Trendify bot, directly from the group wallet, in SOL or USDC.
You build
  • Nothing on the API side — configure it at /create/group after linking your group.
  • You must be an admin of the group, and the group must be a real group, not a broadcast channel.
Cannot
  • Be denominated in ETH. The bots settle these from a shared config field whose parser turns any ticker it does not recognise into SOL, so an ETH group contest would send SOL. SOL and USDC only.
  • Be paid by grabs — grabs never touches a group contest's money.
  • Score a member who has never spoken in the group; there is nothing to observe.

Best for: A Telegram community rewarding its own members.

Headless / partner-paid

You render the contest in your own product, we verify the tasks, and you pay your own users.

Funded by
You. grabs escrows nothing and holds none of your money.
Scored by
grabs — you call our verify endpoint and we tell you whether the task was really done.
Paid by
You, in whatever asset you like, on your own schedule.
You build
  • A consent flow: send the user to our connect page, receive a code, exchange it for an identity token.
  • Your own UI over our contest and task catalog endpoints.
  • A call to the verify endpoint per task attempt, keyed by that identity token.
  • Your own payout logic — we never move your funds.
Cannot
  • Define your own tasks yet. Only ids from the grabs catalog verify; your own quests cannot score today.
  • Receive a user's Telegram id. You get a per-partner pseudonymous subject instead, so two partners cannot correlate the same person.
  • Read points totals from the verify response — it deliberately does not return points_awarded.

Best for: A platform with its own users, its own UI, and its own treasury.

Headless in four calls

  1. 1

    Send the user to the consent screen

    They approve sharing their grabs identity with you. You get back a short-lived code.

    https://grabs.gg/partner/connect?client_id=1&return_to=https://you.example/callback
  2. 2

    Exchange the code for an identity token

    Single-use. The token represents that user, to you, without ever revealing their Telegram id.

    curl -X POST https://grabs.gg/api/partner/v1/token \
      -H "Authorization: Bearer gp_1_YOUR_SECRET" \
      -H "Content-Type: application/json" \
      -d '{"code":"THE_CODE"}'
  3. 3

    Read the contest and its tasks

    Render them however you like. Each task tells you whether it is portable — i.e. whether you can verify it from your side.

    curl https://grabs.gg/api/partner/v1/contests \
      -H "Authorization: Bearer gp_1_YOUR_SECRET"
  4. 4

    Verify a completion

    We check it for real. Honour already_completed or a retry will credit the same action twice.

    curl -X POST https://grabs.gg/api/partner/v1/verify \
      -H "Authorization: Bearer gp_1_YOUR_SECRET" \
      -H "Content-Type: application/json" \
      -d '{"task_id":"x_follow","identity_token":"...","contest_id":"group-9"}'