Identity
The calling key, the organisation and the API's health.
/v1/healthLiveness probe
Public and unauthenticated. Answers in the usual envelope.
Returns
200 The API is up. data is Health.
Fields of data
status"ok"requiredversion"v1"required
Errors
Request
curl "https://app.zentiqai.com/v1/health"import { Zentiq } from "@zentiq/node";
const zentiq = new Zentiq({ apiKey: process.env.ZENTIQ_API_KEY });
const result = await zentiq.health();import os
from zentiq import Zentiq
zentiq = Zentiq(api_key=os.environ["ZENTIQ_API_KEY"])
result = zentiq.health()Example answer
{
"data": {
"status": "ok",
"version": "v1"
},
"error": null,
"requestId": "req_4f1c2e9a7b3d5e6f7a8b9c0d"
}/v1/meIdentify the calling API key
The key, its organisation, plan and limits. Any valid key may call it: a quick check that a key works.
Returns
200 The calling key and its organisation. data is Me.
Fields of data
organizationobjectrequiredidstringrequiredOrganisation id (
org_…).pattern `^org_.*`
displayNamestringrequiredThe name the organisation chose for the API (never an internal workspace name).
planstringrequiredThe plan's code (free, starter, plus, pro, business, enterprise).
createdAtstring (date-time)requiredISO 8601 UTC timestamp.
planobjectrequiredkeystringrequirednamestringrequiredincludedMinutesnumber | nullrequiredThe plan's minutes this cycle; null on an unlimited account.
featuresstring[]requiredThe plan's features that are on (dashboards.serve, embed.website, api.access, …).
limitsobjectrequiredmaxConcurrentSessionsinteger | nullrequiredLive sessions at once; null = no limit.
activeSessionsintegerrequiredminutesRemainingnumber | nullrequiredMinutes the account can still spend (and within its own monthly API cap); null = unlimited.
rateLimitsobjectrequiredThe rate limits this key works within (RateLimit-* headers on every answer).
windowSecondsintegerrequiredperKeyobjectrequiredRequests per window, by operation class (each operation's class is in the reference as x-zentiq-rate-class).
readintegerrequiredwriteintegerrequiredliveintegerrequiredheavyintegerrequiredsearchintegerrequired
perOrganizationobjectrequiredShared by all of the organisation's keys.
readintegerrequiredwriteintegerrequiredliveintegerrequiredheavyintegerrequiredsearchintegerrequired
apiKeyobjectrequiredidstringrequiredAPI key id (
key_…).pattern `^key_.*`
namestring | nullrequiredprefixstringrequiredThe key's first characters, as shown in the console.
scopesstring[]requiredThe key's scopes as set on it; [] or ["*"] is full access.
effectiveScopesstring[]requiredEvery scope the key holds, after full access and the implied scopes of keys made before 2026-10-01.
fullAccessbooleanrequiredapiVersion"2026-07-08" | "2026-10-01"requiredThe contract the key is pinned to (Zentiq-Version may ask for a newer one).
lastUsedAtstring (date-time) | nullrequiredcreatedAtstring (date-time)requiredISO 8601 UTC timestamp.
Errors
invalid_requestunauthorizedforbiddenupgrade_requiredrate_limitedserver_error
Request
curl "https://app.zentiqai.com/v1/me" \
-H "Authorization: Bearer $ZENTIQ_API_KEY"import { Zentiq } from "@zentiq/node";
const zentiq = new Zentiq({ apiKey: process.env.ZENTIQ_API_KEY });
const result = await zentiq.getMe();import os
from zentiq import Zentiq
zentiq = Zentiq(api_key=os.environ["ZENTIQ_API_KEY"])
result = zentiq.get_me()Example answer
{
"data": {
"organization": {
"id": "org_cmfq2b7x10000abcd1234",
"displayName": "…",
"plan": "pro",
"createdAt": "2026-09-25T12:00:00.000Z"
},
"plan": {
"key": "pro",
"name": "Pro",
"includedMinutes": 1,
"features": [
"api.access",
"dashboards.serve",
"embed.website"
]
},
"limits": {
"maxConcurrentSessions": 1,
"activeSessions": 1,
"minutesRemaining": 1
},
"rateLimits": {
"windowSeconds": 1,
"perKey": {
"read": 1,
"write": 1,
"live": 1,
"heavy": 1,
"search": 1
},
"perOrganization": {
"read": 1,
"write": 1,
"live": 1,
"heavy": 1,
"search": 1
}
},
"apiKey": {
"id": "key_cmfq2b7x10000abcd1234",
"name": "Zoe",
"prefix": "zq_live_ab12",
"scopes": [
"…"
],
"effectiveScopes": [
"…"
],
"fullAccess": true
}
},
"error": null,
"requestId": "req_4f1c2e9a7b3d5e6f7a8b9c0d"
}