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 OAUTH-ACCESS-TOKEN
For example:
curl -H "Authorization: Bearer OAUTH-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": "gJqiPS3DV6Yz7GdKzgaCHv1abIUA4r6v", "ios": "ahPtWwywZHPJHMD2Xel8ONUGxGP12Gww", "android": "ahPtWwywZHPJHMD2Xel8ONUGxGP12Gww", "api": "ahPtWwywZHPJHMD2Xel8ONUGxGP12Gww", "email": "feedback-1-hG0EhI4fD5F9XObIXJwxl3C5yfwupyQk@feedback.doorbell.io" }, "created_at": 1709124670, "updated_at": 1710593470 }, { "id": 17, "organization_id": 0, "name": "Doorbell", "url": null, "average_first_reply_time": 2940, "target_average_first_reply_time": 10800, "keys": { "javascript": "745D9N4C4JowE10y0J4ITTNmsB34cm40", "ios": "DrwBQyLiKV7KaMtVpkjzqty3J26B3CYE", "android": "DrwBQyLiKV7KaMtVpkjzqty3J26B3CYE", "api": "DrwBQyLiKV7KaMtVpkjzqty3J26B3CYE", "email": "feedback-17-DtoSTcdyF9hIyWT6PhzRayesokH3hXyI@feedback.doorbell.io" }, "created_at": 1709124670, "updated_at": 1710593470 } ] } |
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": "gJqiPS3DV6Yz7GdKzgaCHv1abIUA4r6v", "ios": "ahPtWwywZHPJHMD2Xel8ONUGxGP12Gww", "android": "ahPtWwywZHPJHMD2Xel8ONUGxGP12Gww", "api": "ahPtWwywZHPJHMD2Xel8ONUGxGP12Gww", "email": "feedback-1-hG0EhI4fD5F9XObIXJwxl3C5yfwupyQk@feedback.doorbell.io" }, "created_at": 1709124670, "updated_at": 1710593470 } } |
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": "gJqiPS3DV6Yz7GdKzgaCHv1abIUA4r6v", "ios": "ahPtWwywZHPJHMD2Xel8ONUGxGP12Gww", "android": "ahPtWwywZHPJHMD2Xel8ONUGxGP12Gww", "api": "ahPtWwywZHPJHMD2Xel8ONUGxGP12Gww", "email": "feedback-1-hG0EhI4fD5F9XObIXJwxl3C5yfwupyQk@feedback.doorbell.io" }, "created_at": 1709124670, "updated_at": 1710593470 } } |
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": "gJqiPS3DV6Yz7GdKzgaCHv1abIUA4r6v", "ios": "ahPtWwywZHPJHMD2Xel8ONUGxGP12Gww", "android": "ahPtWwywZHPJHMD2Xel8ONUGxGP12Gww", "api": "ahPtWwywZHPJHMD2Xel8ONUGxGP12Gww", "email": "feedback-1-hG0EhI4fD5F9XObIXJwxl3C5yfwupyQk@feedback.doorbell.io" }, "created_at": 1709124670, "updated_at": 1710593470 } } |
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 |
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": 1708836629, "updated_at": 1711630270 }, "attachments": [], "is_anonymous": false, "can_reply": true, "archived": false, "first_reply_time": null, "last_reply_time": 1711630270, "ip_address": "54.196.27.171", "user_agent": "claudebot", "properties": [], "created_at": 1711630270, "updated_at": 1711630270, "replies": [ { "id": 892, "type": "reply", "email": "reply@example.com", "gravatar": "https:\/\/secure.gravatar.com\/avatar\/5faa389c83c3727f0a5964d4d8446d91?s=64&d=mm", "message": "This is the reply message", "attachments": [], "user": null, "created_at": 1711627570, "reply_from_agent": null, "feedback_id": 12 } ] } ] } |
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": 1708836629, "updated_at": 1711630270 }, "attachments": [], "is_anonymous": false, "can_reply": true, "archived": false, "first_reply_time": null, "last_reply_time": 1711630270, "ip_address": "54.196.27.171", "user_agent": "claudebot", "properties": [], "created_at": 1711630270, "updated_at": 1711630270, "replies": [ { "id": 892, "type": "reply", "email": "reply@example.com", "gravatar": "https:\/\/secure.gravatar.com\/avatar\/5faa389c83c3727f0a5964d4d8446d91?s=64&d=mm", "message": "This is the reply message", "attachments": [], "user": null, "created_at": 1711627570, "reply_from_agent": null, "feedback_id": 12 } ] } } |
404 |
text/plain |
Invalid application |