Skip to content
Support

Get a feedback record by ID

client.feedbackRecords.retrieve(stringid, RequestOptionsoptions?): FeedbackRecordData { id, collected_at, created_at, 24 more }
GET/v1/feedback-records/{id}

Retrieves a single feedback record data point by its UUID

ParametersExpand Collapse
id: string

Feedback Record ID (UUID)

formatuuid
ReturnsExpand Collapse
FeedbackRecordData { id, collected_at, created_at, 24 more }
id: string

UUIDv7 primary key

formatuuid
collected_at: string

When the feedback was collected

formatdate-time
created_at: string

When this record was created

formatdate-time
field_id: string

Identifier for the question/field

field_type: "text" | "categorical" | "nps" | 6 more

Type of field

Accepts one of the following:
"text"
"categorical"
"nps"
"csat"
"ces"
"rating"
"number"
"boolean"
"date"
source_type: string

Type of feedback source

submission_id: string

Identifier for the logical submission this record belongs to (required).

tenant_id: string

Tenant/organization identifier. NULL bytes not allowed.

updated_at: string

When this record was last updated

formatdate-time
emotions?: Array<"joy" | "anger" | "sadness" | 3 more>

Emotions inferred from value_text (emotion enrichment); multi-label from a fixed set. Read-only; absent until the record is enriched, and never an empty array.

Accepts one of the following:
"joy"
"anger"
"sadness"
"fear"
"surprise"
"disgust"
field_group_id?: string

Stable identifier grouping related fields (for ranking, matrix, grid questions)

field_group_label?: string

Human-readable question text for the group

field_label?: string

The actual question text

language?: string

ISO language code. NULL bytes not allowed.

metadata?: unknown | Array<unknown> | string | 2 more | null

Arbitrary context stored with this record, returned with equivalent values (key order is normalized, and so are number exponents — 1e2 reads back as 100). Omitted when the record has no metadata; a record explicitly stored with a JSON null returns null. An object is the supported shape and the only one the request schemas accept. The wider union is for reading: the column stores whatever JSON was written, so a record created before that convention can return an array or a scalar, and an object-only response schema would make a generated client reject it.

Accepts one of the following:
unknown
Array<unknown>
string
number
boolean
sentiment?: "very_negative" | "negative" | "neutral" | 3 more

Sentiment polarity inferred from value_text (sentiment enrichment). Read-only; absent until the record is enriched.

Accepts one of the following:
"very_negative"
"negative"
"neutral"
"positive"
"very_positive"
"mixed"
sentiment_score?: number

Signed sentiment polarity from -1.0 (very negative) to 1.0 (very positive) (sentiment enrichment). Read-only; absent until the record is enriched.

formatdouble
minimum-1
maximum1
source_id?: string

Reference to survey/form/ticket ID

source_name?: string

Human-readable name

translation_lang_key?: string

BCP-47 target locale that value_text_translated was produced in (language enrichment). Read-only; absent until the record is enriched.

maxLength35
user_id?: string

User ID (e.g., anonymous ID or email hash)

value_boolean?: boolean

Boolean response

value_date?: string

Date response

formatdate-time
value_id?: string

Stable id of the selected option in the source system (e.g. a survey choice id), stored alongside value_text for durable option identity. Opaque to Hub. Absent for free-text/non-choice answers. NULL bytes not allowed.

value_number?: number

Numeric response

formatdouble
value_text?: string

Text response. NULL bytes not allowed.

value_text_translated?: string

value_text translated into the tenant's configured target language (language enrichment). Read-only; absent until the record is enriched.

Get a feedback record by ID

import FormbricksHub from '@formbricks/hub';

const client = new FormbricksHub({
  apiKey: process.env['HUB_API_KEY'], // This is the default and can be omitted
});

const feedbackRecordData = await client.feedbackRecords.retrieve(
  '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
);

console.log(feedbackRecordData.id);
{
  "id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
  "collected_at": "2019-12-27T18:11:19.117Z",
  "created_at": "2019-12-27T18:11:19.117Z",
  "field_id": "field_id",
  "field_type": "text",
  "source_type": "source_type",
  "submission_id": "submission_id",
  "tenant_id": "tenant_id",
  "updated_at": "2019-12-27T18:11:19.117Z",
  "emotions": [
    "joy"
  ],
  "field_group_id": "field_group_id",
  "field_group_label": "field_group_label",
  "field_label": "field_label",
  "language": "language",
  "metadata": {},
  "sentiment": "very_negative",
  "sentiment_score": -1,
  "source_id": "source_id",
  "source_name": "source_name",
  "translation_lang_key": "translation_lang_key",
  "user_id": "user_id",
  "value_boolean": true,
  "value_date": "2019-12-27T18:11:19.117Z",
  "value_id": "value_id",
  "value_number": 0,
  "value_text": "value_text",
  "value_text_translated": "value_text_translated"
}
Returns Examples
{
  "id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
  "collected_at": "2019-12-27T18:11:19.117Z",
  "created_at": "2019-12-27T18:11:19.117Z",
  "field_id": "field_id",
  "field_type": "text",
  "source_type": "source_type",
  "submission_id": "submission_id",
  "tenant_id": "tenant_id",
  "updated_at": "2019-12-27T18:11:19.117Z",
  "emotions": [
    "joy"
  ],
  "field_group_id": "field_group_id",
  "field_group_label": "field_group_label",
  "field_label": "field_label",
  "language": "language",
  "metadata": {},
  "sentiment": "very_negative",
  "sentiment_score": -1,
  "source_id": "source_id",
  "source_name": "source_name",
  "translation_lang_key": "translation_lang_key",
  "user_id": "user_id",
  "value_boolean": true,
  "value_date": "2019-12-27T18:11:19.117Z",
  "value_id": "value_id",
  "value_number": 0,
  "value_text": "value_text",
  "value_text_translated": "value_text_translated"
}