REST API
The REST API follows predictable JSON conventions. Base URL:
Authentication
- Bearer tokens (personal access tokens, OAuth access tokens) for user endpoints.
- Extension API keys (
X-Kiket-API-Key header) for extension endpoints.
- Include
Authorization: Bearer <token> on each request for user endpoints.
Common Resources
Projects
| Method |
Path |
Description |
| GET |
/projects |
List projects visible to the token |
| POST |
/projects |
Create a project (requires organization admin) |
| GET |
/projects/:id |
Retrieve project metadata |
| PATCH |
/projects/:id |
Update description, settings, repository links |
| DELETE |
/projects/:id |
Archive a project |
Issues
| Method |
Path |
Description |
| GET |
/issues |
List issues (filter by project, status, assignee, label) |
| POST |
/issues |
Create an issue |
| GET |
/issues/:id |
Retrieve an issue by ID or key (e.g., PROJ-123) |
| PATCH |
/issues/:id |
Update fields |
| DELETE |
/issues/:id |
Delete an issue |
| POST |
/issues/:id/transition |
Execute a workflow transition |
| Method |
Path |
Description |
| GET |
/issues/:issue_id/comments |
List comments on an issue |
| POST |
/issues/:issue_id/comments |
Add a comment |
| PATCH |
/issues/:issue_id/comments/:id |
Update a comment |
| DELETE |
/issues/:issue_id/comments/:id |
Delete a comment |
Milestones
| Method |
Path |
Description |
| GET |
/projects/:project_id/milestones |
List milestones for a project |
| POST |
/projects/:project_id/milestones |
Create a milestone |
| GET |
/projects/:project_id/milestones/:id |
Retrieve milestone details |
| PATCH |
/projects/:project_id/milestones/:id |
Update milestone |
| DELETE |
/projects/:project_id/milestones/:id |
Delete milestone |
Users
| Method |
Path |
Description |
| GET |
/users |
List organization members |
| GET |
/users/current |
Get current authenticated user |
| GET |
/users/:id |
Get user profile |
Issue Schema
| Method |
Path |
Description |
| GET |
/issue_schema |
Get available issue types, priorities, statuses, and custom fields |
Capacity Planning
| Method |
Path |
Description |
| GET |
/capacity/team |
Get team workload and utilization data |
| GET |
/capacity/recommendations |
Get AI-powered workload recommendations |
| POST |
/capacity/reassign |
Reassign issues between team members |
Custom Data
| Method |
Path |
Description |
| GET |
/custom_data/:module_key/:table |
List records for a module table |
| GET |
/custom_data/:module_key/:table/:id |
Fetch a record by ID |
| POST |
/custom_data/:module_key/:table |
Create a record |
| PATCH |
/custom_data/:module_key/:table/:id |
Update a record |
| DELETE |
/custom_data/:module_key/:table/:id |
Delete a record |
Pass either project_id or project_key query parameter to scope the module binding.
SLA Events
| Method |
Path |
Description |
| GET |
/sla_events |
List SLA alert history |
Extensions Management
| Method |
Path |
Description |
| GET |
/extensions |
List installed extensions |
| POST |
/extensions |
Register extension from manifest |
| GET |
/extensions/:id |
Get extension details |
| DELETE |
/extensions/:id |
Uninstall extension |
| GET |
/extensions/:id/secrets |
List secret keys |
| POST |
/extensions/:id/secrets |
Set a secret |
| GET |
/extensions/:id/secrets/:key |
Get a secret value |
| DELETE |
/extensions/:id/secrets/:key |
Delete a secret |
Extension API
Extensions use the /api/v1/ext/* endpoints with X-Kiket-API-Key authentication.
Extension Issues
| Method |
Path |
Description |
| GET |
/ext/issues |
List issues visible to extension |
| POST |
/ext/issues |
Create an issue |
| GET |
/ext/issues/:id |
Get issue details |
| PATCH |
/ext/issues/:id |
Update issue |
| POST |
/ext/issues/:issue_id/comments |
Add a comment |
Extension Workflows
| Method |
Path |
Description |
| GET |
/ext/workflows/states |
Get available workflow states |
| POST |
/ext/workflows/trigger |
Trigger a workflow action |
Extension Project
| Method |
Path |
Description |
| GET |
/ext/project |
Get project the extension is installed in |
| GET |
/ext/project/members |
Get project members |
Extension Webhooks
| Method |
Path |
Description |
| POST |
/ext/webhooks/subscribe |
Subscribe to events |
| DELETE |
/ext/webhooks/:id |
Unsubscribe |
Extension Storage
| Method |
Path |
Description |
| GET |
/ext/storage/:key |
Get storage value |
| PUT |
/ext/storage/:key |
Set storage value (max 64KB) |
Extension Custom Data
| Method |
Path |
Description |
| GET |
/ext/custom_data/:module/:table |
List records |
| POST |
/ext/custom_data/:module/:table |
Create record |
| GET |
/ext/custom_data/:module/:table/:id |
Get record |
| PATCH |
/ext/custom_data/:module/:table/:id |
Update record |
| DELETE |
/ext/custom_data/:module/:table/:id |
Delete record |
Extension SLA & Telemetry
| Method |
Path |
Description |
| GET |
/ext/sla/events |
List SLA events |
| GET |
/ext/rate_limit |
Check rate limit status |
| POST |
/ext/telemetry |
Record telemetry data |
- Query params:
page, per_page, sort (e.g., sort=created_at desc).
- Responses include
meta with pagination info:
{
"meta": {
"total": 150,
"page": 1,
"per_page": 25,
"total_pages": 6
}
}
Errors
- JSON responses include
error, code, and optional details arrays.
- HTTP status codes:
400 - Bad request (invalid parameters)
401 - Unauthorized (missing or invalid token)
403 - Forbidden (insufficient permissions)
404 - Not found
422 - Validation errors
429 - Rate limit exceeded
500 - Internal server error
Rate Limiting
- Default: 1000 requests per 15-minute window for user endpoints
- Extensions: 500 requests per 15-minute window
- Rate limit headers included in responses:
X-RateLimit-Limit
X-RateLimit-Remaining
X-RateLimit-Reset
Webhook Events
Certain endpoints (issue creation, transitions) fire webhooks. See Webhooks for payload shapes.
Available events:
- issue.created, issue.updated, issue.status_changed, issue.assigned, issue.closed
- comment.created
- workflow.triggered, workflow.sla_status, workflow.before_transition
- project.updated
SDK Usage
Example (Node.js):
import { KiketSDK } from '@kiket-dev/sdk';
const sdk = new KiketSDK({
workspaceToken: process.env.KIKET_TOKEN,
baseUrl: 'https://kiket.dev'
});
// Handle webhook events
sdk.on('issue.created', async (payload, context) => {
console.log(`New issue: ${payload.issue.title}`);
// Access custom data
const records = await context.endpoints.customData(payload.project_id)
.list('my-module', 'my-table');
});
OpenAPI Specification
Refer to the interactive Swagger UI or the raw OpenAPI specification for exhaustive endpoint definitions.