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

  1. Generate an access token

    Create access token

  2. 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