Skip to main content

Connections

Connections store encrypted credentials to your source databases.

Create Connection

POST /v1/providers/{provider}/connections

Path Parameters:

ParameterDescription
providerDatabase provider: snowflake or postgresql

Request Body:

FieldTypeRequiredDescription
namestringYesConnection name (1-100 chars)
modestringYesmanaged or platform
credentialsobjectYesProvider-specific credentials

Snowflake Credentials

FieldTypeRequiredDescription
auth_methodstringYespassword or key_pair
accountstringYesSnowflake account identifier
userstringYesUsername
passwordstringConditionalRequired for password auth
private_keystringConditionalPEM-encoded key for key_pair auth
warehousestringNoWarehouse name
databasestringNoDatabase name
schemastringNoSchema name (default: PUBLIC)
rolestringNoRole name

PostgreSQL Credentials

FieldTypeRequiredDescription
hoststringYesDatabase hostname
portintegerNoPort (default: 5432)
databasestringYesDatabase name
userstringYesUsername
passwordstringYesPassword
ssl_modestringNoSSL mode (require, verify-ca, etc.)

Example:

curl -X POST https://api.embedd.to/v1/providers/snowflake/connections \
-H "Authorization: Bearer sk_your_key" \
-H "X-Environment-Id: env_abc123" \
-H "Content-Type: application/json" \
-d '{
"name": "analytics-warehouse",
"mode": "managed",
"credentials": {
"auth_method": "password",
"account": "myorg-account",
"user": "EMBEDD_USER",
"password": "secure_password",
"warehouse": "COMPUTE_WH"
}
}'

Response (201):

{
"id": "conn_abc123",
"org_id": "org_xyz",
"environment_id": "env_abc123",
"name": "analytics-warehouse",
"provider": "snowflake",
"mode": "managed",
"status": "pending",
"last_tested_at": null,
"created_at": "2025-01-15T10:00:00Z",
"updated_at": "2025-01-15T10:00:00Z"
}

List Connections

GET /v1/connections

Supports cursor-based pagination with limit and cursor query parameters.

Get Connection

GET /v1/connections/{connection_id}

Update Connection

PUT /v1/connections/{connection_id}

Request Body:

FieldTypeRequiredDescription
namestringNoUpdated name
credentialsobjectNoUpdated credentials

Delete Connection

DELETE /v1/connections/{connection_id}

Fails with 409 Conflict if vector tables are using the connection.

Response: 204 No Content

Test Connection

POST /v1/connections/{connection_id}/test

Tests connectivity to the database using stored credentials.

Response (200):

{
"status": "connected",
"details": {"latency_ms": 245}
}

On failure:

{
"status": "failed",
"details": {"error": "Connection refused"}
}