---
title: "Publish Spine Events Bulk"
method: POST
path: "/api/events/publish/bulk"
---

# Publish Spine Events Bulk

`POST /api/events/publish/bulk`

Publish MANY events onto the unified-events spine in one request.

Built for the contact-import modals, whose runs used to send one
POST /api/events/publish per event (a 2k-contact LinkedIn import = ~2k
round trips ≈ minutes of post-import stall). Same trust boundary as the
single endpoint: org from auth, actor=('user', user_id), source='user',
client actor fields ignored. Same per-event caps (namespace allowlist,
~8KB payload, ≤5 links) — the whole request 4xxs if ANY event violates
them (the importers only send well-formed rows; fail loud, not partial).
Events land via chunked INSERTs (emit_events_bulk), not per-row emits.

## Query parameters

- `user_id` string
- `org_id` string

## Request body

- SpineBulkPublishRequest — Request model for the bulk spine publish endpoint.
  - `events` SpinePublishRequest[], required — Events to publish (≤500)
    - `event_type` string, required — Namespaced canonical (e.g. 'contact.created') or legacy name
    - `subject` EventSubject, required — The ONE subject of the event (fills legacy entity_type/entity_id; the DB fanout trigger emits the subject link).
      - `type` string, required — Subject entity type, e.g. 'contact', 'deal', 'client'
      - `id` string, required — Subject entity id
    - `message` string, nullable — Human-readable event_message
    - `payload` object, nullable — Stored in events.metadata (≤8KB)
    - `occurred_at` string, date-time, nullable — Occurred time; defaults to now
    - `links` EventLink[], nullable — Related-entity links (≤5)
      - `role` string — Link role: contact|client|deal|thread|related
      - `type` string, required — Related entity type
      - `id` string, required — Related entity id

## Response `200`

Successful Response

- unknown

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.net/every/apis/every-api.md) · [All operations](https://skmtc.net/every/apis/every-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/every/every-api/versions/9744001af85d/schema)
