Skip to content

How to get started with a REST API client on any platform

Use the REST API to submit feedback programatically. The API supports both json and multipart/form-data requests.

In each case, the payload of the request is a value object including the required key and content fields. Replace key with your app key and include the user feedback as plain text in the content field.

Additional fields of the value object:

  • attributes - An object of key value metadata to be attached to the feedback. See the attributes section below for more information.
  • email - Including an email address enables replies from the Feedbackbulb stream via email:

Examples

Submit feedback

shell
curl -X "POST" "https://feedbackbulb.com/api/values" \
     -H 'Content-Type: application/json; charset=utf-8' \
     -d $'{
  "value": {
    "key": "XXX-XXX-XX",
    "content": "It\'s so easy to use!",
    "attributes": {
      "os": "iOS",
      "version": "16"
    }
  }
}'

Submit feedback with email:

shell
curl -X "POST" "https://feedbackbulb.com/api/values" \
     -H 'Content-Type: application/json; charset=utf-8' \
     -d $'{
  "value": {
    "key": "XXX-XXX-XX",
    "content": "All cats are saying that they need more food in their bowls. Eating only 6 times a day is not an option.",
    "email": "contact@feedbackbulb.com"
  }
}'

Submit feedback with an attachment

To attach a file, use a multipart request with an additional key file with an appropriate file name and content type:

shell
curl -X "POST" "https://feedbackbulb.com/api/values" \
     -H 'Content-Type: multipart/form-data; charset=utf-8; boundary=...' \
     -F "value[key]=XXX-XXX-XX" \
     -F "value[content]=It's good to get updates, but the changelog is missing!" \
     -F "file=..." \
     -F "value[email]=contact@feedbackbulb.com" \
     -F "attributes[os]=iOS"

Custom Attributes

When submitting feedback (either directly via the REST API or using one of our SDKs), you can attach additional metadata to the feedback report. This can be useful for filtering and grouping feedback reports in the Feedbackbulb dashboard. For example, you can attach the app version, the operating system version, or the user's locale.

We strongly advise against storing personal information in the attributes. If you need to provide a reply address, we recommend using the value.email field of the feedback report (see Examples above).

INFO

For best results, we recommendt that you prefix your attribute keys with a short identifier of your app or service, camelCased and not longer than 20-25 characters. For example, myapp:version or myapp:attributeName.

Reserved attributes

The following attributes have special meaning for Feedbackbulb. It is recommended to avoid using them in your own metadata:

  • source - the source channel of the feedback. This is set automatically by the Feedbackbulb SDKs.

  • notificationId - identifier of the notification which triggered the feedback. This is set automatically by the Feedbackbulb SDKs.

  • postId - identifier of the post which triggered the feedback. This is set automatically by the Feedbackbulb SDKs.

  • postURI - URI of the post which triggered the feedback. This is set automatically by the Feedbackbulb SDKs.

  • moment - timestamp of the original activity which triggered the feedback. This information is usually received from 3rd party services and automatically attached by the Feedbackbulb SDKs.

  • from - the address of the sender of the feedback when available. This information is usually received from 3rd party services and automatically attached by the Feedbackbulb SDKs.

  • fromURI - the address of the sender of the feedback when available. This information is usually received from 3rd party services and automatically attached by the Feedbackbulb SDKs.

  • visibility - visibility of the activity which triggered the feedback. This information is usually received from 3rd party services and automatically attached by the Feedbackbulb SDKs.

Additional fields may be added in the future. We will update this list accordingly.

🚧 Work in progress