Account
Your tier, your API usage, and your download allowance.
HTTP endpoints on this page
- GET/profile
- GET/profile/usage
- GET/profile/downloads
Parameters and response shapes for each are in the API reference.
Three read-only calls on client.profile tell you who you are to the API, what you have spent, and what you have left. All three work on any active key and take no arguments. Call profile.get() first when a 403 surprises you: it is the cheapest way to confirm a key works and see its tier.
Methods
profile.getYour account record, including the tier that gates everything.anyprofile.usageRequests this calendar month, by endpoint.anyprofile.downloadsFree-tier download allowance and the groups you own.any
Your tier
tier is one of free, pro or demo, and it gates every endpoint. A method marked "pro" accepts pro or demo keys. The is_admin flag governs user administration, not simulator access: an admin flag on a free-tier key still cannot run a simulation. When a call returns 403, read tier, not is_admin. Your user_id doubles as your FIX CompID where FIX is enabled.
me = client.profile.get()
print(f"{me['email']} — tier {me['tier']}")
print(f"download limit: {me['download_limit']}")you@example.com — tier pro
download limit: 3Usage
profile.usage() counts requests in the current calendar month, resetting on the 1st. One run() of 100 Monte Carlo runs is a single request. by_endpoint is keyed by route template (for example /simulation/jobs/{job_id}/status), and only usage-logged routes are counted.
Download allowance
On the free tier, downloads are limited per rolling 24-hour window. The unit is a simulation group: every Monte Carlo run of one symbol/date/scenario, not a call, a run, or a file. On pro and demo, profile.downloads() reports limit, remaining and downloaded_groups as None (unlimited).
Membership is permanent. Once you have downloaded a group, re-fetching it is free forever: more runs, a different file format, a different endpoint, or the web explorer. Only a new group consumes allowance, and your own job runs are never charged at all. Every download path counts the same way: get_sim_data(), get_bulk_data() and the explorer.
A request that would exceed the allowance returns 429 without charging anything, so a partial download never silently eats your quota. See Errors for handling it, and the bulk download recipe for fetching many runs in one call.
One exemption: the first run's mid-price series on a shared cached group is free, so the explorer can draw a thumbnail of a scenario before you commit any allowance to it.
If you need more than the default, email support@simudyne.com — we can raise your limit without a Pro upgrade.