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

# Update entity record

> <Info>This API is in beta. Endpoints, fields, and behavior may still change, so avoid depending on it in production.</Info>

Changes the fields you send on one record and returns the whole updated record.

This merges rather than replaces. A field you leave out keeps the value it already has, so you can send a single field on its own. Base44 stores only the fields the entity's schema declares and drops the rest, so a misspelled name is left out of the record instead of failing the call. Base44 also assigns `id`, `created_date`, `updated_date`, `created_by` and `created_by_id`, and ignores them if you send them.

Row-level security decides this differently from a read. A record the entity's `rls` update rule doesn't cover reports 403 even when the caller can't read it, so a 403 here tells you the record exists. Field-level rules can refuse a change to one field while allowing the rest.

Updating a record triggers the app's webhooks and any automation or workflow that listens for this entity.

This endpoint is limited to 100 requests per minute per app.

<Note>This endpoint accepts a personal API key belonging to a user with access to the app. A read-only key is refused, and workspace API keys are not accepted.</Note>



## OpenAPI

````yaml /developers/references/app-management/app-management-openapi.json put /api/apps/{app_id}/entities/{entity_name}/{entity_id}
openapi: 3.1.0
info:
  title: Base44 App Management API
  version: 1.0.0
servers:
  - url: https://app.base44.com
security:
  - ApiKeyAuth: []
paths:
  /api/apps/{app_id}/entities/{entity_name}/{entity_id}:
    put:
      summary: Update entity record
      description: >-
        <Info>This API is in beta. Endpoints, fields, and behavior may still
        change, so avoid depending on it in production.</Info>


        Changes the fields you send on one record and returns the whole updated
        record.


        This merges rather than replaces. A field you leave out keeps the value
        it already has, so you can send a single field on its own. Base44 stores
        only the fields the entity's schema declares and drops the rest, so a
        misspelled name is left out of the record instead of failing the call.
        Base44 also assigns `id`, `created_date`, `updated_date`, `created_by`
        and `created_by_id`, and ignores them if you send them.


        Row-level security decides this differently from a read. A record the
        entity's `rls` update rule doesn't cover reports 403 even when the
        caller can't read it, so a 403 here tells you the record exists.
        Field-level rules can refuse a change to one field while allowing the
        rest.


        Updating a record triggers the app's webhooks and any automation or
        workflow that listens for this entity.


        This endpoint is limited to 100 requests per minute per app.


        <Note>This endpoint accepts a personal API key belonging to a user with
        access to the app. A read-only key is refused, and workspace API keys
        are not accepted.</Note>
      operationId: update_entity_api_apps__app_id__entities__entity_name___entity_id__put
      parameters:
        - name: entity_id
          in: path
          required: true
          schema:
            type: string
            description: >-
              ID of the record, as `id` in the response of [List entity
              records](/api-reference/list-entity-records).
            title: Entity Id
          description: >-
            ID of the record, as `id` in the response of [List entity
            records](/api-reference/list-entity-records).
          example: 6886b8d390dc7e2f4a2c91b3
        - name: app_id
          in: path
          required: true
          schema:
            type: string
            description: ID of the app that owns the entity.
            title: App Id
          description: ID of the app that owns the entity.
          example: 6820f3a4e7b91d003c45a1f2
        - name: entity_name
          in: path
          required: true
          schema:
            type: string
            description: >-
              Name of the entity, exactly as [List entity
              schemas](/api-reference/list-entity-schemas) reports it.
            title: Entity Name
          description: >-
            Name of the entity, exactly as [List entity
            schemas](/api-reference/list-entity-schemas) reports it.
          example: Invoice
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              additionalProperties: true
              title: UpdateEntityRecord
              description: >-
                The record's fields, as a flat JSON object using the names the
                entity's [schema](/api-reference/get-entity-schema) declares.
            example:
              amount: 4200
              status: draft
              customer_email: jane@acme.com
      responses:
        '200':
          description: The updated record.
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
                description: One record in one of an app's entities.
                properties:
                  id:
                    anyOf:
                      - type: string
                      - type: 'null'
                    description: >-
                      ID of the record. Pass it as `entity_id` to [Get entity
                      record](/api-reference/get-entity-record), [Update entity
                      record](/api-reference/update-entity-record) or [Delete
                      entity record](/api-reference/delete-entity-record).
                    example: 6886b8d390dc7e2f4a2c91b3
                    title: Id
                  created_date:
                    anyOf:
                      - type: string
                      - type: 'null'
                    description: >-
                      When the record was created, as a UTC timestamp in ISO
                      8601 format. A record Base44 has just created carries a
                      `Z` suffix, and a record read back from storage does not.
                    example: '2026-06-01T09:23:41.481000'
                    title: Created Date
                  updated_date:
                    anyOf:
                      - type: string
                      - type: 'null'
                    description: >-
                      When the record last changed, as a UTC timestamp in ISO
                      8601 format. A record Base44 has just created carries a
                      `Z` suffix, and a record read back from storage does not.
                    example: '2026-06-04T14:07:02.115000'
                    title: Updated Date
                  created_by:
                    anyOf:
                      - type: string
                      - type: 'null'
                    description: >-
                      Email of the app user who created the record, or
                      `anonymous` when a visitor created it on an app that needs
                      no login. Apps that hide record authorship leave this
                      field out of the response.
                    example: jane@acme.com
                    title: Created By
                  created_by_id:
                    anyOf:
                      - type: string
                      - type: 'null'
                    description: >-
                      ID of the app user who created the record, or `anonymous`
                      when a visitor created it on an app that needs no login.
                    example: 6874b0c2e1a94d0031bb77de
                    title: Created By Id
                  is_sample:
                    anyOf:
                      - type: boolean
                      - type: 'null'
                    description: >-
                      Whether Base44 stored the record as sample data while the
                      app was being built. A record you create reports `false`.
                    example: false
                    title: Is Sample
                title: EntityRecord
        '400':
          description: A field value is longer than 20,000 characters.
        '401':
          description: Missing or invalid credentials.
        '403':
          description: >-
            You don't have access to this app, the entity's `rls` update rule
            doesn't cover the record or one of the fields you're changing, or
            your API key is read-only.
        '404':
          description: >-
            App not found, the app has no entity with this name, or the entity
            holds no record with this ID.
        '422':
          description: >-
            The body is missing, or a value doesn't match the type the entity's
            schema declares for that field.
        '429':
          description: >-
            Rate limit exceeded. This endpoint allows 100 requests per minute
            per app.
components:
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: api_key
      description: Personal API key.

````