> ## Documentation Index
> Fetch the complete documentation index at: https://infino.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Update rows

> Replace rows matching a predicate. `table` and `predicate` are query parameters; the body carries the replacement rows (Arrow IPC or JSON).



## OpenAPI

````yaml /api-reference/openapi.json post /v1/update/{database}
openapi: 3.1.0
info:
  title: Infino API
  description: >-
    The Infino hosted data-plane API: per-database table operations — create,
    ingest, search, and SQL.
  version: 0.1.0
servers:
  - url: https://api.platform.infino.ws
    description: Infino Cloud
security:
  - api_key: []
tags:
  - name: Databases
    description: Create, list, and delete the databases in your account.
  - name: Tables
    description: Create, drop, and list tables, and describe a table's schema.
  - name: Rows
    description: Append, update, and delete rows.
  - name: Search
    description: BM25, vector, and hybrid search, token and exact match, count, and SQL.
paths:
  /v1/update/{database}:
    post:
      tags:
        - Rows
      summary: Update rows
      description: >-
        Replace rows matching a predicate. `table` and `predicate` are query
        parameters; the body carries the replacement rows (Arrow IPC or JSON).
      operationId: update
      parameters:
        - name: database
          in: path
          description: Target database.
          required: true
          schema:
            type: string
        - name: table
          in: path
          required: true
          schema:
            type: string
        - name: predicate
          in: path
          required: true
          schema:
            type: string
      requestBody:
        description: >-
          The replacement rows, 1:1 with the rows the predicate matches: a JSON
          `{"data": [...]}` envelope of rows keyed by column name
          (`application/json`), or an Arrow IPC stream of one record batch
          (`application/vnd.apache.arrow.stream`).
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RowsEnvelope'
          application/vnd.apache.arrow.stream:
            schema:
              $ref: '#/components/schemas/ArrowIpcRows'
        required: true
      responses:
        '200':
          description: >-
            Row counts as JSON `{matched, n_tombstoned, n_not_found}`. Body is
            the replacement rows as an Arrow IPC stream.
        '400':
          description: Invalid request.
        '401':
          description: Missing or invalid API key.
        '403':
          description: >-
            The account already stores one of its limits — rows, or vectors (one
            per row of a table with a vector column) — so no more can be added.
            The response body names which limit was reached. Delete rows to free
            space; reads and deletes are never refused for this reason. Not
            transient: retrying without freeing space fails identically.
        '409':
          description: >-
            Another write to the same table was in flight, so this one was not
            applied. A table takes one write at a time. Transient — reissue the
            identical request after the `Retry-After` interval, or batch more
            rows per request to need fewer of them.
        '503':
          description: >-
            The database's workers are still activating, or no capacity is free
            to place them. Transient — retry after the `Retry-After` interval.
      security:
        - api_key: []
components:
  schemas:
    RowsEnvelope:
      type: object
      description: |-
        JSON row envelope for `POST /v1/append/{database}` and
        `POST /v1/update/{database}` — the `Content-Type: application/json`
        alternative to an Arrow IPC stream body. Rows are JSON objects keyed by
        column name, converted server-side into one Arrow batch against the
        table's schema.
      required:
        - data
      properties:
        data:
          type: array
          items:
            type: object
          description: Rows as JSON objects keyed by column name.
      additionalProperties: false
    ArrowIpcRows:
      type: string
      format: binary
      description: |-
        A raw Arrow IPC stream request body: one record batch of rows, sent as
        `Content-Type: application/vnd.apache.arrow.stream`. The most efficient
        ingest path — no JSON conversion; the batch's schema must match the
        table's.
  securitySchemes:
    api_key:
      type: http
      scheme: bearer

````