Skip to main content

FAQ

Common questions and answers about using Syndica's platform.

Authentication & API Keys

Which authentication method should I use?

Both methods work identically—choose based on your use case:

  • URL-embedded is simpler for testing with tools like cURL or Postman.
  • Header-embedded keeps your key out of URL paths, which may be preferable for logging and monitoring systems.
Can I use the same API key for both mainnet and devnet?

Yes. Your API key works across both mainnet and devnet. Simply change the endpoint URL while keeping the same key.

I'm getting a 401 Unauthorized error. What's wrong?

This means your API key is missing or invalid. Check that:

  • You copied the entire key from your dashboard (no spaces or line breaks).
  • You're using the correct format: /api-key/YOUR_KEY in the URL or X-Syndica-Api-Key: YOUR_KEY in the header.
  • Your key hasn't been revoked or deleted in the dashboard.

See the Error Handling guide for more troubleshooting tips.

Network & Infrastructure

Which regions does Syndica support?

Syndica currently deploys Edge Gateways in four regions so requests stay close to your users: Northern Virginia (us-east-1), Oregon (us-west-2), London (eu-west-2), and Singapore (ap-southeast-1). Each request is automatically routed to the nearest healthy region; contact support if you need access to additional geographies.

Which Solana networks does Syndica support?

Syndica supports Solana mainnet-beta and devnet.

  • HTTP endpoints:
    • Mainnet-beta: https://solana-mainnet.api.syndica.io/api-key/YOUR_API_KEY
    • Devnet: https://solana-devnet.api.syndica.io/api-key/YOUR_API_KEY
  • WebSocket endpoints:
    • Mainnet-beta: wss://solana-mainnet.api.syndica.io/api-key/YOUR_API_KEY
    • Devnet: wss://solana-devnet.api.syndica.io/api-key/YOUR_API_KEY

Requests automatically route to the nearest healthy edge in four regions: us-east-1 (N. Virginia), us-west-2 (Oregon), eu-west-2 (London), ap-southeast-1 (Singapore).

How does Syndica help me manage my infrastructure?

Running your own node usually means provisioning, hardening, and wiring together load balancing, caching, access controls, monitoring, and failover before you can ship. With Syndica, you point your client at a managed endpoint and start building—sensible defaults provide routing, resiliency, and visibility out of the box. The result is a quicker path to production with less infrastructure to build and maintain.

What makes Syndica's RPC faster than running my own node?

Requests pass through a global edge with regional caches for frequently accessed Solana data, reducing trips to validators. Cache misses are handled by a managed validator cluster with redundancy and automatic failover. This design typically results in lower and more consistent latency than operating a single node.

Can I use Syndica with Solana web3.js or other SDKs?

Absolutely. Syndica works with any Solana client library. Use your Syndica endpoint URL when creating the connection:

import { Connection } from '@solana/web3.js';

const connection = new Connection(
'https://solana-mainnet.api.syndica.io/api-key/YOUR_API_KEY'
);

Error Handling & Troubleshooting

What does "method not found" error mean?

This error occurs when you call a method that doesn't exist or has a typo. Confirm that:

  • The method name is spelled correctly (case-sensitive).
  • You're using a valid Solana RPC method.
  • The method is supported on the network you're calling (some methods are mainnet-only).
Why am I getting inconsistent results between calls?

This can happen when requests hit different nodes with slightly different states. To ensure consistency:

What's the difference between processed, confirmed, and finalized?

These are commitment levels that balance data freshness with reliability:

  • Processed: Latest data, lowest latency, may be subject to rollbacks.
  • Confirmed: Majority-validated, minimal rollback risk, moderate latency.
  • Finalized: Guaranteed by network finality, ~13 second latency.

Most applications use confirmed as the default balance between speed and reliability.

Rate Limits & Usage

How do I know if I'm hitting rate limits?

Rate limit responses return HTTP 429 status codes. You can monitor your usage in the RPC Analytics dashboard. See Observability to learn how to inspect logs and metrics when diagnosing throttling, review Rate Limits and plans/pricing for plan-specific limits, or configure custom rate limits per API key.

What's included in the Standard (free) tier, and is it still free if I add a credit card?

The Standard (free) tier includes 10 million requests per month, up to 100 requests per second (RPS), and 100 GB of data transfer. Adding a credit card does not change your plan or start billing; it only enables instant upgrades later. The Standard plan remains free.

WebSocket Connections

How do I authenticate WebSocket connections?

Include your API key in the WebSocket URL path: wss://solana-mainnet.api.syndica.io/api-key/YOUR_API_KEY. Authentication happens during the initial connection, not per message.

What's the difference between WebSocket subscriptions and ChainStream?

Standard WebSocket subscriptions connect directly to whichever validator your connection reaches and expose the base Solana RPC methods (slotSubscribe, logsSubscribe, accountSubscribe, etc.). That keeps them lightweight and available on every plan, but you own the operational work: detecting missed slots, replaying signatures, managing ordering, and reconciling state when the validator you hit lags or restarts.

ChainStream is a separate endpoint (wss://solana-mainnet.chainstream.syndica.io/api-key/...) that fans out each subscription across multiple validators. The service delivers the earliest notification using a "fastest wins" strategy, backfills if a source misses data, and deduplicates events before they reach your client. It also unlocks capabilities standard WebSockets do not provide:

  • transactionsSubscribe, blockSubscribe, and encodedBlockSubscribe for full transaction/block payload streaming.
  • Rich account filtering via all, oneOf, and exclude matchers plus the verified flag for multi-validator confirmation.
  • Built-in delivery guarantees so you no longer maintain resend buffers or custom analytics.

ChainStream requires Scale Mode or higher (see plans/pricing); standard WebSockets work on all plans.

Can I have multiple subscriptions on one WebSocket connection?

Yes. A single connection can host hundreds of subscriptions (Standard Mode: up to 100 per connection; Scale Mode: up to 600). Each *Subscribe call returns a numeric ID—store it so you can *Unsubscribe later and keep the connection within limits. Reuse connections when possible to avoid extra handshakes, but remove idle subscriptions so they do not count toward your plan's method-specific caps (see Rate Limits and plans/pricing for details). If a connection closes, reconnect once and resubscribe using the IDs you tracked.

Why did my WebSocket connection close?

Connections close automatically when they violate one of our guardrails:

  • No active subscriptions: After the handshake we wait ~5 seconds for your client to create a subscription or send a keepalive. If nothing happens, the socket is recycled.
  • Inactivity timeout: If we do not observe traffic (notifications, client messages, or ping/pong) for 60 seconds, we close the connection. Send ping frames every 20-30 seconds to keep the session warm.
  • Credential or auth errors: Missing or invalid API keys (including revoked credentials) trigger immediate disconnects—check for 401 errors during the initial upgrade.
  • Connection limits exceeded: Standard Mode allows up to 100 concurrent WebSocket connections and 100 total subscriptions; Scale Mode raises those limits to 300 connections and 600 subscriptions. Method-specific caps also apply—see Rate Limits and plans/pricing for the full matrix.

Always implement reconnection logic with exponential backoff, resubscribe on reconnect, and see Error Handling plus Observability for guidance on interpreting disconnects.

What commitment level should I use?

Choose based on your use case:

  • Processed: Fastest notifications, ideal for price feeds and applications that can tolerate potential rollbacks.
  • Confirmed: Balanced option with network consensus, good for most applications.
  • Finalized: Guaranteed by network finality, ~13 second delay, required for financial settlement.

Review the commitment levels documentation for deeper detail.

How do I reduce bandwidth usage?

Syndica automatically offers Per-Message Deflate compression (RFC 7692) on every WebSocket endpoint, typically reducing bandwidth by 70-90%. Most client libraries negotiate this extension automatically, but some require you to enable compression explicitly or install an additional dependency—check your client's docs to confirm it advertises permessage-deflate during the handshake.

Are there rate limits for WebSocket subscriptions?

Yes. Each plan defines ceilings for active WebSocket connections, total subscriptions, and per-method concurrency, plus optional per-IP enforcement. Review the WebSocket limits table for your tier, check plans/pricing for current allowances, and use custom rate limits to set credential-specific caps (connections, subscriptions, or per-method) when you need finer control.

How do I subscribe to multiple event types on one connection?

You can create multiple subscriptions on a single WebSocket connection. Each subscription receives its own ID:

// Subscribe to both slots and accounts
ws.send(JSON.stringify({
jsonrpc: '2.0',
id: 1,
method: 'slotSubscribe'
}));

ws.send(JSON.stringify({
jsonrpc: '2.0',
id: 2,
method: 'accountSubscribe',
params: ['YourAccountPublicKeyHere', { commitment: 'confirmed' }]
}));

See the WebSocket Methods reference for all available subscription types.

ChainStream

When should I use ChainStream verified transactions?

Set verified: true when you need confirmation that multiple validators have processed a transaction before acting on it. This adds up to ~400 ms delay but provides additional correctness guarantees. Only use verified: true with commitment: "processed"; for confirmed or finalized, the network already provides the necessary consensus.

How many concurrent ChainStream streams can I have?

Scale Mode includes one ChainStream subscription, and you can add up to nine additional subscriptions for a total of ten concurrent streams per account. Configure custom rate limits for ChainStream per API key as needed, and review plans/pricing for current limits by tier.

Can I filter ChainStream traffic by multiple account keys?

Yes. accountKeys filters support all (transaction must include all keys), oneOf (transaction must include at least one key), and exclude (transaction must not contain listed keys). Filters run in order: exclude, then all, then oneOf. Combine them to target just the transactions you care about. See the ChainStream API documentation for full examples.

How do I reduce ChainStream bandwidth usage?

Syndica offers Per-Message Deflate compression (RFC 7692) on every ChainStream endpoint—most clients negotiate it automatically, though some require enabling compression manually or adding an extra dependency to advertise permessage-deflate. For transaction-heavy streams, you can further trim payloads via metadataOnly: true, excludeVotes: true, and targeted accountKeys filters.

Why is my ChainStream connection failing?

Common causes:

  • Scale Mode not enabled (ChainStream requires it—upgrade or review plans/pricing).
  • ChainStream not enabled on your dashboard's ChainStream API page.
  • No available streams / Error 7429 (subscription method exceeded limit) (all subscriptions in use). Close unused streams or enable additional streams—see plans/pricing for details.
  • API key missing ChainStream permissions.

Check the ChainStream API page for subscription status and limits after resolving the above.

What happens if a validator goes offline when using ChainStream?

ChainStream aggregates data from multiple validators and automatically routes around node failures, so you keep receiving events from healthy validators without interruption—one of the primary benefits over single-node WebSocket connections.

How do I use ChainStream with devnet?

Connect to wss://solana-devnet.chainstream.syndica.io/api-key/YOUR_API_KEY and set network: "solana-devnet" in your transactionsSubscribe (or other) params. The rest of the request shape matches mainnet usage, including verified, commitment, and filter objects.

What latency should I expect from ChainStream?

Once a validator feeding ChainStream timestamps an event at the geyser interface, it reaches clients co-located in the same AWS region in ≤10 ms (round-trip latency under 10 ms). Across typical public-internet links you should expect roughly 50–100 ms end-to-end latency, depending on your network path and geography. To measure your actual performance, compare the nodeTime field (UTC timestamp) in each ChainStream message with your local clock and log the delta over time.

Billing & Plans

Why does my first Scale invoice show a partial amount?

Scale upgrades take effect immediately even though billing cycles align to the first of the month. The initial invoice shows a prorated portion of the $199 fee plus $200 in welcome credits applied at the same time. The credits offset the prorated charge, so no payment is due unless you burn through the credit balance.

If I upgrade and downgrade in the same month, will I be billed twice?

No. Plan changes generate invoices that net out unused time and remaining credits. You only pay for the prorated period you stayed on Scale; most invoices total $0 because credits cancel the charge.

How do Scale free-trial credits work?

Upgrading to Scale adds $200 in credits to your account. They automatically cover the prorated Scale fee and eligible usage until the balance hits zero. Downgrade before the credits are consumed and your card is never charged. Track remaining credits under Dashboard → Billing → Credits.

How do I upgrade, downgrade, or cancel my subscription?

Navigate to Manage → Billing → Plans, choose Standard Lite, Standard, or Scale, and click Switch Plan. The change applies immediately and invoices/credits are prorated automatically. To cancel Scale, simply switch back to Standard using the same flow.

Can I remove my credit card after cancelling Scale?

Yes. After you downgrade to Standard and all outstanding invoices are paid, delete your card(s) in Billing → Payment Methods. If you later decide to upgrade again, add a new payment method before switching plans.

Do you offer annual or upfront billing discounts?

Not currently. Scale is billed monthly ($199) and Standard is free. Hyperscale customers can negotiate custom terms with their account team, but there is no self-serve annual or upfront option today.

Can I close my account if there's an unpaid invoice?

Outstanding invoices must be settled before permanent closure. Update your payment method so we can retry the charge or contact support to discuss settlement. Once the balance is cleared, we can close the account and remove stored payment details.