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

# Reset Sandbox

> Permanently clears the company's application data in one synchronous database
transaction. Only initialized Sandbox companies can be reset, including for staff.
Live, Retired, and uninitialized companies are refused with 409.

Preserves company metadata, API contacts, rollout overrides, users, memberships,
roles, API keys, configuration versions and drafts, financial configuration,
form templates, file categories, invoice audit rules, email intake settings,
saved views and export presets, and lifecycle and Reset receipts. Sequence
definitions remain and their counters restart at each configured start number.
Clears entities (including soft-deleted rows), financial records, forms and
packets, file references, tasks and runs, and ordinary operational audit rows.
Other companies and companyless audit history are untouched.

Stop other Sandbox activity before resetting. Concurrent writes can repopulate
data. Cloud storage objects are not deleted. A failed transaction leaves all
database data unchanged. There is no asynchronous job or request replay guarantee.
Check lifecycle and the last Reset before retrying after a lost response.

**Required permission:** `company.reset`




## OpenAPI

````yaml /openapi/generated-external-api.yaml post /api/v1/companies/{companyId}/reset
openapi: 3.0.3
info:
  title: AI Insurance External API
  description: External API for AI Insurance platform
  version: 1.0.0
  contact:
    email: support@aiinsurance.io
servers:
  - url: https://go.aiinsurance.io
    description: Production
security:
  - ApiKeyAuth: []
paths:
  /api/v1/companies/{companyId}/reset:
    post:
      tags:
        - Companies
      summary: Reset Sandbox
      description: >
        Permanently clears the company's application data in one synchronous
        database

        transaction. Only initialized Sandbox companies can be reset, including
        for staff.

        Live, Retired, and uninitialized companies are refused with 409.


        Preserves company metadata, API contacts, rollout overrides, users,
        memberships,

        roles, API keys, configuration versions and drafts, financial
        configuration,

        form templates, file categories, invoice audit rules, email intake
        settings,

        saved views and export presets, and lifecycle and Reset receipts.
        Sequence

        definitions remain and their counters restart at each configured start
        number.

        Clears entities (including soft-deleted rows), financial records, forms
        and

        packets, file references, tasks and runs, and ordinary operational audit
        rows.

        Other companies and companyless audit history are untouched.


        Stop other Sandbox activity before resetting. Concurrent writes can
        repopulate

        data. Cloud storage objects are not deleted. A failed transaction leaves
        all

        database data unchanged. There is no asynchronous job or request replay
        guarantee.

        Check lifecycle and the last Reset before retrying after a lost
        response.


        **Required permission:** `company.reset`
      operationId: resetCompany
      parameters:
        - $ref: '#/components/parameters/companyId'
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              additionalProperties: false
              properties:
                agentLabel:
                  type: string
                  minLength: 1
                  maxLength: 200
                  description: >-
                    Optional self-supplied automation label retained in the
                    audit receipt; not an authenticated identity.
                actorEmail:
                  type: string
                  format: email
                  description: >-
                    Reserved for verified Control Plane attestation. API keys
                    and other service identities cannot supply this field.
            examples:
              defaultReset:
                summary: Reset without an automation label
                value: {}
              labeledReset:
                summary: Label a test-data rebuild
                value:
                  agentLabel: sandbox-fixture-rebuild
      responses:
        '200':
          description: Reset committed, including its audit receipt.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CompanyResetResult'
              examples:
                resetComplete:
                  summary: Sandbox data reset
                  value:
                    deletedRecords: 12
                    resetCounters: 3
                    deletedByTable:
                      entities: 10
                      tasks: 2
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '409':
          description: Company is not an initialized Sandbox. No data was deleted.
          content:
            application/json:
              schema:
                type: object
              examples:
                protectedCompany:
                  summary: Live company protected
                  value:
                    error:
                      code: CompanyModeConflict
                      message: >-
                        Only Sandbox companies with initialized lifecycle
                        metadata may be cleared.
        '500':
          $ref: '#/components/responses/InternalServerError'
components:
  parameters:
    companyId:
      name: companyId
      in: path
      required: true
      schema:
        type: string
        format: uuid
      description: Company identifier
  schemas:
    CompanyResetResult:
      type: object
      required:
        - deletedRecords
        - resetCounters
        - deletedByTable
      properties:
        deletedRecords:
          type: integer
          minimum: 0
          description: Total deleted application rows, excluding the new Reset receipt.
        resetCounters:
          type: integer
          minimum: 0
          description: Sequence definitions whose current number was reset to unused.
        deletedByTable:
          type: object
          additionalProperties:
            type: integer
            minimum: 0
          description: >-
            Deleted row counts by application table. Table names may evolve as
            application storage changes.
    ErrorResponse:
      type: object
      description: Standard error response for all external API endpoints
      required:
        - error
      properties:
        error:
          type: object
          required:
            - code
            - message
          properties:
            code:
              type: string
              description: Machine-readable error code
              example: VALIDATION_ERROR
            message:
              type: string
              description: Human-readable error message
              example: 'submissionId: Required field is missing'
            userMessages:
              type: array
              description: >-
                Clean, verbatim-displayable messages — one entry per failure,
                free of error-code tags, field paths, and internal noise.
                Suitable for showing to end users as-is.
              items:
                type: string
              example:
                - Exposures of type 'company' require an address
            details:
              type: array
              description: Additional details for validation errors (field-level errors)
              items:
                type: object
                properties:
                  field:
                    type: string
                    description: The field that caused the error
                    example: submissionId
                  code:
                    type: string
                    description: Stable problem code for this individual validation failure
                    example: BLANK_LIST_ELEMENT
                  reason:
                    type: string
                    description: Stable reason the value violates its canonical contract
                    example: blank-list-element
                  expected:
                    type: string
                    description: The expected canonical value contract
                    example: nonblank trimmed string
                  message:
                    type: string
                    description: Description of the field error
                    example: Required field is missing
  responses:
    Unauthorized:
      description: Unauthorized - Invalid or missing API key
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            missingApiKey:
              summary: Missing API key
              value:
                error:
                  code: AuthenticationError
                  message: API key authentication required
                  userMessages:
                    - API key authentication required
            invalidApiKey:
              summary: >-
                Invalid API key (e.g. unknown key, or a Bearer token used
                instead of an API key)
              value:
                error:
                  code: AuthenticationError
                  message: Invalid API key
                  userMessages:
                    - Invalid API key
    Forbidden:
      description: Forbidden - Insufficient permissions
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            insufficientPermissions:
              summary: Insufficient permissions
              value:
                error:
                  code: AuthorizationError
                  message: User is not authorized to perform the requested action
                  userMessages:
                    - User is not authorized to perform the requested action
            companyMismatch:
              summary: A valid API key naming another company in the URL
              value:
                error:
                  code: AuthorizationError
                  message: API key is not scoped to the requested company
                  userMessages:
                    - API key is not scoped to the requested company
    InternalServerError:
      description: Internal Server Error - Unexpected error occurred
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            internalError:
              summary: Unexpected server error
              value:
                error:
                  code: UncaughtActionError
                  message: Uncaught error occurred in <actionName>
                  userMessages:
                    - An unexpected error occurred. Please try again later.
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: Authorization
      description: >-
        API key authentication. Send your raw API key as the `Authorization`
        header value with NO scheme prefix — `Authorization: YOUR-API-KEY`. Do
        NOT prefix it with `Bearer ` or `ApiKey `, and do not use an `X-API-Key`
        header; those are not accepted.

````