a month ago
Hi Railway team,
Our production API on custom domain https://api.zenotiq.com is being rate-limited by the Railway edge (server: railway-hikari) before requests reach our Express container. The browser then reports a CORS error because the 429 response has no Access-Control-Allow-Origin header.
What’s failing
POST https://api.zenotiq.com/api/tenant/login
Origin: https://www.zenotiq.com
Content-Type: text/plain (simple request — no preflight)
Status: 429
Response headers:
server: railway-hikari
x-railway-edge: sin1
x-hikari-trace: sin1.98a6 (example)
content-type: text/plain; charset=utf-8
content-length: 12
Body: rate limited
OPTIONS preflight to the same path also returns 429 rate limited from railway-hikari (same pattern).
These responses never hit our Node/Express app, so we cannot add CORS headers or handle the login ourselves.
Impact
Login from https://www.zenotiq.com fails in production.
We temporarily avoided OPTIONS by using text/plain, but POST itself is now also 429’d by Hikari, so login is broken again.
Same issue affects our default Railway domain: https://zenotiq-backend-production.up.railway.app.
Ask
Please investigate why railway-hikari is returning 429 rate limited for legitimate browser traffic to this service/custom domain in region sin1, and either:
lift / raise the edge rate limit for this service, or
tell us what we need to change (plan limits, networking, WAF, etc.) so normal browser POSTs and OPTIONS to api.zenotiq.com reach our container.
Happy to provide more traces, timestamps, or a HAR if useful.
Thanks.
3 Replies
a month ago
This thread has been opened as a bounty so the community can help solve it.
Status changed to Open Railway • 26 days ago
a month ago
The most likely fix is to check whether your domain is going through Cloudflare, a WAF, or a protection mode before reaching Railway, because that can cause exactly this 429 and prevent the request from ever reaching Express. If none of that is in front of Railway, then the block is on Railway Edge itself and you need to ask them to raise or remove the limit for api.zenotiq.com and the *.up.railway.app domain.
What to do now:
Disable any Cloudflare “Under Attack” mode, WAF rule, bot protection, or rate limiting.
Test again with POST and OPTIONS.
If it still returns 429, ask Railway to whitelist or lift the edge block for that service.
a month ago
heyy thank you guys, you all were right , the issue was , Under Attack Mode inside railway setting
Status changed to Solved abhishekdet214055 • 26 days ago
