Skip to content

Rate Limits

Jobko API rate limits protect the service and ensure fair usage.

Default Limits

Limit Value
Requests per hour 100
Requests per day 1,000

These limits apply per API key.

Rate Limit Headers

Responses include rate limit information:

X-RateLimit-Limit: 100
X-RateLimit-Remaining: 95
X-RateLimit-Reset: 1710252000
Header Description
X-RateLimit-Limit Max requests per hour
X-RateLimit-Remaining Requests left in current window
X-RateLimit-Reset Unix timestamp when limit resets

When Limits Are Exceeded

You'll receive a 429 Too Many Requests response:

{
  "error": {
    "code": -32002,
    "message": "Rate limit exceeded"
  }
}

With a Retry-After header:

Retry-After: 3600

Best Practices

1. Check Remaining Requests

Before batch operations, check your remaining quota:

response = requests.get("https://jobko.ai/api/mcp/status", headers=headers)
remaining = int(response.headers.get("X-RateLimit-Remaining", 100))
if remaining < 10:
    print("Running low on requests")

2. Implement Exponential Backoff

import time

def call_with_retry(func, max_retries=3):
    for attempt in range(max_retries):
        response = func()
        if response.status_code == 429:
            wait_time = 2 ** attempt  # 1, 2, 4 seconds
            retry_after = response.headers.get("Retry-After")
            if retry_after:
                wait_time = int(retry_after)
            time.sleep(wait_time)
            continue
        return response
    raise Exception("Max retries exceeded")

3. Cache Results

Don't re-analyze the same job multiple times:

from functools import lru_cache

@lru_cache(maxsize=100)
def analyze_job(job_url):
    return jobko_request("analyze_job", {"job_url": job_url})

4. Use Webhooks for Batch Operations

For large batch jobs, contact us about webhook-based processing instead of polling.

Higher Limits

Need more requests? Contact us:

We offer increased limits for:

  • Enterprise customers
  • High-volume integrations
  • Partnership programs