Rate limits

Two limits apply to the public CloudRF API at https://api.cloudrf.com: a rate limit, which is the same for everyone, and a monthly quota, which depends on your plan.

Rate limit

Allow at least 1 second between calculations.

  • The limit applies per API key, on every plan from Free to Platinum.
  • Send requests in series: wait for a response, pause, then send the next. Do not send calculations in parallel on one key.
  • To model many sites, use an API designed for it instead of looping faster: /multisite for many transmitters, /points for many transmitters to one receiver, and /multilink for mesh networks.

Monthly quota

PlanAPI requests per month
Free50
Bronze1,000
Silver5,000
Gold25,000
Platinum75,000

Each Create call costs one credit: /area, /path, /points, /multilink, /multisite, /hf/area and /hf/prediction. Best Site Analysis (/bsa), satellite (/satellite/area and /spotbeam) and 3D (/3d) calculations also cost one credit per request.

Analyse calls that work on calculations you have already made, such as /merge, /interference and /network, are free.

Plans also limit the calculation radius and output resolution. See plans for the full table. The self-hosted SOOTHSAYER server has no API limits.

Checking your usage

  • GET /my-metrics returns your total requests, and a daily breakdown by request type, for your current purchase period.
  • Every successful API call returns a JSON response containing balance: the monthly credits remaining on your plan.
{"balance": 1000}

Read balance from each response to stop your script before the quota runs out.

When you exceed a limit

If you send a calculation while another is still running on your key, the API responds with HTTP 429:

{"error": "Calculation in progress. Please wait for existing calculations to complete"}

The rejected request is not processed. Wait for the running calculation to return, pause for at least 1 second, then send it again.

SituationHTTP statusResponse bodyWhat to do
Calculation sent while another is in progress429{"error": "Calculation in progress. Please wait for existing calculations to complete"}Wait for the response, pause 1 second and retry.
Monthly quota used up403{"error": "You do not have any credit. Order a free or paid plan at https://cloudrf.com/plans"}Order a plan at cloudrf.com/plans.
Radius greater than the plan allows400{"error": "Your radius exceeds the maximum allowed for your plan"}Reduce the radius, or upgrade.
Missing or invalid API key401{"error": "Invalid API key! ..."}Send your key in the key header.

A resolution above your plan’s limit does not return an error. The calculation runs, and the output resolution is reduced automatically to your plan’s limit. If you need finer output over the same area, reduce the radius or upgrade.

A very small radius combined with a very coarse resolution, such as 1 km at 90 m, can also trigger a rate-limiting error. Use a resolution that suits the radius.

Example: a compliant loop

for site in sites/*.json; do
  out="out/$(basename "$site")"
  while :; do
    status=$(curl --silent --location 'https://api.cloudrf.com/area' \
      --header "key: $CLOUDRF_API_KEY" \
      --data @"$site" --output "$out" --write-out '%{http_code}')
    sleep 1
    [ "$status" != "429" ] && break
  done
done

Machine-readable limits

The same limits are published for tools and AI agents at /apis/rate-limits.yml and /apis/plans.yml.