ThrustLab

client.users

Read the authenticated user's profile.

Methods

MethodEndpointReturns
client.users.me()GET /v1/users/meThe user resource for the API key's owner

Identify the calling user

Useful for tools that share an API key across environments, or for surfacing "acting as" identity in your own UI.

from thrustlab import Client

client = Client()
me = client.users.me()
print(me["id"])     # user_2c5tQ...
print(me["email"])  # [email protected]
print(me["tier"])   # "free" | "hobbyist" | "pro" | "founding" | "beta_tester" | "enterprise"

The full me() response

{
  "object": "user",
  "id": "user_2c5tQ...",
  "email": "[email protected]",
  "email_verified": true,
  "tier": "pro",
  "unit_system": "metric",
  "trial_start": "2026-04-01T00:00:00Z",
  "trial_end": "2026-04-15T00:00:00Z",
  "trial_days_remaining": 0,
  "created_at": "2026-03-20T18:04:11Z",
  "entitlements": {
    "sim_types": ["batch", "dynamic", "steady_single", "sweep_1d", "sweep_nd"],
    "db_access": "full",
    "cad_export": true,
    "creator_edit": true,
    "api_access": true,
    "daily_cap": null,
    "weekly_cap": 400
  },
  "gate_required_tiers": {
    "steady_single": "free",
    "sweep_1d": "hobbyist",
    "sweep_nd": "pro",
    "dynamic": "pro",
    "batch": "pro",
    "cad_export": "pro",
    "creator_edit": "hobbyist",
    "api_access": "hobbyist"
  }
}
FieldMeaning
objectAlways "user"
idPublic user id (user_...)
emailAccount email
email_verifiedWhether the email has been confirmed
tierOne of free, hobbyist, pro, founding, beta_tester, enterprise
unit_systemDisplay-unit preference — metric or imperial (canonical storage is always metric)
trial_start / trial_endTrial window, or null if the account never had one
trial_days_remainingComputed days left in the trial (null with no trial_end, 0 once expired)
created_atAccount creation timestamp
entitlements.sim_typesSim types this tier can run — subset of steady_single, sweep_1d, sweep_nd, dynamic, batch
entitlements.db_accesssubset or full — component-database access
entitlements.cad_exportWhether CAD export is unlocked
entitlements.creator_editWhether the component/propeller creator's edit mode is unlocked
entitlements.api_accessWhether this tier may use REST API keys at all
entitlements.daily_capRolling 24h compute-unit cap, or null if this tier has no daily cap
entitlements.weekly_capRolling 7-day compute-unit cap, or null if this tier has no weekly cap
gate_required_tiersGlobal map of every gated capability and sim-type → the cheapest tier that unlocks it (e.g. api_accesshobbyist). Lets you render "Requires X or higher" prompts without hardcoding tier logic.

A tier only ever has a daily_cap or a weekly_cap populated, never both — free tiers are metered daily, paid tiers weekly.

Confirm an API key works

The cheapest live-credential check — users.me is a single GET with no side effects. Use this in CI before kicking off real work.

from thrustlab import Client
from thrustlab.exceptions import AuthenticationError

try:
    client = Client()
    client.users.me()
    print("auth ok")
except AuthenticationError:
    raise SystemExit("THRUSTLAB_API_KEY is invalid or revoked")

See also

We use cookies and analytics tools to understand how you use ThrustLab and improve the experience. Privacy Policy

Python SDK — Users · ThrustLab API