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

# Validate unsaved destination

> Validates destination configuration without persisting. Returns 204 on success or 200 with error message on validation failure.



## OpenAPI

````yaml https://raw.githubusercontent.com/artie-labs/artie-api-spec/refs/heads/master/openapi.yaml post /pipelines/validate-unsaved-destination
openapi: 3.1.0
info:
  description: External API endpoints for Artie
  title: Artie API
  version: v1.0.46
servers:
  - url: https://api.artie.com
security:
  - ApiKey: []
paths:
  /pipelines/validate-unsaved-destination:
    post:
      tags:
        - Pipelines
      summary: Validate unsaved destination
      description: >-
        Validates destination configuration without persisting. Returns 204 on
        success or 200 with error message on validation failure.
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/RouterPipelineValidateUnsavedDestinationRequest
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RouterValidateErrorResponse'
          description: OK
        '204':
          description: No Content
        '400':
          description: Bad Request
        '500':
          description: Internal Server Error
components:
  schemas:
    RouterPipelineValidateUnsavedDestinationRequest:
      properties:
        advancedSettings:
          $ref: '#/components/schemas/PayloadsAdvancedPipelineSettingsPayload'
        destination:
          $ref: '#/components/schemas/PayloadsConnectorPayload'
        destinationUUID:
          format: uuid
          type:
            - 'null'
            - string
        sourceReaderUUID:
          format: uuid
          type:
            - 'null'
            - string
        sourceType:
          type:
            - 'null'
            - string
        specificCfg:
          $ref: '#/components/schemas/PayloadsSpecificConfig'
        tables:
          items:
            $ref: '#/components/schemas/PayloadsTable'
          type:
            - array
            - 'null'
      required:
        - specificCfg
      type: object
    RouterValidateErrorResponse:
      properties:
        error:
          type: string
      type: object
    PayloadsAdvancedPipelineSettingsPayload:
      properties:
        appendOnly:
          type:
            - 'null'
            - boolean
        autoEnableHistoryForNewTables:
          type:
            - 'null'
            - boolean
        autoReplicateIgnoreRegex:
          type:
            - 'null'
            - string
        autoReplicateNewTables:
          type:
            - 'null'
            - boolean
        bigQueryReservation:
          type:
            - 'null'
            - string
        bufferRows:
          type:
            - 'null'
            - integer
        defaultSourceSchema:
          type:
            - 'null'
            - string
        disableAlerts:
          type:
            - 'null'
            - boolean
        dropDeletedColumns:
          type:
            - 'null'
            - boolean
        dynamoDBBackfillConfig:
          $ref: '#/components/schemas/PayloadsDynamoDBSnapshotConfig'
        enableSoftDelete:
          type:
            - 'null'
            - boolean
        flushIntervalSeconds:
          type:
            - 'null'
            - integer
        flushSizeKb:
          type:
            - 'null'
            - integer
        forceUTCTimezone:
          type:
            - 'null'
            - boolean
        includeArtieOperationColumn:
          type:
            - 'null'
            - boolean
        includeArtieUpdatedAtColumn:
          type:
            - 'null'
            - boolean
        includeDatabaseUpdatedAtColumn:
          type:
            - 'null'
            - boolean
        includeFullSourceTableNameColumn:
          type:
            - 'null'
            - boolean
        includeFullSourceTableNameColumnAsPrimaryKey:
          type:
            - 'null'
            - boolean
        includeSourceMetadataColumn:
          type:
            - 'null'
            - boolean
        maxConcurrentSnapshots:
          minimum: 0
          type:
            - 'null'
            - integer
        splitEventsByType:
          type:
            - 'null'
            - boolean
        stagingSchema:
          type:
            - 'null'
            - string
        staticColumns:
          items:
            $ref: '#/components/schemas/PayloadsStaticColumn'
          type:
            - 'null'
            - array
        truncateExceededValues:
          type:
            - 'null'
            - boolean
        turboLatencyThresholdMinutes:
          type:
            - 'null'
            - integer
        turboRowThreshold:
          type:
            - 'null'
            - integer
        turboWarehouse:
          type:
            - 'null'
            - string
        useBQBatchPriority:
          type:
            - 'null'
            - boolean
        useBigNumericForVariableNumeric:
          type:
            - 'null'
            - boolean
        useNewStringMethod:
          type:
            - 'null'
            - boolean
        writeRawBinaryValues:
          type:
            - 'null'
            - boolean
      type: object
    PayloadsConnectorPayload:
      properties:
        dataPlaneName:
          type: string
        defaultDatabase:
          type:
            - 'null'
            - string
        environmentUUID:
          format: uuid
          type:
            - 'null'
            - string
        label:
          type: string
        privateLinkUUID:
          format: uuid
          type:
            - 'null'
            - string
        sharedConfig:
          additionalProperties: {}
          type:
            - object
            - 'null'
        snapshotPrivateLinkUUID:
          format: uuid
          type:
            - 'null'
            - string
        sshTunnelUUID:
          format: uuid
          type:
            - 'null'
            - string
        type:
          type: string
        uuid:
          type: string
      type: object
    PayloadsSpecificConfig:
      properties:
        bucketName:
          type: string
        checkpointInterval:
          type: integer
        containerName:
          type: string
        database:
          type: string
        dynamicallyCreateNamespaces:
          type: boolean
        externalStageName:
          type: string
        externalStageS3Bucket:
          type: string
        externalStageS3Prefix:
          type: string
        folderName:
          type: string
        schema:
          type: string
        schemaNamePrefix:
          type: string
        tableNameSeparator:
          type: string
        useSameSchemaAsSource:
          type: boolean
      type: object
    PayloadsTable:
      properties:
        advancedSettings:
          $ref: '#/components/schemas/PayloadsTableAdvancedSettings'
        backfillStage:
          type: string
        createdAt:
          format: date-time
          type: string
        destinationTableName:
          type: string
        disableReplication:
          type: boolean
        enableHistoryMode:
          type: boolean
        historyTableBackfillStage:
          type: string
        historyTableStatus:
          type: string
        individualDeployment:
          type: boolean
        name:
          type: string
        schema:
          type: string
        status:
          type: string
        updatedAt:
          format: date-time
          type: string
        uuid:
          format: uuid
          type: string
      type: object
    PayloadsDynamoDBSnapshotConfig:
      properties:
        bucket:
          type: string
        enabled:
          type: boolean
        exportArn:
          type: string
        optionalFolder:
          type: string
      type: object
    PayloadsStaticColumn:
      properties:
        column:
          type: string
        value:
          type: string
      type: object
    PayloadsTableAdvancedSettings:
      properties:
        alias:
          type: string
        backfillFromDatabases:
          items:
            type: string
          type:
            - array
            - 'null'
        backfillFromSchemas:
          items:
            type: string
          type:
            - array
            - 'null'
        bigQueryPartitionSettings:
          $ref: '#/components/schemas/PayloadsBigQuerySettings'
        bufferRows:
          type: integer
        columnsToCompress:
          items:
            type: string
          type: array
        columnsToEncrypt:
          items:
            type: string
          type: array
        columnsToHash:
          items:
            type: string
          type: array
        ctidSettings:
          $ref: '#/components/schemas/PayloadsCTIDSettings'
        encryptJSONBColumns:
          type: boolean
        endingPrimaryKey:
          type: string
        excludeColumns:
          items:
            type: string
          type: array
        flushIntervalSeconds:
          type: integer
        flushSizeKb:
          type: integer
        historyTableBackfillFromSchemas:
          items:
            type: string
          type:
            - array
            - 'null'
        includeColumns:
          items:
            type: string
          type: array
        k8sRequestCPU:
          minimum: 0
          type: integer
        k8sRequestMemoryMB:
          minimum: 0
          type: integer
        mergePredicates:
          items:
            $ref: '#/components/schemas/PayloadsMergePredicates'
          type: array
        msmFlushCount:
          minimum: 0
          type: integer
        primaryKeysOverride:
          items:
            type: string
          type:
            - array
            - 'null'
        rangeSettings:
          $ref: '#/components/schemas/PayloadsRangeSettings'
        shouldBackfillHistoryTable:
          type:
            - 'null'
            - boolean
        skipBackfill:
          type: boolean
        skipDelete:
          type: boolean
        skipNoOpUpdates:
          type: boolean
        softPartitioning:
          $ref: '#/components/schemas/PayloadsSoftPartitioning'
        startingPrimaryKey:
          type: string
        streamARN:
          type: string
        unifyAcrossDatabases:
          type: boolean
        unifyAcrossSchemas:
          type: boolean
      type: object
    PayloadsBigQuerySettings:
      properties:
        partitionBy:
          type: string
        partitionField:
          type: string
        partitionType:
          type: string
      type: object
    PayloadsCTIDSettings:
      properties:
        chunkSize:
          minimum: 0
          type: integer
        enabled:
          type: boolean
        maxParallelism:
          minimum: 0
          type: integer
      type: object
    PayloadsMergePredicates:
      properties:
        partitionBy:
          type: string
        partitionField:
          type: string
        partitionType:
          type: string
      type: object
    PayloadsRangeSettings:
      properties:
        batchSize:
          minimum: 0
          type: integer
        chunksSize:
          minimum: 0
          type: integer
        enabled:
          type: boolean
        maxParallelism:
          minimum: 0
          type: integer
      type: object
    PayloadsSoftPartitioning:
      properties:
        enabled:
          type: boolean
        maxPartitions:
          type: integer
        partitionColumn:
          type: string
        partitionFrequency:
          type: string
        partitionSchema:
          type: string
      type: object
  securitySchemes:
    ApiKey:
      description: API key passed as a Bearer token in the Authorization header.
      scheme: bearer
      type: http

````