Skip to main content

Mainnet Addresses

Devnet Addresses

Use all values from one network only. A devnet subscribe transaction from 6pW64gN1s2uqjHkn1unFeEjAwJkPGHoppGvS715wyP2J must be activated with https://txline-dev.txodds.com, and a mainnet subscribe transaction from 9ExbZjAapQww1vfcisDmrngPinHTEfpjYRWMunJgcKaA must be activated with https://txline.txodds.com.

Network Consistency Checklist

The transaction signature, guest JWT, activation endpoint, and program ID must all come from the same row. If any one value comes from a different row, activation can fail even when the on-chain transaction itself confirmed.

API Hosts

Use the host root for /auth/guest/start, then use the matching /api/token/activate endpoint after the on-chain subscribe transaction confirms.

Program References

For runnable code, use the examples that match your network and keep the program ID, generated types, API host, and proof data aligned.

Activation Message

After subscribe(serviceLevelId, durationWeeks) confirms, activate the API token by signing this exact message with the same wallet that submitted the transaction:
For the standard free bundle, selectedLeagues = [], so the message is:
Send the detached wallet signature as base64 in walletSignature, and send the guest JWT from the matching network as Authorization: Bearer <jwt>.

Public Validation Accounts

Derive the epoch day from the exact timestamp in the proof response, never from Date.now(). For scores, use validation.summary.updateStats.minTimestamp; for fixtures, use validation.snapshot.Ts; for odds, use validation.odds.Ts. Recompute it for every proof.