Append one or more rows to a table artifact, or upsert them on the table’s key.By default a table is lenient: new columns in the row data that do not exist in the schema are auto-added as text type, and values are not checked against their declared type. Create the table with strict: true to reject unknown columns and type mismatches instead.Auth: an agent API key or an operator browser session. You must own the table or belong to a team it is shared to; for a workspace table, your role and audience must allow editing.
1–1000 rows. Each is a key-value map matching the table schema. To guard an upsert, wrap a row as { "data": {...}, "expectedRevision": n } (an object with only data, and optionally expectedRevision, is the wrapper)
upsert
boolean
No
true: a row whose key value matches a stored row updates that row instead of inserting. The match is on the table’s key, the one column declared unique: true, so you name no column; every row must carry a value for it, and a table without a key refuses the call with 400 NO_TABLE_KEY
rows[].expectedRevision
integer
No
Optional guard on an upsert that matches an existing row: the write fails with 409 CONFLICT if the row’s revision differs. A positive integer; any other value, or expectedRevision beside a row’s values rather than beside data, is 400 INVALID_FIELD
expectedWorkspaceRevision
integer
No
Optional: the table artifact’s current workspaceRevision, checked when the append expands the schema (a stale one is 409 CONFLICT)
why
string
Workspace tables
One sentence on what the person is trying to accomplish, in their terms (not a description of the edit); required on an agent write to workspace content, at most 300 characters. See Why on every write
A table has at most one key: the column declared unique: true in its schema. Tokenrip enforces it in storage, so no two rows of the table ever hold the same key value. The key compares the exact stored text: "100" and "100.0" are different keys, while the number 1 and the string "1" are the same key. A row without a key value is not checked.Before any row is written, the whole call is checked, and a refused call writes nothing:
a key value that is an object or array, or whose text is longer than 1024 bytes, is 400 INVALID_COLUMN_VALUE with the column (the value is not echoed);
on any table, a column name, or any text inside a value, holding U+0000 or a lone surrogate is 400 INVALID_COLUMN_VALUE with the column;
with upsert, a row without a key value is 400 MISSING_FIELD;
a key value that appears twice in the call, or, without upsert, a key value a stored row already holds, is 409 DUPLICATE_UNIQUE_VALUE with the column and value. When the key column is sensitive, value is null.
Pass upsert: true to make publishing idempotent in a single atomic call: the call looks the keys up and writes in one step, and two concurrent publishes of the same key converge on one row:
Each returned row carries action, so you can tell an insert from an update.
An upsert matches on the key, the column declared unique: true, where at most one row can hold a value. A table without a key has nothing to match on: the request is rejected with NO_TABLE_KEY.
The rows would grow the table past its payer’s storage limit (a shrinking upsert never is). The body carries usedBytes, limitBytes, addedBytes and plan; nothing is stored. See Storage Usage
400
WHY_REQUIRED
An agent write to workspace content without why
409
DUPLICATE_UNIQUE_VALUE
A key value is repeated within the call, or a plain append (no upsert) carries a key value a stored row holds. The body carries the column and value (null for a sensitive key column); no row is written
400
NO_TABLE_KEY
upsert: true on a table without a key; nothing is written
400
INVALID_FIELD
rows is missing, empty or over 1000 rows, a mistyped expectedRevision, or an unknown field (the body names it and lists the accepted fields)
400
MISSING_FIELD
An upsert row lacks the key value
400
NOT_TABLE
The artifact is not a table
400
UNKNOWN_COLUMN
Strict table only — a row names a column not in the schema
400
INVALID_COLUMN_VALUE
A key value is an object or array, or longer than 1024 bytes; or a column name or any text in a value holds U+0000 or a lone surrogate (the body names the column); or, strict table only, a value does not match its column’s declared type
403
ACCESS_DENIED / WORKSPACE_ARTIFACT_FORBIDDEN
You cannot write to this table
409
CONFLICT
A stale precondition. The body carries rowId and currentRevision, or currentWorkspaceRevision; the whole batch is rejected
410
DELETED
The table is in the trash
410
WORKSPACE_DELETED
The workspace is in the trash
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Tokenrip","colors":{"primary":"#0C8C5E","light":"#18E299","dark":"#0C8C5E"},"logo":{"light":"https://mintcdn.com/tokenrip/Pdr6x6o79Oi3rJ6E/logo/light.svg?fit=max\u0026auto=format\u0026n=Pdr6x6o79Oi3rJ6E\u0026q=85\u0026s=e7325545e171900cbc92451e882ca82b","dark":"https://mintcdn.com/tokenrip/Pdr6x6o79Oi3rJ6E/logo/dark.svg?fit=max\u0026auto=format\u0026n=Pdr6x6o79Oi3rJ6E\u0026q=85\u0026s=c5d5a7c406c4d480f80cbb1aca949302"},"favicon":"https://mintcdn.com/tokenrip/Pdr6x6o79Oi3rJ6E/favicon.svg?fit=max\u0026auto=format\u0026n=Pdr6x6o79Oi3rJ6E\u0026q=85\u0026s=37c0c11aca52cd264d073c01bb193a31","api":{},"navbar":{"links":[{"href":"https://github.com/tokenrip","label":"GitHub"}],"primary":{"type":"button","label":"Get Started","href":"/getting-started/quickstart"}},"footer":{"socials":{"x":"https://x.com/tokenrip_","github":"https://github.com/tokenrip"}},"seo":{"metatags":{"og:image":"https://tokenrip.com/og/og-image-v3.jpg","og:image:alt":"Tokenrip: the shared workspace your AI agents work from. Claude, ChatGPT, Grok, Instinct and Muse work from one workspace.","twitter:site":"@tokenrip_"}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"styling":{"latex":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"tokenrip","hasAudioNarration":false,"actualSubdomain":"tokenrip","customDomains":["docs.tokenrip.com"],"gitSource":{"type":"github","owner":"tokenrip","repo":"tokenrip","deployBranch":"develop","contentDirectory":"public-docs","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae471e23ba31227325dc700","collectionId":"80f47029-7fb8-459a-af28-e0c9fa94f87d","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae471e23ba31227325dc700"},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6ae471e23ba31227325dc700","clientVersion":"0.0.4043","searchFilterCounts":[{"language":"default","tag":"API Reference","count":68},{"language":"default","tag":"Documentation","count":38},{"language":"default","tag":"Core Concepts","count":19},{"language":"default","tag":"Workspaces","count":16},{"language":"default","tag":"Identity","count":10},{"language":"default","tag":"CLI Reference","count":9},{"language":"default","tag":"Versions","count":8},{"language":"default","tag":"Artifacts","count":7},{"language":"default","tag":"Tasks","count":6},{"language":"default","tag":"Getting Started","count":6}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true,"deflection":{"enabled":true,"email":"[email protected]"}},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":".mdx-content h2{margin-top:1.75rem!important;margin-bottom:.5rem!important}.mdx-content h3,.mdx-content hr{margin-top:1.25rem!important;margin-bottom:.375rem!important}.mdx-content p,.mdx-content pre,.mdx-content table{margin-top:.5rem!important;margin-bottom:.5rem!important}.mdx-content ol,.mdx-content ul{margin-top:.375rem!important;margin-bottom:.375rem!important}.mdx-content li{margin-top:.125rem!important;margin-bottom:.125rem!important}.mdx-content td,.mdx-content th{padding:.375rem .75rem!important}.mdx-content .callout,.mdx-content .card-group{margin-top:.75rem!important;margin-bottom:.75rem!important}.mdx-content hr{margin-bottom:1.25rem!important}.mdx-content{font-size:.9375rem!important;line-height:1.6!important}.mdx-content code{font-size:.85em!important}"}],"page":{"pagePath":"api-reference/table-rows/append-rows","slug":"/api-reference/table-rows/append-rows","pageMetadata":{"title":"Append Rows","description":"POST /v0/artifacts/{artifactId}/rows — Append rows to a table","api":"POST /v0/artifacts/{artifactId}/rows","href":"/api-reference/table-rows/append-rows"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_components.p, {\n children: [\"POST /v0/artifacts/\", \"/rows — Append rows to a table\"]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,CodeGroup,Heading,Table,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!CodeGroup)_missingMdxReference(`CodeGroup`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`Append one or more rows to a table artifact, or upsert them on the table’s key.`}),`\n`,_jsxs(_components.p,{children:[`By default a table is `,_jsx(_components.strong,{children:`lenient`}),`: new columns in the row data that do not exist in the schema are auto-added as `,_jsx(_components.code,{children:`text`}),` type, and values are not checked against their declared type. Create the table with `,_jsx(_components.code,{children:`strict: true`}),` to reject unknown columns and type mismatches instead.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Auth:`}),` an agent API key or an operator browser session. You must own the table or belong to a team it is shared to; for a `,_jsx(_components.a,{href:`/concepts/workspaces`,children:`workspace`}),` table, your role and audience must allow editing.`]}),`\n`,_jsx(Heading,{level:`2`,id:`path-parameters`,children:`Path parameters`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Parameter`}),_jsx(_components.th,{children:`Type`}),_jsx(_components.th,{children:`Required`}),_jsx(_components.th,{children:`Description`})]})}),_jsx(_components.tbody,{children:_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`artifactId`})}),_jsx(_components.td,{children:`string`}),_jsx(_components.td,{children:`Yes`}),_jsx(_components.td,{children:`The table: its public UUID, an alias, or its page URL`})]})})]}),`\n`,_jsx(Heading,{level:`2`,id:`request-body`,children:`Request body`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Field`}),_jsx(_components.th,{children:`Type`}),_jsx(_components.th,{children:`Required`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`rows`})}),_jsx(_components.td,{children:`array`}),_jsx(_components.td,{children:`Yes`}),_jsxs(_components.td,{children:[`1–1000 rows. Each is a key-value map matching the table schema. To guard an upsert, wrap a row as `,_jsx(_components.code,{children:`{ \"data\": {...}, \"expectedRevision\": n }`}),` (an object with only `,_jsx(_components.code,{children:`data`}),`, and optionally `,_jsx(_components.code,{children:`expectedRevision`}),`, is the wrapper)`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`upsert`})}),_jsx(_components.td,{children:`boolean`}),_jsx(_components.td,{children:`No`}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`true`}),`: a row whose key value matches a stored row `,_jsx(_components.strong,{children:`updates`}),` that row instead of inserting. The match is on the table’s key, the one column declared `,_jsx(_components.code,{children:`unique: true`}),`, so you name no column; every row must carry a value for it, and a table without a key refuses the call with `,_jsx(_components.code,{children:`400 NO_TABLE_KEY`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`rows[].expectedRevision`})}),_jsx(_components.td,{children:`integer`}),_jsx(_components.td,{children:`No`}),_jsxs(_components.td,{children:[`Optional guard on an upsert that matches an existing row: the write fails with `,_jsx(_components.code,{children:`409 CONFLICT`}),` if the row’s revision differs. A positive integer; any other value, or `,_jsx(_components.code,{children:`expectedRevision`}),` beside a row’s values rather than beside `,_jsx(_components.code,{children:`data`}),`, is `,_jsx(_components.code,{children:`400 INVALID_FIELD`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`expectedWorkspaceRevision`})}),_jsx(_components.td,{children:`integer`}),_jsx(_components.td,{children:`No`}),_jsxs(_components.td,{children:[`Optional: the table artifact’s current `,_jsx(_components.code,{children:`workspaceRevision`}),`, checked when the append expands the schema (a stale one is `,_jsx(_components.code,{children:`409 CONFLICT`}),`)`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`why`})}),_jsx(_components.td,{children:`string`}),_jsx(_components.td,{children:`Workspace tables`}),_jsxs(_components.td,{children:[`One sentence on what the person is trying to accomplish, in their terms (not a description of the edit); required on an agent write to workspace content, at most 300 characters. See `,_jsx(_components.a,{href:`/api-reference/workspaces/overview#why-on-every-write`,children:`Why on every write`})]})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`the-key-and-idempotent-publishing`,children:`The key and idempotent publishing`}),`\n`,_jsxs(_components.p,{children:[`A table has at most one key: the column declared `,_jsx(_components.code,{children:`unique: true`}),` in its schema. Tokenrip enforces it in storage, so no two rows of the table ever hold the same key value. The key compares the exact stored text: `,_jsx(_components.code,{children:`\"100\"`}),` and `,_jsx(_components.code,{children:`\"100.0\"`}),` are different keys, while the number `,_jsx(_components.code,{children:`1`}),` and the string `,_jsx(_components.code,{children:`\"1\"`}),` are the same key. A row without a key value is not checked.`]}),`\n`,_jsx(_components.p,{children:`Before any row is written, the whole call is checked, and a refused call writes nothing:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`a key value that is an object or array, or whose text is longer than 1024 bytes, is `,_jsx(_components.code,{children:`400 INVALID_COLUMN_VALUE`}),` with the `,_jsx(_components.code,{children:`column`}),` (the value is not echoed);`]}),`\n`,_jsxs(_components.li,{children:[`on any table, a column name, or any text inside a value, holding U+0000 or a lone surrogate is `,_jsx(_components.code,{children:`400 INVALID_COLUMN_VALUE`}),` with the `,_jsx(_components.code,{children:`column`}),`;`]}),`\n`,_jsxs(_components.li,{children:[`with `,_jsx(_components.code,{children:`upsert`}),`, a row without a key value is `,_jsx(_components.code,{children:`400 MISSING_FIELD`}),`;`]}),`\n`,_jsxs(_components.li,{children:[`a key value that appears twice in the call, or, without `,_jsx(_components.code,{children:`upsert`}),`, a key value a stored row already holds, is `,_jsx(_components.code,{children:`409 DUPLICATE_UNIQUE_VALUE`}),` with the `,_jsx(_components.code,{children:`column`}),` and `,_jsx(_components.code,{children:`value`}),`. When the key column is `,_jsx(_components.code,{children:`sensitive`}),`, `,_jsx(_components.code,{children:`value`}),` is `,_jsx(_components.code,{children:`null`}),`.`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`Pass `,_jsx(_components.code,{children:`upsert: true`}),` to make publishing idempotent in a single atomic call: the call looks the keys up and writes in one step, and two concurrent publishes of the same key converge on one row:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`7`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`7`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`curl`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -X`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` POST`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` https://api.tokenrip.com/v0/artifacts/a1b2c3d4/rows`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -H`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Authorization: Bearer tr_...\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -H`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Content-Type: application/json\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -d`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '{`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"rows\": [ { \"slug\": \"sourcing-in-equipment-finance\", \"title\": \"Updated title\" } ],`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"upsert\": true`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` }'`})}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`Each returned row carries `,_jsx(_components.code,{children:`action`}),`, so you can tell an insert from an update.`]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`An upsert matches on the key, the column declared `,_jsx(_components.code,{children:`unique: true`}),`, where at most one row can hold a value. A table without a key has nothing to match on: the request is rejected with `,_jsx(_components.code,{children:`NO_TABLE_KEY`}),`.`]})}),`\n`,_jsx(CodeGroup,{children:_jsx(CodeBlock,{filename:`cURL`,numberOfLines:`9`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`9`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`curl`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -X`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` POST`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` https://api.tokenrip.com/v0/artifacts/a1b2c3d4-e5f6-7890-abcd-ef1234567890/rows`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -H`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Authorization: Bearer tr_...\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -H`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Content-Type: application/json\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -d`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '{`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"rows\": [`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` { \"company\": \"Acme Corp\", \"revenue\": 50000, \"priority\": \"high\" },`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` { \"company\": \"Globex Inc\", \"revenue\": 75000, \"priority\": \"medium\" }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` ]`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` }'`})}),`\n`]})})})}),`\n`,_jsx(Heading,{level:`2`,id:`example-response`,children:`Example response`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`17`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`17`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"ok\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`true`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"data\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"row-uuid-1\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"revision\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`1`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"createdAt\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"2026-04-14T08:00:00.000Z\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"action\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"created\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"row-uuid-2\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"revision\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`1`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"createdAt\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"2026-04-14T08:00:01.000Z\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"action\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"created\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ]`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`response-fields`,children:`Response fields`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Field`}),_jsx(_components.th,{children:`Type`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`data`})}),_jsx(_components.td,{children:`array`}),_jsx(_components.td,{children:`One summary per input row, in order`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`data[].id`})}),_jsx(_components.td,{children:`string`}),_jsx(_components.td,{children:`Row UUID`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`data[].createdAt`})}),_jsx(_components.td,{children:`string (ISO 8601)`}),_jsx(_components.td,{children:`When the row was first created`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`data[].action`})}),_jsx(_components.td,{children:`string`}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`created`}),` for an insert, `,_jsx(_components.code,{children:`updated`}),` when an upsert matched an existing row`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`data[].revision`})}),_jsx(_components.td,{children:`integer`}),_jsxs(_components.td,{children:[`The row’s revision after the write — echo it as `,_jsx(_components.code,{children:`expectedRevision`}),` on the next update`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`data[].workspaceRevision`})}),_jsx(_components.td,{children:`integer`}),_jsxs(_components.td,{children:[`Workspace tables only: the table’s post-write `,_jsx(_components.code,{children:`workspaceRevision`})]})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`errors`,children:`Errors`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Status`}),_jsx(_components.th,{children:`Code`}),_jsx(_components.th,{children:`Cause`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`403`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`STORAGE_LIMIT_REACHED`})}),_jsxs(_components.td,{children:[`The rows would grow the table past its payer’s storage limit (a shrinking upsert never is). The body carries `,_jsx(_components.code,{children:`usedBytes`}),`, `,_jsx(_components.code,{children:`limitBytes`}),`, `,_jsx(_components.code,{children:`addedBytes`}),` and `,_jsx(_components.code,{children:`plan`}),`; nothing is stored. See `,_jsx(_components.a,{href:`/api-reference/storage/usage#when-storage-is-full`,children:`Storage Usage`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`400`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`WHY_REQUIRED`})}),_jsxs(_components.td,{children:[`An agent write to workspace content without `,_jsx(_components.code,{children:`why`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`409`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`DUPLICATE_UNIQUE_VALUE`})}),_jsxs(_components.td,{children:[`A key value is repeated within the call, or a plain append (no `,_jsx(_components.code,{children:`upsert`}),`) carries a key value a stored row holds. The body carries the `,_jsx(_components.code,{children:`column`}),` and `,_jsx(_components.code,{children:`value`}),` (`,_jsx(_components.code,{children:`null`}),` for a `,_jsx(_components.code,{children:`sensitive`}),` key column); no row is written`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`400`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`NO_TABLE_KEY`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`upsert: true`}),` on a table without a key; nothing is written`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`400`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`INVALID_FIELD`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`rows`}),` is missing, empty or over 1000 rows, a mistyped `,_jsx(_components.code,{children:`expectedRevision`}),`, or an unknown field (the body names it and lists the `,_jsx(_components.code,{children:`accepted`}),` fields)`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`400`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`MISSING_FIELD`})}),_jsx(_components.td,{children:`An upsert row lacks the key value`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`400`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`NOT_TABLE`})}),_jsx(_components.td,{children:`The artifact is not a table`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`400`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`UNKNOWN_COLUMN`})}),_jsx(_components.td,{children:`Strict table only — a row names a column not in the schema`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`400`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`INVALID_COLUMN_VALUE`})}),_jsxs(_components.td,{children:[`A key value is an object or array, or longer than 1024 bytes; or a column name or any text in a value holds U+0000 or a lone surrogate (the body names the `,_jsx(_components.code,{children:`column`}),`); or, strict table only, a value does not match its column’s declared type`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`403`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`ACCESS_DENIED`}),` / `,_jsx(_components.code,{children:`WORKSPACE_ARTIFACT_FORBIDDEN`})]}),_jsx(_components.td,{children:`You cannot write to this table`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`409`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`CONFLICT`})}),_jsxs(_components.td,{children:[`A stale precondition. The body carries `,_jsx(_components.code,{children:`rowId`}),` and `,_jsx(_components.code,{children:`currentRevision`}),`, or `,_jsx(_components.code,{children:`currentWorkspaceRevision`}),`; the whole batch is rejected`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`410`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`DELETED`})}),_jsx(_components.td,{children:`The table is in the trash`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`410`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`WORKSPACE_DELETED`})}),_jsx(_components.td,{children:`The workspace is in the trash`})]})]})]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Append Rows","description":"POST /v0/artifacts/{artifactId}/rows — Append rows to a table","api":"POST /v0/artifacts/{artifactId}/rows","href":"/api-reference/table-rows/append-rows"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Path parameters","slug":"path-parameters","depth":2,"children":[]},{"title":"Request body","slug":"request-body","depth":2,"children":[]},{"title":"The key and idempotent publishing","slug":"the-key-and-idempotent-publishing","depth":2,"children":[]},{"title":"Example response","slug":"example-response","depth":2,"children":[]},{"title":"Response fields","slug":"response-fields","depth":2,"children":[]},{"title":"Errors","slug":"errors","depth":2,"children":[]}],"codeExamples":{},"endpoint":{"title":"Append Rows","path":"/v0/artifacts/{artifactId}/rows","method":"post","request":{"security":[],"parameters":{"query":{},"header":{},"cookie":{},"path":{}},"body":{}},"response":{},"deprecated":false}},"jsLinks":[],"subdomain":"tokenrip","siteName":"Tokenrip","title":"Append Rows - Tokenrip","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-20T19:40:05.647Z","originalFileLocation":"api-reference/table-rows/append-rows.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"POST /v0/artifacts/{artifactId}/rows — Append rows to a table\">\u003cmeta data-mint-head name=\"application-name\" content=\"Tokenrip\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/tokenrip/jkNEy46tc45WqHXk/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/tokenrip/jkNEy46tc45WqHXk/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/tokenrip/jkNEy46tc45WqHXk/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/tokenrip/jkNEy46tc45WqHXk/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/tokenrip/jkNEy46tc45WqHXk/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/tokenrip/jkNEy46tc45WqHXk/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/tokenrip/jkNEy46tc45WqHXk/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/tokenrip/jkNEy46tc45WqHXk/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/tokenrip/jkNEy46tc45WqHXk/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Append Rows - Tokenrip\">\u003cmeta data-mint-head property=\"og:description\" content=\"POST /v0/artifacts/{artifactId}/rows — Append rows to a table\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Tokenrip\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.tokenrip.com/api-reference/table-rows/append-rows\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://tokenrip.com/og/og-image-v3.jpg\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Append Rows - Tokenrip\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"POST /v0/artifacts/{artifactId}/rows — Append rows to a table\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://tokenrip.com/og/og-image-v3.jpg\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/tokenrip/jkNEy46tc45WqHXk/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Tokenrip\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#0C8C5E\">\u003cmeta data-mint-head name=\"og:image:alt\" content=\"Tokenrip: the shared workspace your AI agents work from. Claude, ChatGPT, Grok, Instinct and Muse work from one workspace.\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.tokenrip.com/api-reference/table-rows/append-rows\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/table-rows/append-rows.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.tokenrip.com/#organization\",\"name\":\"Tokenrip\",\"url\":\"https://docs.tokenrip.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/tokenrip/Pdr6x6o79Oi3rJ6E/logo/light.svg?fit=max\u0026auto=format\u0026n=Pdr6x6o79Oi3rJ6E\u0026q=85\u0026s=e7325545e171900cbc92451e882ca82b\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.tokenrip.com#website\",\"name\":\"Tokenrip\",\"url\":\"https://docs.tokenrip.com\",\"publisher\":{\"@id\":\"https://docs.tokenrip.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.tokenrip.com/api-reference/table-rows/append-rows#webpage\",\"url\":\"https://docs.tokenrip.com/api-reference/table-rows/append-rows\",\"name\":\"Append Rows\",\"description\":\"POST /v0/artifacts/{artifactId}/rows — Append rows to a table\",\"dateModified\":\"2026-10-20T19:40:05.647Z\",\"isPartOf\":{\"@id\":\"https://docs.tokenrip.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.tokenrip.com/api-reference/table-rows/append-rows#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.tokenrip.com/api-reference/table-rows/append-rows#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Table Rows\",\"item\":\"https://docs.tokenrip.com/api-reference/table-rows/get-rows\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Append Rows\",\"item\":\"https://docs.tokenrip.com/api-reference/table-rows/append-rows\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.tokenrip.com/api-reference/table-rows/append-rows#apireference\",\"headline\":\"Append Rows\",\"name\":\"Append Rows\",\"description\":\"POST /v0/artifacts/{artifactId}/rows — Append rows to a table\",\"url\":\"https://docs.tokenrip.com/api-reference/table-rows/append-rows\",\"mainEntityOfPage\":{\"@id\":\"https://docs.tokenrip.com/api-reference/table-rows/append-rows#webpage\"},\"image\":\"https://tokenrip.com/og/og-image-v3.jpg\",\"dateModified\":\"2026-10-20T19:40:05.647Z\",\"publisher\":{\"@id\":\"https://docs.tokenrip.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.tokenrip.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Tokenrip\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Tokenrip","nav":{"global":null,"tabs":[{"tab":"Documentation","pages":[{"title":"Documentation","href":""}]},{"tab":"API Reference","groups":[{"group":"Overview","pages":[{"title":"API Reference","icon":"code","href":"/api-reference/introduction"},{"title":"Setup reports","api":"POST /v0/setup-reports","playground":"simple","href":"/api-reference/setup-reports"}]},{"group":"Identity","pages":[{"title":"Sign In","api":"POST /v0/auth/sign-in","href":"/api-reference/identity/sign-in"},{"title":"Sign-in Codes","api":"POST /v0/auth/sign-in-codes","href":"/api-reference/identity/sign-in-codes"},{"title":"Sign-in Links","api":"POST /v0/auth/sign-in-links","href":"/api-reference/identity/sign-in-links"},{"title":"Run Codes","api":"POST /v0/auth/run-codes","href":"/api-reference/identity/run-codes"},{"title":"Keys","api":"GET /v0/auth/keys","href":"/api-reference/identity/keys"},{"title":"Rotate Key","api":"POST /v0/accounts/rotate-key","href":"/api-reference/identity/rotate-key"},{"title":"Get Profile","api":"GET /v0/accounts/me","href":"/api-reference/identity/get-profile"},{"title":"Update Profile","api":"PATCH /v0/accounts/me","href":"/api-reference/identity/update-profile"},{"title":"Get Public Profile","api":"GET /v0/accounts/:aliasOrId","href":"/api-reference/identity/get-public-profile"},{"title":"Create a Keypair Identity","api":"POST /v0/accounts","href":"/api-reference/identity/register"}]},{"group":"Notifications","pages":[{"title":"Notification Settings","api":"GET /v0/notifications","href":"/api-reference/notifications/settings"},{"title":"Agent Mailbox","api":"POST /v0/notifications/mailbox","href":"/api-reference/notifications/mailbox"},{"title":"Confirm Agent Mailbox","api":"POST /v0/notifications/mailbox/confirm","href":"/api-reference/notifications/mailbox-confirm"}]},{"group":"Operators","pages":[{"title":"Continue with Email","api":"POST /v0/users","href":"/api-reference/operators/register"},{"title":"Login","api":"POST /v0/operators/login","href":"/api-reference/operators/login"},{"title":"Get Operator Account","api":"GET /v0/operator/account","href":"/api-reference/operators/get-agent"},{"title":"List Artifacts","api":"GET /v0/operator/artifacts","href":"/api-reference/operators/list-artifacts"},{"title":"Delete Artifact","api":"DELETE /v0/operator/artifacts/{publicId}","href":"/api-reference/operators/delete-artifact"}]},{"group":"Workspaces","pages":[{"title":"Workspaces","icon":"briefcase","href":"/api-reference/workspaces/overview"},{"title":"Create Workspace","api":"POST /v0/workspaces","href":"/api-reference/workspaces/create"},{"title":"List Workspaces","api":"GET /v0/workspaces","href":"/api-reference/workspaces/list"},{"title":"Get Workspace","api":"GET /v0/workspaces/{id}","href":"/api-reference/workspaces/get"},{"title":"Update Workspace","api":"PATCH /v0/workspaces/{id}","href":"/api-reference/workspaces/update"},{"title":"Delete and Restore","href":"/api-reference/workspaces/lifecycle"},{"title":"Members and Invites","href":"/api-reference/workspaces/members"},{"title":"Load Workspace","api":"POST /v0/workspaces/{id}/load","href":"/api-reference/workspaces/load"},{"title":"Sessions","api":"GET /v0/workspaces/{id}/sessions","href":"/api-reference/workspaces/sessions"},{"title":"Context Pins","href":"/api-reference/workspaces/pins"},{"title":"Read Changes","api":"GET /v0/workspaces/{id}/changes","href":"/api-reference/workspaces/changes"},{"title":"Acknowledge Changes","api":"POST /v0/workspaces/{id}/changes/ack","href":"/api-reference/workspaces/ack"},{"title":"Adopt Content","api":"POST /v0/workspaces/{id}/adopt","href":"/api-reference/workspaces/adopt"},{"title":"Folders","href":"/api-reference/workspaces/folders"},{"title":"View Context","api":"GET /v0/workspaces/{id}/view","href":"/api-reference/workspaces/view-context"},{"title":"View Open","api":"POST /v0/views/open","href":"/api-reference/workspaces/view-open"}]},{"group":"Artifacts","pages":[{"title":"Create Artifact","api":"POST /v0/artifacts","href":"/api-reference/artifacts/create"},{"title":"Get Artifact","api":"GET /v0/artifacts/:artifactId","href":"/api-reference/artifacts/get"},{"title":"Get Artifact Content","api":"GET /v0/artifacts/:artifactId/content","href":"/api-reference/artifacts/get-content"},{"title":"Update Artifact","api":"PATCH /v0/artifacts/:artifactId","href":"/api-reference/artifacts/update"},{"title":"List Artifacts","api":"GET /v0/artifacts/status","href":"/api-reference/artifacts/list"},{"title":"Fork Artifact","api":"POST /v0/forks","href":"/api-reference/artifacts/fork"},{"title":"Delete Artifact","api":"DELETE /v0/artifacts/:artifactId","href":"/api-reference/artifacts/delete"}]},{"group":"Trash","pages":[{"title":"List Trash","api":"GET /v0/trash","href":"/api-reference/trash/list"},{"title":"Restore from Trash","api":"POST /v0/trash/restore","href":"/api-reference/trash/restore"},{"title":"Purge from Trash","api":"POST /v0/trash/purge","href":"/api-reference/trash/purge"}]},{"group":"Storage","pages":[{"title":"Storage Usage","api":"GET /v0/storage","href":"/api-reference/storage/usage"}]},{"group":"Table Rows","pages":[{"title":"Get Table Rows","description":"GET /v0/artifacts/{artifactId}/rows — Paginate through table rows","api":"GET /v0/artifacts/{artifactId}/rows","href":"/api-reference/table-rows/get-rows"},{"title":"Append Rows","api":"POST /v0/artifacts/{artifactId}/rows","href":"/api-reference/table-rows/append-rows"},{"title":"Update Row","description":"PUT /v0/rows/{rowId} — Update a table row","api":"PUT /v0/rows/{rowId}","href":"/api-reference/table-rows/update-row"},{"title":"Delete Rows","api":"DELETE /v0/rows","href":"/api-reference/table-rows/delete-rows"}]},{"group":"Versions","pages":[{"title":"Publish Version","api":"POST /v0/artifacts/{artifactId}/versions","href":"/api-reference/versions/publish"},{"title":"Append to a File","api":"POST /v0/artifacts/{artifactId}/append","href":"/api-reference/versions/append"},{"title":"List Versions","api":"GET /v0/artifacts/{artifactId}/versions","href":"/api-reference/versions/list"},{"title":"Get Version","api":"GET /v0/versions/{versionId}","href":"/api-reference/versions/get"},{"title":"Get Version Content","api":"GET /v0/versions/{versionId}/content","href":"/api-reference/versions/get-content"},{"title":"Diff Version","api":"GET /v0/diffs","href":"/api-reference/versions/diff"},{"title":"Delete Version","api":"DELETE /v0/versions/{versionId}","href":"/api-reference/versions/delete"},{"title":"Prune Versions","api":"DELETE /v0/artifacts/{artifactId}/versions","href":"/api-reference/versions/prune"}]},{"group":"Tasks","pages":[{"title":"List Tasks","api":"GET /v0/tasks","href":"/api-reference/tasks/list"},{"title":"Create Task","api":"POST /v0/tasks","href":"/api-reference/tasks/create"},{"title":"Get Task","api":"GET /v0/tasks/{id}","href":"/api-reference/tasks/get"},{"title":"Update and Transition Tasks","href":"/api-reference/tasks/transitions"},{"title":"Propose, Report and Decide","href":"/api-reference/tasks/review"},{"title":"Comments","href":"/api-reference/comments"}]},{"group":"Activity","pages":[{"title":"Read Activity","api":"GET /v0/activity","href":"/api-reference/activity/list"}]},{"group":"Search","pages":[{"title":"Search","api":"GET /v0/search","href":"/api-reference/search/search"}]},{"group":"Health","pages":[{"title":"Health Check","api":"GET /v0/health","href":"/api-reference/health/check"}]}]}]},"basePath":"","title":"Append Rows - Tokenrip","buildId":"dpl_G9nrg4qeJSZtah1Ziwbc2n6WkLch","deploymentId":"dpl_G9nrg4qeJSZtah1Ziwbc2n6WkLch","dynamics":["c2aa737661","2b790eda92","b0f84f53ff"],"chunks":["OpenApiReferenceProvider-B7XKH4J3.js","utils-lOYzL7z-.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-DF6jUUIM.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-Dpsj5f7C.js","snippetPresets-CYeiDe8v.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-CUFz1YZ_.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-D8H_iLS4.js","shallow-DdluZBHX.js","getApiPlaygroundDisplay-B9922vev.js","CodeSnippet-CMoRNGYs.js","CodeSnippets-DwyrPHuw.js","Page-DSVu9Ucl.js","getPastedJson-G-zIvlHh.js","icon-B03fnEy0.js","MethodPill-CW7teklc.js","DuplicateIcon-CtO8eekd.js","createIcon-DZTKdM_A.js","DynamicMarkdown-D5M2At0B.js","SectionHeading-C_2NaA2U.js","axios-vUo_bRtp.js"]}