Documentation
One settlement layer to charge (and pay) for datasets, APIs, content, and checkouts, whether the customer is a person or an autonomous AI agent. Five pillars, one on-chain program on Solana.
Solinkify is a Web3 ecosystem on Solana with five product pillars backed by a single Anchor program, one escrow model, and one fee-split router. The recipient always keeps 99%; a flat 1% protocol fee is split on-chain.
| Program ID | A8qSJCS2uxxnEMdCcpjX2L8hUUMydoeCi5xq5qvzS22B |
| Network | Solana Devnet (current) |
| Protocol fee | 1% flat · 0.8% with a $SINKY discount |
| Stablecoins | USDC · USDT · PYUSD (6 decimals) |
| Escrow | Program-owned PDAs, never end-user wallets |
| Base API | https://api.solinkify.com |
Packages are consumed from the monorepo today; NPM / PyPI / marketplace publishing is deferred to pre-mainnet.
Every payment settles on-chain. 99% goes to the recipient; the 1% fee is split by route:
| Destination | Jalur A (direct) | Jalur B (via node) |
|---|---|---|
| Recipient | 99% | 99% |
| Relay node | — | 0.375% |
| Epoch pool | — | 0.375% |
| Treasury | 0.9% | 0.15% |
| Team | 0.1% | 0.1% |
Block AI scrapers with an HTTP 402 paywall; ethical agents auto-pay in stablecoins. It ships as one core with thin adapters for every stack.
npm install @solinkify/gate// middleware.ts
import { protectFromAI } from "@solinkify/gate";
export const middleware = protectFromAI({
wallet: "YOUR_CREATOR_WALLET", // receives 99%
price: 0.001, // per request (USDC)
endpointId: "my-blog", // your on-chain endpoint
detection: "basic", // basic (SEO-safe) | strict | strict+
});
export const config = { matcher: "/:path*" };import { protectFromAIExpress } from "@solinkify/gate/express";
app.use(protectFromAIExpress({
wallet: "YOUR_CREATOR_WALLET",
price: 0.001,
endpointId: "my-api",
}));Adapters: Next.js · Express · Cloudflare Workers · Astro · SvelteKit · Hono · Nuxt · Remix · Fastify · Lambda@Edge · generic Fetch. Plus Python (WSGI/ASGI), a WordPress plugin, a Kong plugin, and a reverse proxy for any site (PHP/Ruby/static/legacy) with no code changes.
pip install solinkify-gate# WSGI (Flask / Django). ASGI variant: solinkify_gate.asgi
from solinkify_gate import GateConfig
from solinkify_gate.wsgi import SolinkifyGateMiddleware
app.wsgi_app = SolinkifyGateMiddleware(app.wsgi_app, GateConfig(
wallet="YOUR_CREATOR_WALLET",
price=0.001,
endpoint_id="my-api",
))WordPress
wp-content/plugins/ (single file, no build).Kong Gateway
sdk-gate-kong/kong/plugins/solinkify-gate to Kong’s Lua path.solinkify-gate plugin.kong restart.Any site (proxy)
npm i -g @solinkify/gate-proxygate.config.json (wallet, price, upstream).auth_request / Caddy forward_auth.A 2-tier, SEO-safe detector classifies every request. Real humans and browsers always pass; only bots hit the 402. User-agents are verified against official IP ranges, so a spoofed “Googlebot” from a fake IP is still blocked.
| Mode | Blocks | Allows |
|---|---|---|
| basic (default) | AI crawlers | search engines + humans (SEO-safe) |
| strict | AI crawlers + search engines | humans only ⚠ hurts SEO |
| strict+ | + headless/scraper UAs, optional datacenter IPs | humans only |
AI crawlers (blocked in basic & strict): OpenAI GPTBot / ChatGPT-User / OAI-SearchBot, Anthropic ClaudeBot, Google Gemini, PerplexityBot, Amazonbot, ByteDance Bytespider, CommonCrawl CCBot, Diffbot, and more. Search engines (only blocked in strict): Googlebot, Bingbot: allow-listed by default so your SEO stays intact.
An ethical agent auto-pays a 402 with the agent SDK:
import { GateClient } from "@solinkify/gate-sdk";
const client = new GateClient({
wallet: agentKeypair,
rpcUrl: "https://api.devnet.solana.com",
maxPricePerRequest: 0.01, // budget cap (USDC)
});
const { response, via, paymentId } = await client.fetchProtected(url);
const content = await response.text();
if (via === "payment" && paymentId) await client.release(paymentId);Accept USDC/USDT/PYUSD from customers. One hosted checkout is the core; every channel is a thin adapter that creates a session and redirects to it.
<script src="https://solinkify.com/sdk/solinkify-pay.js"></script>
<button data-solinkify data-merchant="YOUR_WALLET"
data-amount="9.99" data-currency="USD" data-token="USDC"
data-order="ORDER-123" data-return="https://store.com/thanks">
Pay with Crypto
</button>curl -X POST https://api.solinkify.com/api/gateway/session \
-H "Content-Type: application/json" \
-d '{"merchant_wallet":"YOUR_WALLET","amount":9.99,"currency":"USD","order_id":"ORDER-123","token_mint":"USDC","return_url":"https://store.com/thanks"}'
# → { ok, session_id, checkout_url }, then redirect the buyer to checkout_urlPlugins: WooCommerce, OpenCart, and PrestaShop. Set your wallet and go. Manage everything from the Pay console.
Packages aren’t on the marketplaces yet (pre-mainnet). Install from the plugin folder in the repo, then set your merchant wallet and default token in the plugin settings (backend defaults to api.solinkify.com).
WooCommerce
packages/sdk-pay-woo into wp-content/plugins/.OpenCart 3.x
packages/sdk-pay-opencart/upload/ into your OpenCart root.PrestaShop 8.x
packages/sdk-pay-prestashop/solinkifypay.List a dataset with a stablecoin price and on-chain access control (x402); buyers (human or AI) unlock it instantly after paying, and you keep 99%. Every purchase path settles through the same pay_spl instruction.
Browse the Marketplace or list an asset from Upload.
Turn any DataHub asset into a one-click checkout for the X timeline. A Blink is a Solana Action; the shareable link is your asset page with auto-buy params:
https://www.solinkify.com/book/<asset_id>?autoBuy=true&noEmail=trueCreate and share Blinks from the Social console. The underlying Action lives at /api/actions/buy/<asset_id> and settles Jalur B → A.
Stake $SINKY, relay third-party payments, and earn. A node earns three ways: a direct 0.375% per relayed tx, a stake-weighted share of the epoch USDC pool, and daily $SINKY emission.
| Tier | Min stake | Multiplier | Emission/day |
|---|---|---|---|
| Lite | 25 | 1.0× | 0.015 SINKY |
| Bronze | 100 | 1.0× | 0.07 SINKY |
| Silver | 500 | 1.5× | 0.41 SINKY |
| Gold | 2000 | 2.5× | 1.92 SINKY |
Register and track from the Node console.
| Endpoint | Method | Purpose |
|---|---|---|
| /api/gateway/session | POST | create a Pay checkout session |
| /api/gateway/session/:id | GET | session detail (checkout + polling) |
| /api/gateway/session/:id/verify | POST | confirm on-chain (fail-closed, anti-replay) |
| /api/gateway/sessions?merchant= | GET | list a merchant's sessions |
| /api/actions/buy/:id | GET/POST | Solana Action (Blink) |
| /api/books?seller= | GET | a seller's DataHub assets |
| /.well-known/solinkify | GET | Gate discovery document |
One Anchor program (32 instructions). Key PDAs:
| EndpointConfig | ["gate_endpoint", creator, endpoint_id] |
| EscrowAccount | ["gate_escrow", payer, payment_id] |
| PrepaidBalance | ["gate_balance", payer, mint] |
| AssetState | ["asset", book_id] |
| NodeOperator | ["node_operator", operator] |
| EpochState | ["epoch_state", epoch_num] |
| CreatorStake | ["creator_stake", creator] |
Funds are only ever custodied by program-owned PDAs. Fee destinations are pinned on-chain. A caller cannot redirect any part of the fee.