---
title: "Save integration"
method: POST
path: "/v6/integrations/{id}"
tags: ["Integration Management"]
---

# Save integration

`POST /v6/integrations/{id}`

Save (or update an existing) integration

## Path parameters

- `id` string, required

## Request body

- IntegrationPostDto
  - `status` 'ACTIVE' | 'INACTIVE' | 'REMOVED' — Status of the integration
  - `apiName` 'BOX' | 'CLOVER' | 'STRIPE' | 'PLAID' | 'KNOX' | 'UBER' | 'FRESHBOOKS' | 'HARVEST' | 'KW' | 'FRESHBOOKS2' | 'CAPITAL_ONE' | 'SQUARE' | 'DOTLOOP' | 'REALOGY' | 'UPWORK' | 'SHOPIFY' | 'DEDUCTR' | 'ENTERPRISE' | 'MOXIWORKS' | 'APPDIRECT' | 'LONEWOLF' | 'LONEWOLF_TRANSACTIONDESK' | 'SAMPLE_BANK' | 'TAXBOT' | 'GUSTO' | 'XERO' | 'UNIT' | 'MOOV' | 'QBO' | 'QUALPAY' | 'BENCH' | 'PARTNER_IMPLEMENTATION' | 'CHECK' | 'RUTTER' | 'WAVE' | 'MANUAL_ENTRY' | 'CSV_IMPORT' | 'ADYEN' | 'PAYABLI' — Name of the OAuth Provider
  - `apiAccessToken` string — Access token of the integration
  - `customData` JsonNode, nullable — Custom JSON in which you can store any data with max length of 2000 characters
    - `empty` boolean
    - `array` boolean
    - `null` boolean
    - `object` boolean
    - `float` boolean
    - `string` boolean
    - `number` boolean
    - `missingNode` boolean
    - `valueNode` boolean
    - `nodeType` 'ARRAY' | 'BINARY' | 'BOOLEAN' | 'MISSING' | 'NULL' | 'NUMBER' | 'OBJECT' | 'POJO' | 'STRING'
    - `pojo` boolean
    - `integralNumber` boolean
    - `floatingPointNumber` boolean
    - `short` boolean
    - `int` boolean
    - `long` boolean
    - `double` boolean
    - `bigDecimal` boolean
    - `bigInteger` boolean
    - `textual` boolean
    - `boolean` boolean
    - `binary` boolean
    - `container` boolean
    - `embeddedValue` boolean

## Response `200`

Success

- SuccessResponseIntegrationGetDto
  - `result` 'SUCCESS' | 'FAILURE' — The result of the action performed.
  - `data` IntegrationGetDto — The data generated by the action performed.
    - `id` string, required — Integration ID
    - `status` 'ACTIVE' | 'INACTIVE' | 'REMOVED', required — Integration status
    - `apiName` 'BOX' | 'CLOVER' | 'STRIPE' | 'PLAID' | 'KNOX' | 'UBER' | 'FRESHBOOKS' | 'HARVEST' | 'KW' | 'FRESHBOOKS2' | 'CAPITAL_ONE' | 'SQUARE' | 'DOTLOOP' | 'REALOGY' | 'UPWORK' | 'SHOPIFY' | 'DEDUCTR' | 'ENTERPRISE' | 'MOXIWORKS' | 'APPDIRECT' | 'LONEWOLF' | 'LONEWOLF_TRANSACTIONDESK' | 'SAMPLE_BANK' | 'TAXBOT' | 'GUSTO' | 'XERO' | 'UNIT' | 'MOOV' | 'QBO' | 'QUALPAY' | 'BENCH' | 'PARTNER_IMPLEMENTATION' | 'CHECK' | 'RUTTER' | 'WAVE' | 'MANUAL_ENTRY' | 'CSV_IMPORT' | 'ADYEN' | 'PAYABLI', required — API provider name
    - `iconUrl` string, nullable, required — Icon URL for the integration
    - `apiUsername` string, nullable — API username
    - `lastSyncedDate` string, date, nullable — Last synced date
    - `apiAccessToken` string, required — API access token
    - `apiInstitutionId` string, nullable — API institution ID (Plaid only)
    - `apiInstitutionName` string, nullable — API institution name (Plaid only)
    - `apiErrorType` string, nullable — API error type (Plaid only)
    - `apiErrorCode` string, nullable — API error code (Plaid only)
    - `additionalConsentRequired` boolean, required — Whether additional consent is required to continue syncing (Plaid only)

## Other responses

- `400` — Bad request
- `401` — Not authenticated
- `403` — Not authorized
- `404` — Endpoint not found
- `500` — Internal server error

---

[API](https://skmtc.net/tight/apis/tight-api.md) · [All operations](https://skmtc.net/tight/apis/tight-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/tight/tight-api/revisions/e9f0790a89af/schema)
