Skip to main content
Socket Swap V3 is available on three endpoints depending on your use case:
EndpointAuth requiredRate limitUse case
https://public-backend.socket.techNoneSharedTesting and prototyping
https://backend.socket.techDomain whitelistStandardWallets, widgets, other UIs
https://dedicated-backend.socket.techAPI key20 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");