---
title: "Push record envelopes to a connection"
method: POST
path: "/v1/source-connections/{id}/records"
tags: ["Source Plane"]
---

# Push record envelopes to a connection

`POST /v1/source-connections/{id}/records`

## Request

- Base URL: `https://brain.inite.ai`
- URL: `https://brain.inite.ai/v1/source-connections/{id}/records`
- Auth: HTTP bearer

A CRM’s outbound webhook, an automation (Make, n8n, Zapier, Albato) or a script posts a batch of records — `{ entityType, externalId, name, attributes, relations?, updatedAt? }` — plus the `<type>/<id>`s that are gone, under a connection of shape `structure`. Each batch is a `source_sync` run; an unchanged revision is not re-ingested; gone ids close their facts by the connection’s delete policy. Records (docs/roadmap/crm-sources-2026-09.md): a CRM row enters as FACTS — its mapped attributes become deterministic candidates under the record’s own id, never prose a model re-extracts. Source plane operator surface (docs/roadmap/raw-evidence-sources-2026-09.md) — answers a bare 404 until `SOURCE_PLANE_ENABLED=1`.

Required scope: `brain:write`.

## Path parameters

- `id` string, required

## Request body

- PushRecordsRequest
  - `gone` string[]
  - `records` object[], required
    - `attributes` object, required
    - `entityType` string, required
    - `externalId` string, required
    - `name` string, required
    - `relations` object[]
      - `kind` string, required
      - `targetExternalId` string, required
      - `targetName` string
      - `targetType` string, required
    - `updatedAt` string
  - `sourceVersion` string

## Response `201`

The batch’s outcome.

- PushRecordsResponse
  - `closed` integer, required
  - `deduplicated` integer, required
  - `errors` object[], required
    - `error` string, required
    - `externalId` string, required
  - `failed` integer, required
  - `gone` integer, required
  - `ingested` integer, required
  - `received` integer, required
  - `runId` string, nullable, required

## Other responses

- `400`: Validation failed.
- `401`: Missing or unknown bearer key.
- `403`: The key lacks the required scope.
- `404`: No such resource in this tenant.

---

[API](https://skmtc.dev/inite/apis/inite-brain-platform-api.md) · [All operations](https://skmtc.dev/inite/apis/inite-brain-platform-api/llms.txt) · [OpenAPI document](https://skmtc.dev/inite/apis/inite-brain-platform-api/revisions/c7c3eb5e304b?raw)
