Feedback API

Collect and manage user feedback for your products with the Feedback API. Track bugs, feature requests, questions, and praise from various sources.

Server API keys and Feedback Keys

Use server API keys for private server-to-server workflows. Use product Feedback Keys for public client apps. See client feedback setup.

Endpoints

Feedback Object

The feedback object represents user feedback collected from various sources.

AttributeTypeDescription
idstringUnique identifier for the feedback (e.g., fb_abc123)
productIdstringID of the associated product
contentstringThe feedback content
sourcestringSource of the feedback: EMAIL, TWITTER, GITHUB, DISCORD, EMBEDDED, OTHER
typestringType of feedback: BUG, FEATURE, QUESTION, PRAISE, OTHER
authorstring | nullName of the feedback author
authorEmailstring | nullEmail of the feedback author
metadatastring | nullOptional extra context. JSON strings are formatted in the dashboard.
createdAtstringISO 8601 timestamp of creation

Feedback Key

A Feedback Key is a product-level public key for collecting feedback from client apps. Create it from Product Settings -> Feedback Ingestion.

AttributeTypeDescription
prefixstringAll Feedback Keys start with myopcs_fb_
scopestringCan only submit feedback to the product that owns the key
readAccessbooleanFeedback Keys cannot read, list, update, or delete data
dailyLimitnumberDefault daily submission limit for the product key
rotationstringRotate the key from Product Settings when it is exposed or abused

Feedback Sources

The source indicates where the feedback was received from.

AttributeTypeDescription
EMAILstringFeedback received via email
TWITTERstringFeedback from Twitter/X
GITHUBstringFeedback from GitHub issues or discussions
DISCORDstringFeedback from Discord community
EMBEDDEDstringFeedback from embedded widget integrated into your product
OTHERstringFeedback from other sources

Feedback Types

The type categorizes the nature of the feedback.

AttributeTypeDescription
BUGstringBug report or issue
FEATUREstringFeature request or suggestion
QUESTIONstringQuestion or inquiry
PRAISEstringPositive feedback or testimonial
OTHERstringOther types of feedback
POST

Submit Client Feedback

Submits feedback from a public client app. Use a product Feedback Key from Product Settings. This key can only submit feedback and cannot read product data.

Create a Feedback Key: Open the product, go to Settings -> Feedback Ingestion, then click Generate Key.
Public client use: Feedback Keys are safe to embed in distributed apps because they can only create feedback for one product.
Limits: Requests are limited to a 16KB body, 5000 characters of feedback content, and 8000 characters of metadata.

Request

Bash
curl -X POST https://api.myopcs.com/api/v1/feedback \
  -H "Authorization: Bearer myopcs_fb_YOUR_FEEDBACK_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "content": "Export crashes when choosing PDF.",
    "type": "BUG",
    "authorEmail": "user@example.com",
    "metadata": "{\"appVersion\":\"1.4.2\",\"platform\":\"macos\"}"
  }'

Body Parameters

ParameterTypeRequiredDescription
contentstringYesThe feedback content. Maximum 5000 characters.
typestringNoType of feedback: BUG, FEATURE, QUESTION, PRAISE, OTHER. Defaults to OTHER.
authorstringNoName of the feedback author
authorEmailstringNoEmail of the feedback author
metadatastringNoExtra context as plain text or a JSON string. Maximum 8000 characters.

Response

{}JSON
{
  "data": {
    "id": "fb_new123",
    "productId": "prod_abc123",
    "content": "Export crashes when choosing PDF.",
    "source": "EMBEDDED",
    "type": "BUG",
    "author": null,
    "authorEmail": "user@example.com",
    "metadata": "{\"appVersion\":\"1.4.2\",\"platform\":\"macos\"}",
    "createdAt": "2024-01-16T14:00:00Z"
  }
}
GET

List Feedback

Returns a list of feedback for a specific product. Results are ordered by creation date (newest first).

Request

Bash
curl https://api.myopcs.com/api/v1/products/prod_abc123/feedback \
  -H "Authorization: Bearer YOUR_API_KEY"

Query Parameters

ParameterTypeRequiredDescription
typestringNoFilter by feedback type: BUG, FEATURE, QUESTION, PRAISE, OTHER
sourcestringNoFilter by feedback source: EMAIL, TWITTER, GITHUB, DISCORD, EMBEDDED, OTHER

Response

{}JSON
{
  "data": [
    {
      "id": "fb_abc123",
      "productId": "prod_abc123",
      "content": "The new dashboard feature is amazing! It saved me hours of work.",
      "source": "TWITTER",
      "type": "PRAISE",
      "author": "John Doe",
      "authorEmail": "john@example.com",
      "metadata": null,
      "createdAt": "2024-01-15T10:30:00Z"
    },
    {
      "id": "fb_def456",
      "productId": "prod_abc123",
      "content": "I found a bug where the export button doesn't work on Safari.",
      "source": "EMAIL",
      "type": "BUG",
      "author": "Jane Smith",
      "authorEmail": "jane@example.com",
      "metadata": "{\"browser\":\"Safari\"}",
      "createdAt": "2024-01-14T09:00:00Z"
    }
  ]
}
POST

Create Feedback

Creates a new feedback entry for a product. This is useful for importing feedback from external sources or creating entries programmatically.

Request

Bash
curl -X POST https://api.myopcs.com/api/v1/products/prod_abc123/feedback \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "content": "The API documentation is very clear and easy to follow.",
    "source": "EMAIL",
    "type": "PRAISE",
    "author": "Alex Johnson",
    "authorEmail": "alex@example.com"
  }'

Body Parameters

ParameterTypeRequiredDescription
contentstringYesThe feedback content
sourcestringYesSource of the feedback: EMAIL, TWITTER, GITHUB, DISCORD, EMBEDDED, OTHER
typestringYesType of feedback: BUG, FEATURE, QUESTION, PRAISE, OTHER
authorstringNoName of the feedback author
authorEmailstringNoEmail of the feedback author
metadatastringNoExtra context as plain text or a JSON string. Maximum 8000 characters.

Response

{}JSON
{
  "data": {
    "id": "fb_new123",
    "productId": "prod_abc123",
    "content": "The API documentation is very clear and easy to follow.",
    "source": "EMAIL",
    "type": "PRAISE",
    "author": "Alex Johnson",
    "authorEmail": "alex@example.com",
    "metadata": null,
    "createdAt": "2024-01-16T14:00:00Z"
  }
}
GET

Retrieve Feedback

Retrieves the details of an existing feedback entry by its ID.

Request

Bash
curl https://api.myopcs.com/api/v1/products/prod_abc123/feedback/fb_abc123 \
  -H "Authorization: Bearer YOUR_API_KEY"

Response

{}JSON
{
  "data": {
    "id": "fb_abc123",
    "productId": "prod_abc123",
    "content": "The new dashboard feature is amazing! It saved me hours of work.",
    "source": "TWITTER",
    "type": "PRAISE",
    "author": "John Doe",
    "authorEmail": "john@example.com",
    "metadata": null,
    "createdAt": "2024-01-15T10:30:00Z"
  }
}
DELETE

Delete Feedback

Deletes a feedback entry permanently.

Request

Bash
curl -X DELETE https://api.myopcs.com/api/v1/products/prod_abc123/feedback/fb_abc123 \
  -H "Authorization: Bearer YOUR_API_KEY"

Response

{}JSON
{
  "success": true
}