KanutusDocs
kanutus.com Sign in / Create accountSign in

Limits and errors

Error format

Errors use application/problem+json (RFC 9457). code is stable and safe to branch on; message is for people and can change. Every response carries an X-Request-Id: include it when you contact us.

json
{
  "type": "https://kanutus.com/developers/errors#insufficient_scope",
  "title": "insufficient_scope",
  "status": 403,
  "code": "insufficient_scope",
  "message": "This credential lacks the permission rooms:write.",
  "request_id": "req_0NjjmC1WyEw2Tmyz1rwP"
}

Codes

HTTPcodeWhat to do
400invalid_requestFix the request; message says which field
400idempotency_key_requiredSend an Idempotency-Key header on create requests
401unauthorizedMissing, invalid, expired or revoked credential
402spend_limit_reachedThe key reached its spending limit (day, month or per call) or there are no minutes left
403insufficient_scopeThe credential lacks the permission; the WWW-Authenticate header names it
403needs_reviewThe person who created the key left; it can only read until an owner reviews it
403paid_plan_requiredThe account is on the free plan
403ip_not_allowedThe request came from an IP outside the key's allow-list
403language_not_allowed, voice_not_allowed, number_not_allowed, destination_not_allowedOutside the key's restrictions or the country rules
403org_blocked, org_suspendedThe organization was blocked or suspended; contact us
404not_foundIt does not exist or this credential cannot see it
409idempotency_mismatchSame Idempotency-Key with a different body
409idempotency_in_progressThe first request with this key is still running; retry in a moment
409slot_takenThe booking time was taken in the meantime
409session_endedThe agent session already ended
429rate_limitedToo many requests; wait for Retry-After
429too_many_sessionsToo many agent sessions at the same time
429test_daily_limitTest keys allow 1,000 requests per day
501not_available_yetComing soon in live mode; works with a kt_test_ key
503api_disabled, mcp_disabled, booking_unavailableTemporarily unavailable; retry later

Rate limits

  • 60 requests per minute per credential by default (business plans can have more). Test keys also have 1,000 requests per day.
  • Every response has RateLimit-Limit, RateLimit-Remaining and RateLimit-Reset. A 429 also has Retry-After (seconds).
  • Retry 429 and 5xx with exponential backoff and jitter. Do not retry 4xx other than 409 idempotency_in_progress.

Idempotency

Create requests (POST /v1/rooms, /meetings, /bookings, /calls, /rooms/{id}/agent-sessions) require an Idempotency-Key header: any unique value up to 255 characters, such as a UUID. If the network fails, send the same request with the same key: you get the original answer instead of a second room, booking or call. Keys are kept for 24 hours per credential.

Versions

The version is in the path (/v1). New fields and endpoints can appear at any time, so ignore fields you do not know. A breaking change would come as /v2, with 12 months of overlap and an email to the owners of keys that use the old route. Each response carries Kanutus-Version.