Insert rows into an existing table. Returns a batch ID immediately — poll
GET /batches/{batchId} for enrichment progress and results.
Column matching: Field names in each row object are matched to input columns
by slug (exact match). Only columns with kind: "input" are accepted —
enrichment and score columns are populated automatically. Use GET /tables to
discover available column slugs and their kinds.
Enrichment: By default (enrich: true), all auto-trigger enrichment columns run
immediately after insertion. Set enrich: false to insert data without triggering enrichment.
Deduplication & exclusion lists apply automatically — the same table-level rules from the UI are enforced. Duplicate or excluded rows are inserted but may not enrich.
Limits:
API key with og_live_ prefix. Create keys in Settings → API Keys.
Pass in the Authorization header:
Authorization: Bearer og_live_abc123...The table UUID. Use GET /tables to list available tables.
Array of row objects to insert. Each row is a flat object mapping input column slugs to values. Maximum 100 rows per request.
1 - 100 elementsWhether to trigger enrichment after inserting rows.
Defaults to true. Set to false to insert data without
running enrichment — the batch will immediately be "complete".
Optional caller-generated UUID for idempotent retries. If a batch with this ID already exists for the organization, the server returns the existing batch (HTTP 200) without inserting rows again. Generate a UUID client-side and include it with every attempt to make retries safe after network failures.
Idempotent replay — a batch with the provided batchId already exists.
The original batch ID is returned without inserting new rows.
Unique identifier for the batch. Use this to poll GET /batches/{batchId}
for progress and results.