Skip to content
Doorbell.io

Data API documentation

Read and manage your Doorbell data, like applications, feedback, replies and tags, from your own code.

  • Base URL https://doorbell.io/api
  • Bearer access tokens
  • Enterprise plan

BasicsLink to this section

This is the API for developers to extend Doorbell. You can interact with Doorbell's data (applications, organizations, existing feedback thread, etc).

Looking to send feedback from your own form? That's the Feedback Capture API, which uses your application's ID and key instead of an access token. The Data API is for working with the feedback that's already in Doorbell.

The base URL for the API is: https://doorbell.io/api

Each access token is granted one or more scopes. Endpoints that only read data require the read scope, while endpoints that create, update, or delete data require the write scope. The required scope is shown next to each endpoint below.

AvailabilityLink to this section

The Data API is available on the Enterprise plan. You can use it if any application or organization you belong to has an active Enterprise plan.

Access tokens are created in your account settings, which only show the API access section once you're on an eligible plan. Requests made with an access token after the Enterprise plan ends are rejected with a 403 response.

To upgrade, or to ask about API access for your team, email hello@doorbell.io.

AuthenticationLink to this section

  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:

    Request header
    Authorization: Bearer ACCESS-TOKEN

    For example:

    Shell
    curl -H "Authorization: Bearer ACCESS-TOKEN" https://doorbell.io/api/applications

EndpointsLink to this section

GET /users/me scope: readLink to this section

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 scope: readLink to this section

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": "iMiHm2A2PO2H3k9Y2dvDR7Zbp8XUKL4i",
                "ios": "dLcy7eq3RK3We9vNjdlqv32fCPfYX9W0",
                "android": "dLcy7eq3RK3We9vNjdlqv32fCPfYX9W0",
                "api": "dLcy7eq3RK3We9vNjdlqv32fCPfYX9W0",
                "email": "feedback-1-a2dWAwMhwpOXLnTLlXYWvDLydaF4Cu1P@feedback.doorbell.io"
            },
            "created_at": 1790868750,
            "updated_at": 1792510350
        },
        {
            "id": 17,
            "organization_id": 0,
            "name": "Doorbell",
            "url": null,
            "average_first_reply_time": 2940,
            "target_average_first_reply_time": 10800,
            "keys": {
                "javascript": "KVEPVeTp9lYYDWDA0v5cREywf3FC8t63",
                "ios": "blWc5U5yVS8zEEFLZSObyNQcLFEJuYhH",
                "android": "blWc5U5yVS8zEEFLZSObyNQcLFEJuYhH",
                "api": "blWc5U5yVS8zEEFLZSObyNQcLFEJuYhH",
                "email": "feedback-17-bdFAc4cgAqby0Zhu1EgBzZWw9W2zn5Gn@feedback.doorbell.io"
            },
            "created_at": 1790868750,
            "updated_at": 1792510350
        }
    ]
}

POST /applications scope: writeLink to this section

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": "iMiHm2A2PO2H3k9Y2dvDR7Zbp8XUKL4i",
            "ios": "dLcy7eq3RK3We9vNjdlqv32fCPfYX9W0",
            "android": "dLcy7eq3RK3We9vNjdlqv32fCPfYX9W0",
            "api": "dLcy7eq3RK3We9vNjdlqv32fCPfYX9W0",
            "email": "feedback-1-a2dWAwMhwpOXLnTLlXYWvDLydaF4Cu1P@feedback.doorbell.io"
        },
        "created_at": 1790868750,
        "updated_at": 1792510350
    }
}
404 text/plain Invalid application

GET /applications/{id} scope: readLink to this section

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": "iMiHm2A2PO2H3k9Y2dvDR7Zbp8XUKL4i",
            "ios": "dLcy7eq3RK3We9vNjdlqv32fCPfYX9W0",
            "android": "dLcy7eq3RK3We9vNjdlqv32fCPfYX9W0",
            "api": "dLcy7eq3RK3We9vNjdlqv32fCPfYX9W0",
            "email": "feedback-1-a2dWAwMhwpOXLnTLlXYWvDLydaF4Cu1P@feedback.doorbell.io"
        },
        "created_at": 1790868750,
        "updated_at": 1792510350
    }
}
404 text/plain Invalid application

POST /applications/{id} scope: writeLink to this section

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": "iMiHm2A2PO2H3k9Y2dvDR7Zbp8XUKL4i",
            "ios": "dLcy7eq3RK3We9vNjdlqv32fCPfYX9W0",
            "android": "dLcy7eq3RK3We9vNjdlqv32fCPfYX9W0",
            "api": "dLcy7eq3RK3We9vNjdlqv32fCPfYX9W0",
            "email": "feedback-1-a2dWAwMhwpOXLnTLlXYWvDLydaF4Cu1P@feedback.doorbell.io"
        },
        "created_at": 1790868750,
        "updated_at": 1792510350
    }
}
404 text/plain Invalid application

PUT /applications/{id} scope: writeLink to this section

Update a single application (equivalent to POST)


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": "iMiHm2A2PO2H3k9Y2dvDR7Zbp8XUKL4i",
            "ios": "dLcy7eq3RK3We9vNjdlqv32fCPfYX9W0",
            "android": "dLcy7eq3RK3We9vNjdlqv32fCPfYX9W0",
            "api": "dLcy7eq3RK3We9vNjdlqv32fCPfYX9W0",
            "email": "feedback-1-a2dWAwMhwpOXLnTLlXYWvDLydaF4Cu1P@feedback.doorbell.io"
        },
        "created_at": 1790868750,
        "updated_at": 1792510350
    }
}
404 text/plain Invalid application

GET /applications/{id}/feedback scope: readLink to this section

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": 1790580709,
                "updated_at": 1793547150
            },
            "attachments": [],
            "is_anonymous": false,
            "can_reply": true,
            "archived": false,
            "first_reply_time": null,
            "last_reply_time": 1793547150,
            "ip_address": "216.73.216.163",
            "user_agent": "Mozilla\/5.0 AppleWebKit\/537.36 (KHTML, like Gecko; compatible; ClaudeBot\/1.0; +claudebot@anthropic.com)",
            "properties": [],
            "created_at": 1793547150,
            "updated_at": 1793547150,
            "replies": []
        }
    ]
}
404 text/plain Invalid application

GET /applications/{id}/feedback/{feedback_id} scope: readLink to this section

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": 1790580709,
            "updated_at": 1793547150
        },
        "attachments": [],
        "is_anonymous": false,
        "can_reply": true,
        "archived": false,
        "first_reply_time": null,
        "last_reply_time": 1793547150,
        "ip_address": "216.73.216.163",
        "user_agent": "Mozilla\/5.0 AppleWebKit\/537.36 (KHTML, like Gecko; compatible; ClaudeBot\/1.0; +claudebot@anthropic.com)",
        "properties": [],
        "created_at": 1793547150,
        "updated_at": 1793547150,
        "replies": []
    }
}
404 text/plain Invalid application

GET /applications/{id}/tags scope: readLink to this section

Get all tags configured on 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": 4,
            "name": "bug",
            "color": "#e74c3c",
            "feedback_count": 12,
            "archived_feedback_count": 3,
            "total_feedback_count": 15
        }
    ]
}
404 text/plain Invalid application

GET /applications/{id}/replies scope: readLink to this section

Get all replies sent on an application's feedback threads


Request Parameters

Name Description Example
id ID of an application 1
date Restrict to replies created on a single date (Y-m-d, query string parameter) 2026-11-01
limit Maximum number of replies to return (default 50, query string parameter) 50
offset Number of replies to skip (default 0, query string parameter)

Responses

HTTP Code Content Type Response Body
200 application/json
{
    "data": [
        {
            "id": 892,
            "type": "reply",
            "email": "reply@example.com",
            "gravatar": "https:\/\/www.gravatar.com\/avatar\/abc123?s=64&d=mm",
            "message": "This is the reply message",
            "attachments": [],
            "user": [],
            "created_at": 1793544450,
            "reply_from_agent": true,
            "feedback_id": 12,
            "feedback": {
                "id": 12,
                "email": "member@example.com",
                "message": "My feedback is that I am very happy with the service",
                "sentiment": "pos",
                "archived": false,
                "created_at": 1793543550,
                "updated_at": 1793544450
            }
        }
    ],
    "pagination": {
        "total": 1
    }
}
404 text/plain Invalid application

GET /organizations scope: readLink to this section

Get all organizations the authenticated user belongs to


Responses

HTTP Code Content Type Response Body
200 application/json
{
    "data": [
        {
            "id": 7,
            "name": "Acme Inc.",
            "created_at": 1785598350,
            "updated_at": 1793374350
        }
    ]
}

GET /organizations/{id} scope: readLink to this section

Get a single organization the authenticated user belongs to


Request Parameters

Name Description Example
id ID of an organization 7

Responses

HTTP Code Content Type Response Body
200 application/json
{
    "data": {
        "id": 7,
        "name": "Acme Inc.",
        "created_at": 1785598350,
        "updated_at": 1793374350
    }
}
404 text/plain Invalid organization

PATCH /applications/{id}/feedback/{feedback_id} scope: writeLink to this section

Archive or unarchive a feedback thread


Request Parameters

Name Description Example
id ID of an application 1
feedback_id ID of a feedback thread 12

Request Body

Content-Type: application/json
Name Required Description Example
archived Send the JSON boolean true to archive the thread, or false to unarchive it true

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": 1790580709,
            "updated_at": 1793547150
        },
        "attachments": [],
        "is_anonymous": false,
        "can_reply": true,
        "archived": false,
        "first_reply_time": null,
        "last_reply_time": 1793547150,
        "ip_address": "216.73.216.163",
        "user_agent": "Mozilla\/5.0 AppleWebKit\/537.36 (KHTML, like Gecko; compatible; ClaudeBot\/1.0; +claudebot@anthropic.com)",
        "properties": [],
        "created_at": 1793547150,
        "updated_at": 1793547150,
        "replies": []
    }
}
400 text/plain Nothing sent to update
404 text/plain Invalid application
404 text/plain Invalid feedback
500 text/plain Could not update feedback

POST /applications/{id}/feedback/{feedback_id}/replies scope: writeLink to this section

Send a reply to a feedback thread


Request Parameters

Name Description Example
id ID of an application 1
feedback_id ID of a feedback thread 12

Request Body

Content-Type: application/json
Name Required Description Example
message The reply message to send as the authenticated user Thanks for the feedback!
type The type of reply to create. Use reply (the default) for a public reply visible to the customer, or note for an internal note visible only to your agents. Internal notes require a plan that includes them. note

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": 1790580709,
            "updated_at": 1793547150
        },
        "attachments": [],
        "is_anonymous": false,
        "can_reply": true,
        "archived": false,
        "first_reply_time": null,
        "last_reply_time": 1793547150,
        "ip_address": "216.73.216.163",
        "user_agent": "Mozilla\/5.0 AppleWebKit\/537.36 (KHTML, like Gecko; compatible; ClaudeBot\/1.0; +claudebot@anthropic.com)",
        "properties": [],
        "created_at": 1793547150,
        "updated_at": 1793547150,
        "replies": []
    }
}
400 text/plain The message field is required.
403 text/plain Your plan does not include internal notes
404 text/plain Invalid application
404 text/plain Invalid feedback