Skip to content

Tables

Upsert row

Insert a row or replace the row matching a selected unique column. On replacement, omitted columns are cleared; send the complete row. Use Update row for a partial patch. OAuth scope: `api:write`.

POST/api/v2/tables/{tableId}/rows/upsert

Insert a row or replace the row matching a selected unique column. On replacement, omitted columns are cleared; send the complete row. Use Update row for a partial patch.

OAuth scope: api:write.

Authentication

Send a personal or workspace API key in X-API-Key. See key types and access; operations that reject workspace keys say so in their description.

Send X-API-Key in the request header.

Alternatively

Send a Sim OAuth access token in Authorization: Bearer. See OAuth authentication and scopes.

Authorization: Bearer YOUR_ACCESS_TOKEN

Required scopes: api:write

OAuth flows
json
{
  "authorizationCode": {
    "authorizationUrl": "https://www.sim.ai/api/auth/oauth2/authorize",
    "tokenUrl": "https://www.sim.ai/api/auth/oauth2/token",
    "refreshUrl": "https://www.sim.ai/api/auth/oauth2/token",
    "scopes": {
      "api:read": "Read your workspaces, workflows, files, tables, and logs",
      "api:write": "Read, create, change, run, and delete resources in your workspaces",
      "offline_access": "Stay signed in without asking again"
    }
  }
}

OAuth scope: api:write.

Path parameters

tableIdstringRequired

Unique table identifier.

minLength
1

Request body

Required

Workspace scope, row data, and optional unique-column conflict target.

object

Workspace scope, row data, and optional unique-column conflict target.

3 fields
workspaceIdstringRequired

Unique workspace identifier.

minLength
1
maxLength
128
dataobjectRequired

Complete set of row cells keyed by column name. On the update branch this REPLACES the matched row: any column not present here is cleared, unlike a single-row update, which merges.

Schema details
Additional propertiesvalue

User-defined cell value interpreted by its column definition.

conflictTargetstring

Unique column used to detect a conflict.

minLength
1

Additional properties are not allowed.

Request example 1

json
{
  "workspaceId": "a91c4b2e-6d3f-4e8a-b5c7-0d9e2f1a8c64",
  "data": {
    "email": "jane@example.com",
    "status": "active"
  },
  "conflictTarget": "email"
}

Responses

200

The upserted row and operation performed.

object

The resulting row and whether it was inserted or updated.

1 field
dataobjectRequired

Response data.

2 fields
rowobjectRequired

The inserted or updated table row.

5 fields
idstringRequired

Unique row identifier.

dataobjectRequired

Row cells keyed by column name.

Schema details
Additional propertiesvalue

User-defined cell value interpreted by its column definition.

runStateobject

Per-workflow-group run state keyed by group identifier. Present only when the read requested includeRunState.

Schema details
Additional propertiesobject

Run outcome for one workflow group on one row.

7 fields
statusstringRequired

Lifecycle state of the most recent run for this cell: pending, queued, running, completed, error, or canceled.

executionIdvalueRequired

Workflow execution identifier, or null before a worker claimed the cell.

Schema details

Any of

Option 1string
Option 2null
workflowIdstringRequired

Workflow the group runs for this cell.

errorvalueRequired

Failure reason, or null when the run did not fail.

Schema details

Any of

Option 1string
Option 2null
runningBlockIdsarrayRequired

Block identifiers currently mid-execution.

Schema details
Array itemstring
blockErrorsobjectRequired

Per-block failure messages keyed by block identifier.

Schema details
Additional propertiesstring
canceledAtvalueRequired

ISO 8601 timestamp when the cell was canceled, or null.

Schema details

Any of

Option 1string
format
date-time
pattern
^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
Option 2null

Additional properties are not allowed.

createdAtstringRequired

ISO 8601 timestamp when the row was created.

format
date-time
pattern
^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
updatedAtstringRequired

ISO 8601 timestamp when the row was last modified.

format
date-time
pattern
^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$

Additional properties are not allowed.

operationstringRequired

Whether the row was inserted or updated.

enum
["insert","update"]

Additional properties are not allowed.

Additional properties are not allowed.

Response headers

X-RateLimit-Limitinteger

Maximum requests allowed in the current window.

minimum
0
maximum
9007199254740991
X-RateLimit-Remaininginteger

Requests remaining in the current window.

minimum
0
maximum
9007199254740991
X-RateLimit-Resetstring

ISO 8601 timestamp when the current rate-limit window resets.

format
date-time
pattern
^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
Was this helpful?
Suggest an edit