---
title: "Create or idempotently recover a Lab-first connection draft."
method: POST
path: "/v1/connections"
tags: ["Connections"]
---

# Create or idempotently recover a Lab-first connection draft.

`POST /v1/connections`

## Request

- Base URL: `https://signaledi.com/api`
- URL: `https://signaledi.com/api/v1/connections`
- Auth: HTTP bearer

## Request body

- ConnectionCreateRequest
  - `partnerId` string, required
  - `transportMethod` 'AS2' | 'SFTP', required
  - `displayName` string
  - `direction` 'INBOUND' | 'OUTBOUND' | 'BIDIRECTIONAL'

## Response `200`

Matching draft recovered.

- ConnectionCreateResult
  - `ok` true, required
  - `connectionId` string, required
  - `lifecycle` 'DRAFT', required
  - `environment` 'LAB', required
  - `created` boolean, required
  - `idempotentReplay` boolean, required

## Other responses

- `201`: Draft created.
- `400`: `Idempotency-Key` header missing or not 8-128 characters (`code` IDEMPOTENCY_KEY_REQUIRED), or the request body failed validation (`code` e.g. VALIDATION_ERROR, NO_WORKSPACE, BATCH_TOO_LARGE).
- `401`: Missing or invalid API key (`code` AUTH_UNAUTHORIZED).
- `403`: API key lacks the required `platform` scope (`code` PLATFORM_SCOPE_REQUIRED), its lane is invalid (API_KEY_ENVIRONMENT_INVALID), the workspace is not entitled to the platform API (PLATFORM_NOT_ENTITLED), or a supplied `workspaceId` does not match the authenticated workspace (FORBIDDEN).
- `404`: Resource not found, or the /v1 platform is disabled (`code` NOT_FOUND / PARTNER_NOT_FOUND / WORKSPACE_NOT_FOUND).
- `409`: Idempotency-Key reused with a different body (`code` IDEMPOTENCY_CONFLICT), or the partner cannot take a new draft (CONNECTION_NOT_DRAFT, CONNECTION_TRANSPORT_CONFLICT, CONNECTION_PROJECT_LINK_CONFLICT, CONNECTION_PROJECT_LINK_AMBIGUOUS, PARTNER_TRANSPORT_NOT_CUTOVER_CAPABLE).
- `429`: Rate limit exceeded (`code` RATE_LIMITED).
- `500`: Unexpected server error (`code` e.g. PARSE_FAILED, VALIDATE_FAILED, OUTBOUND_FAILED, INBOUND_FAILED, BATCH_FAILED, TRANSACTIONS_FAILED, DOCUMENT_RECEIPT_FAILED, DOCUMENT_PAYLOAD_FAILED). Sanitized bodies carry an opaque `correlationId` to quote to support; internal error text is never echoed.

---

[API](https://skmtc.dev/signaledi/apis/signaledi-developer-api.md) · [All operations](https://skmtc.dev/signaledi/apis/signaledi-developer-api/llms.txt) · [OpenAPI document](https://skmtc.dev/signaledi/apis/signaledi-developer-api/revisions/9bc596644a10?raw)
