> ## 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.

# Get data restore status

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

Returns where each entity in a restore has got to.

Poll it after [Restore data to checkpoint](/api-reference/restore-data-to-checkpoint) until every entry in `operations` is `succeeded` or `failed`. Each entity finishes on its own, so one can fail while the rest succeed. A restore that stops making progress is marked `failed` rather than left running.

An ID the app has no restore for returns an empty `operations` list rather than an error. Base44 keeps a restore's status for 30 days.

<Note>This endpoint accepts a personal API key belonging to a user with editor 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 get /api/apps/{app_id}/entities/versions/restores/batch/{batch_id}
openapi: 3.1.0
info:
  title: Base44 App Management API
  version: 1.0.0
servers:
  - url: https://app.base44.com
security:
  - PersonalAccessTokenAuth: []
paths:
  /api/apps/{app_id}/entities/versions/restores/batch/{batch_id}:
    get:
      summary: Get data restore status
      description: >-
        <Info>This API is in beta. Endpoints, fields, and behavior may still
        change, so avoid depending on it in production.</Info>


        Returns where each entity in a restore has got to.


        Poll it after [Restore data to
        checkpoint](/api-reference/restore-data-to-checkpoint) until every entry
        in `operations` is `succeeded` or `failed`. Each entity finishes on its
        own, so one can fail while the rest succeed. A restore that stops making
        progress is marked `failed` rather than left running.


        An ID the app has no restore for returns an empty `operations` list
        rather than an error. Base44 keeps a restore's status for 30 days.


        <Note>This endpoint accepts a personal API key belonging to a user with
        editor access to the app. A read-only key is refused, and workspace API
        keys are not accepted.</Note>
      operationId: >-
        get_batch_restore_status_api_apps__app_id__entities_versions_restores_batch__batch_id__get
      parameters:
        - name: batch_id
          in: path
          required: true
          schema:
            type: string
            description: >-
              ID of the restore, as `batch_id` from [Restore data to
              checkpoint](/api-reference/restore-data-to-checkpoint).
            title: Batch Id
          description: >-
            ID of the restore, as `batch_id` from [Restore data to
            checkpoint](/api-reference/restore-data-to-checkpoint).
          example: 3f1c9a52-7b4e-4d2a-9c61-5e8f0b7a2d14
        - name: app_id
          in: path
          required: true
          schema:
            type: string
            description: ID of the app.
            title: App Id
          description: ID of the app.
          example: 6820f3a4e7b91d003c45a1f2
      responses:
        '200':
          description: The restore's progress.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BatchRestoreStatusResponse'
        '401':
          description: Missing or invalid credentials.
        '403':
          description: >-
            You don't have editor access to this app, or your API key is
            read-only.
        '404':
          description: App not found.
        '429':
          description: >-
            Rate limit exceeded. The base limit is 150 requests per minute. See
            [Rate
            limits](/developers/references/apps-api/get-started/rate-limits) for
            the multiplier your plan gets.
components:
  schemas:
    BatchRestoreStatusResponse:
      properties:
        operations:
          items:
            $ref: '#/components/schemas/BatchRestoreStatusItem'
          type: array
          title: Operations
          description: >-
            One entry per entity in the restore, oldest first. Empty when the
            app has no restore with this ID.
          example:
            - counts:
                deleted: 3
                reinserted: 1
                reverted: 12
              entity_name: Invoice
              operation_id: 68a1c2f0e4f5a6b7c8d9e1a2
              pre_restore_checkpoint_id: 68a1c30ae4f5a6b7c8d9e1b3
              status: succeeded
        restore_to:
          anyOf:
            - type: string
            - type: 'null'
          title: Restore To
          description: >-
            The moment the entities are restored to, as a UTC timestamp in ISO
            8601 format with a `Z` suffix, or `null` when `operations` is empty.
          example: '2026-06-04T14:07:02.115000Z'
        undo_checkpoint_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Undo Checkpoint Id
          description: >-
            ID of the checkpoint that undoes the whole restore, or `null` until
            Base44 has saved the first backup. Restore the same entities from it
            to put them all back the way they were before.
          example: 68a1c30ae4f5a6b7c8d9e1b3
      type: object
      required:
        - operations
      title: BatchRestoreStatusResponse
      description: Where each entity in a restore has got to.
    BatchRestoreStatusItem:
      properties:
        operation_id:
          type: string
          title: Operation Id
          description: >-
            ID of this entity's part of the restore, as `operation_id` in
            `launched`.
          example: 68a1c2f0e4f5a6b7c8d9e1a2
        entity_name:
          type: string
          title: Entity Name
          description: Entity this part of the restore rewrites.
          example: Invoice
        status:
          type: string
          enum:
            - pending
            - running
            - succeeded
            - failed
          title: Status
          description: >-
            Where this entity's restore is, one of `pending`, `running`,
            `succeeded`, or `failed`. Only `succeeded` and `failed` are final.
          example: succeeded
        counts:
          $ref: '#/components/schemas/RestoreCounts'
          description: How many records the restore has changed in this entity so far.
        pre_restore_checkpoint_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Pre Restore Checkpoint Id
          description: >-
            ID of the backup Base44 saved of this entity just before rewriting
            it, or `null` until it's saved. Restore this entity alone from it to
            undo its part of the restore.
          example: 68a1c30ae4f5a6b7c8d9e1b3
        error:
          anyOf:
            - type: string
            - type: 'null'
          title: Error
          description: >-
            Why this entity's restore failed, in plain language, or `null`
            unless `status` is `failed`.
          example: This restore point is no longer available.
      type: object
      required:
        - operation_id
        - entity_name
        - status
        - counts
      title: BatchRestoreStatusItem
      description: Where one entity's part of a restore has got to.
    RestoreCounts:
      properties:
        reverted:
          type: integer
          title: Reverted
          description: Records put back to the values they had at the checkpoint.
          default: 0
          example: 12
        deleted:
          type: integer
          title: Deleted
          description: Records created after the checkpoint, moved to the entity's trash.
          default: 0
          example: 3
        reinserted:
          type: integer
          title: Reinserted
          description: Records deleted after the checkpoint, brought back.
          default: 0
          example: 1
      type: object
      title: RestoreCounts
      description: How many records a restore changed in one entity.
  securitySchemes:
    PersonalAccessTokenAuth:
      type: http
      scheme: bearer
      description: 'Personal access token, sent as `Authorization: Bearer <token>`.'

````