---
title: "Setup integration"
method: POST
path: "/iapi/project/{projectId}/integrations/{service}/setup"
tags: ["Integrations"]
---

# Setup integration

`POST /iapi/project/{projectId}/integrations/{service}/setup`

## Request

- Base URL: `https://api.websitepublisher.ai`
- URL: `https://api.websitepublisher.ai/iapi/project/{projectId}/integrations/{service}/setup`
- Auth: OAuth 2 (authorization code, authorization URL `https://api.websitepublisher.ai/dapi/oauth/authorize`, token URL `https://api.websitepublisher.ai/dapi/oauth/token`, scopes: `read`, `write`)

Configure an integration by storing its API keys in the vault. Use listAvailableIntegrations to see required secrets.

## Path parameters

- `projectId` integer, required
- `service` string, required

## Request body

- IntegrationSetup
  - `secrets_json` string, required: JSON-encoded secrets object. Use listAvailableIntegrations for required keys. Example for Resend: {"resend_api_key": "re_abc123..."}

## Response `200`

Integration configured

## Other responses

- `429`: Integration limit reached (upgrade plan)

---

[API](https://skmtc.dev/websitepublisher/apis/websitepublisher-ai-api.md) · [All operations](https://skmtc.dev/websitepublisher/apis/websitepublisher-ai-api/llms.txt) · [OpenAPI document](https://skmtc.dev/websitepublisher/apis/websitepublisher-ai-api/revisions/e9df1ef10551?raw)
