# Reach Trading > REACH is a free points game on X. Mention @reachdottrading, choose Views or Likes, and set one target for the next 24 hours. Official Season 1 lasts 48 hours: 24 hours for entries, then 24 hours for accepted predictions to finish. It begins as an unscheduled draft and starts only through a later owner-admin action. The website shows the official season's Top 25, Search Username by exact X handle and rules. Player identity links open X directly. No website login or wallet is required to play. Optional X sign-in enables Your rank, a saved payout address and later funded reward claims. Playing does not require either. The first prize plan is USD 5,000, payable in native ETH on Robinhood Chain (4663) only after confirmed funding and finalization. ## Authoritative information - [How to predict](https://reach.trading/how-it-works) - [REACH on X](https://x.com/reachdottrading) - [Current bot and data readiness](https://reach.trading/api/status) - [Machine-readable product rules](https://reach.trading/agent.json) - [Rules](https://reach.trading/docs/rules) - [Scoring](https://reach.trading/docs/scoring) - [API description](https://reach.trading/openapi.json) - [Privacy](https://reach.trading/privacy) ## Entry Reply directly to a source post with @reachdottrading and one target: for example, 100k views, 2k likes, or 3.5x likes. A standalone X post may instead include the mention, target and one source-post URL. Use one unambiguous source. A bare compact number or multiplier defaults to Views. The bot measures official impression_count for Views and like_count for Likes; the counts are never substituted for each other. Reposts, quotes and replies are not prediction metrics in this release. The official X API identifies the author by immutable user ID and verifies current verified_type=blue. Eligible mentions create or update the stored participant record. Handles are display names, not identity proof. No self-predictions. The source must be public, unchanged and at most 24 hours old. Views needs a starting count of at least 1,000; Likes needs at least 100. One prediction selects one metric and one whole-number target. Targets must be between 2x and 64x that metric's starting count. Decimal multipliers are allowed and round up to the next whole count. Common number formats and multilingual metric labels are supported. A bounded language classifier can interpret unfamiliar wording without changing the extracted numeric quantity or an explicit metric. Ambiguous numbers, mixed metrics, questions, upper bounds, and conflicting timeframes are not accepted and receive no reply. Understanding every possible language or typo is not guaranteed. Each account may have five accepted predictions per UTC day across both metrics, resetting at 00:00 UTC. There is no platform-wide player, prediction or daily X-API spending cap in REACH. Actual X credits, provider rate limits, reply capacity or service availability can still pause admission. There is one prediction per account/source total, not one per metric. Rejected requests and exact retries do not consume another entry. An accepted prediction later voided still consumes its original entry. The current season must be open for new season entries. New reach-v3 points rounds are created transactionally on the first eligible accepted prediction of each UTC day. These rounds are internal daily quota groups, not leaderboard seasons. There is no funding prerequisite and their finalization creates no payouts. Historical financial rounds are never silently converted to points rounds. ## Seasons Official Season 1 has 48 hours from its recorded start. Entries are accepted during [startsAt, entriesCloseAt), the first 24 hours. The remaining 24 hours are for existing predictions to complete their full acceptance +24h horizons. The UTC daily quota still resets at 00:00 UTC; it is not a season quota. A daily reset does not reopen closed season entries. A new season does not release an account/source key already used by an accepted prediction. Season membership is frozen as season_id at acceptance. Every result belongs to that season even if on-time evidence is processed after the scheduled season end. Seasons are classified official or test. Official public standings exclude test seasons. Existing accepted test predictions keep their original test season, terms and settlement; they are not transferred into official Season 1. Lifetime scores and prediction history are retained. Once entries close, the phase is Settling. Finalization waits until endsAt +5 minutes and until every season prediction has a terminal result. The existing five-minute allowance is for final integrity evidence and does not extend the 24-hour target window. Provider or processing delays, or unresolved review, can keep the season in Settling longer. Finalization saves an immutable rank snapshot for the full season. It does not delete lifetime history or award extra points. Funded season rewards are separate obligations based on the frozen ranking. Official Season 1 begins with status=draft, classification=official, durationHours=48 and entryHours=24. Its startsAt, entriesCloseAt, endsAt and finalizedAt are null until the authorized owner starts it. A deployment or migration does not start the season. A later owner-admin start_season command, with seasonId, expectedVersion from admin controls.version and a reason, sets the start and derived cutoffs. An unstarted draft accepts no predictions. The existing admin authentication, idempotency and audit checks apply. Starting a season never resets or rewrites accepted test predictions. ## Confirmation and replies A mention alone does not prove acceptance. A durable receipt fixes the metric, starting count, exact target, acceptance time, 24-hour deadline, scoring version, season and potential points before the confirmation image is sent. The bot replies with one black REACH PNG card, using a fixed English layout and descriptive alt text. There is no accompanying text or link, and no URL printed on the image. Receipts remain available through the read-only public API. The language model does not write public replies or invent acceptance facts. A confirmation card's totalScore remains the frozen lifetime-score snapshot at acceptance, not a season score; historical images and snapshots are never relabeled. The only reply exception is a daily-limit card: an otherwise valid prediction from a currently blue-verified, public account that has used all five shared Views and Likes entries may receive one image showing the next 00:00 UTC reset. There is at most one daily-limit card per account per UTC day. It creates no accepted prediction and consumes no entry. If season entries close at or before that reset, the card says no entries remain this season instead of promising more tomorrow. Unclear, invalid, ineligible, duplicate and other rejected inputs receive no public response. Historical generic notice jobs remain silent. When entry is active, the scheduled worker polls every minute. The intended response interval is 1–3 minutes at normal load, not a guarantee. API failures, credit or rate limits can delay or pause replies. A delayed reply never moves the accepted prediction's start or deadline. Images may be prepared or uploaded again before posting. An uncertain public send requires reconciliation and is not blindly retried as another reply. The public image route is /api/predictions/{id}/image; historical missing core snapshots are not fabricated. Reply STOP to opt out of future bot replies, subject to the recorded preference. Each intentional user interaction may receive at most one automated response. Intake remains closed when the required automation approval, reply gates or media-capable credential is unavailable. Check /api/status: botEnabled and predictionsEnabled must both be true. A visible website or example is not proof of a working live bot. Accepted predictions cannot be edited or canceled. A recorded edit to the accepted X command incurs -100 points. Deleting the command does not cancel the prediction. ## Scoring and settlement A hit earns floor(100 * log2(target / starting count)), between 100 and 600 points. A miss costs 100; a void earns 0. Views and Likes use the same formula on their respective counts. There are no follower, popularity or speed bonuses. With 25,000 starting views and a 100,000 target, a hit earns 200 points. With 500 starting likes and a 2,000 target, a hit also earns 200 points. Only final settled results add ranking points. Active predictions and potential hit points add none. The public leaderboard shows only the official season's Top 25. Test seasons are excluded. Rank is computed across the full official season before selecting those 25 rows. Search Username requires an explicit exact-handle submission and returns a separate result, including a player at rank 950. It does not filter or renumber the Top 25, sign the viewer in, save a localStorage identity or prove ownership. Optional X sign-in separately enables Your rank. Players with only pending predictions have zero settled points. Rank order is points descending, hits descending, then stable internal account ID. That ordering adds no extra points. The board has no Today, 7d or All-time tabs. Legacy rolling-period SQL is retained internally and does not define the current public board. For example, an eligible prediction accepted Monday at 23:30 UTC consumes a Monday entry and has a Tuesday 23:30 UTC deadline. Its settled points belong to the season fixed at acceptance, even if processing finishes after that season's scheduled end. The midnight quota reset never shortens the target window. New predictions use reach-v3. The deadline is exactly 24 hours after acceptance. Only an official count observed from acceptance through the deadline, inclusive, can prove a target hit. Sampling does not observe every view or like and cannot prove an unrecorded crossing. At most five read attempts are available per prediction. Windows open at acceptance +6h, +12h, +18h, +23h59m, and +24h. Each of the first four closes when the next opens. The final window closes at +24h5m inclusive. There is one durable charged attempt per window. Failure spends that attempt; missed windows are not replayed. Rate limits, provider availability and budgets may prevent a read. The actual observation timestamp determines whether a count is on time. Settlement waits until the deadline. A normal hit or miss also needs usable final integrity evidence recorded within [deadline, deadline +5 minutes]. This allowance does not extend the hit window. Evidence obtained on time can be processed later; timestamps are not backdated. Outcome precedence: - A recorded edit to the accepted command costs -100, overriding other outcomes. - A recorded source edit voids the prediction for 0 points. - An unavailable final source or missing usable final observation voids it for 0, even with an earlier hit. - Otherwise, an on-time recorded count at or above target wins, even if the final count falls. - Without an on-time hit: a final count below the starting count is void (counter_regressed); a first high count recorded after the deadline is void (timing_uncertain); a final count between starting count inclusive and target exclusive is a miss. Existing reach-v1 Views receipts retain their original first-usable-final-count rule. Existing reach-v2 Views receipts retain their reach-before-deadline rule and recorded financial terms. Neither version is regraded or converted by reach-v3. ## Public data The website and public API do not create predictions. Public /history/{handle} pages show prediction history. Player names and profile images link directly to the validated X profile; legacy /profile/{handle} routes redirect there. Read-only player and prediction APIs retain active entries and history. Counts and points use decimal strings for precision. Each prediction and snapshot records its metric. Legacy API names targetViews, baselineViews and views contain the selected metric's count, including Likes; always read metric alongside them. The visible leaderboard refreshes about every 15 seconds and on tab focus. This is polling, not a continuous stream. Unavailable data is shown as unavailable or stale, never as zero. Prediction API lists support view=active|history|all, limit and offset. The official board includes accepted entrants but gives pending predictions no points. Search Username returns the full official-season rank for the submitted handle without changing the Top 25. Search is public and does not save a localStorage identity. Your rank is shown separately when authenticated. Player data APIs retain lifetime results and daily usage against five accepted entries, across both metrics. Historical receipt dailyUsed is a frozen entry ordinal, displayed as Daily entry number without applying today's quota to old records. Public APIs and official standings contain only actual players and recorded activity; their identities, verification and scores are never fabricated. Homepage demo posts and rankings are frontend-only illustrations. They are not live X embeds, accepted predictions, official standings or evidence that any person shown participates in REACH. Celebrity participation is not claimed. Demo content never enters public API records, scoring, reward allocation or payment evidence. Optional public X login enables private account, payout-address and reward actions. None is a participation requirement. Admin controls remain restricted to the immutable REACH X account ID. Public responses never expose sessions, provider credentials or wallet addresses. Historical financial records remain private and unchanged. Season rewards use a separate native-ETH ledger; /api/status reports execution readiness and /api/season-prizes reports actual funding status. Neither configuration nor a planned pool proves a completed payment. This published score is original, not Tweem's proprietary formula. Blue verification is an eligibility gate, not proof of a unique human. X views may include repeat or promoted views. No investment return, payout, organic-reach guarantee or legal approval is asserted. ## Optional accounts and rewards GET /api/me identifies the signed-in account, privately and without caching. Login uses read-only X OAuth with PKCE. No login or wallet is required for X participation. To choose a payout recipient, sign in with X, enter the address and select Save address. No wallet connection or ownership signature is required. A saved address is the account owner's delivery instruction; it does not prove who controls that address. Never request a seed phrase or private key. POST /api/wallet/address takes exactly {address, expectedAddress, expectedVersion}, with an Idempotency-Key UUID and X-Reach-Account-Id matching the private session user ID. Same origin and recent X authentication are required. expectedVersion is a decimal integer string from /api/me.wallet.version. For no existing address, use expectedAddress=null and expectedVersion="0". The service compares both expected values and returns {accountId, wallet:{address,savedAt,verifiedAt:null,version}}. A new save advances the version. An identical request-ID retry returns its original receipt without another write, even after a later change; refresh /api/me for the current address. Account switches, conflicting versions, reused IDs with different terms and replacement of an in-flight recipient are rejected. Direct saves use payout_address, payout_address_saved_at and payout_address_version separately from historical ownership evidence. They never create wallet_verified_at or set verifiedAt as if a signature had occurred. Private /api/me.wallet may retain a genuine older proof for the same address; if no direct address exists, a valid historical recipient is returned with savedAt=null and version="0". Addresses and proof metadata remain private. Historical signature endpoints are not part of the current Save address flow. The Season 1 prize plan totals USD 5,000: rank 1 $1,250; rank 2 $750; rank 3 $500; rank 4 $350; rank 5 $250; ranks 6-10 $150 each; ranks 11-15 $100 each; ranks 16-25 $65 each. Future budgets use the same rank shares. Winners need positive final points and at least one hit. An unfilled share is not redistributed. The immutable frozen official ranking resolves ties by points, hits and stable account ID. Rewards are paid in native ETH on Robinhood Chain (chain ID 4663), never by silently sending on Ethereum mainnet. A verified USD conversion quote and ETH pool amount must be recorded with actual funding. A planned amount is not available funds. No actual transfer is possible until funding, gas and an enabled matching treasury signer are available. Automatic and later claims refer to one durable reward. Missing payout addresses do not forfeit funded entitlements, which have no claim deadline; reserved liabilities must remain covered. A changed handle does not change ownership. Queued payouts retain their recorded recipient and in-flight transfers cannot be redirected. Completed transfers are not paid twice. The REACH token, ticker $REACH, is not launched and its contract address is not supplied. Planned fees are 2% of swap volume: 1 percentage point to season prizes and 1 to treasury. This is 50% of actually collected fees for each destination, not 1% of the fee. Only finalized collected amounts count. Treasury topups require recorded funding. Future prize pools vary; there is no guaranteed minimum, token purchase or holding requirement.