KanutusDocs
kanutus.com Sign in / Create accountSign in

Rooms

GET/v1/rooms

List rooms

Permission: rooms:read

Parameters

NameTypeDescription
limitquery · integer

Response 200

NameTypeDescription
data requiredobject[]
data[].id requiredstring
data[].url requiredstring
data[].title requiredstring
data[].visibility required"private" | "public"
data[].status required"scheduled" | "live" | "ended"
data[].created_at requiredstring
data[].expires_at requiredstring
data[].starts_at requiredstring | null
data[].duration_min requiredinteger | null
data[].invitees requiredstring[]
data[].langs requiredstring[]
data[].livemode requiredbooleanfalse for objects created with a kt_test_ key (simulator).

Example

curl
curl "https://api.kanutus.com/v1/rooms" \
  -H "Authorization: Bearer $KANUTUS_API_KEY"
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/rooms

Responses by status

200 Rooms, newest first
200
{
  "data": [
    {
      "id": "kqz-mbdt-wpa",
      "url": "https://example.com",
      "title": "string",
      "visibility": "private",
      "status": "scheduled",
      "created_at": "string",
      "expires_at": "string",
      "starts_at": "string",
      "duration_min": 0,
      "invitees": [
        "string"
      ],
      "langs": [
        "string"
      ],
      "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_…"
}

See all error codes

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_…"
}

See all error codes

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_…"
}

See all error codes

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_…"
}

See all error codes

POST/v1/rooms

Create an instant room

Permission: rooms:write

Parameters

NameTypeDescription
idempotency-key requiredheader · stringUnique key per create request; retries with the same key return the same result.

Request body

NameTypeDescription
titlestringlength 0–120 · default ""
visibility"private" | "public"default "private"
langsstring[]Languages expected in the room (helps warm-up).

Response 201

NameTypeDescription
id requiredstring
url requiredstring
title requiredstring
visibility required"private" | "public"
status required"scheduled" | "live" | "ended"
created_at requiredstring
expires_at requiredstring
starts_at requiredstring | null
duration_min requiredinteger | null
invitees requiredstring[]
langs requiredstring[]
livemode requiredbooleanfalse for objects created with a kt_test_ key (simulator).

Example

curl
curl -X POST "https://api.kanutus.com/v1/rooms" \
  -H "Authorization: Bearer $KANUTUS_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"title":"Proposta com a Andes","visibility":"private","langs":[]}'
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.

POST /v1/rooms

Responses by status

201 Room created (share its url)
201
{
  "id": "kqz-mbdt-wpa",
  "url": "https://example.com",
  "title": "string",
  "visibility": "private",
  "status": "scheduled",
  "created_at": "string",
  "expires_at": "string",
  "starts_at": "string",
  "duration_min": 0,
  "invitees": [
    "string"
  ],
  "langs": [
    "string"
  ],
  "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_…"
}

See all error codes

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_…"
}

See all error codes

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_…"
}

See all error codes

409 Conflict (idempotency or state)
409 application/problem+json
{
  "type": "https://docs.kanutus.com/errors",
  "title": "<code>",
  "status": 409,
  "code": "<code>",
  "message": "…",
  "request_id": "req_…"
}

See all error codes

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_…"
}

See all error codes

GET/v1/rooms/{id}

Get a room

Permission: rooms:read

Parameters

NameTypeDescription
id requiredpath · string

Response 200

NameTypeDescription
id requiredstring
url requiredstring
title requiredstring
visibility required"private" | "public"
status required"scheduled" | "live" | "ended"
created_at requiredstring
expires_at requiredstring
starts_at requiredstring | null
duration_min requiredinteger | null
invitees requiredstring[]
langs requiredstring[]
livemode requiredbooleanfalse for objects created with a kt_test_ key (simulator).

Example

curl
curl "https://api.kanutus.com/v1/rooms/kqz-mbdt-wpa" \
  -H "Authorization: Bearer $KANUTUS_API_KEY"
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/rooms/{id}

Responses by status

200 The room
200
{
  "id": "kqz-mbdt-wpa",
  "url": "https://example.com",
  "title": "string",
  "visibility": "private",
  "status": "scheduled",
  "created_at": "string",
  "expires_at": "string",
  "starts_at": "string",
  "duration_min": 0,
  "invitees": [
    "string"
  ],
  "langs": [
    "string"
  ],
  "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_…"
}

See all error codes

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_…"
}

See all error codes

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_…"
}

See all error codes

404 Not found
404 application/problem+json
{
  "type": "https://docs.kanutus.com/errors",
  "title": "<code>",
  "status": 404,
  "code": "<code>",
  "message": "…",
  "request_id": "req_…"
}

See all error codes

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_…"
}

See all error codes

DELETE/v1/rooms/{id}

End a room for everyone

Permission: rooms:write

Parameters

NameTypeDescription
id requiredpath · string

Response 200

NameTypeDescription
id requiredstring
url requiredstring
title requiredstring
visibility required"private" | "public"
status required"scheduled" | "live" | "ended"
created_at requiredstring
expires_at requiredstring
starts_at requiredstring | null
duration_min requiredinteger | null
invitees requiredstring[]
langs requiredstring[]
livemode requiredbooleanfalse for objects created with a kt_test_ key (simulator).

Example

curl
curl -X DELETE "https://api.kanutus.com/v1/rooms/kqz-mbdt-wpa" \
  -H "Authorization: Bearer $KANUTUS_API_KEY"
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.

DELETE /v1/rooms/{id}

Responses by status

200 The ended room
200
{
  "id": "kqz-mbdt-wpa",
  "url": "https://example.com",
  "title": "string",
  "visibility": "private",
  "status": "scheduled",
  "created_at": "string",
  "expires_at": "string",
  "starts_at": "string",
  "duration_min": 0,
  "invitees": [
    "string"
  ],
  "langs": [
    "string"
  ],
  "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_…"
}

See all error codes

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_…"
}

See all error codes

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_…"
}

See all error codes

404 Not found
404 application/problem+json
{
  "type": "https://docs.kanutus.com/errors",
  "title": "<code>",
  "status": 404,
  "code": "<code>",
  "message": "…",
  "request_id": "req_…"
}

See all error codes

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_…"
}

See all error codes

POST/v1/rooms/{id}/join-links

Create a guest join link (name and language prefilled)

Permission: rooms:write

Parameters

NameTypeDescription
id requiredpath · string

Request body

NameTypeDescription
namestringlength 1–80
speakstringLanguage the guest speaks (prefilled).
hearstringLanguage the guest wants to hear (prefilled).

Response 201

NameTypeDescription
url requiredstring
room_id requiredstring

Example

curl
curl -X POST "https://api.kanutus.com/v1/rooms/kqz-mbdt-wpa/join-links" \
  -H "Authorization: Bearer $KANUTUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"Kenji","speak":"pt","hear":"pt"}'
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.

POST /v1/rooms/{id}/join-links

Responses by status

201 Link to share; opens the room directly
201
{
  "url": "https://example.com",
  "room_id": "string"
}
400 Invalid request
400 application/problem+json
{
  "type": "https://docs.kanutus.com/errors",
  "title": "<code>",
  "status": 400,
  "code": "<code>",
  "message": "…",
  "request_id": "req_…"
}

See all error codes

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_…"
}

See all error codes

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_…"
}

See all error codes

404 Not found
404 application/problem+json
{
  "type": "https://docs.kanutus.com/errors",
  "title": "<code>",
  "status": 404,
  "code": "<code>",
  "message": "…",
  "request_id": "req_…"
}

See all error codes

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_…"
}

See all error codes