---
title: "Start the OAuth flow for a new connection"
method: POST
path: "/v1/integrations/connections"
tags: ["integrations"]
---

# Start the OAuth flow for a new connection

`POST /v1/integrations/connections`

## Request body

- ConnectionCreate
  - `integration_key` 'slack' | 'custom_mcp' | 'notion' | 'google_drive' | 'calcom' | 'twilio' | 'email', required — Stable identifier for each supported integration. The string value must match the vendor's per-provider identifier (for Nango: ``provider_config_key``). Persisted on ``integration_connections.integration_key`` and ``integration_connection_tools.integration_key``. Adding a new integration: append a member here, add an ``IntegrationSpec`` to ``INTEGRATIONS``, register the provider in the vendor cloud via ``src/integrations/bootstrap.py`` (Step 3).
  - `nickname` string, required

## Response `201`

Successful Response

- ConnectionCreateResponse — Returned by ``POST /v1/integrations/connections``. Carries everything the Connect-UI frontend needs to open the OAuth popup without a second round-trip: the row id (to poll), the vendor session token, its expiry, and the vendor name so the frontend can pick the right SDK (``@nangohq/frontend`` for ``"nango"``).
  - `connection_id` string, uuid, required
  - `session_token` string, required
  - `expires_at` string, date-time, required
  - `vendor` string, required

## Other responses

- `400` — Bad request
- `401` — Authentication required
- `422` — Validation Error

---

[API](https://skmtc.net/oneloop-hq/apis/feather-api.md) · [All operations](https://skmtc.net/oneloop-hq/apis/feather-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/oneloop-hq/feather-api/versions/888bdd5c076e/schema)
