Getting Started

Syncro — Endpoint Configuration

An API key is required to unlock the full rate. Without an API key, these endpoints serve public traffic at 1 RPS. With an API key, you get the dedicated rate of 50 RPS.

To get an API key, request access through the Syncro Sender page on P2P.ORG, and our team will contact you to arrange setup.

HTTP Endpoints

Geo-routed (auto-routes to nearest region)

TPU Endpoint

Available to authorized clients only. To get access, create a key pair and send your public key to the P2P team.

Geo-focused TPU clients

We can provision geo-focused TPU clients on request. If you'd like a TPU client pinned to a specific region, please reach out to the P2P team.

Sending a transaction via public endpoint

The public endpoint requires no API key. Instead, include a System Program transfer to one of the tip accounts in your transaction.

Tip accounts:

BPZrtYhdoAhiHWV5EgGLoV7bZFbMamBZurGDq4DmST8v
7D5pdbkV75Sr73M1YFNZwXMed6DenwkdfbJwVWrX6drQ
ELpn2NryEW4B3psG36eSjF45YcGMQpGGuu9J2AgAccbV
FnckAPC9PitnRpGZM2M4WLwb3w9odRLJ7EDRZDngjvd6
3ZnDTgvVfwzqwWoqAUmDkgVtXvXqjmeb5t9zxD5pMbmv
3SLDFcdCzMbcFNguZhzmV4zqEAUvcPoKY13akpE4Tq1p
48tT6LJqrsoFrLpzZSHkjGdGTWtsJ1PvjgWZjh8qF1RK
7GM9fpVMHHcrK4cgzfVdzJvjiy1bSyfwSYzhxvgbfVLg
CBd8GE3ffMJKf3iCCcNNBEifMxH1WpgtTzRnXPxxbjGE

The minimum tip is 100,000 lamports.

If the tip is missing or insufficient, an error is returned:

  • Missing tip: "Missing tip: no transfer to tip accounts found" (code -32602)
  • Insufficient tip: "Insufficient tip: provided X lamports, required Y lamports" (code -32602)

How to add a tip to your transaction:

transaction.addInstruction(SystemProgram.transfer(yourPublicKey, 'BPZrtYhdoAhiHWV5EgGLoV7bZFbMamBZurGDq4DmST8v', 100000));

Example request (cURL):

curl -X POST https://sfls.l2.p2p.org/public \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "sendTransaction",
    "params": ["<BASE64_ENCODED_TX_WITH_TIP>", {"encoding": "base64"}]
  }'

Note: The transaction itself must contain a tip instruction to a tip account. No Authorization header is needed.

Example response:

{
  "jsonrpc": "2.0",
  "result": "<TRANSACTION_SIGNATURE>",
  "id": 1
}

Sending a transaction via private endpoint

Contact the P2P.org team to get your API key and client profile: t.me/P2Pstaking.

Syncro Sender supports two authentication headers via private endpoint. If both are present, Authorization: Bearer takes priority.

HeaderFormatPriority
AuthorizationBearer <API_KEY>1 (preferred)
X-Api-Key<API_KEY>2 (fallback)

Example request:

curl -X POST https://sfls.l2.p2p.org \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "sendTransaction",
    "params": ["<BASE64_ENCODED_TX>", {"encoding": "base64"}]
  }'

Example response:

{
  "jsonrpc": "2.0",
  "result": "<TRANSACTION_SIGNATURE>",
  "id": 1
}

Error codes

CodeNameHTTP StatusDescription
-32700PARSE_ERROR400Malformed JSON-RPC request body
-32600INVALID_REQUEST400 / 403Invalid request structure or authentication failure
-32601METHOD_NOT_FOUND200Unsupported method (e.g., non-sendTransaction on public endpoint)
-32602INVALID_PARAMS200 / 400Invalid parameters, missing tip, or insufficient tip amount
-32603INTERNAL_ERROR500Server-side processing error
-32000SERVER_ERROR500General server error
-32005RATE_LIMIT429Rate limit exceeded

Error response format:

{
  "jsonrpc": "2.0",
  "result": null,
  "error": {
    "code": -32005,
    "message": "Rate limit exceeded"
  },
  "id": 1
}

Rate limit headers

If the rate limit is hit (HTTP 429), the response includes these headers:

HeaderDescription
X-RateLimit-LimitMaximum requests per second for your client
X-RateLimit-RemainingRemaining requests in the current 1-second window
Retry-AfterSeconds until the rate limit window resets (minimum 1)

What's next?