---
title: "Sync external binding"
method: POST
path: "/api/orgs/{org}/external/sync"
tags: ["External"]
---

# Sync external binding

`POST /api/orgs/{org}/external/sync`

Triggers a synchronization of a named external binding (e.g. GitHub repository
adapter). Reconciles local resource state against the external provider.

## Path parameters

- `org` string, required

## Request body

- SyncInput
  - `bindingName` string — Name of the TransportBinding to sync
  - `kind` string, required — Resource kind being synced
  - `localName` string, required — Local resource name
  - `namespace` string — Kubernetes namespace (defaults to org namespace)
  - `spec` object — Local resource spec
  - `externalEnvelope` object — External provider metadata
    - `nativeId` string — External provider's identifier
    - `url` string, uri
    - `etag` string — ETag / version for optimistic concurrency
    - `providerRef` string
  - `watermark` string — Sync watermark for incremental syncs

## Response `200`

Sync result

- object
  - `synced` boolean
  - `resource` KradleResource — A Kradle (Kubernetes-style) resource object
    - `apiVersion` string, required
    - `kind` string, required — Resource kind (e.g. Repository, AgentStack)
    - `metadata` object, required
      - `name` string, required
      - `namespace` string
      - `labels` object
      - `annotations` object
      - `creationTimestamp` string, date-time
    - `spec` object — Resource spec (kind-specific fields)
    - `status` object — Resource status (set by controller)
  - `conflicts` object[]

## Other responses

- `400` — Bad request — invalid input or malformed JSON
- `500` — Internal server error

---

[API](https://skmtc.dev/a5c-ai/apis/kradle-api.md) · [All operations](https://skmtc.dev/a5c-ai/apis/kradle-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/a5c-ai/kradle-api/revisions/b5eadb2ecd8b/schema)
