Skip to main content
POST
Bulk create or upsert records
Use field names or field IDs as keys and field values as data (e.g., "Email": "user@example.com" or "fwtJyga6dso": "user@example.com").

Upsert with matchOn

Provide matchOn with one or more field IDs to upsert instead of always creating. Incoming records that match an existing record on all of the matchOn fields update that record; the rest are created.
Unlike the keys inside each record, matchOn accepts field IDs only — field names are rejected. A record’s field IDs are the keys of the data object returned by any record endpoint (for example, List records).
A pure create (no matchOn) returns 201 Created. An upsert (with matchOn) returns 200 OK. In both cases the response contains the resulting records.
Any id field included in a record is ignored — record IDs are always generated by the database.

Authorizations

Authorization
string
header
required

Enter your Zite API key. Format: Bearer <api_key>

Path Parameters

databaseId
string
required

The unique identifier of the database

tableId
string
required

The unique identifier of the table. You can also use the table name instead of the ID.

Body

application/json
records
object[]
required

The records to create. Each record is an object of field data using field names or field IDs as keys.

Required array length: 1 - 100 elements
matchOn
string[]

Optional list of field IDs to match on for upsert (field IDs only — not field names, unlike the keys inside each record). When provided, an incoming record that matches an existing record on all of these fields updates that record instead of creating a new one.

Required array length: 1 - 20 elements
Example:

Response

Records upserted successfully (returned when matchOn is provided)

success
boolean
required

Whether the bulk operation succeeded.

records
object[]
required

The created, upserted, or updated records.