Skip to main content

Kanban Comments

List and create threaded comments on Kanban cards for team collaboration.

Prerequisites

All endpoints on this page require a valid JWT token, API key, and tenant header. See Authentication for details.


List Comments

Retrieve a paginated list of comments for a specific card, ordered by creation date (newest first).

GET/apidev/v1/kanban/cards/{id}/comments
PermissionAPICLI_KANBAN_READ
Rate Limit30 req/min (sliding window)
Cache15s

Request Headers

Every request to a protected endpoint requires these headers:

HeaderRequiredDescription
AuthorizationYesBearer token obtained from the Login endpoint. Format: Bearer <token>
X-API-KeyYesCompany integration key provided during onboarding. Format: gtk_xxx...
tenantYesYour company hostname (e.g., yourcompany.geotareas.com)
Content-TypeConditionalapplication/json — required for POST and PUT requests

Path Parameters

ParameterTypeRequiredDescription
idstringYesCard unique identifier (BigInt)

Query Parameters

ParameterTypeRequiredDefaultConstraintsDescription
limitintegerNo25Min 1, Max 100Records per page
offsetintegerNo00Records to skip

Response

FieldTypeDescription
idstringComment unique identifier (BigInt)
textstringComment text content
authorobject{id, name} of the author
mentionsarray[{id, name}] mentioned users
created_atstringISO 8601 timestamp
updated_atstringISO 8601 timestamp

Code Examples

curl -s -X GET "$TENANT_URL/apidev/v1/kanban/cards/4200000000000001/comments?limit=10" \
-H "Authorization: Bearer $TOKEN" \
-H "X-API-Key: $APIKEY" \
-H "tenant: $TENANT"

Example Response

{
"success": true,
"data": [
{
"id": "5500000000000001",
"text": "Device installed successfully. Waiting for signal confirmation.",
"author": {"id": "1100000000000001", "name": "Carlos Mendoza"},
"mentions": [],
"created_at": "2026-03-18T15:30:00",
"updated_at": "2026-03-18T15:30:00"
},
{
"id": "5500000000000002",
"text": "Please prioritize this — client escalated. @Maria please review.",
"author": {"id": "1100000000000002", "name": "Admin User"},
"mentions": [{"id": "1100000000000003", "name": "Maria Lopez"}],
"created_at": "2026-03-17T10:00:00",
"updated_at": "2026-03-17T10:00:00"
}
],
"meta": {
"total": 3,
"limit": 10,
"offset": 0
}
}

Rate Limit Headers

Every response includes rate limit information in the headers:

HeaderDescription
X-RateLimit-LimitMaximum number of requests allowed in the current window
X-RateLimit-RemainingNumber of requests remaining in the current window
X-RateLimit-ResetUnix timestamp (seconds) when the current window resets
Retry-AfterSeconds to wait before retrying (only present on 429 responses)
X-Request-IdUnique request identifier for debugging and support tickets

Create Comment

Add a new comment to a card. Returns HTTP 201.

POST/apidev/v1/kanban/cards/{id}/comments
PermissionAPICLI_KANBAN_WRITE
Rate Limit30 req/min (sliding window)

Path Parameters

ParameterTypeRequiredDescription
idstringYesCard unique identifier (BigInt)

Request Body

FieldTypeRequiredConstraintsDescription
textstringYesMax length 5000Comment text content

Response

FieldTypeDescription
idstringComment unique identifier (BigInt)
textstringComment text content
authorobject{id, name} of the author (from JWT)
created_atstringISO 8601 timestamp

Code Examples

curl -s -X POST "$TENANT_URL/apidev/v1/kanban/cards/4200000000000001/comments" \
-H "Authorization: Bearer $TOKEN" \
-H "X-API-Key: $APIKEY" \
-H "tenant: $TENANT" \
-H "Content-Type: application/json" \
-d '{
"text": "Signal confirmed. Closing this card."
}'

Example Response

{
"success": true,
"data": {
"id": "5500000000000003",
"text": "Signal confirmed. Closing this card.",
"author": {"id": "1100000000000001", "name": "Carlos Mendoza"},
"created_at": "2026-03-19T17:00:00"
},
"meta": {}
}

Errors

CodeHTTPDescription
BAD_REQUEST400Missing required headers
VALIDATION_ERROR400Invalid parameters
UNAUTHORIZED401Invalid or expired JWT / API Key
FORBIDDEN403User lacks required permission
NOT_FOUND404Resource not found
RATE_LIMITED429Exceeded rate limit
INTERNAL_ERROR500Unexpected server error