curl --request POST \
--url https://api.getmembrane.com/connections \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"meta": {},
"authOptionKey": "<string>",
"oauthClientId": "<string>",
"key": "<string>",
"integrationKey": "<string>",
"connectorId": "<string>",
"connectorUuid": "<string>",
"connectorKey": "<string>",
"connectorVersion": "<string>",
"externalAppId": "<string>",
"externalAppUuid": "<string>",
"credentials": "<unknown>",
"connectorParameters": "<unknown>",
"input": "<unknown>",
"intent": "<string>",
"connector": {
"key": "<string>",
"name": "<string>",
"logoUri": "<string>",
"externalAppId": "<string>",
"externalAppUuid": "<string>",
"appUuid": "<string>",
"categories": [
"<string>"
],
"parameters": {},
"authOptions": "<unknown>",
"customCredentialsSchema": {},
"inputSchema": {},
"parametersSchema": {},
"getCredentialsFromConnectionParameters": {
"description": "<string>"
},
"refreshCredentials": {
"description": "<string>"
},
"makeApiClient": {
"description": "<string>"
},
"getOAuthConfig": {
"description": "<string>"
},
"getTokenData": {
"description": "<string>"
},
"getCredentialsFromAccessTokenResponse": {
"description": "<string>"
},
"getCredentialsFromRefreshTokenResponse": {
"description": "<string>"
},
"test": {
"description": "<string>"
},
"disconnect": {
"description": "<string>"
},
"proxyKey": "<string>",
"oauthClientKey": "<string>",
"ui": {
"schema": {},
"description": "<string>",
"helpUri": "<string>"
},
"options": {}
},
"externalApp": {
"key": "<string>",
"name": "<string>",
"appUri": "<string>",
"logoUri": "<string>",
"categories": [
"<string>"
],
"defaultConnectorId": "<string>",
"basePackageId": "<string>",
"hasFreeTestAccount": true,
"freeTestAccountGuide": "<string>",
"freeTestAccountGuideVerifiedAt": "2023-11-07T05:31:56Z",
"tenantId": "<string>"
},
"appUrl": "<string>",
"buildingAgentSessionId": "<string>"
}
'import requests
url = "https://api.getmembrane.com/connections"
payload = {
"name": "<string>",
"meta": {},
"authOptionKey": "<string>",
"oauthClientId": "<string>",
"key": "<string>",
"integrationKey": "<string>",
"connectorId": "<string>",
"connectorUuid": "<string>",
"connectorKey": "<string>",
"connectorVersion": "<string>",
"externalAppId": "<string>",
"externalAppUuid": "<string>",
"credentials": "<unknown>",
"connectorParameters": "<unknown>",
"input": "<unknown>",
"intent": "<string>",
"connector": {
"key": "<string>",
"name": "<string>",
"logoUri": "<string>",
"externalAppId": "<string>",
"externalAppUuid": "<string>",
"appUuid": "<string>",
"categories": ["<string>"],
"parameters": {},
"authOptions": "<unknown>",
"customCredentialsSchema": {},
"inputSchema": {},
"parametersSchema": {},
"getCredentialsFromConnectionParameters": { "description": "<string>" },
"refreshCredentials": { "description": "<string>" },
"makeApiClient": { "description": "<string>" },
"getOAuthConfig": { "description": "<string>" },
"getTokenData": { "description": "<string>" },
"getCredentialsFromAccessTokenResponse": { "description": "<string>" },
"getCredentialsFromRefreshTokenResponse": { "description": "<string>" },
"test": { "description": "<string>" },
"disconnect": { "description": "<string>" },
"proxyKey": "<string>",
"oauthClientKey": "<string>",
"ui": {
"schema": {},
"description": "<string>",
"helpUri": "<string>"
},
"options": {}
},
"externalApp": {
"key": "<string>",
"name": "<string>",
"appUri": "<string>",
"logoUri": "<string>",
"categories": ["<string>"],
"defaultConnectorId": "<string>",
"basePackageId": "<string>",
"hasFreeTestAccount": True,
"freeTestAccountGuide": "<string>",
"freeTestAccountGuideVerifiedAt": "2023-11-07T05:31:56Z",
"tenantId": "<string>"
},
"appUrl": "<string>",
"buildingAgentSessionId": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
meta: {},
authOptionKey: '<string>',
oauthClientId: '<string>',
key: '<string>',
integrationKey: '<string>',
connectorId: '<string>',
connectorUuid: '<string>',
connectorKey: '<string>',
connectorVersion: '<string>',
externalAppId: '<string>',
externalAppUuid: '<string>',
credentials: '<unknown>',
connectorParameters: '<unknown>',
input: '<unknown>',
intent: '<string>',
connector: {
key: '<string>',
name: '<string>',
logoUri: '<string>',
externalAppId: '<string>',
externalAppUuid: '<string>',
appUuid: '<string>',
categories: ['<string>'],
parameters: {},
authOptions: '<unknown>',
customCredentialsSchema: {},
inputSchema: {},
parametersSchema: {},
getCredentialsFromConnectionParameters: {description: '<string>'},
refreshCredentials: {description: '<string>'},
makeApiClient: {description: '<string>'},
getOAuthConfig: {description: '<string>'},
getTokenData: {description: '<string>'},
getCredentialsFromAccessTokenResponse: {description: '<string>'},
getCredentialsFromRefreshTokenResponse: {description: '<string>'},
test: {description: '<string>'},
disconnect: {description: '<string>'},
proxyKey: '<string>',
oauthClientKey: '<string>',
ui: {schema: {}, description: '<string>', helpUri: '<string>'},
options: {}
},
externalApp: {
key: '<string>',
name: '<string>',
appUri: '<string>',
logoUri: '<string>',
categories: ['<string>'],
defaultConnectorId: '<string>',
basePackageId: '<string>',
hasFreeTestAccount: true,
freeTestAccountGuide: '<string>',
freeTestAccountGuideVerifiedAt: '2023-11-07T05:31:56Z',
tenantId: '<string>'
},
appUrl: '<string>',
buildingAgentSessionId: '<string>'
})
};
fetch('https://api.getmembrane.com/connections', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.getmembrane.com/connections",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>',
'meta' => [
],
'authOptionKey' => '<string>',
'oauthClientId' => '<string>',
'key' => '<string>',
'integrationKey' => '<string>',
'connectorId' => '<string>',
'connectorUuid' => '<string>',
'connectorKey' => '<string>',
'connectorVersion' => '<string>',
'externalAppId' => '<string>',
'externalAppUuid' => '<string>',
'credentials' => '<unknown>',
'connectorParameters' => '<unknown>',
'input' => '<unknown>',
'intent' => '<string>',
'connector' => [
'key' => '<string>',
'name' => '<string>',
'logoUri' => '<string>',
'externalAppId' => '<string>',
'externalAppUuid' => '<string>',
'appUuid' => '<string>',
'categories' => [
'<string>'
],
'parameters' => [
],
'authOptions' => '<unknown>',
'customCredentialsSchema' => [
],
'inputSchema' => [
],
'parametersSchema' => [
],
'getCredentialsFromConnectionParameters' => [
'description' => '<string>'
],
'refreshCredentials' => [
'description' => '<string>'
],
'makeApiClient' => [
'description' => '<string>'
],
'getOAuthConfig' => [
'description' => '<string>'
],
'getTokenData' => [
'description' => '<string>'
],
'getCredentialsFromAccessTokenResponse' => [
'description' => '<string>'
],
'getCredentialsFromRefreshTokenResponse' => [
'description' => '<string>'
],
'test' => [
'description' => '<string>'
],
'disconnect' => [
'description' => '<string>'
],
'proxyKey' => '<string>',
'oauthClientKey' => '<string>',
'ui' => [
'schema' => [
],
'description' => '<string>',
'helpUri' => '<string>'
],
'options' => [
]
],
'externalApp' => [
'key' => '<string>',
'name' => '<string>',
'appUri' => '<string>',
'logoUri' => '<string>',
'categories' => [
'<string>'
],
'defaultConnectorId' => '<string>',
'basePackageId' => '<string>',
'hasFreeTestAccount' => true,
'freeTestAccountGuide' => '<string>',
'freeTestAccountGuideVerifiedAt' => '2023-11-07T05:31:56Z',
'tenantId' => '<string>'
],
'appUrl' => '<string>',
'buildingAgentSessionId' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.getmembrane.com/connections"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"meta\": {},\n \"authOptionKey\": \"<string>\",\n \"oauthClientId\": \"<string>\",\n \"key\": \"<string>\",\n \"integrationKey\": \"<string>\",\n \"connectorId\": \"<string>\",\n \"connectorUuid\": \"<string>\",\n \"connectorKey\": \"<string>\",\n \"connectorVersion\": \"<string>\",\n \"externalAppId\": \"<string>\",\n \"externalAppUuid\": \"<string>\",\n \"credentials\": \"<unknown>\",\n \"connectorParameters\": \"<unknown>\",\n \"input\": \"<unknown>\",\n \"intent\": \"<string>\",\n \"connector\": {\n \"key\": \"<string>\",\n \"name\": \"<string>\",\n \"logoUri\": \"<string>\",\n \"externalAppId\": \"<string>\",\n \"externalAppUuid\": \"<string>\",\n \"appUuid\": \"<string>\",\n \"categories\": [\n \"<string>\"\n ],\n \"parameters\": {},\n \"authOptions\": \"<unknown>\",\n \"customCredentialsSchema\": {},\n \"inputSchema\": {},\n \"parametersSchema\": {},\n \"getCredentialsFromConnectionParameters\": {\n \"description\": \"<string>\"\n },\n \"refreshCredentials\": {\n \"description\": \"<string>\"\n },\n \"makeApiClient\": {\n \"description\": \"<string>\"\n },\n \"getOAuthConfig\": {\n \"description\": \"<string>\"\n },\n \"getTokenData\": {\n \"description\": \"<string>\"\n },\n \"getCredentialsFromAccessTokenResponse\": {\n \"description\": \"<string>\"\n },\n \"getCredentialsFromRefreshTokenResponse\": {\n \"description\": \"<string>\"\n },\n \"test\": {\n \"description\": \"<string>\"\n },\n \"disconnect\": {\n \"description\": \"<string>\"\n },\n \"proxyKey\": \"<string>\",\n \"oauthClientKey\": \"<string>\",\n \"ui\": {\n \"schema\": {},\n \"description\": \"<string>\",\n \"helpUri\": \"<string>\"\n },\n \"options\": {}\n },\n \"externalApp\": {\n \"key\": \"<string>\",\n \"name\": \"<string>\",\n \"appUri\": \"<string>\",\n \"logoUri\": \"<string>\",\n \"categories\": [\n \"<string>\"\n ],\n \"defaultConnectorId\": \"<string>\",\n \"basePackageId\": \"<string>\",\n \"hasFreeTestAccount\": true,\n \"freeTestAccountGuide\": \"<string>\",\n \"freeTestAccountGuideVerifiedAt\": \"2023-11-07T05:31:56Z\",\n \"tenantId\": \"<string>\"\n },\n \"appUrl\": \"<string>\",\n \"buildingAgentSessionId\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.getmembrane.com/connections")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"meta\": {},\n \"authOptionKey\": \"<string>\",\n \"oauthClientId\": \"<string>\",\n \"key\": \"<string>\",\n \"integrationKey\": \"<string>\",\n \"connectorId\": \"<string>\",\n \"connectorUuid\": \"<string>\",\n \"connectorKey\": \"<string>\",\n \"connectorVersion\": \"<string>\",\n \"externalAppId\": \"<string>\",\n \"externalAppUuid\": \"<string>\",\n \"credentials\": \"<unknown>\",\n \"connectorParameters\": \"<unknown>\",\n \"input\": \"<unknown>\",\n \"intent\": \"<string>\",\n \"connector\": {\n \"key\": \"<string>\",\n \"name\": \"<string>\",\n \"logoUri\": \"<string>\",\n \"externalAppId\": \"<string>\",\n \"externalAppUuid\": \"<string>\",\n \"appUuid\": \"<string>\",\n \"categories\": [\n \"<string>\"\n ],\n \"parameters\": {},\n \"authOptions\": \"<unknown>\",\n \"customCredentialsSchema\": {},\n \"inputSchema\": {},\n \"parametersSchema\": {},\n \"getCredentialsFromConnectionParameters\": {\n \"description\": \"<string>\"\n },\n \"refreshCredentials\": {\n \"description\": \"<string>\"\n },\n \"makeApiClient\": {\n \"description\": \"<string>\"\n },\n \"getOAuthConfig\": {\n \"description\": \"<string>\"\n },\n \"getTokenData\": {\n \"description\": \"<string>\"\n },\n \"getCredentialsFromAccessTokenResponse\": {\n \"description\": \"<string>\"\n },\n \"getCredentialsFromRefreshTokenResponse\": {\n \"description\": \"<string>\"\n },\n \"test\": {\n \"description\": \"<string>\"\n },\n \"disconnect\": {\n \"description\": \"<string>\"\n },\n \"proxyKey\": \"<string>\",\n \"oauthClientKey\": \"<string>\",\n \"ui\": {\n \"schema\": {},\n \"description\": \"<string>\",\n \"helpUri\": \"<string>\"\n },\n \"options\": {}\n },\n \"externalApp\": {\n \"key\": \"<string>\",\n \"name\": \"<string>\",\n \"appUri\": \"<string>\",\n \"logoUri\": \"<string>\",\n \"categories\": [\n \"<string>\"\n ],\n \"defaultConnectorId\": \"<string>\",\n \"basePackageId\": \"<string>\",\n \"hasFreeTestAccount\": true,\n \"freeTestAccountGuide\": \"<string>\",\n \"freeTestAccountGuideVerifiedAt\": \"2023-11-07T05:31:56Z\",\n \"tenantId\": \"<string>\"\n },\n \"appUrl\": \"<string>\",\n \"buildingAgentSessionId\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.getmembrane.com/connections")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"meta\": {},\n \"authOptionKey\": \"<string>\",\n \"oauthClientId\": \"<string>\",\n \"key\": \"<string>\",\n \"integrationKey\": \"<string>\",\n \"connectorId\": \"<string>\",\n \"connectorUuid\": \"<string>\",\n \"connectorKey\": \"<string>\",\n \"connectorVersion\": \"<string>\",\n \"externalAppId\": \"<string>\",\n \"externalAppUuid\": \"<string>\",\n \"credentials\": \"<unknown>\",\n \"connectorParameters\": \"<unknown>\",\n \"input\": \"<unknown>\",\n \"intent\": \"<string>\",\n \"connector\": {\n \"key\": \"<string>\",\n \"name\": \"<string>\",\n \"logoUri\": \"<string>\",\n \"externalAppId\": \"<string>\",\n \"externalAppUuid\": \"<string>\",\n \"appUuid\": \"<string>\",\n \"categories\": [\n \"<string>\"\n ],\n \"parameters\": {},\n \"authOptions\": \"<unknown>\",\n \"customCredentialsSchema\": {},\n \"inputSchema\": {},\n \"parametersSchema\": {},\n \"getCredentialsFromConnectionParameters\": {\n \"description\": \"<string>\"\n },\n \"refreshCredentials\": {\n \"description\": \"<string>\"\n },\n \"makeApiClient\": {\n \"description\": \"<string>\"\n },\n \"getOAuthConfig\": {\n \"description\": \"<string>\"\n },\n \"getTokenData\": {\n \"description\": \"<string>\"\n },\n \"getCredentialsFromAccessTokenResponse\": {\n \"description\": \"<string>\"\n },\n \"getCredentialsFromRefreshTokenResponse\": {\n \"description\": \"<string>\"\n },\n \"test\": {\n \"description\": \"<string>\"\n },\n \"disconnect\": {\n \"description\": \"<string>\"\n },\n \"proxyKey\": \"<string>\",\n \"oauthClientKey\": \"<string>\",\n \"ui\": {\n \"schema\": {},\n \"description\": \"<string>\",\n \"helpUri\": \"<string>\"\n },\n \"options\": {}\n },\n \"externalApp\": {\n \"key\": \"<string>\",\n \"name\": \"<string>\",\n \"appUri\": \"<string>\",\n \"logoUri\": \"<string>\",\n \"categories\": [\n \"<string>\"\n ],\n \"defaultConnectorId\": \"<string>\",\n \"basePackageId\": \"<string>\",\n \"hasFreeTestAccount\": true,\n \"freeTestAccountGuide\": \"<string>\",\n \"freeTestAccountGuideVerifiedAt\": \"2023-11-07T05:31:56Z\",\n \"tenantId\": \"<string>\"\n },\n \"appUrl\": \"<string>\",\n \"buildingAgentSessionId\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"name": "<string>",
"status": "connected",
"credentialsError": {},
"consecutiveRefreshFailuresCount": 4503599627370495,
"tenantId": "<string>",
"ownerName": "<string>",
"type": "connector",
"key": "<string>",
"grantedScopes": [
"<string>"
],
"providerPermissionChecks": [
{
"key": "<string>",
"status": "granted",
"checkedAt": "2023-11-07T05:31:56Z",
"probeActionId": "<string>"
}
],
"connected": true,
"hasDocs": true,
"docsCount": 123,
"docsSummary": "<string>",
"state": "BUILDING",
"errors": [
{}
],
"connectorId": "<string>",
"externalAppId": "<string>",
"connectorVersion": "<string>",
"authOptionKey": "<string>",
"oauthClientId": "<string>",
"oauthClientVersionId": "<string>",
"oauthClientName": "<string>",
"createdAt": "<string>",
"updatedAt": "<string>",
"nextCredentialsRefreshAt": "<string>",
"canTest": true,
"browserProvider": "browserbase",
"canRefreshCredentials": true,
"archivedAt": "<string>",
"isDeactivated": true,
"meta": {},
"buildingAgentSessionId": "<string>",
"ask": {
"kind": "connect",
"step": "app"
},
"logoUri": "<string>",
"input": {},
"connectorParameters": {},
"credentialsSchema": {}
}create-connection
Create a connection to an external app. Target it by connector/integration/app id, by appUrl (e.g. “https://slack.com”, resolved server-side), or by type: "mcp" with input: { mcpServerUrl } — a connector-less connection whose operations arrive as tools. ALWAYS creates a new one: to act through an existing connection find it with list-connections; to finish or repair one use update-connection or offer connect. Pass input / connectorParameters for configuration the connector declares; never pass a credential — an API key, token, client secret or password is refused here, because tool arguments are stored in the transcript verbatim. To get a credential onto the connection, create it without one and offer connect, which writes what the person enters straight to that connection. If the app has no connector, build one from its API docs and pass connector (and externalApp) by value here — creating both together, docs preserved; do it inline, never hand the build to another session. Returns the connection with its projected state and ask. For a user-facing button, offer connect.
curl --request POST \
--url https://api.getmembrane.com/connections \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"meta": {},
"authOptionKey": "<string>",
"oauthClientId": "<string>",
"key": "<string>",
"integrationKey": "<string>",
"connectorId": "<string>",
"connectorUuid": "<string>",
"connectorKey": "<string>",
"connectorVersion": "<string>",
"externalAppId": "<string>",
"externalAppUuid": "<string>",
"credentials": "<unknown>",
"connectorParameters": "<unknown>",
"input": "<unknown>",
"intent": "<string>",
"connector": {
"key": "<string>",
"name": "<string>",
"logoUri": "<string>",
"externalAppId": "<string>",
"externalAppUuid": "<string>",
"appUuid": "<string>",
"categories": [
"<string>"
],
"parameters": {},
"authOptions": "<unknown>",
"customCredentialsSchema": {},
"inputSchema": {},
"parametersSchema": {},
"getCredentialsFromConnectionParameters": {
"description": "<string>"
},
"refreshCredentials": {
"description": "<string>"
},
"makeApiClient": {
"description": "<string>"
},
"getOAuthConfig": {
"description": "<string>"
},
"getTokenData": {
"description": "<string>"
},
"getCredentialsFromAccessTokenResponse": {
"description": "<string>"
},
"getCredentialsFromRefreshTokenResponse": {
"description": "<string>"
},
"test": {
"description": "<string>"
},
"disconnect": {
"description": "<string>"
},
"proxyKey": "<string>",
"oauthClientKey": "<string>",
"ui": {
"schema": {},
"description": "<string>",
"helpUri": "<string>"
},
"options": {}
},
"externalApp": {
"key": "<string>",
"name": "<string>",
"appUri": "<string>",
"logoUri": "<string>",
"categories": [
"<string>"
],
"defaultConnectorId": "<string>",
"basePackageId": "<string>",
"hasFreeTestAccount": true,
"freeTestAccountGuide": "<string>",
"freeTestAccountGuideVerifiedAt": "2023-11-07T05:31:56Z",
"tenantId": "<string>"
},
"appUrl": "<string>",
"buildingAgentSessionId": "<string>"
}
'import requests
url = "https://api.getmembrane.com/connections"
payload = {
"name": "<string>",
"meta": {},
"authOptionKey": "<string>",
"oauthClientId": "<string>",
"key": "<string>",
"integrationKey": "<string>",
"connectorId": "<string>",
"connectorUuid": "<string>",
"connectorKey": "<string>",
"connectorVersion": "<string>",
"externalAppId": "<string>",
"externalAppUuid": "<string>",
"credentials": "<unknown>",
"connectorParameters": "<unknown>",
"input": "<unknown>",
"intent": "<string>",
"connector": {
"key": "<string>",
"name": "<string>",
"logoUri": "<string>",
"externalAppId": "<string>",
"externalAppUuid": "<string>",
"appUuid": "<string>",
"categories": ["<string>"],
"parameters": {},
"authOptions": "<unknown>",
"customCredentialsSchema": {},
"inputSchema": {},
"parametersSchema": {},
"getCredentialsFromConnectionParameters": { "description": "<string>" },
"refreshCredentials": { "description": "<string>" },
"makeApiClient": { "description": "<string>" },
"getOAuthConfig": { "description": "<string>" },
"getTokenData": { "description": "<string>" },
"getCredentialsFromAccessTokenResponse": { "description": "<string>" },
"getCredentialsFromRefreshTokenResponse": { "description": "<string>" },
"test": { "description": "<string>" },
"disconnect": { "description": "<string>" },
"proxyKey": "<string>",
"oauthClientKey": "<string>",
"ui": {
"schema": {},
"description": "<string>",
"helpUri": "<string>"
},
"options": {}
},
"externalApp": {
"key": "<string>",
"name": "<string>",
"appUri": "<string>",
"logoUri": "<string>",
"categories": ["<string>"],
"defaultConnectorId": "<string>",
"basePackageId": "<string>",
"hasFreeTestAccount": True,
"freeTestAccountGuide": "<string>",
"freeTestAccountGuideVerifiedAt": "2023-11-07T05:31:56Z",
"tenantId": "<string>"
},
"appUrl": "<string>",
"buildingAgentSessionId": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
meta: {},
authOptionKey: '<string>',
oauthClientId: '<string>',
key: '<string>',
integrationKey: '<string>',
connectorId: '<string>',
connectorUuid: '<string>',
connectorKey: '<string>',
connectorVersion: '<string>',
externalAppId: '<string>',
externalAppUuid: '<string>',
credentials: '<unknown>',
connectorParameters: '<unknown>',
input: '<unknown>',
intent: '<string>',
connector: {
key: '<string>',
name: '<string>',
logoUri: '<string>',
externalAppId: '<string>',
externalAppUuid: '<string>',
appUuid: '<string>',
categories: ['<string>'],
parameters: {},
authOptions: '<unknown>',
customCredentialsSchema: {},
inputSchema: {},
parametersSchema: {},
getCredentialsFromConnectionParameters: {description: '<string>'},
refreshCredentials: {description: '<string>'},
makeApiClient: {description: '<string>'},
getOAuthConfig: {description: '<string>'},
getTokenData: {description: '<string>'},
getCredentialsFromAccessTokenResponse: {description: '<string>'},
getCredentialsFromRefreshTokenResponse: {description: '<string>'},
test: {description: '<string>'},
disconnect: {description: '<string>'},
proxyKey: '<string>',
oauthClientKey: '<string>',
ui: {schema: {}, description: '<string>', helpUri: '<string>'},
options: {}
},
externalApp: {
key: '<string>',
name: '<string>',
appUri: '<string>',
logoUri: '<string>',
categories: ['<string>'],
defaultConnectorId: '<string>',
basePackageId: '<string>',
hasFreeTestAccount: true,
freeTestAccountGuide: '<string>',
freeTestAccountGuideVerifiedAt: '2023-11-07T05:31:56Z',
tenantId: '<string>'
},
appUrl: '<string>',
buildingAgentSessionId: '<string>'
})
};
fetch('https://api.getmembrane.com/connections', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.getmembrane.com/connections",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>',
'meta' => [
],
'authOptionKey' => '<string>',
'oauthClientId' => '<string>',
'key' => '<string>',
'integrationKey' => '<string>',
'connectorId' => '<string>',
'connectorUuid' => '<string>',
'connectorKey' => '<string>',
'connectorVersion' => '<string>',
'externalAppId' => '<string>',
'externalAppUuid' => '<string>',
'credentials' => '<unknown>',
'connectorParameters' => '<unknown>',
'input' => '<unknown>',
'intent' => '<string>',
'connector' => [
'key' => '<string>',
'name' => '<string>',
'logoUri' => '<string>',
'externalAppId' => '<string>',
'externalAppUuid' => '<string>',
'appUuid' => '<string>',
'categories' => [
'<string>'
],
'parameters' => [
],
'authOptions' => '<unknown>',
'customCredentialsSchema' => [
],
'inputSchema' => [
],
'parametersSchema' => [
],
'getCredentialsFromConnectionParameters' => [
'description' => '<string>'
],
'refreshCredentials' => [
'description' => '<string>'
],
'makeApiClient' => [
'description' => '<string>'
],
'getOAuthConfig' => [
'description' => '<string>'
],
'getTokenData' => [
'description' => '<string>'
],
'getCredentialsFromAccessTokenResponse' => [
'description' => '<string>'
],
'getCredentialsFromRefreshTokenResponse' => [
'description' => '<string>'
],
'test' => [
'description' => '<string>'
],
'disconnect' => [
'description' => '<string>'
],
'proxyKey' => '<string>',
'oauthClientKey' => '<string>',
'ui' => [
'schema' => [
],
'description' => '<string>',
'helpUri' => '<string>'
],
'options' => [
]
],
'externalApp' => [
'key' => '<string>',
'name' => '<string>',
'appUri' => '<string>',
'logoUri' => '<string>',
'categories' => [
'<string>'
],
'defaultConnectorId' => '<string>',
'basePackageId' => '<string>',
'hasFreeTestAccount' => true,
'freeTestAccountGuide' => '<string>',
'freeTestAccountGuideVerifiedAt' => '2023-11-07T05:31:56Z',
'tenantId' => '<string>'
],
'appUrl' => '<string>',
'buildingAgentSessionId' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.getmembrane.com/connections"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"meta\": {},\n \"authOptionKey\": \"<string>\",\n \"oauthClientId\": \"<string>\",\n \"key\": \"<string>\",\n \"integrationKey\": \"<string>\",\n \"connectorId\": \"<string>\",\n \"connectorUuid\": \"<string>\",\n \"connectorKey\": \"<string>\",\n \"connectorVersion\": \"<string>\",\n \"externalAppId\": \"<string>\",\n \"externalAppUuid\": \"<string>\",\n \"credentials\": \"<unknown>\",\n \"connectorParameters\": \"<unknown>\",\n \"input\": \"<unknown>\",\n \"intent\": \"<string>\",\n \"connector\": {\n \"key\": \"<string>\",\n \"name\": \"<string>\",\n \"logoUri\": \"<string>\",\n \"externalAppId\": \"<string>\",\n \"externalAppUuid\": \"<string>\",\n \"appUuid\": \"<string>\",\n \"categories\": [\n \"<string>\"\n ],\n \"parameters\": {},\n \"authOptions\": \"<unknown>\",\n \"customCredentialsSchema\": {},\n \"inputSchema\": {},\n \"parametersSchema\": {},\n \"getCredentialsFromConnectionParameters\": {\n \"description\": \"<string>\"\n },\n \"refreshCredentials\": {\n \"description\": \"<string>\"\n },\n \"makeApiClient\": {\n \"description\": \"<string>\"\n },\n \"getOAuthConfig\": {\n \"description\": \"<string>\"\n },\n \"getTokenData\": {\n \"description\": \"<string>\"\n },\n \"getCredentialsFromAccessTokenResponse\": {\n \"description\": \"<string>\"\n },\n \"getCredentialsFromRefreshTokenResponse\": {\n \"description\": \"<string>\"\n },\n \"test\": {\n \"description\": \"<string>\"\n },\n \"disconnect\": {\n \"description\": \"<string>\"\n },\n \"proxyKey\": \"<string>\",\n \"oauthClientKey\": \"<string>\",\n \"ui\": {\n \"schema\": {},\n \"description\": \"<string>\",\n \"helpUri\": \"<string>\"\n },\n \"options\": {}\n },\n \"externalApp\": {\n \"key\": \"<string>\",\n \"name\": \"<string>\",\n \"appUri\": \"<string>\",\n \"logoUri\": \"<string>\",\n \"categories\": [\n \"<string>\"\n ],\n \"defaultConnectorId\": \"<string>\",\n \"basePackageId\": \"<string>\",\n \"hasFreeTestAccount\": true,\n \"freeTestAccountGuide\": \"<string>\",\n \"freeTestAccountGuideVerifiedAt\": \"2023-11-07T05:31:56Z\",\n \"tenantId\": \"<string>\"\n },\n \"appUrl\": \"<string>\",\n \"buildingAgentSessionId\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.getmembrane.com/connections")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"meta\": {},\n \"authOptionKey\": \"<string>\",\n \"oauthClientId\": \"<string>\",\n \"key\": \"<string>\",\n \"integrationKey\": \"<string>\",\n \"connectorId\": \"<string>\",\n \"connectorUuid\": \"<string>\",\n \"connectorKey\": \"<string>\",\n \"connectorVersion\": \"<string>\",\n \"externalAppId\": \"<string>\",\n \"externalAppUuid\": \"<string>\",\n \"credentials\": \"<unknown>\",\n \"connectorParameters\": \"<unknown>\",\n \"input\": \"<unknown>\",\n \"intent\": \"<string>\",\n \"connector\": {\n \"key\": \"<string>\",\n \"name\": \"<string>\",\n \"logoUri\": \"<string>\",\n \"externalAppId\": \"<string>\",\n \"externalAppUuid\": \"<string>\",\n \"appUuid\": \"<string>\",\n \"categories\": [\n \"<string>\"\n ],\n \"parameters\": {},\n \"authOptions\": \"<unknown>\",\n \"customCredentialsSchema\": {},\n \"inputSchema\": {},\n \"parametersSchema\": {},\n \"getCredentialsFromConnectionParameters\": {\n \"description\": \"<string>\"\n },\n \"refreshCredentials\": {\n \"description\": \"<string>\"\n },\n \"makeApiClient\": {\n \"description\": \"<string>\"\n },\n \"getOAuthConfig\": {\n \"description\": \"<string>\"\n },\n \"getTokenData\": {\n \"description\": \"<string>\"\n },\n \"getCredentialsFromAccessTokenResponse\": {\n \"description\": \"<string>\"\n },\n \"getCredentialsFromRefreshTokenResponse\": {\n \"description\": \"<string>\"\n },\n \"test\": {\n \"description\": \"<string>\"\n },\n \"disconnect\": {\n \"description\": \"<string>\"\n },\n \"proxyKey\": \"<string>\",\n \"oauthClientKey\": \"<string>\",\n \"ui\": {\n \"schema\": {},\n \"description\": \"<string>\",\n \"helpUri\": \"<string>\"\n },\n \"options\": {}\n },\n \"externalApp\": {\n \"key\": \"<string>\",\n \"name\": \"<string>\",\n \"appUri\": \"<string>\",\n \"logoUri\": \"<string>\",\n \"categories\": [\n \"<string>\"\n ],\n \"defaultConnectorId\": \"<string>\",\n \"basePackageId\": \"<string>\",\n \"hasFreeTestAccount\": true,\n \"freeTestAccountGuide\": \"<string>\",\n \"freeTestAccountGuideVerifiedAt\": \"2023-11-07T05:31:56Z\",\n \"tenantId\": \"<string>\"\n },\n \"appUrl\": \"<string>\",\n \"buildingAgentSessionId\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.getmembrane.com/connections")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"meta\": {},\n \"authOptionKey\": \"<string>\",\n \"oauthClientId\": \"<string>\",\n \"key\": \"<string>\",\n \"integrationKey\": \"<string>\",\n \"connectorId\": \"<string>\",\n \"connectorUuid\": \"<string>\",\n \"connectorKey\": \"<string>\",\n \"connectorVersion\": \"<string>\",\n \"externalAppId\": \"<string>\",\n \"externalAppUuid\": \"<string>\",\n \"credentials\": \"<unknown>\",\n \"connectorParameters\": \"<unknown>\",\n \"input\": \"<unknown>\",\n \"intent\": \"<string>\",\n \"connector\": {\n \"key\": \"<string>\",\n \"name\": \"<string>\",\n \"logoUri\": \"<string>\",\n \"externalAppId\": \"<string>\",\n \"externalAppUuid\": \"<string>\",\n \"appUuid\": \"<string>\",\n \"categories\": [\n \"<string>\"\n ],\n \"parameters\": {},\n \"authOptions\": \"<unknown>\",\n \"customCredentialsSchema\": {},\n \"inputSchema\": {},\n \"parametersSchema\": {},\n \"getCredentialsFromConnectionParameters\": {\n \"description\": \"<string>\"\n },\n \"refreshCredentials\": {\n \"description\": \"<string>\"\n },\n \"makeApiClient\": {\n \"description\": \"<string>\"\n },\n \"getOAuthConfig\": {\n \"description\": \"<string>\"\n },\n \"getTokenData\": {\n \"description\": \"<string>\"\n },\n \"getCredentialsFromAccessTokenResponse\": {\n \"description\": \"<string>\"\n },\n \"getCredentialsFromRefreshTokenResponse\": {\n \"description\": \"<string>\"\n },\n \"test\": {\n \"description\": \"<string>\"\n },\n \"disconnect\": {\n \"description\": \"<string>\"\n },\n \"proxyKey\": \"<string>\",\n \"oauthClientKey\": \"<string>\",\n \"ui\": {\n \"schema\": {},\n \"description\": \"<string>\",\n \"helpUri\": \"<string>\"\n },\n \"options\": {}\n },\n \"externalApp\": {\n \"key\": \"<string>\",\n \"name\": \"<string>\",\n \"appUri\": \"<string>\",\n \"logoUri\": \"<string>\",\n \"categories\": [\n \"<string>\"\n ],\n \"defaultConnectorId\": \"<string>\",\n \"basePackageId\": \"<string>\",\n \"hasFreeTestAccount\": true,\n \"freeTestAccountGuide\": \"<string>\",\n \"freeTestAccountGuideVerifiedAt\": \"2023-11-07T05:31:56Z\",\n \"tenantId\": \"<string>\"\n },\n \"appUrl\": \"<string>\",\n \"buildingAgentSessionId\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"name": "<string>",
"status": "connected",
"credentialsError": {},
"consecutiveRefreshFailuresCount": 4503599627370495,
"tenantId": "<string>",
"ownerName": "<string>",
"type": "connector",
"key": "<string>",
"grantedScopes": [
"<string>"
],
"providerPermissionChecks": [
{
"key": "<string>",
"status": "granted",
"checkedAt": "2023-11-07T05:31:56Z",
"probeActionId": "<string>"
}
],
"connected": true,
"hasDocs": true,
"docsCount": 123,
"docsSummary": "<string>",
"state": "BUILDING",
"errors": [
{}
],
"connectorId": "<string>",
"externalAppId": "<string>",
"connectorVersion": "<string>",
"authOptionKey": "<string>",
"oauthClientId": "<string>",
"oauthClientVersionId": "<string>",
"oauthClientName": "<string>",
"createdAt": "<string>",
"updatedAt": "<string>",
"nextCredentialsRefreshAt": "<string>",
"canTest": true,
"browserProvider": "browserbase",
"canRefreshCredentials": true,
"archivedAt": "<string>",
"isDeactivated": true,
"meta": {},
"buildingAgentSessionId": "<string>",
"ask": {
"kind": "connect",
"step": "app"
},
"logoUri": "<string>",
"input": {},
"connectorParameters": {},
"credentialsSchema": {}
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
connector, mcp, browser Show child attributes
Show child attributes
1 - 100The authentication result the connector produces from input and connectorParameters when the connection is established — a token, a header, a signed value, whatever that connector’s auth code returns. Encrypted at rest and never echoed back. A value a person supplies is an ingredient of this, not this: it belongs in input or connectorParameters, whichever auth schema declares it, and the connector derives credentials from it on connect.
Values for the auth option’s connectorParametersSchema — app-level configuration shared by everyone using this connector, such as an OAuth client id, client secret, or scope list. A JSON object keyed exactly as that schema declares — the object itself, never a string containing it; read the schemas from connection-options. Replaces the stored object, so a key you omit is dropped: to keep a stored value, send back the { set: true } marker get-connection returned for it. Writing this does not authenticate the connection.
Values for the auth option’s inputSchema — what the connect form asks a person for, such as an API key, an account subdomain, or an API URL. A raw access token belongs here too when the schema declares one. A JSON object keyed exactly as that schema declares — the object itself, never a string containing it; read the schemas from connection-options. Replaces the stored object, so a key you omit is dropped: to keep a stored value, send back the { set: true } marker get-connection returned for it. Writing this does not authenticate the connection.
[Experimental] Intent-based instruction for an agent to configure this element.
Inline connector spec. Creates and links one when no connectorId exists; otherwise updates the linked connector.
Show child attributes
Show child attributes
Inline external-app spec. Creates and links one when no externalAppId exists; otherwise updates the linked app.
Show child attributes
Show child attributes
URL or domain of the app to connect to (e.g. "https://slack.com" or "slack.com"). Resolved to an external app server-side before creating a connection.
1 - 2000Agent session building this connection. The element’s BUILDING state is projected from it, and a later build for this connection reuses that session instead of starting a second one.
Response
Create a connection to an external app. Target it by connector/integration/app id, by appUrl (e.g. "https://slack.com", resolved server-side), or by type: "mcp" with input: { mcpServerUrl } — a connector-less connection whose operations arrive as tools. ALWAYS creates a new one: to act through an existing connection find it with list-connections; to finish or repair one use update-connection or offer connect. Pass input / connectorParameters for configuration the connector declares; never pass a credential — an API key, token, client secret or password is refused here, because tool arguments are stored in the transcript verbatim. To get a credential onto the connection, create it without one and offer connect, which writes what the person enters straight to that connection. If the app has no connector, build one from its API docs and pass connector (and externalApp) by value here — creating both together, docs preserved; do it inline, never hand the build to another session. Returns the connection with its projected state and ask. For a user-facing button, offer connect.
Internal database ID of the element. Assigned by the API; unique per element.
Lifecycle status. broken is reserved for provider-confirmed credential or configuration rejection.
connected, broken, disconnecting, disconnected Provider-confirmed credential or configuration rejection. Non-null if and only if status is broken.
Consecutive scheduled credential-refresh failures, used only for backoff arithmetic.
0 <= x <= 9007199254740991connector, mcp, browser Show child attributes
Show child attributes
Whether the connection is authenticated and usable. Projection of status === "connected".
Shared element-state projection of the connection lifecycle and its overlays.
BUILDING, CLIENT_ACTION_REQUIRED, CONFIGURATION_ERROR, SETUP_FAILED, READY, DISCONNECTING Validation or setup errors when state is not READY.
When the connection credentials are next scheduled for proactive refresh.
Whether the connection supports a connectivity test through its connector.
browserbase, puppeteer Whether the connection credentials can be refreshed through its connector refresh flow.
When the connection was archived (soft-deleted).
True when the connection or an ancestor was deactivated; a deactivated connection has no state.
Show child attributes
Show child attributes
Session ID for building the element via intent-based endpoints (create/update with intent). Present when state is BUILDING.
The next connection step, projected from lifecycle state.
Show child attributes
Show child attributes
Resolved app logo for this element (integration -> connector -> external app -> favicon).
Connect-form fields for this connection. Credential-carrying fields report { "set": true } presence only; their values are never returned.
Show child attributes
Show child attributes
Connector parameters for this connection. Each field reports { "set": true } presence only; values are never returned.
Show child attributes
Show child attributes
Shape of this connection’s stored credentials: field names, types, and descriptions, never values. Use a field name here as the credential path when binding a credential into a command with the with-credentials CLI tool.