Skip to main content

Ingest table events

Append event record objects as rows in an accessible Research Table, preserving each record in webhook_payload.

POST/api/tables/{table_id}/events
HTTP referenceScope tables:writeUpdated September 27, 2026

This page documents the canonical HTTP contract for this endpoint.

This authenticated endpoint checks the caller's table access, then appends each supplied record as one row. It returns accepted and rowIds. Developer keys require tables:write; the authenticated user must also have table access. It does not use a webhook token; use the separate table webhook endpoint for unauthenticated source delivery.

Use an event-source table when modeling an append-only stream. Each record is retained whole under webhook_payload, with its top-level properties also written to row fields. The example event fields are not schema requirements.

Path parameters

  • table_idrequired

    string

    Target Research Table ID.

Body parameters

  • records · optional

    array<EventRecord>

    Optional array of open JSON event objects; each becomes a row. May be combined with record.

  • record · optional

    EventRecord

    Optional open JSON event object; appended after records when both are supplied.

  • additional event fields · optional

    JSON object properties

    Open JSON properties may be sent at the top level as a single event when neither records nor record is supplied. Top-level extra properties are ignored when records or record is present.

Definitions

EventRecord

An open JSON object with no required event-specific keys. Its fields are written as row fields and the full object is also stored under webhook_payload. The example fields below are illustrative only.

Fields

  • event_type · optional

    string

    Illustrative event name; choose the value used by your integration.

  • occurred_at · optional

    string (date-time)

    Event time in ISO 8601 form.

  • external_id · optional

    string

    Optional source-system event or entity identifier.

  • properties · optional

    object

    Optional event-specific values; nested JSON is preserved.

EventRecord example

json
{
  "event_type": "demo_requested",
  "occurred_at": "2026-09-27T14:00:00Z",
  "external_id": "evt_example_01",
  "properties": { "source": "website", "plan": "team" }
}

Errors

StatusMeaning
401Missing or invalid authentication.
403Table access denied or the key is missing tables:write.
404Table not found.
422No event record was supplied or the request is invalid.

Docs