---
title: "Upload connector to integration"
method: POST
path: "/integrations/{id}/upload-connector"
tags: ["Integrations"]
---

# Upload connector to integration

`POST /integrations/{id}/upload-connector`

## Path parameters

- `id` string, required

## Response `200`

- IntegrationApiResponseDto
  - `id` string
  - `name` string, required — Display name. Always present in API responses (filled by API if not set on create).
  - `uuid` string — Stable unique identifier (UUID). Can be provided on create; otherwise generated. Must be unique across elements of this type.
  - `key` string — Stable key for referencing the element (e.g. in selectors). Unique per (parent, integration) scope. Generated from name if not provided on create.
  - `description` string — Optional human-readable description.
  - `meta` object — Optional key-value metadata.
  - `state` 'BUILDING' | 'CLIENT_ACTION_REQUIRED' | 'CONFIGURATION_ERROR' | 'SETUP_FAILED' | 'READY' | 'DISCONNECTING' — Current lifecycle or health state (e.g. READY, SETUP_FAILED, CONFIGURATION_ERROR, BUILDING). Set by the engine during setup and validation.
  - `errors` IntegrationApiResponseDtoSchema0[] — Validation or setup errors when state is not READY.
    - `type` 'bad_request' | 'connection' | 'configuration' | 'dependency_error' | 'flow_run' | 'flow_instance_setup' | 'concurrency' | 'internal' | 'action_run' | 'action_instance_setup' | 'unit_run' | 'custom_code' | 'insufficient_credit' | 'openrouter_not_configured'
    - `key` string
    - `message` string, required
    - `data` object
    - `stack` object
    - `causedByError` IntegrationApiResponseDtoSchema0 — recursive
    - `logs` object[]
  - `revision` string — Opaque revision token; changes on each update. Used for optimistic concurrency.
  - `createdAt` string — ISO date when the element was created.
  - `updatedAt` string — ISO date when the element was last updated.
  - `archivedAt` string
  - `isDeactivated` boolean
  - `isReadOnly` boolean — When true, the element cannot be modified (e.g. published package elements or elements from another workspace).
  - `logoUri` string
  - `connectorId` string
  - `connectorVersion` string
  - `oAuthCallbackUri` string
  - `parameters` object
  - `hasMissingParameters` boolean
  - `hasDocumentation` boolean
  - `hasOperations` boolean
  - `operationsCount` number
  - `hasData` boolean
  - `dataCollectionsCount` number
  - `hasEvents` boolean
  - `eventsCount` number
  - `hasGlobalWebhooks` boolean
  - `hasUdm` boolean
  - `isTest` boolean
  - `externalAppId` string
  - `authType` 'integration-app-token' | 'membrane-token' | 'oauth2' | 'oauth1' | 'client-credentials' | 'proxy'
  - `optionsConfig` object
  - `connection` object
    - `id` string, required — Internal database ID of the element. Assigned by the API; unique per element.
    - `name` string, required
    - `userId` string, required
    - `tenantId` string
    - `type` 'connector' | 'mcp'
    - `key` string
    - `isTest` boolean
    - `connected` boolean
    - `disconnected` boolean — Use `connected` instead.
    - `isDefunct` boolean
    - `state` 'BUILDING' | 'CLIENT_ACTION_REQUIRED' | 'CONFIGURATION_ERROR' | 'SETUP_FAILED' | 'READY' | 'DISCONNECTING'
    - `errors` IntegrationApiResponseDtoSchema0[]
      - `type` 'bad_request' | 'connection' | 'configuration' | 'dependency_error' | 'flow_run' | 'flow_instance_setup' | 'concurrency' | 'internal' | 'action_run' | 'action_instance_setup' | 'unit_run' | 'custom_code' | 'insufficient_credit' | 'openrouter_not_configured'
      - `key` string
      - `message` string, required
      - `data` object
      - `stack` object
      - `causedByError` IntegrationApiResponseDtoSchema0 — recursive
      - `logs` object[]
    - `requestError` IntegrationApiResponseDtoSchema0
      - `type` 'bad_request' | 'connection' | 'configuration' | 'dependency_error' | 'flow_run' | 'flow_instance_setup' | 'concurrency' | 'internal' | 'action_run' | 'action_instance_setup' | 'unit_run' | 'custom_code' | 'insufficient_credit' | 'openrouter_not_configured'
      - `key` string
      - `message` string, required
      - `data` object
      - `stack` object
      - `causedByError` IntegrationApiResponseDtoSchema0 — recursive
      - `logs` object[]
    - `error` IntegrationApiResponseDtoSchema0
      - `type` 'bad_request' | 'connection' | 'configuration' | 'dependency_error' | 'flow_run' | 'flow_instance_setup' | 'concurrency' | 'internal' | 'action_run' | 'action_instance_setup' | 'unit_run' | 'custom_code' | 'insufficient_credit' | 'openrouter_not_configured'
      - `key` string
      - `message` string, required
      - `data` object
      - `stack` object
      - `causedByError` IntegrationApiResponseDtoSchema0 — recursive
      - `logs` object[]
    - `integrationId` string
    - `connectorId` string
    - `externalAppId` string
    - `connectorVersion` string
    - `authOptionKey` string
    - `createdAt` string, required
    - `updatedAt` string, required
    - `lastActiveAt` string
    - `nextCredentialsRefreshAt` string
    - `nextRetryTimestamp` string
    - `retryAttempts` number
    - `canTest` boolean
    - `canRefreshCredentials` boolean
    - `archivedAt` string
    - `isDeactivated` boolean
    - `meta` object
    - `buildingAgentSessionId` string — Session ID for building the element via intent-based endpoints (create/update with intent). Present when state is BUILDING.
    - `clientAction` object — Action the client must perform to advance this connection. Present if and only if state is CLIENT_ACTION_REQUIRED.
      - `type` 'connect' | 'provide-input', required
      - `description` string, required
      - `uiUrl` string
      - `agentInstructions` string
      - `handoffAgentInstructions` string
  - `spec` object
  - `appUri` string
  - `isConnected` boolean

---

[API](https://skmtc.net/integration/apis/membrane-api.md) · [All operations](https://skmtc.net/integration/apis/membrane-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/integration/membrane-api/versions/1db9c5a3d78c/schema)
