---
title: "Update an integration"
method: PATCH
path: "/api/v1/integrations/{id}"
tags: ["integrations"]
---

# Update an integration

`PATCH /api/v1/integrations/{id}`

## Request

- Base URL: `https://app.blueticked.com`
- URL: `https://app.blueticked.com/api/v1/integrations/{id}`
- Auth: HTTP bearer

Update any subset of an integration's fields, including its live status.

The integration is returned FLAT (fields at the top level, no `integration` wrapper).

Send `auth_secret` to rotate the sealed secret, or `clear_auth_secret: true` to drop it.

Set `status: "active"` to resume, `"paused"` to stop firing.

An integration that only receives events has no outbound mapping: `field_map`, `response_map`, `method`, `headers`, `timeout_ms`, `auth_secret` or `auth_header_name` on it is refused with 409 `conflict` and `details.reason` "receive_only", and nothing is written. Setting a real `endpoint_url` makes it two-way.

## Path parameters

- `id` string, required

## Request body

- object
  - `name` string
  - `description` string, nullable
  - `kind` 'custom_webhook' | 'booking_api' | 'crm_api' | 'calendar' | 'other'
  - `business_id` string, uuid, nullable
  - `status` 'active' | 'paused' | 'errored'
  - `method` 'POST' | 'PUT' | 'PATCH'
  - `endpoint_url` string, uri
  - `auth_type` 'none' | 'signature' | 'bearer' | 'api_key'
  - `auth_secret` string
  - `clear_auth_secret` boolean
  - `auth_header_name` string
  - `auth_prefix` string
  - `headers` object
  - `field_map` object[]
    - `source` string, required
    - `target` string, required
    - `required` boolean
    - `fallback` unknown
  - `response_map` object[]
    - `source` string, required
    - `target` string, required
    - `required` boolean
    - `fallback` unknown
  - `sample_payload` object
  - `timeout_ms` integer
  - `inbound_target_channel` 'whatsapp' | 'sms' | 'email', nullable
  - `inbound_field_map` object[]
    - `source` string, required
    - `target` string, required
    - `type` 'date'

## Response `200`

Success

- object
  - `organization_id` string, uuid, required
  - `auth_config` object, required
  - `sample_payload` object, required
  - `headers` object, required
  - `field_map` object[], required
    - `source` string, required
    - `target` string, required
    - `required` boolean
    - `fallback` unknown
  - `response_map` object[], required
    - `source` string, required
    - `target` string, required
    - `required` boolean
    - `fallback` unknown
  - `inbound_field_map` object[], required
    - `source` string, required
    - `target` string, required
    - `required` boolean
    - `fallback` unknown
  - `inbound_enabled` boolean, required
  - `credential_updated_at` string, date-time, nullable, required
  - `credential_updated_by` string, nullable, required
  - `inbound_token_hint` string, nullable, required
  - `inbound_last_at` string, date-time, nullable, required
  - `inbound_last_status` 'accepted' | 'rejected' | 'null', nullable, required
  - `inbound_target_channel` 'whatsapp' | 'sms' | 'email' | 'null', nullable, required
  - `last_success_at` string, date-time, nullable, required
  - `last_failure_at` string, date-time, nullable, required
  - `last_delivery_at` string, date-time, nullable, required
  - `last_health_alert_at` string, date-time, nullable, required
  - `last_test_status` 'passed' | 'failed' | 'null', nullable, required
  - `last_test_at` string, date-time, nullable, required
  - `last_error` string, nullable, required
  - `last_response_status` number, nullable, required
  - `id` string, uuid, required
  - `business_id` string, uuid, nullable, required
  - `name` string, required
  - `description` string, nullable, required
  - `kind` 'custom_webhook' | 'booking_api' | 'crm_api' | 'calendar' | 'other', required
  - `status` 'active' | 'paused' | 'errored', required
  - `method` 'POST' | 'PUT' | 'PATCH', required
  - `endpoint_url` string, required
  - `auth_type` 'none' | 'signature' | 'bearer' | 'api_key', required
  - `has_secret` boolean, required
  - `health_status` 'unknown' | 'healthy' | 'degraded' | 'failing', required
  - `success_count` number, required
  - `failure_count` number, required
  - `timeout_ms` number, required
  - `created_at` string, date-time, required
  - `updated_at` string, date-time, required
  - `connector_key` string, nullable, required
  - `connection_state` 'pending' | 'connected' | 'expiring' | 'needs_reauth' | 'revoked' | 'null', nullable, required
  - `connection_state_since` string, nullable, required
  - `connection_state_reason` string, nullable, required
  - `external_account_label` string, nullable, required
  - `request_id` string, required

## Other responses

- `400`: Validation failed
- `401`: Unauthorized: missing or invalid API key
- `402`: Insufficient wallet balance
- `403`: Forbidden: scope, plan limit, or suspension
- `404`: Not found
- `409`: Conflict (idempotency-key reuse or resource in use)
- `413`: Request body above the endpoint's size limit
- `422`: Understood but refused: the request is well-formed, the action is not permitted for this resource
- `429`: Rate limited
- `500`: Internal error
- `502`: An upstream provider refused or failed the request
- `503`: Channel or send queue unavailable

---

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