Connections
Create a connection
Create a connection to an app with the credentials given, after testing them against the app. Only the user of the API key can use the connection unless is_shared_with_workspace is true. Answers the connection without its secrets.
Authorization
AuthorizationstringheaderrequiredBearer <key>, where <key> is a workspace API key or a user API key. See Authentication.
workspace_id*integerThe workspace the resources belong to
region*stringData region the connection is stored in
"besg""usnv"The connection to create db.example.com is a placeholder: replace it with your own host, which the API checks before saving (the example as written is refused).
application/json- body
The connection to create
connection_name*stringThe name of the connection, unique in the workspace
is_shared_with_workspace*booleanTrue to let every editor of the workspace use the connection, false to keep it to the user of the API key
app_type*stringThe app to connect, as shown in Stacksync
"postgres""postgres_heroku""salesforce""hubspot""bigquery""amazon_lightsail""amazon_rds""supabase""supabase_oauth""scaleway_postgres""cockroachdb""render_postgres""google_alloydb""snowflake""dynamodb""mongodb""sap""zendesk""zoho_crm""microsoft_dynamics""dynamics365_crm""dynamics365_finance""dynamics365_business_central""pipedrive""marketo""odoo""airtable""attio_crm""motherduck""shopify""oracledb""mysql""mariadb""sqlserver""suiteanalytics""twilio""bamboohr""sendgrid""twenty_crm""monday""acumatica""extensiv"credentials*The credentials of the app, checked per app type before the connection is tested: postgres, postgres_heroku: connection_string, schema; mongodb: connection_string, database; hubspot, monday: code (the OAuth authorization code); salesforce: code, account_type (standard or sandbox); sendgrid, twenty_crm: api_key; twilio: account_sid, auth_token; bamboohr: company_domain, api_key; snowflake: account, username, warehouse; suiteanalytics: account_id, consumer_key, consumer_secret, token_id, token_secret, role_id; bigquery: service_account_credentials (the service account JSON: type, project_id, private_key_id, private_key, client_email, client_id, auth_uri, token_uri, auth_provider_x509_cert_url, client_x509_cert_url); acumatica: instance_url, client_id, client_secret, code, redirect_uri; extensiv: client_id, client_secret, optional user_login_id and is_sandbox (boolean). Other app types take the fields their connection form asks for; they are checked when the connection is tested.
The connection created
application/json- response
The connection written
data*A connection as the connection routes answer it
curl -X POST 'https://api.stacksync.com/v1/workspaces/0/connections?region=besg' \ -H 'Content-Type: application/json' \ -d '{ "connection_name": "Production Postgres", "is_shared_with_workspace": true, "app_type": "postgres", "credentials": { "connection_string": "postgresql://sync_user:********@db.example.com:5432/crm", "schema": "public" }}'{ "data": { "connection_id": "9b2e4f60-1c3d-4a5e-8f70-2d4c6e8a0b12", "connection_name": "Production Postgres", "app_type": "postgres", "is_shared_with_workspace": true, "created_time": "2026-10-01 09:12:44", "last_modified_time": "2026-10-01 09:12:44", "credentials_options": { "uses_ssh_tunnel": false, "connection_mode": "direct" } }}GETGet a connection
One connection, with every sync, workflow, API proxy and scheduled task that uses it and whether it can be deleted. Never its credentials.
POSTUpdate a connection
Rename a connection, share it with the workspace, or replace its credentials (validated by the app first). Any editor who can see a connection shared with the workspace can update it.