Socket Swap V3 is available on three endpoints depending on your use case:
| Endpoint | Auth required | Rate limit | Use case |
|---|
https://public-backend.socket.tech | None | Shared | Testing and prototyping |
https://backend.socket.tech | Domain whitelist | Standard | Wallets, widgets, other UIs |
https://dedicated-backend.socket.tech | API key | 20 rps (100 rps enterprise) | Production backends |
Public endpoint
https://public-backend.socket.tech
No authentication required. Use this to try the API and test your integration before going to production.
curl "https://public-backend.socket.tech/v3/swap/quote?userOps=tx&originChainId=42161&..."
Backend endpoint (domain whitelisted)
https://backend.socket.tech
For wallets, widgets, and frontend UIs. Access is tied to your domain rather than an API key.
Request access here.
Once set up, requests include your affiliate ID:
curl "https://backend.socket.tech/v3/swap/quote?userOps=tx&originChainId=42161&..." \
--header "affiliate: YOUR_AFFILIATE_ID"
Dedicated endpoint (API key)
https://dedicated-backend.socket.tech
For production backend integrations that need guaranteed rate limits. Comes with 20 rps by default; enterprise customers get 100 rps.
Request access here.
curl "https://dedicated-backend.socket.tech/v3/swap/quote?userOps=tx&originChainId=42161&..." \
--header "x-api-key: YOUR_API_KEY" \
--header "affiliate: YOUR_AFFILIATE_ID"
Keep your API key server-side. Never expose it in frontend code or client bundles.
Server Request ID
All responses include a server-req-id header. Capture and include it when reporting issues to the Socket team — it lets us trace the exact request through the system.
const response = await fetch(url, { headers });
const serverReqId = response.headers.get("server-req-id");