Account and usage
GET/v1/me
Who am I: organization, permissions and limits of this credential
Response 200
| Name | Type | Description |
|---|---|---|
credential required | object | |
credential.kind required | "key" | "oauth" | "client" | key = API key, oauth = app connected by a person, client = organization app |
credential.id required | string | |
credential.name required | string | |
credential.mode required | "live" | "test" | |
credential.needs_review required | boolean | |
organization required | object | null | |
organization.id required | string | |
organization.name required | string | |
user required | object | null | |
user.id required | string | |
user.name required | string | null | |
permissions required | string[] | |
limits required | object | |
limits.spend_day_minutes required | number | null | |
limits.spend_month_minutes required | number | null | |
limits.per_call_minutes required | number | null | |
limits.requests_per_minute required | number | |
limits.spent_today_minutes required | number | |
limits.spent_month_minutes required | number | |
pricing required | object | |
pricing.api_minute_factor required | number | |
pricing.listen_text_factor required | number |
Example
curl
curl "https://api.kanutus.com/v1/me" \
-H "Authorization: Bearer $KANUTUS_API_KEY"Node.js
const res = await fetch("https://api.kanutus.com/v1/me", {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.KANUTUS_API_KEY}`,
},
});
console.log(res.status, await res.json());Python
import os, uuid, requests
r = requests.request(
"GET",
"https://api.kanutus.com/v1/me",
headers={"Authorization": f"Bearer {os.environ['KANUTUS_API_KEY']}"},
)
print(r.status_code, r.json())Try it
Runs from your browser against the real API. Use a kt_test_ key: nothing is charged. The key stays in this tab only.
GET /v1/meResponses by status
200 This credential
200
{
"credential": {
"kind": "key",
"id": "string",
"name": "string",
"mode": "live",
"needs_review": true
},
"organization": {
"id": "string",
"name": "string"
},
"user": {
"id": "string",
"name": "string"
},
"permissions": [
"string"
],
"limits": {
"spend_day_minutes": 0,
"spend_month_minutes": 0,
"per_call_minutes": 0,
"requests_per_minute": 0,
"spent_today_minutes": 0,
"spent_month_minutes": 0
},
"pricing": {
"api_minute_factor": 0,
"listen_text_factor": 0
}
}400 Invalid request
400 application/problem+json
{
"type": "https://docs.kanutus.com/errors",
"title": "<code>",
"status": 400,
"code": "<code>",
"message": "…",
"request_id": "req_…"
}401 Missing, invalid, expired or revoked credential
401 application/problem+json
{
"type": "https://docs.kanutus.com/errors",
"title": "<code>",
"status": 401,
"code": "<code>",
"message": "…",
"request_id": "req_…"
}403 Missing permission, blocked or not allowed
403 application/problem+json
{
"type": "https://docs.kanutus.com/errors",
"title": "<code>",
"status": 403,
"code": "<code>",
"message": "…",
"request_id": "req_…"
}429 Rate limit exceeded (see RateLimit-* and Retry-After headers)
429 application/problem+json
{
"type": "https://docs.kanutus.com/errors",
"title": "<code>",
"status": 429,
"code": "<code>",
"message": "…",
"request_id": "req_…"
}GET/v1/balance
Minutes left (organization pool/quota or personal plan)
Response 200
| Name | Type | Description |
|---|---|---|
minutes_left required | number | |
seconds_left required | integer | |
low required | boolean | |
source required | "organization" | "personal" | "test" | |
livemode required | boolean |
Example
curl
curl "https://api.kanutus.com/v1/balance" \
-H "Authorization: Bearer $KANUTUS_API_KEY"Node.js
const res = await fetch("https://api.kanutus.com/v1/balance", {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.KANUTUS_API_KEY}`,
},
});
console.log(res.status, await res.json());Python
import os, uuid, requests
r = requests.request(
"GET",
"https://api.kanutus.com/v1/balance",
headers={"Authorization": f"Bearer {os.environ['KANUTUS_API_KEY']}"},
)
print(r.status_code, r.json())Try it
Runs from your browser against the real API. Use a kt_test_ key: nothing is charged. The key stays in this tab only.
GET /v1/balanceResponses by status
200 Balance
200
{
"minutes_left": 0,
"seconds_left": 0,
"low": true,
"source": "organization",
"livemode": true
}400 Invalid request
400 application/problem+json
{
"type": "https://docs.kanutus.com/errors",
"title": "<code>",
"status": 400,
"code": "<code>",
"message": "…",
"request_id": "req_…"
}401 Missing, invalid, expired or revoked credential
401 application/problem+json
{
"type": "https://docs.kanutus.com/errors",
"title": "<code>",
"status": 401,
"code": "<code>",
"message": "…",
"request_id": "req_…"
}403 Missing permission, blocked or not allowed
403 application/problem+json
{
"type": "https://docs.kanutus.com/errors",
"title": "<code>",
"status": 403,
"code": "<code>",
"message": "…",
"request_id": "req_…"
}429 Rate limit exceeded (see RateLimit-* and Retry-After headers)
429 application/problem+json
{
"type": "https://docs.kanutus.com/errors",
"title": "<code>",
"status": 429,
"code": "<code>",
"message": "…",
"request_id": "req_…"
}GET/v1/usage
API usage by day or by credential
Parameters
| Name | Type | Description |
|---|---|---|
from | query · string | |
to | query · string | |
group_by | query · "day" | "credential" |
Response 200
| Name | Type | Description |
|---|---|---|
from required | string | |
to required | string | |
total_minutes required | number | |
requests required | integer | |
errors required | integer | |
data required | object[] | |
data[].day | string | |
data[].credential_id | string | |
data[].name | string | |
data[].minutes required | number | |
data[].requests | integer |
Example
curl
curl "https://api.kanutus.com/v1/usage" \
-H "Authorization: Bearer $KANUTUS_API_KEY"Node.js
const res = await fetch("https://api.kanutus.com/v1/usage", {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.KANUTUS_API_KEY}`,
},
});
console.log(res.status, await res.json());Python
import os, uuid, requests
r = requests.request(
"GET",
"https://api.kanutus.com/v1/usage",
headers={"Authorization": f"Bearer {os.environ['KANUTUS_API_KEY']}"},
)
print(r.status_code, r.json())Try it
Runs from your browser against the real API. Use a kt_test_ key: nothing is charged. The key stays in this tab only.
GET /v1/usageResponses by status
200 Usage (minutes spent through the API)
200
{
"from": "string",
"to": "string",
"total_minutes": 0,
"requests": 0,
"errors": 0,
"data": [
{
"day": "string",
"credential_id": "string",
"name": "string",
"minutes": 0,
"requests": 0
}
]
}400 Invalid request
400 application/problem+json
{
"type": "https://docs.kanutus.com/errors",
"title": "<code>",
"status": 400,
"code": "<code>",
"message": "…",
"request_id": "req_…"
}401 Missing, invalid, expired or revoked credential
401 application/problem+json
{
"type": "https://docs.kanutus.com/errors",
"title": "<code>",
"status": 401,
"code": "<code>",
"message": "…",
"request_id": "req_…"
}403 Missing permission, blocked or not allowed
403 application/problem+json
{
"type": "https://docs.kanutus.com/errors",
"title": "<code>",
"status": 403,
"code": "<code>",
"message": "…",
"request_id": "req_…"
}429 Rate limit exceeded (see RateLimit-* and Retry-After headers)
429 application/problem+json
{
"type": "https://docs.kanutus.com/errors",
"title": "<code>",
"status": 429,
"code": "<code>",
"message": "…",
"request_id": "req_…"
}