Pull feedback results, goal progress, meeting records, and team responsiveness into your own tools โ authenticated with a single API key.
The DeskChime REST API gives you read access to your organization's data โ feedback, goals, meetings, one-on-ones, users, and activity reports โ so you can push it into your own dashboards, BI tools, or HR platforms.
Base URL
https://app.deskchime.com
Format
JSON (UTF-8)
Timestamps
UTC ISO 8601
Every request must include your organization's API key in the x-api-key header. Generate your key in Settings โ Workspace โ API Key (Admin role required). Regenerating a key immediately invalidates the previous one.
curl "https://app.deskchime.com/api/v1/feedback" \ -H "x-api-key: YOUR_API_KEY"
Missing header
x-api-key header not present
Invalid format
Key format is not recognized
Key not found
Key doesn't match any organization
Cross-org access
User/resource belongs to a different org
All /api/v1/* endpoints allow 60 requests per 60 seconds per organization (burst-friendly โ not strictly 1/sec). When the limit is exceeded you receive a 429. Check Retry-After and back off.
| Response header | Meaning |
|---|---|
| X-RateLimit-Limit | Maximum requests allowed in the window (60) |
| X-RateLimit-Remaining | Requests remaining in the current window |
| X-RateLimit-Reset | ISO timestamp when the window resets |
| Retry-After | Seconds to wait โ only present on 429 responses |
/api/workspace-statsHigh-level counts for your organization โ goals, users, teams, meetings, feedback, and more.
curl
curl "http://localhost:3000/api/workspace-stats" \ -H "x-api-key: YOUR_API_KEY"
Example response
{
"success": true,
"organization": {
"id": 1,
"name": "Acme Inc.",
"slug": "acme"
},
"stats": {
"totalGoals": 12,
"totalUsers": 8,
"totalTeams": 3,
"totalReviews": 24,
"totalMeetings": 47
}
}/api/workspace-stats/userStats for a specific user โ feedback given/received, goals, meetings, and applaudes.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| body | string | required | User email address |
curl
curl -X POST "http://localhost:3000/api/workspace-stats/user" \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"email":"[email protected]"}'Example response
{
"success": true,
"user": {
"id": "u1",
"email": "[email protected]",
"name": "Jane"
},
"stats": {
"feedbacksGiven": 3,
"feedbacksReceived": 5,
"totalGoals": 4,
"completedGoals": 2,
"oneOnOnes": {
"total": 8,
"completed": 7
}
}
}/api/v1/usersAll users in your organization with their roles and status. Filter by role.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| page | query | number | optional | Page number (default: 1) |
| limit | query | number | optional | Results per page, max 50 (default: 20) |
| role | query | string | optional | Filter by role: Admin | Manager | Member |
curl
curl "http://localhost:3000/api/v1/users?page=1&limit=20&role=Manager" \ -H "x-api-key: YOUR_API_KEY"
Example response
{
"data": [
{
"id": "u1",
"name": "Jane Smith",
"email": "[email protected]",
"role": "Admin",
"status": 1,
"isOnboarded": true,
"joinedAt": "2024-09-01T10:00:00Z"
},
{
"id": "u2",
"name": "Bob Lee",
"email": "[email protected]",
"role": "Member",
"status": 1,
"isOnboarded": true,
"joinedAt": "2024-10-15T09:30:00Z"
}
],
"meta": {
"page": 1,
"limit": 20,
"total": 8
}
}/api/v1/feedbackPaginated list of feedback forms in your organization with assignee and response counts.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| page | query | number | optional | Page number (default: 1) |
| limit | query | number | optional | Results per page, max 50 (default: 20) |
| status | query | string | optional | Filter by status: pending | completed | closed |
curl
curl "http://localhost:3000/api/v1/feedback?page=1&limit=20&status=pending" \ -H "x-api-key: YOUR_API_KEY"
Example response
{
"data": [
{
"id": "abc",
"title": "Q1 Review",
"status": "pending",
"frequency": "Once",
"assigneeCount": 5,
"responseCount": 3,
"createdAt": "2025-01-15T10:00:00Z"
}
],
"meta": {
"page": 1,
"limit": 20,
"total": 42
}
}/api/v1/feedback/:idSingle feedback form with an anonymised per-question response summary (no individual names).
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| id | path | string | required | Feedback ID |
curl
curl "http://localhost:3000/api/v1/feedback/abc123" \ -H "x-api-key: YOUR_API_KEY"
Example response
{
"data": {
"id": "abc",
"title": "Q1 Review",
"status": "completed",
"assigneeCount": 8,
"responseCount": 6,
"questions": [
{
"id": 1,
"question": "Rate communication",
"type": "scale",
"responseCount": 6,
"averageScore": 4.2,
"scale": {
"min": "1",
"max": "5"
}
},
{
"id": 2,
"question": "What's working well?",
"type": "textarea",
"responseCount": 5
}
]
}
}/api/v1/goalsPaginated list of goals with progress and assignees. Filter by status or type.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| page | query | number | optional | Page number |
| limit | query | number | optional | Max 50 |
| status | query | string | optional | OnTrack | Completed | Delayed | AtRisk | Abandoned |
| type | query | string | optional | Organization | Individual | Team | Self |
curl
curl "http://localhost:3000/api/v1/goals?page=1&limit=20&status=OnTrack&type=Individual" \ -H "x-api-key: YOUR_API_KEY"
Example response
{
"data": [
{
"id": "g1",
"title": "Grow ARR by 30%",
"type": "Organization",
"status": "OnTrack",
"progress": 45,
"assignees": [
{
"name": "Jane",
"email": "[email protected]"
}
]
}
],
"meta": {
"page": 1,
"limit": 20,
"total": 8
}
}/api/v1/goals/:idSingle goal with full timeline of progress updates and actionable items.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| id | path | string | required | Goal ID |
curl
curl "http://localhost:3000/api/v1/goals/g1" \ -H "x-api-key: YOUR_API_KEY"
Example response
{
"data": {
"id": "g1",
"title": "Grow ARR by 30%",
"status": "OnTrack",
"progress": 45,
"timeline": [
{
"status": "OnTrack",
"comment": "Closed 3 new accounts",
"date": "2025-03-10T09:00:00Z"
}
],
"actionItems": [
{
"id": "a1",
"title": "Close enterprise deal",
"status": "OnTrack"
}
]
}
}/api/v1/meetingsPaginated list of meetings. Filter by type or date range.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| page | query | number | optional | Page number |
| limit | query | number | optional | Max 50 |
| type | query | string | optional | Goal | Review | Casual | ONE_ON_ONE |
| from | query | string | optional | ISO date โ start of range |
| to | query | string | optional | ISO date โ end of range |
curl
curl "http://localhost:3000/api/v1/meetings?page=1&limit=20&type=Review&from=2025-01-01&to=2025-03-31" \ -H "x-api-key: YOUR_API_KEY"
Example response
{
"data": [
{
"id": "m1",
"title": "Sprint Retro",
"type": "Casual",
"scheduledAt": "2025-03-15T14:00:00Z",
"isCompleted": true,
"attendeeCount": 6
}
],
"meta": {
"page": 1,
"limit": 20,
"total": 47
}
}/api/v1/one-on-onesPaginated list of one-on-one meetings with organizer and participant details.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| page | query | number | optional | Page number |
| limit | query | number | optional | Max 50 |
| from | query | string | optional | ISO date |
| to | query | string | optional | ISO date |
curl
curl "http://localhost:3000/api/v1/one-on-ones?page=1&limit=20&from=2025-01-01&to=2025-03-31" \ -H "x-api-key: YOUR_API_KEY"
Example response
{
"data": [
{
"id": "o1",
"title": "Weekly check-in",
"scheduledAt": "2025-03-12T10:00:00Z",
"isCompleted": false,
"organizer": {
"name": "Jane",
"email": "[email protected]"
},
"participant": {
"name": "Bob",
"email": "[email protected]"
}
}
],
"meta": {
"page": 1,
"limit": 20,
"total": 18
}
}/api/v1/users/activityDetailed activity stats and responsiveness rates for a team member โ feedback response rate, goal completion, meeting attendance.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| body | string | required | User email address |
curl
curl -X POST "http://localhost:3000/api/v1/users/activity" \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"email":"[email protected]"}'Example response
{
"user": {
"id": "u1",
"name": "Jane",
"email": "[email protected]"
},
"stats": {
"feedback": {
"given": 3,
"received": 10,
"answered": 8
},
"goals": {
"total": 5,
"completed": 3
},
"meetings": {
"created": 4,
"assigned": 12,
"attended": 11
},
"oneOnOnes": {
"total": 8,
"completed": 7
}
},
"responsiveness": {
"feedbackResponseRate": 80,
"goalCompletionRate": 60,
"meetingAttendanceRate": 92,
"oneOnOneCompletionRate": 88
}
}