Ingest Feedback Event

Ingest one outreach outcome event. This is how Satellyte learns which leads, titles, companies, and signal types produce better outcomes.

Endpoint

POST /api/v1/feedback/events

Authentication

All requests require the X-Satellyte-API-Key header. See Quickstart.

Supported event types

event_typeBehavior
openAccepted; no status mutation yet.
clickAccepted; no status mutation yet.
replySets lead status to replied; updates replied_at and reply_content.
positive_replySets status to replied; marks feedback = positive.
bounceSets status to skipped; marks feedback = negative.
meeting_bookedSets status to meeting_booked; marks feedback = positive.

Supported sources

instantly, heyreach, webhook, manual, custom.

Request body

FieldTypeRequiredNotes
lead_idstringYesLead ID in your workspace.
event_typeenumYesOne of the values in the table above.
sourceenumNoDefaults to custom.
contentstringNoReply text, event detail, or failure reason.
meeting_urlstringNoUsed with meeting_booked.
occurred_atstring (ISO)NoEvent time; defaults to now.
metadataobjectNoReserved for future use.

cURL: positive reply

curl -i -X POST "https://api-staging.satellyte.ai/api/v1/feedback/events" \
  -H "X-Satellyte-API-Key: $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "lead_id": "LEAD_ID_HERE",
    "event_type": "positive_reply",
    "source": "webhook",
    "content": "Interested, send me more details."
  }'

cURL: meeting booked

curl -i -X POST "https://api-staging.satellyte.ai/api/v1/feedback/events" \
  -H "X-Satellyte-API-Key: $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "lead_id": "LEAD_ID_HERE",
    "event_type": "meeting_booked",
    "source": "webhook",
    "meeting_url": "https://meet.google.com/example",
    "content": "Meeting booked from outbound campaign."
  }'

Response (200)

{
  "data": {
    "accepted": true,
    "event_type": "positive_reply",
    "source": "webhook",
    "lead_id": "lead_123",
    "mutated_lead": true,
    "stored_event": false,
    "note": "Lead outcome updated using existing leads fields.",
    "lead": {
      "id": "lead_123",
      "status": "replied",
      "replied_at": "2026-05-02T12:00:00.000Z",
      "meeting_booked_at": null,
      "feedback": "positive",
      "feedback_reason": "Interested, send me more details."
    }
  }
}

Response fields

FieldTypeNotes
acceptedbooleanAlways true for a recognized event type with a known lead.
event_typestringEchoed event type.
sourcestringEchoed source.
lead_idstringEchoed lead id.
mutated_leadbooleanWhether the lead record was updated.
stored_eventbooleanReserved for future; whether a separate event log entry was written.
notestringFree-form explanation of what changed.
leadobjectUpdated lead snapshot (id, status, replied_at, meeting_booked_at, feedback, feedback_reason).

Errors

404 lead_not_found: lead_id does not exist in this workspace.

{ "error": { "code": "lead_not_found", "message": "Lead not found for this Public API workspace." } }

400 validation_error: event_type is not one of the supported values.