Account
Identify the token: the acting user, the company, the plan and the effective permissions. Call GET /me first to check that a key works.
GETGet the current identity
GET /me
Returns the user the token acts as (for a company key — its service user), the company, the token kind and scopes, and the list of permissions with the locations where each one applies (null — all locations).
| Token scope | read |
|---|---|
| Permission | Any employee; results follow the token's visibility |
| MCP tool | account_me · read-only |
Responses
| Status | Description |
|---|---|
| 200 | OK |
| 401 | unauthorized — Missing, invalid, revoked or expired token
|
| 403 | forbidden · insufficient_scope · plan_required — Plan without API access
|
| 429 | rate_limited — Too many requests — retry after Retry-After seconds
|
curl 'https://app.jecheck.io/api/ext/v1/me' \
-H 'Authorization: Bearer $JECHECK_TOKEN'const res = await fetch('https://app.jecheck.io/api/ext/v1/me', {
method: 'GET',
headers: {
Authorization: `Bearer ${process.env.JECHECK_TOKEN}`,
},
});
const { data } = await res.json();import os, requests
res = requests.get(
"https://app.jecheck.io/api/ext/v1/me",
headers={"Authorization": f"Bearer {os.environ['JECHECK_TOKEN']}"},
)
res.raise_for_status()
data = res.json()["data"]$client = new GuzzleHttp\Client(['base_uri' => 'https://app.jecheck.io/api/ext/v1/']);
$res = $client->request('GET', 'me', [
'headers' => ['Authorization' => 'Bearer ' . getenv('JECHECK_TOKEN')],
]);
$data = json_decode($res->getBody(), true)['data'];{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "account_me",
"arguments": {}
}
}{
"data": {
"user": {
"id": 1042,
"uuid": "9b7c3f8e-2d1a-4b6e-9f00-1c2d3e4f5a6b",
"name": "API: Data warehouse",
"email": "[email protected]",
"is_admin": false,
"is_service": true,
"locale": "en"
},
"company": {
"id": 761,
"name": "Coffee Lab",
"country": "KZ",
"locale": "ru",
"timezone": "Asia/Almaty",
"plan": "enterprise"
},
"token": {
"kind": "key",
"name": "Data warehouse",
"prefix": "jck_live_a1B2c3",
"scopes": [
"read",
"write"
],
"expires_at": null
},
"permissions": {
"analytics.view": null,
"audits.view": [
12,
14
],
"tasks.view_all": null
},
"locations": [
{
"id": 12,
"name": "Abay Ave"
},
{
"id": 14,
"name": "Dostyk Plaza"
}
]
}
}GETGet the company profile
GET /company
Company settings that matter for integrations: name, country, language of reports, time zone, plan and its paid features, number of locations.
| Token scope | read |
|---|---|
| Permission | Any employee; results follow the token's visibility |
| MCP tool | account_company · read-only |
Responses
| Status | Description |
|---|---|
| 200 | OK |
| 401 | unauthorized — Missing, invalid, revoked or expired token
|
| 403 | forbidden · insufficient_scope · plan_required — Plan without API access
|
| 429 | rate_limited — Too many requests — retry after Retry-After seconds
|
curl 'https://app.jecheck.io/api/ext/v1/company' \
-H 'Authorization: Bearer $JECHECK_TOKEN'const res = await fetch('https://app.jecheck.io/api/ext/v1/company', {
method: 'GET',
headers: {
Authorization: `Bearer ${process.env.JECHECK_TOKEN}`,
},
});
const { data } = await res.json();import os, requests
res = requests.get(
"https://app.jecheck.io/api/ext/v1/company",
headers={"Authorization": f"Bearer {os.environ['JECHECK_TOKEN']}"},
)
res.raise_for_status()
data = res.json()["data"]$client = new GuzzleHttp\Client(['base_uri' => 'https://app.jecheck.io/api/ext/v1/']);
$res = $client->request('GET', 'company', [
'headers' => ['Authorization' => 'Bearer ' . getenv('JECHECK_TOKEN')],
]);
$data = json_decode($res->getBody(), true)['data'];{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "account_company",
"arguments": {}
}
}{
"data": {
"id": 761,
"name": "Coffee Lab",
"country": "KZ",
"locale": "ru",
"timezone": "Asia/Almaty",
"plan": {
"key": "enterprise",
"until": null,
"features": [
"automation",
"ai",
"testing",
"haccp",
"api"
]
},
"locations_count": 14,
"created_at": "2024-03-02T09:15:00+05:00"
}
}