Makes are the one currency for everything in getqueryly: the website, the REST API, and MCP tool calls from your AI assistant. If you are building an integration, a report job, or a nightly health check, you need to know how much you have, how fast you are spending, and how to handle the guardrails without losing a run. This is the whole picture in one place.
Uploading is free. Everything else spends Makes from one shared pool. Free users get 10 Makes per day, 2 per day without signing in. Paid users buy a balance that never expires and have no daily cap: Starter 50 Makes for GHS 49, Growth 200 for GHS 149, Pro 600 for GHS 399. Web, API and MCP all draw from the same balance, so the Usage page is the single source of truth.
| Action | Makes | Where |
|---|---|---|
| Upload, Kaggle search, costs check | Free | Entry only |
Data question (ds_query, chat) | 1 | Every question |
Health check (ds_health) | 2 | Quality score |
Insights (ds_insights), report (ds_report) | 3 | Patterns and PDF |
| Swarm quick, swarm full | 5, 8 | Multi-analyst consensus |
| Visuals, diagram, infographic, notebook, dashboard | 2, 1, 1, 2, 2 | Charts and workspaces |
Check live numbers anytime: GET /api/makes/costs returns the current table with per-tier RPM, and GET /api/makes/limits returns your remaining balance. The same table drives the pricing page, the Usage page, and the api-docs so they never drift.
Open /usage while signed in. You get balance from GET /api/makes/limits, per-key activity today with a live RPM readout from GET /api/keys/{hash}/rpm, the published per-key throttle table, and the full Makes cost table from GET /api/makes/costs. No guessing which key spent what, refresh and you see it. Unused keys show idle, active ones show used this minute and when the bucket refills.
Check before you call, or just call and read the headers after. Both work:
# check remaining before a batch
curl https://getqueryly.com/api/makes/limits -H "X-API-Key: YOUR_API_KEY"
# {"remaining": 23, "dailyLimit": 10, "tier":"starter", ... }
# after any keyed call, read headers
curl -i https://getqueryly.com/api/data-scientist/health/SESSION_ID \
-H "X-API-Key: YOUR_API_KEY"
# X-RateLimit-Limit: 30
# X-RateLimit-Remaining: 22
# X-RateLimit-Reset: 41
If you drive multiple keys, check per-key RPM at GET /api/keys/{key_hash}/rpm. It returns limit, remaining, and seconds until reset for both regular and AI buckets. The Usage page does this for you automatically.
Throttling is per key per minute, not per IP or per account, so one noisy script cannot take down another key. Regular endpoints: free 10, starter 30, developer 60, business 120 per minute. AI endpoints (query, health, insights, swarm, chat, visuals, MCP) get half: 5, 15, 30, 60. Every keyed API and MCP response carries X-RateLimit-Limit, Remaining, and Reset. Over the limit returns 429 with Retry-After in seconds and a plain message like Wait 37 seconds. No extra Makes are spent on the blocked request.
429 is not an error, it is a wait. The simplest correct handler respects Retry-After:
import time, requests
for attempt in range(5):
r = requests.get("https://getqueryly.com/api/data-scientist/health/"+sid,
headers={"X-API-Key": key})
if r.status_code != 429:
break
wait = int(r.headers.get("Retry-After", "30"))
time.sleep(wait)
Two practical tips that keep you out of 429 in the first place:
GET /api/makes/limits once, compare remaining to the Makes sum of the batch you plan, and split if it does not fit. Swarm alone can be 5 or 8, so three swarms need at least 15 Makes left.Say you run a playbook every morning: upload, health, insights, and a quick swarm. That is 0 plus 2 plus 3 plus 5, which is 10 Makes. On free that is your whole day, on starter it is a fifth of your balance with no daily pressure. The clean open is:
curl -X POST https://getqueryly.com/api/data-scientist/upload \
-H "X-API-Key: YOUR_API_KEY" -F "[email protected]"
curl https://getqueryly.com/api/data-scientist/health/SESSION_ID -H "X-API-Key: YOUR_API_KEY"
curl https://getqueryly.com/api/data-scientist/insights/SESSION_ID -H "X-API-Key: YOUR_API_KEY"
curl -X POST https://getqueryly.com/api/data-scientist/swarm \
-H "X-API-Key: YOUR_API_KEY" -F "session_id=SESSION_ID" -F "query=sumarize this week" -F "depth=quick"
If the upload is a repeat with the same session, skip it and you save a round trip. If any call returns 429, wait the Retry-After and retry the same request, do not re-upload.
POST /api/actions/{name} only charges known actions. A typo returns 404 and does not burn Makes. The alias ai_chat maps to chat, smart_test to ds_test_recommend, and chart to visuals.ds_query through https://getqueryly.com/mcp/sse spends 1 Make and is throttled at the 5 AI per minute free limit, headers and all.Think of Makes as fuel and RPM as lane speed. Watch the gauge at /usage before a long drive, respect the speed signs in X-RateLimit headers, and you will never stall mid-job.
New to keys? Start with API keys done right for naming, expiry, rotate and revoke. Building an integration? See API data analysis guide and how your AI assistant can actually do things for the full endpoint list.
Check Your Usage