Find the insights and best practices about our product.
VCS Service Rate Limits

When Cranium connects to your Version Control System to run scans, it makes API requests on your behalf. Each VCS platform enforces rate limits on those requests, which can affect scan performance if limits are reached. The table below summarizes rate limit behavior across supported platforms.

VCS Service

API Requests Rate Limited?

Default Rate Limits

Are Rate Limits Configurable?

Do Git Commands affect API Rate Limit?

GitHub

Yes

  • 5,000 requests/hour (authenticated, PAT)
  • 5,000 requests/hour per OAuth app
  • 15,000 requests/hour if OAuth App is owned by GitHub Enterprise Cloud organization

No

  • HTTP: Yes
  • SSH: No by default, can be configured explicitly

Azure DevOps

Yes

  • Global Throughput Limit of 200 TSTUs per 5-minute sliding window

No

  • HTTP: Yes
  • SSH: No, except for fair usage

Bitbucket Data Center

Yes

  • Burst requests: 60
  • New requests/second: 5

Yes

  • HTTP: Yes
  • SSH: No

Bitbucket Cloud

Yes

  • 1,000-10,000 requests/hour based on license and users
  • Git: 60,000 requests/hour

No

  • HTTP: No
  • SSH: No

GitLab

Yes

  • Projects API: 2,000 per 10 minutes
  • Groups API: 200/minute

Yes

  • HTTP: No by default, but can be enabled
  • SSH: Yes, 600 per command/minute


Rate Limiting Features

GitHub

  • Rate limits increase if the OAuth App is owned or approved by a GitHub Enterprise Cloud organization.
  • Secondary rate limits apply: a maximum of 100 concurrent requests and 900 requests per minute to a single endpoint.
  • Response headers (x-ratelimit-limit, x-ratelimit-remaining, x-ratelimit-reset) indicate current limit status and when limits will reset.

Azure DevOps

  • Response headers (X-RateLimit-Limit, X-RateLimit-Remaining) indicate current limit status and when rate limiting will occur.

Bitbucket Data Center

  • Rate limiting uses the Token Bucket Algorithm.
  • Per-user rate limit settings are configurable via the Bitbucket admin API.

Bitbucket Cloud

  • To avoid hitting rate limits, add delays between API calls or distribute requests across multiple user tokens.
  • Response headers (X-RateLimit-Limit, X-RateLimit-Resource, X-RateLimit-NearLimit) indicate current limit status and approaching thresholds.

GitLab

  • Rate limits vary by endpoint; check GitLab documentation for the specific endpoint in use.
  • Rate limits can be disabled by setting the API Rate Limit value to 0.
  • The rate limit time period is configurable.
  • Response headers (RateLimit-Limit, RateLimit-Observed, RateLimit-Remaining, RateLimit-Reset, Retry-After) indicate current limit status.
  • Specific users can be configured to bypass authenticated request rate limits.

References

GitHub

Azure DevOps

Bitbucket Data Center

Bitbucket Cloud

GitLab

Did this answer your question?