API Webhook
Karma bot supports an external API that allows you to assign karma and retrieve workspace data via HTTP requests from your services.
We recommend using Postman or any REST client for testing.
Step 1: Create an API Key
Go to Dashboard → API keys (/admin/options/api).
The page shows a list of all created keys with their creation date and author. Click Create API Key, enter a name for the key and it will be generated.
The API key is shown only once immediately after creation. Save it, you won't be able to view the key value again.
The key has the following format:
krm_{id}_{token}

Step 2: Authentication
All API requests require passing the key in the Authorization header:
Authorization: Bearer krm_{id}_{token}
Base URL
The base URL for all API requests is:
https://app.karmabot.chat/api/v1
Endpoints
Full documentation is available directly in the app at /admin/options/api/documentation.

GET /channels
Returns a paginated list of workspace channels available for karma requests.
Parameters
Parameter | Description |
|---|---|
| Pagination cursor (ID of the last received item) |
Request example:
GET /channels?cursor=4836286113
Authorization: Bearer krm_{id}_{token}
Response example:
{
"channels": [
{
"id": 4836286113,
"slack_id": "C077X9W7LHY",
"name": "Channel#1",
"is_private": false
},
{
"id": 4836286122,
"slack_id": "C084BVD05A5",
"name": "Channel#2",
"is_private": false
}
]
}
GET /users
Returns a paginated list of workspace members available as senders or recipients of karma requests.
Parameters
Parameter | Description |
|---|---|
| Pagination cursor |
Request example:
GET /users?cursor=18152430041
Authorization: Bearer krm_{id}_{token}
Response example:
{
"users": [
{
"id": 18152430041,
"slack_id": "U051U28Q3RV",
"name": "User 1",
"image_url": "https://...png"
},
{
"id": 18152430072,
"slack_id": "U051U2EMMP1",
"name": "User 2",
"image_url": "https://...png"
}
]
}
GET /values
Returns a paginated list of company values that can be attached to a karma request.
Parameters
Parameter | Description |
|---|---|
| Pagination cursor |
Request example:
GET /values?cursor=47140
Authorization: Bearer krm_{id}_{token}
Response example:
{
"values": [
{
"id": 47141,
"color": "#4C94FF",
"description": "description.",
"emoji": ":gem:",
"image_url": "https://...png",
"name": "Reliability"
}
]
}
GET /achievements
Returns a paginated list of achievements that can be granted to users alongside a karma request.
Parameters
Parameter | Description |
|---|---|
| Pagination cursor |
Request example:
GET /achievements?cursor=19475
Authorization: Bearer krm_{id}_{token}
Response example:
{
"achievements": [
{
"id": 19476,
"title": "Happy Birthday!",
"emoji": "tada",
"color": "#92d279",
"description": null,
"value_id": null
}
]
}
POST /pluses
Creates a karma request from one user to one or more recipients. Optionally attach a value, achievement, gif, and control visibility.
Rate limit: 6 requests per minute per team.
Parameters
Parameter | Type | Required | Description |
|---|---|---|---|
| Array[Integer] | ✓ | Array of recipient IDs |
| Integer | ✓ | Sender ID |
| String | ✓ | Karma request message / reason |
| Integer | ✓ | ID of the channel where the request will be posted |
| Integer | ✓ | Number of karma points |
| Boolean | ✓ | Visibility ( |
| Integer | — | Company value ID |
| Integer | — | Achievement ID |
| String | — | GIF attachment URL |
Request example:
POST /pluses
Authorization: Bearer krm_{id}_{token}
Content-Type: application/json
{
"description": "Great work on the release!",
"user_ids": [1815243014, 1815243015],
"from_id": 1815243016,
"channel_id": 483628611,
"score": 1,
"private": false,
"value_id": 47142
}
Response: 201 Created
Rate Limits
Endpoint | Limit |
|---|---|
GET /channels | 120 req/min |
GET /users | 120 req/min |
GET /values | 120 req/min |
GET /achievements | 120 req/min |
POST /pluses | 6 req/min |
Limits are applied per team.
Managing API Keys
On the /admin/options/api page you can:
- Rename a key via the
⋯menu next to the key. - Delete a key — after deletion, all requests using that key will stop working.
Updated on: 14/04/2026
Thank you!
