Zinevu
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

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#

FieldNotes
account.currencyISO 4217. Every amount in every response is in this currency.
account.countryThe account's default country — what an address with no country of its own is read as.
key.prefixThe first characters of the secret. Safe to log; it is how two keys are told apart.
key.scopesExactly what this key may do. See Authentication.
key.expires_atnull when the key does not expire. Monitor it — an expired key is a 401 like any other.
limitsRead 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.