Rate Limiting

Dealing with HTTP 429s from the Wyre API

As mentioned in Errors, one of the types of issues you may encounter is an HTTP 429 RateLimitException response. This indicates that you have exceeded your allocated request limit, and you must retry the request.

All API requests are subject to per-IP rate limiting. A fixed bucket of requests is allocated for each IP you are calling the API from. Some API calls (such as Create Account) have additional rate-limiting above and beyond that of the IP.

In simple applications, when you receive an error of this type, simply wait for a short period of time (on the order of a second) and try the request again. However, in more complex concurrent server environments where your client(s) may be responsible for a high number of simultaneous API calls on behalf of many users from a small pool of IPs, you'll want to make sure that you implement an exponential backoff so that you don't DDoS yourself.

Firewall Permit

In these situations, you can create a firewall permit which will allow a set of IPs of your choosing to exceed the usual limits.

🚧

Full KYC Approval Required

You can only create firewall permits using credentials that are tied to a fully approved root account. (Cannot be a subaccount)

Once created, these permits are good for 25 minutes. You'll need to wire up some type of cron service to perform the permit requests regularly if you'd like to retain increased access.

This helps avoid accumulation of stale configuration, as well as eases integration in some types of environments. Your participation is actively required to maintain the firewall opening as you must maintain the list of IPs yourself.

Using your authentication method of choice, invoke either method:

  • POST /v3/firewall/permit - permits the IP of the caller
  • POST /v3/firewall/permit?ips=1.1.1.1,2.2.2.2 - permits the supplied list of IPs

You may post up to 10 IP addresses per permit request, and may not invoke more than 5 permit requests an hour. IPv4 only, please.

All limits are subject to change; please ensure to use an error strategy (retrying) in the cases you do encounter RateLimitExceptions.