API reference
Key & account
The one endpoint that needs no scope — because a key that cannot identify itself makes the first five minutes of every integration a guessing game.
GET/me
scope—Whose key this is, what it may do, and the limits it actually runs under.
Request
curl https://api.zinevu.com/api/public/v1/me \ -H "Authorization: Bearer $ZINEVU_API_KEY"Response
{ "data": { "account": { "id": 42, "name": "Valk Veranda", "currency": "EUR", "country": "NL", "language": "nl" }, "key": { "name": "ERP import", "prefix": "zv_live_8f14", "scopes": ["leads:read", "prices:read", "prices:write"], "expires_at": null, "last_used_at": "2026-09-23T08:11:02+00:00" }, "limits": { "tier": "paid", "per_minute": 60, "per_day": 10000, "write_per_minute": 10, "write_per_day": 500, "max_page_size": 100 } }, "meta": { "message": "OK" }}Fields#
| Field | Notes |
|---|---|
account.currency | ISO 4217. Every amount in every response is in this currency. |
account.country | The account's default country — what an address with no country of its own is read as. |
key.prefix | The first characters of the secret. Safe to log; it is how two keys are told apart. |
key.scopes | Exactly what this key may do. See Authentication. |
key.expires_at | null when the key does not expire. Monitor it — an expired key is a 401 like any other. |
limits | Read from the same place the throttle reads, so it always agrees with the X-RateLimit-* headers. Size importers against this. |
What to use it for#
A start-up check ("does this key still work, and does it have the scopes this service needs?"), and a daily monitor of expires_at. Both are cheap: it is the smallest response in the API, and it spends the same one request from the budget as anything else.