---
title: "POST /api/v1/integrations/{provider}/exchange"
method: POST
path: "/api/v1/integrations/{provider}/exchange"
tags: ["integrations"]
---

# POST /api/v1/integrations/{provider}/exchange

`POST /api/v1/integrations/{provider}/exchange`

## Path parameters

- `provider` string, required

## Request body

- CompleteOAuthDto
  - `userId` string, required — Application user identifier to associate the connection with
  - `redirectUri` string, required — Frontend callback URL that receives the OAuth code
  - `scopes` string[] — Optional override of scopes to request
  - `state` string, required — Opaque OAuth state returned from the authorize redirect
  - `code` string, required — Authorization code issued by the provider

## Response `200`

- IntegrationConnectionResponse
  - `id` string, required
  - `provider` string, required
  - `providerName` string, required
  - `userId` string, required
  - `scopes` string[], required
  - `tokenType` string, required
  - `expiresAt` string
  - `createdAt` string, required
  - `updatedAt` string, required
  - `status` 'active' | 'expired', required
  - `supportsRefresh` boolean, required
  - `hasRefreshToken` boolean, required
  - `metadata` object — Provider-specific metadata saved alongside the connection

---

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