Shared RPC
Best for fast integration. We manage the public gateway path, auth, limits, and upstream routing shape.
Public RPC Docs
These are the public-facing transport docs for teams that want to consume the shared gateway or point their own nodes and provider endpoints at the same project-scoped edge.
Live base URL
Overview
Use our shared gateway: issue project credentials and send raw JSON-RPC to project-scoped URLs.
Bring your own upstreams: register your node or provider endpoint, then pin project traffic to that upstream pool with networkUpstreams .
Best for fast integration. We manage the public gateway path, auth, limits, and upstream routing shape.
Best for enterprise isolation. A project can be pinned to a dedicated upstream set without changing the client-facing URL shape.
Auth
x-project-secret: <PROJECT_SECRET>x-api-key: <PROJECT_SECRET>Authorization: Bearer <PROJECT_SECRET>Basic auth with project ID as username and secret as password?projectSecret=<PROJECT_SECRET> for websocket authRecommended default: bearer auth for HTTP and query auth for websocket clients that cannot set custom headers reliably.
Transport
This is a raw RPC transport layer. There is no separate broker API required for standard chain calls.
Discovery
GET /api/provider/v1/metadataGET /api/provider/v1/statusGET /api/provider/v1/projects/:projectId/descriptorGET /api/provider/v1/projects/:projectId/swivy-configGET /api/provider/v1/projects/:projectId/swivy-handoffExamples
curl "https://rpc.swivy.dev/api/provider/v1/metadata"curl "https://rpc.swivy.dev/api/provider/v1/projects/<PROJECT_ID>/descriptor" \
-H "authorization: Bearer <PROJECT_SECRET>"curl -X POST "https://rpc.swivy.dev/eth-mainnet/v3/<PROJECT_ID>" \
-H "content-type: application/json" \
-H "authorization: Bearer <PROJECT_SECRET>" \
--data '{"jsonrpc":"2.0","id":1,"method":"eth_chainId","params":[]}'curl -X POST "https://rpc.swivy.dev/solana-mainnet/v3/<PROJECT_ID>" \
-H "content-type: application/json" \
-H "authorization: Bearer <PROJECT_SECRET>" \
--data '{"jsonrpc":"2.0","id":1,"method":"getLatestBlockhash","params":[]}'wss://rpc.swivy.dev/eth-mainnet/v3/<PROJECT_ID>?projectSecret=<PROJECT_SECRET>Bring Your Own
networkUpstreams.curl -c rpc-fabric.cookies -X POST "https://rpc.swivy.dev/auth/login" \
-H "content-type: application/json" \
--data '{
"email": "ops@example.com",
"password": "REPLACE_WITH_REAL_PASSWORD"
}'curl -b rpc-fabric.cookies -X POST "https://rpc.swivy.dev/api/control-plane/upstreams/probe" \
-H "content-type: application/json" \
--data '{
"networkKey": "eth-mainnet",
"httpUrl": "https://your-eth-endpoint.example",
"wsUrl": "wss://your-eth-endpoint.example",
"httpHeaders": {
"authorization": "Bearer YOUR_TOKEN"
},
"wsHeaders": {
"authorization": "Bearer YOUR_TOKEN"
}
}'curl -b rpc-fabric.cookies -X POST "https://rpc.swivy.dev/api/control-plane/upstreams" \
-H "content-type: application/json" \
--data '{
"id": "company-eth-mainnet-a",
"networkKey": "eth-mainnet",
"httpUrl": "https://your-eth-endpoint.example",
"wsUrl": "wss://your-eth-endpoint.example",
"httpHeaders": {
"authorization": "Bearer YOUR_TOKEN"
},
"wsHeaders": {
"authorization": "Bearer YOUR_TOKEN"
},
"capabilities": ["standard", "write", "websocket"],
"weight": 1
}'curl -b rpc-fabric.cookies -X PUT "https://rpc.swivy.dev/api/control-plane/projects/<PROJECT_ID>" \
-H "content-type: application/json" \
--data '{
"networkUpstreams": {
"eth-mainnet": ["company-eth-mainnet-a"],
"solana-mainnet": ["company-solana-mainnet-a"]
}
}'npm run rpc-infra:project -- create \
--base-url https://rpc.swivy.dev \
--admin-token <RPC_FABRIC_ADMIN_TOKEN> \
--name company-production \
--networks eth-mainnet,base-mainnet,arbitrum-one,optimism-mainnet,polygon-mainnet,solana-mainnet,solana-devnet \
--project-secret-ref COMPANY_RPC_PROJECT_SECRET \
--auth-scheme bearer \
--solana-commitment confirmed \
--format envNetworks
The live network matrix is currently unavailable. When the provider metadata endpoint is reachable, this page lists the active network catalog automatically.
Limits and health
RateLimit-Limit, RateLimit-Remaining, RateLimit-Reset, and RateLimit-Policy.Retry-After is returned on 429./healthz is process liveness./readyz is gateway readiness./api/provider/v1/status is the provider-facing health document./metrics exposes Prometheus metrics.Errors
400 INVALID_JSON_RPC_BODY400 BATCH_LIMIT_EXCEEDED401 UNAUTHORIZED401 PROJECT_NOT_FOUND401 INVALID_SECRET403 NETWORK_NOT_ALLOWED403 METHOD_NOT_ALLOWED404 NETWORK_NOT_FOUND429 RATE_LIMITED503 LIMITER_UNAVAILABLEWhen no upstream can serve the request, the data plane returns HTTP 502 with a JSON-RPC error envelope.