Networking & API Access
Fix connectivity issues, CORS errors, WebSocket failures, and firewalls when using the platform.
Quick checks
Before investigating specific issues, try these general steps:
- Check platform health.
curl https://www.ivybiosciences.com/api/healthreturns the status of the database, storage and cache checks, and it needs no sign-in. When you're signed in, the/healthpage shows the same checks. - Try an incognito window. This rules out interference from extensions.
- Disable VPN/proxy temporarily. If the issue disappears, your VPN or proxy is the cause.
- Try a different network. Switch from corporate Wi-Fi to a mobile hotspot to isolate network-level issues.
WebSocket connection failures
Job progress comes from the compute orchestrator over WebSocket, but the browser doesn't open that WebSocket. The server holds it and relays each job's events to the workspace as an SSE (Server-Sent Events) stream on this site, /api/v1/jobs/[jobId]/events. SSE runs over ordinary HTTPS, so a proxy that blocks WebSocket upgrades doesn't affect the workspace.
A WebSocket connection to 'wss://...' failed error in the console therefore comes from your own script or an extension, not from the workspace. If you connect to the orchestrator's WebSocket yourself (see WebSocket streaming) and it fails:
| Cause | Diagnosis | Fix |
|---|---|---|
| Corporate firewall blocks WebSocket | Only happens on corporate network | Ask IT to allow wss:// connections on port 443, or use the SSE route instead |
| HTTP proxy does not support WebSocket upgrade | The 101 Switching Protocols upgrade fails | Configure the proxy to allow WebSocket upgrades, or use the SSE route |
| Antivirus/security software | Works on a different machine | Add the platform's domains to the antivirus exception list |
If the SSE stream is blocked:
- The workspace falls back to polling job status, so updates arrive more slowly.
- Symptoms: job status only changes after a delay or a reload. Allowlist long-lived HTTPS responses from
www.ivybiosciences.com(see the proxy table below).
SSE streaming interrupted
Network conditions can interrupt the SSE streams used for chat and job events.
Symptoms:
- Chat response stops mid-sentence and resumes after a pause.
- A job's status jumps straight from a queued state to a finished one, skipping the intermediate updates.
- Browser console shows
EventSourceerrors.
Reconnection behavior:
- The job event stream sends a heartbeat about every 15 seconds and closes after about 5 minutes, and the client then opens a new one.
- A new stream doesn't replay the events you missed. The client reads the job's current state instead, so the final status is still correct.
Reducing interruptions:
- Avoid switching networks (Wi-Fi to cellular, VPN connect/disconnect) while a response is streaming.
- If on a laptop, prevent sleep during long-running operations.
- Close bandwidth-intensive applications (video calls, large downloads) that compete for the connection.
Corporate proxy setup
Many corporate networks route all traffic through an HTTP proxy. The platform works through most proxies, but some configurations cause issues.
Proxy requirements for the platform:
| Feature | Proxy requirement |
|---|---|
| Basic browsing | Standard HTTPS pass-through |
| Authentication (Clerk) | Allow clerk.ivybiosciences.com and accounts.ivybiosciences.com, and their cookies |
| Scripts using the orchestrator WebSocket | Allow the 101 Switching Protocols upgrade |
| Real-time updates in the workspace (SSE) | Allow long-lived HTTPS responses (the job stream stays open for up to about 5 minutes) |
| File uploads | Allow request bodies up to 100 MB (the per-file limit) and direct uploads to Amazon S3 |
| 3D viewer assets | Allow downloads from CDN domains |
Self-signed certificates and TLS inspection:
- Some corporate proxies inspect TLS by re-signing traffic with their own CA certificate ("SSL bumping" or "HTTPS interception").
- If your proxy does this, you may see certificate warnings or
ERR_CERT_AUTHORITY_INVALIDerrors. - Ask your IT team to either bypass TLS inspection for
*.ivybiosciences.comor install the proxy's CA certificate in your browser's trust store.
Proxy authentication:
- If your proxy requires authentication, your browser should prompt for credentials.
- For scripts and the CLI, set the
HTTP_PROXYandHTTPS_PROXYenvironment variables, with credentials if needed:http://user:[email protected]:8080.
VPN interference
VPN connections can interfere with the platform in several ways.
Split tunneling:
- With a full tunnel, all traffic, including the platform's, goes through the VPN's network. This adds latency and may add firewall restrictions.
- If split tunneling is available, route
*.ivybiosciences.comtraffic directly instead of through the VPN tunnel.
DNS resolution through VPN:
- Some VPNs override DNS resolution. If the VPN's DNS server can't resolve
ivybiosciences.com, connections fail. - Run
nslookup www.ivybiosciences.comwith and without the VPN connected. If the results differ or the VPN returns NXDOMAIN, the VPN's DNS is the issue. - Ask your IT team to add
ivybiosciences.comto the VPN's DNS configuration.
MTU issues:
- VPN tunnels reduce the effective MTU (Maximum Transmission Unit). If packets are too large, they may be dropped silently, which stalls connections.
- Symptoms: file uploads hang at a certain percentage, large API responses never complete.
- Fix: reduce the MTU on your local interface. On macOS:
sudo ifconfig en0 mtu 1400. On Linux:sudo ip link set dev eth0 mtu 1400.
API rate limits
The API applies a rate limit to each route class. When you exceed one, it returns HTTP 429 Too Many Requests.
Handling 429 responses:
- The response includes a
Retry-Afterheader with the number of seconds to wait before retrying. - Back off exponentially: wait
Retry-Afterseconds, then twice that, then four times that if later attempts also receive429. - Don't retry immediately in a tight loop.
Per-endpoint limits and header details are in Rate limits and API & SDK issues.
Offline mode
The platform needs a network connection. Its service worker coordinates tabs and broadcasts online/offline status, but it doesn't cache pages or API responses.
While you're offline:
- A page that is already open keeps showing what it has loaded.
- You can't send chat messages, submit jobs, fetch new data, or sign in.
- Job status stops updating.
Reconnection:
- When you come back online, reload the page to resync chats and job status. Jobs keep running on the server while you're offline.
CORS issues (self-hosting)
If you are self-hosting the platform, CORS (Cross-Origin Resource Sharing) errors are common during initial setup.
Symptoms:
- Browser console shows
Access-Control-Allow-Originerrors. - API calls from the frontend fail with "CORS policy" messages.
- Preflight OPTIONS requests return 403 or no CORS headers.
Fixing CORS for self-hosting:
- Next.js API routes. The allowed origins are a fixed list in
src/middleware/helpers/corsHelpers.tsandsrc/middleware/handlers/routeHandlers.ts. They are not read from an environment variable. Add your frontend origin to both lists and redeploy. - Storage (Amazon S3). Browser uploads go straight to the S3 bucket, so the bucket needs a CORS rule that allows
PUTandGETfrom your frontend origin. The rule is generated fromsrc/config/s3Cors.tsbynpm run build:s3-cors.
DNS resolution
If the platform is completely unreachable (not just slow), DNS resolution may be the issue.
Diagnosis:
- Run
nslookup www.ivybiosciences.comordig www.ivybiosciences.comfrom your terminal. - If the lookup fails or returns a wrong IP, your DNS resolver may be misconfigured, blocked, or poisoned.
Fixes:
- Try a public DNS resolver: Google (
8.8.8.8), Cloudflare (1.1.1.1), or Quad9 (9.9.9.9). - If you are on a corporate network, ask IT whether
ivybiosciences.comis blocked at the DNS level. - Flush your local DNS cache: macOS:
sudo dscacheutil -flushcache. Windows:ipconfig /flushdns. Linux:sudo resolvectl flush-caches.
Custom domains (self-hosting):
- If you run the platform on a custom domain, check that your DNS records (A, CNAME) point to the correct server.
- A record change reaches most resolvers within the old record's TTL, and can take up to 48 hours everywhere.
Time skew
A wrong system clock can invalidate authentication tokens.
- Clerk session tokens carry
iat(issued at) andexp(expires) timestamps and are short-lived. If your system clock is far off, tokens are rejected as expired or not yet valid. - Sync your system time via NTP. On macOS: System Settings then General then Date & Time, enable "Set date and time automatically." On Linux:
sudo timedatectl set-ntp true. - If you can't sync time (air-gapped network), sign-in will keep failing. Contact support.
Ticket checklist
If you need to contact support about a network issue:
- Endpoint URL and HTTP method
- Full response status code and body snippet (omit API keys and tokens)
- Timestamp, organization slug, and whether VPN or proxy was active
- Results of
nslookup www.ivybiosciences.comfrom your machine - Whether the issue reproduces on a different network (mobile hotspot)
- Browser DevTools Network tab export (HAR file) if possible
Was this page helpful?
Login Troubleshooting
Clear a stale Clerk session, fix Google, GitHub or LinkedIn sign-in failures, wait out the 60-minute lock after 5 failed attempts, or check key expiry.
Performance Troubleshooting
Cut chat latency with the thinking budget, drop canvas cards to Tier 1 to free WebGL contexts and memory, and hard-refresh stale bundles after a release.