---
title: "Verify data source credentials"
method: POST
path: "/api/public/organizations/{orgId}/data-sources/verify"
tags: ["Data Sources"]
---

# Verify data source credentials

`POST /api/public/organizations/{orgId}/data-sources/verify`

## Request

- Base URL: `https://charts.basedash.com`
- URL: `https://charts.basedash.com/api/public/organizations/{orgId}/data-sources/verify`
- Auth: HTTP bearer

Tests database connection credentials without creating a data source. Use this endpoint to validate credentials before creating or updating a data source.

## Path parameters

- `orgId` string, required: Organization ID

## Request body

- object
  - `snowflakeAccountId` string: Snowflake account ID
  - `snowflakeWarehouse` string: Snowflake warehouse
  - `snowflakeRole` string: Snowflake role
  - `snowflakePrivateKey` string: Snowflake private key
  - `snowflakePrivateKeyPassphrase` string: Snowflake private key passphrase
  - `databaseName` string, nullable: Database name
  - `username` string: Database username
  - `host` string: Database host
  - `port` integer: Database port
  - `password` string: Database password
  - `bigQueryJsonKey` string: BigQuery JSON key
  - `bigQueryProjectId` string: BigQuery project ID
  - `spannerInstanceId` string: Spanner instance ID
  - `athenaWorkgroup` string: Athena workgroup
  - `athenaOutputLocation` string: Athena output location (s3://...)
  - `athenaCatalog` string: Athena catalog
  - `sslEnabled` boolean: Enable SSL connection
  - `sslVerifyServerCertificate` boolean: Verify the server's TLS certificate when SSL is on
  - `sslCaCertificate` string, nullable: PEM CA certificate to trust for the server certificate
  - `sshEnabled` boolean: Enable SSH tunnel
  - `sshHost` string: SSH tunnel host
  - `sshPort` integer: SSH tunnel port
  - `sshUsername` string: SSH tunnel username
  - `sshPassword` string: SSH tunnel password
  - `sshPrivateKey` string: SSH private key
  - `sshPrivateKeyPassphrase` string: SSH private key passphrase
  - `maxPoolSize` integer: Maximum number of connections in the pool per container
  - `dialect` union, required: Database dialect/type
    - 'ELASTICSEARCH'
    - 'POSTGRES'
    - 'SUPABASE'
    - 'MYSQL'
    - 'PLANETSCALE'
    - 'ATHENA'
    - 'BIGQUERY'
    - 'CLICKHOUSE'
    - 'SPANNER'
    - 'SNOWFLAKE'
    - 'REDSHIFT'
    - 'SQL_SERVER'
    - 'ORACLE'
    - 'DATABRICKS'
    - 'POSTHOG'
    - 'DUCKDB'
    - 'MOTHERDUCK'

## Response `200`

Credentials verified successfully

- object
  - `data` object, required
    - `success` true, required: Indicates successful connection

## Other responses

- `400`: Bad request - Invalid JSON body, validation error, or connection failed
- `401`: Unauthorized - Missing or invalid API key
- `404`: Not found - Organization not found or no admin access
- `429`: Rate limit exceeded - Too many requests
- `500`: Internal server error

---

[API](https://skmtc.dev/basedash/apis/basedash-public-api.md) - [All operations](https://skmtc.dev/basedash/apis/basedash-public-api/llms.txt) - [OpenAPI document](https://skmtc.dev/basedash/apis/basedash-public-api/revisions/efb9d40bc6f7?raw)
