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

# Create a sandbox checkpoint

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

Saves the app's current state as a checkpoint you can return to.

Every sandbox-bridge endpoint runs against the app's live sandbox, the same filesystem the Base44 builder edits, so a change here is visible in the builder immediately.

Take one before a batch of edits, so a bad change is one restore away. The checkpoint captures the sandbox as it stands, so commit any pending writes first by making them through this API rather than leaving them in flight.

Restore it with [Restore checkpoint](/api-reference/restore-checkpoint), and list what an app has with [List checkpoints](/api-reference/list-checkpoints). Checkpoints created here show up alongside the ones the builder takes.

This endpoint is limited to 60 requests per minute per app, shared with the other sandbox-bridge endpoints that change files.

<Note>The sandbox bridge needs a Builder plan or higher on the app's workspace, and answers 402 below that. Workspace API keys are not authorized and are rejected with a 403, and it is unavailable for agent apps. A personal API key works as-is. An OAuth access token needs the `sandbox:write` scope.</Note>

<Tip>Every error response carries a stable `extra_data.code` alongside the human-readable `message`. Branch on the code rather than on the message text or the status.</Tip>



## OpenAPI

````yaml /developers/references/app-management/app-management-openapi.json post /api/apps/{app_id}/sandbox-bridge/create_checkpoint
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}/sandbox-bridge/create_checkpoint:
    post:
      summary: Create a sandbox checkpoint
      description: >-
        <Info>This API is in beta. Endpoints, fields, and behavior may still
        change, so avoid depending on it in production.</Info>


        Saves the app's current state as a checkpoint you can return to.


        Every sandbox-bridge endpoint runs against the app's live sandbox, the
        same filesystem the Base44 builder edits, so a change here is visible in
        the builder immediately.


        Take one before a batch of edits, so a bad change is one restore away.
        The checkpoint captures the sandbox as it stands, so commit any pending
        writes first by making them through this API rather than leaving them in
        flight.


        Restore it with [Restore checkpoint](/api-reference/restore-checkpoint),
        and list what an app has with [List
        checkpoints](/api-reference/list-checkpoints). Checkpoints created here
        show up alongside the ones the builder takes.


        This endpoint is limited to 60 requests per minute per app, shared with
        the other sandbox-bridge endpoints that change files.


        <Note>The sandbox bridge needs a Builder plan or higher on the app's
        workspace, and answers 402 below that. Workspace API keys are not
        authorized and are rejected with a 403, and it is unavailable for agent
        apps. A personal API key works as-is. An OAuth access token needs the
        `sandbox:write` scope.</Note>


        <Tip>Every error response carries a stable `extra_data.code` alongside
        the human-readable `message`. Branch on the code rather than on the
        message text or the status.</Tip>
      operationId: >-
        create_checkpoint_endpoint_api_apps__app_id__sandbox_bridge_create_checkpoint_post
      parameters:
        - name: app_id
          in: path
          required: true
          schema:
            type: string
            description: ID of the app whose sandbox to operate on.
            title: App Id
          description: ID of the app whose sandbox to operate on.
          example: 6820f3a4e7b91d003c45a1f2
      requestBody:
        content:
          application/json:
            schema:
              type: object
              additionalProperties: false
              default: {}
              title: CreateSandboxCheckpoint
              properties:
                name:
                  anyOf:
                    - maxLength: 200
                      type: string
                    - type: 'null'
                  description: >-
                    Optional message/title for the checkpoint. Defaults to an
                    auto-generated title.
                  title: Name
              required: []
            example:
              name: Before refactoring the dashboard
        required: true
      responses:
        '200':
          description: The checkpoint that was created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateCheckpointResult'
        '401':
          description: Missing or invalid credentials.
        '402':
          description: The app's workspace plan doesn't include the sandbox bridge.
        '403':
          description: >-
            You don't have access to this app, the app is blocked, your OAuth
            token is missing the scope this endpoint needs, or you used a
            workspace API key.
        '404':
          description: App not found.
        '409':
          description: >-
            The app is on a branch that can't be written to, or an earlier
            change is still being committed.
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
        '429':
          description: Rate limit exceeded (60 requests per minute).
components:
  schemas:
    CreateCheckpointResult:
      properties:
        checkpoint_id:
          type: string
          title: Checkpoint Id
          description: >-
            ID of the checkpoint. Pass it as `checkpoint_id` to [Restore
            checkpoint](/api-reference/restore-checkpoint) to come back to this
            state.
          example: 6886b8d390dc7e2f4a2c91b3
        name:
          type: string
          title: Name
          description: >-
            The checkpoint's title, either the `name` you sent or one Base44
            generated.
          example: Before refactoring the dashboard
        git_commit_hash:
          anyOf:
            - type: string
            - type: 'null'
          title: Git Commit Hash
          description: >-
            The commit this checkpoint points at, or `null` when the app has no
            committed sandbox revision yet. A checkpoint without one still
            restores the app state Base44 captured.
          example: 4f9c1a7e8b2d3c5f6a0b1e2d3c4f5a6b7c8d9e0f
      type: object
      required:
        - checkpoint_id
        - name
      title: CreateCheckpointResult
      description: The checkpoint that was created.
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: api_key
      description: Personal API key.

````