Skip to content

Send feedback to Bagel

Request

Receive a batch of original feedback items from an external integration and store them as original items in Bagel. Each item must have an originId, linkedAccountId, and createdAt.

The record schema depends on the feedbackCategory value:

  • call: Use the CallRecord schema — includes conversation-specific fields such as parties, transcript parts, duration, etc.
  • All other categories: Use the GenericFeedbackRecord schema.

Transcript for calls: Call records support two transcript options — choose one:

  1. Structured parts (recommended): Provide an array of ConversationPart objects in the parts field, each representing a speaker segment with timestamps.
  2. Full text transcript: Provide the full transcript as a string in the transcript field. Default expected format: Speaker Name (H:mm:ss): text with each segment separated by double newlines. We support additional transcript formats — contact us to configure parsing for your specific format.

Community votes / parent-child: If your integration object is configured with parentObjectKey, each record in this object is treated as a child (e.g. an upvote). Bagel composes a unique storage originId as <originId>-<linkedAccountId>-<submitterEmail> (empty placeholders preserved) and sets parentOriginId to the value of the field named by your object's externalParentIdField configuration (defaults to originParentId — so by default the record carries the parent's originId in a field named originParentId). The vote is then linked to the parent record sharing that originId on the parent object. If you also supply ideaId, the record is linked directly to that existing Bagel Idea.

Security
ApiToken
Bodyapplication/jsonrequired
feedbackNamestringrequired

Name identifier for the feedback type

Example:"gong_feature_request"
feedbackCategorystringrequired

The feedback category

Enum:"ticket""call""callSummary""survey""chat""lostReason""note""request""meetingInterview""other"
Example:"call"
originSystemstringrequired

The origin system where the feedback items come from

Example:"salesforce"
recordsArray of anyrequired

Array of feedback records. The expected schema depends on the feedbackCategory: - feedbackCategory=call → use CallRecord schema - All other categories → use GenericFeedbackRecord schema

POST
/sync/feedback
curl -i -X POST \
  https://api.bagel.ai/sync/feedback \
  -H 'Content-Type: application/json' \
  -H 'authorization: YOUR_API_KEY_HERE' \
  -d '{
    "feedbackName": "gong_calls",
    "feedbackCategory": "call",
    "originSystem": "gong",
    "records": [
      {
        "originId": "gong-call-123",
        "linkedAccountId": "sf-account-456",
        "createdAt": "2024-01-15T10:30:00.000Z",
        "title": "Q4 Product Review Call",
        "duration": 1800,
        "origin": "gong",
        "link": "https://app.gong.io/call?id=gong-call-123",
        "isInternal": false,
        "parties": [
          {
            "id": "p1",
            "speakerId": "spk-1",
            "name": "Jane Smith",
            "emailAddress": "jane.smith@company.com",
            "affiliation": "Internal"
          },
          {
            "id": "p2",
            "speakerId": "spk-2",
            "name": "John Doe",
            "emailAddress": "john@customer.com",
            "affiliation": "External",
            "companyName": "Customer Corp"
          }
        ],
        "parts": [
          {
            "time": "2024-01-15T10:30:00.000Z",
            "speakerId": "spk-1",
            "speakerName": "Jane Smith",
            "speakerEmail": "jane.smith@company.com",
            "text": "Let'\''s discuss the product roadmap for Q1.",
            "startMs": 0,
            "endMs": 5000
          },
          {
            "time": "2024-01-15T10:30:05.000Z",
            "speakerId": "spk-2",
            "speakerName": "John Doe",
            "speakerEmail": "john@customer.com",
            "text": "We'\''d love to see better reporting capabilities.",
            "startMs": 5000,
            "endMs": 12000,
            "topic": "Feature Request"
          }
        ]
      }
    ]
  }'

Responses

Feedback items processed successfully

Bodyapplication/json
receivedCountinteger
filteredCountinteger
insertedCountinteger
skippedCountinteger
errorsArray of objects
Response
{ "receivedCount": 2, "filteredCount": 2, "insertedCount": 2, "skippedCount": 0, "errors": [] }