Skip to main content

Pricing

FreeProEnterprise
Price$0$28/monthCustom — contact sales
NamespaceSingle userDedicated (per org + per workspace)Dedicated (per org + per workspace)
Max members110100
Max workspaces01050
Stored embeddings500UnlimitedUnlimited
Self-service key managementYes
All paid plans include priority support and access to the analytics dashboard.
Start free, upgrade when you need a private namespace or team access. See pricing →

Request Quotas

Each plan tier has a maximum number of API requests per billing period. Once exceeded, the API returns 429 Too Many Requests until the period resets.
TierQuotaPeriodReset
Free500 requestsMonthly1st of each month
Pro10,000 requestsDailyMidnight UTC
EnterpriseCustomCustomCustom

Quota Exceeded Response

When you exceed your quota, the API returns:
{
  "error": "quota_exceeded",
  "message": "You have used 500/500 requests this month. Upgrade your plan for higher limits.",
  "tier": "free",
  "limit": 500,
  "period": "monthly",
  "usage": 500
}

HTTP Rate Limits

Independent of quotas, all tiers share per-minute rate limits on API endpoints. These prevent burst abuse and ensure fair access.
Endpoint CategoryLimitEndpoints
Retrieve200/minute/api/retrieve/code-blocks, /api/retrieve/best-for-task, /api/retrieve/executions, /api/retrieve/few-shot-examples, /api/retrieve/task-patterns, /api/retrieve/code-files
Store30/minute/api/store/code-block, /api/store/execution, /api/store/execution-result, /api/store/bulk-execution-result, /api/store/auto-review, /api/store/cache-usage, /api/store/synthetic-queries
Default100/minuteAll other endpoints

Plan Limits

Each tier also sets limits on organization resources.
TierMax MembersMax WorkspacesNamespace
Free10Shared
Pro1010Dedicated (per org + per workspace)
Enterprise10050Dedicated (per org + per workspace)

Handling Rate Limits

Both SDKs include built-in retry logic with exponential backoff. When a 429 response is received, the SDK automatically retries up to 3 times before raising an error. If all retries are exhausted, a RateLimitError is raised:
from raysurfer import RaySurfer
from raysurfer.exceptions import RateLimitError

client = RaySurfer(api_key="your_api_key")

try:
    result = client.search(task="Fetch GitHub repos")
except RateLimitError as e:
    print(f"Rate limited after retries: {e}")
    if e.retry_after:
        print(f"Try again in {e.retry_after}s")
Need higher limits? Contact us to discuss Enterprise plans with custom quotas and self-service key management.