API documentation
Basics
This is the API for developers to extend Doorbell. You can interact with Doorbell's data (applications, organizations, existing feedback thread, etc).
The base URL for the API is: https://doorbell.io/api
Authentication
-
Generate an access token
-
Use the access token to access the API
You need to send the access token you got with each authenticated request to the API. It needs to be included as a request header:
Authorization: Bearer ACCESS-TOKEN
For example:
curl -H "Authorization: Bearer ACCESS-TOKEN" https://doorbell.io/api/applications
Endpoints
GET /users/me
Get the currently authenticated user
Responses
| HTTP Code | Content Type | Response Body |
|---|---|---|
200 |
application/json |
{
"data": {
"id": 1,
"email": "me@example.com",
"name": "George"
}
} |
GET /applications
Get all applications
Responses
| HTTP Code | Content Type | Response Body |
|---|---|---|
200 |
application/json |
{
"data": [
{
"id": 1,
"organization_id": 0,
"name": "Loccit",
"url": null,
"average_first_reply_time": 21600,
"target_average_first_reply_time": 43200,
"keys": {
"javascript": "BDnGQn5a48LJK2HV4bQK6ooLiGKUPcY8",
"ios": "X519a5sC4OolNrOc1BkV8MAEmprJtjok",
"android": "X519a5sC4OolNrOc1BkV8MAEmprJtjok",
"api": "X519a5sC4OolNrOc1BkV8MAEmprJtjok",
"email": "feedback-1-4fFJS8IFEArVi1bpzl4pdBnCDFHwEObv@feedback.doorbell.io"
},
"created_at": 1772632758,
"updated_at": 1774274358
},
{
"id": 17,
"organization_id": 0,
"name": "Doorbell",
"url": null,
"average_first_reply_time": 2940,
"target_average_first_reply_time": 10800,
"keys": {
"javascript": "O9zeaEtQ2txAtnovEjrwqzIZUQxbLiCI",
"ios": "POQLfWEu0XeIdw4UkHWJKBE6CJEghiLV",
"android": "POQLfWEu0XeIdw4UkHWJKBE6CJEghiLV",
"api": "POQLfWEu0XeIdw4UkHWJKBE6CJEghiLV",
"email": "feedback-17-BxaMvSlpnKXONQWp6J7jDZZmZmJvcVi7@feedback.doorbell.io"
},
"created_at": 1772632758,
"updated_at": 1774274358
}
]
} |
POST /applications
Create a new application
Request Parameters
| Name | Description | Example |
|---|---|---|
name |
The name of an application | 1 |
url |
The URL of an application | |
logo |
The logo of the application (ensure you're making a multipart/form-data request to upload the file) |
|
organization_id |
The ID of the organization |
Responses
| HTTP Code | Content Type | Response Body |
|---|---|---|
200 |
application/json |
{
"data": {
"id": 1,
"organization_id": 0,
"name": "Loccit",
"url": null,
"average_first_reply_time": 21600,
"target_average_first_reply_time": 43200,
"keys": {
"javascript": "BDnGQn5a48LJK2HV4bQK6ooLiGKUPcY8",
"ios": "X519a5sC4OolNrOc1BkV8MAEmprJtjok",
"android": "X519a5sC4OolNrOc1BkV8MAEmprJtjok",
"api": "X519a5sC4OolNrOc1BkV8MAEmprJtjok",
"email": "feedback-1-4fFJS8IFEArVi1bpzl4pdBnCDFHwEObv@feedback.doorbell.io"
},
"created_at": 1772632758,
"updated_at": 1774274358
}
} |
404 |
text/plain |
Invalid application |
GET /applications/{id}
Get a single application
Request Parameters
| Name | Description | Example |
|---|---|---|
id |
ID of an application | 1 |
Responses
| HTTP Code | Content Type | Response Body |
|---|---|---|
200 |
application/json |
{
"data": {
"id": 1,
"organization_id": 0,
"name": "Loccit",
"url": null,
"average_first_reply_time": 21600,
"target_average_first_reply_time": 43200,
"keys": {
"javascript": "BDnGQn5a48LJK2HV4bQK6ooLiGKUPcY8",
"ios": "X519a5sC4OolNrOc1BkV8MAEmprJtjok",
"android": "X519a5sC4OolNrOc1BkV8MAEmprJtjok",
"api": "X519a5sC4OolNrOc1BkV8MAEmprJtjok",
"email": "feedback-1-4fFJS8IFEArVi1bpzl4pdBnCDFHwEObv@feedback.doorbell.io"
},
"created_at": 1772632758,
"updated_at": 1774274358
}
} |
404 |
text/plain |
Invalid application |
POST /applications/{id}
Update a single application
Request Parameters
| Name | Description | Example |
|---|---|---|
name |
The name of an application | 1 |
url |
The URL of an application | |
logo |
The logo of the application (ensure you're making a multipart/form-data request to upload the file) |
|
organization_id |
The ID of the organization |
Responses
| HTTP Code | Content Type | Response Body |
|---|---|---|
200 |
application/json |
{
"data": {
"id": 1,
"organization_id": 0,
"name": "Loccit",
"url": null,
"average_first_reply_time": 21600,
"target_average_first_reply_time": 43200,
"keys": {
"javascript": "BDnGQn5a48LJK2HV4bQK6ooLiGKUPcY8",
"ios": "X519a5sC4OolNrOc1BkV8MAEmprJtjok",
"android": "X519a5sC4OolNrOc1BkV8MAEmprJtjok",
"api": "X519a5sC4OolNrOc1BkV8MAEmprJtjok",
"email": "feedback-1-4fFJS8IFEArVi1bpzl4pdBnCDFHwEObv@feedback.doorbell.io"
},
"created_at": 1772632758,
"updated_at": 1774274358
}
} |
404 |
text/plain |
Invalid application |
GET /applications/{id}/feedback
Get the feedback of the application
Request Parameters
| Name | Description | Example |
|---|---|---|
id |
ID of an application | 1 |
archived |
Set to true or 1 to get the archived feedback (query string parameter) |
1 |
Responses
| HTTP Code | Content Type | Response Body |
|---|---|---|
200 |
application/json |
{
"data": [
{
"id": 12,
"email": "member@example.com",
"gravatar": "https:\/\/secure.gravatar.com\/avatar\/a4fae232e2bfebd9f4dc8d7cb6caecb2?s=64&d=mm",
"message": "My feedback is that I am very happy with the service",
"permalink": "https:\/\/doorbell.io\/applications\/1\/feedback\/12",
"sentiment": "positive",
"member": {
"id": 23,
"email": "member@example.com",
"name": "George Customer",
"created_at": 1772344717,
"updated_at": 1775311158
},
"attachments": [],
"is_anonymous": false,
"can_reply": true,
"archived": false,
"first_reply_time": null,
"last_reply_time": 1775311158,
"ip_address": "216.73.216.144",
"user_agent": "Mozilla\/5.0 AppleWebKit\/537.36 (KHTML, like Gecko; compatible; ClaudeBot\/1.0; +claudebot@anthropic.com)",
"properties": [],
"created_at": 1775311158,
"updated_at": 1775311158,
"replies": []
}
]
} |
404 |
text/plain |
Invalid application |
GET /applications/{id}/feedback/{feedback_id}
Get the specific thread of the application
Request Parameters
| Name | Description | Example |
|---|---|---|
id |
ID of an application | 1 |
feedback_id |
ID of an feedback thread | 12 |
Responses
| HTTP Code | Content Type | Response Body |
|---|---|---|
200 |
application/json |
{
"data": {
"id": 12,
"email": "member@example.com",
"gravatar": "https:\/\/secure.gravatar.com\/avatar\/a4fae232e2bfebd9f4dc8d7cb6caecb2?s=64&d=mm",
"message": "My feedback is that I am very happy with the service",
"permalink": "https:\/\/doorbell.io\/applications\/1\/feedback\/12",
"sentiment": "positive",
"member": {
"id": 23,
"email": "member@example.com",
"name": "George Customer",
"created_at": 1772344717,
"updated_at": 1775311158
},
"attachments": [],
"is_anonymous": false,
"can_reply": true,
"archived": false,
"first_reply_time": null,
"last_reply_time": 1775311158,
"ip_address": "216.73.216.144",
"user_agent": "Mozilla\/5.0 AppleWebKit\/537.36 (KHTML, like Gecko; compatible; ClaudeBot\/1.0; +claudebot@anthropic.com)",
"properties": [],
"created_at": 1775311158,
"updated_at": 1775311158,
"replies": []
}
} |
404 |
text/plain |
Invalid application |
Doorbell.io