---
title: "Create integration"
method: POST
path: "/integrations"
tags: ["Integrations"]
---

# Create integration

`POST /integrations`

Creates a new integration for the project.

## Headers

- `Idempotency-Key` string

## Request body

- V4IntegrationCreateRequest
  - `title` string, required — Display title visible in the dashboard (1-255 chars).
  - `integration` string, required — Provider slug. Call `GET /v4/integrations/meta` for the canonical catalog; the typical set includes `amplitude`, `appmetrica`, `facebook`, `firebase`, `mixpanel`, `posthog`, `segment`, `searchads`, `adjust`, `appsflyer`, `branch`, `kochava`, `singular`, `split_metrics`, `asapty`, `tenjin`, `amazon_s3`, `google_cloud_storage`, `slack`, `webhooks`, `braze`, `clevertap`, `mailchimp`, `onesignal`, `pushwoosh`.
  - `target_platform` 'iOS' | 'Android' | 'Stripe', required — Store to forward events for. Case-sensitive.

## Response `201`

Integration created.

- V4Integration — A single integration record. Credentials (API keys, webhook secrets) are configured out-of-band after creation and are not exposed in this shape.
  - `object` string, required
  - `id` string, required — Integration identifier. Stable for the lifetime of the record (soft-deleted records keep their ID).
  - `url` string, required — Canonical API path.
  - `title` string, required — Caller-supplied display title.
  - `integration` string, required — Provider display title (not the lowercase slug used on create). Use for UI; for references in other requests use `id`.
  - `target_platform` 'iOS' | 'Android' | 'Stripe', required — Store the integration forwards events for. Case-sensitive.
  - `active` 0 | 1 | 2, required — Integration state. - `0` — paused / draft (no events forwarded). - `1` — active (events forwarded). - `2` — error (delivery worker suspended the pipeline; inspect `last_error_message`/`last_error_at`). Cannot be set by callers.
  - `created_at` string, date-time, required — ISO 8601 creation timestamp.
  - `updated_at` string, date-time, required — ISO 8601 last-update timestamp.
  - `last_delivery_at` string, date-time, nullable, required — ISO 8601 timestamp of the most recent successful delivery, or `null` if never delivered.
  - `last_error_at` string, date-time, nullable, required — ISO 8601 timestamp of the most recent delivery failure, or `null`.
  - `last_error_message` string, nullable, required — Human-readable description of the most recent delivery failure, or `null`.
  - `delivery_error_count` integer, required — Running count of delivery failures since the last successful delivery.

## Other responses

- `400` — Invalid request
- `401` — Unauthorized
- `403` — Feature not available
- `409` — Idempotency conflict — same key with different body
- `415` — Unsupported media type
- `429` — Rate limit exceeded
- `500` — Internal error
- `502` — Storage error
- `504` — Upstream timeout

---

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