Skip to content
POST /connection/{id}/run-post-install

Re-runs the connector's declared post-install steps (identity resolution, provider-side setup) against this connection — the repair for `post_install_error`, and the way to re-apply setup after a variable was corrected. No body. Same mutation bar as reconnect; the detail read's `can_run_post_install` is the render gate. Answers `202 { "started": true }`, never `200`: Saffron runs the steps detached, so the real outcome lands on the row (`status`/`last_error`) through a later read — re-fetch on the user's own refresh rather than sleeping and calling the result an answer. `409` when the connector declares no steps (`no_post_install`), the connection is unbound (`not_bound`), its sign-in needs to happen again (`needs_reauth`), or Saffron no longer holds the account (`connection_disconnected`).

Path Parameters

idstring
required·

Connection id (conn_…).

curl -X POST 'https://api.elaichi.ai/connection/<id>/run-post-install' \
  -H 'Authorization: Bearer $ELAICHI_API_TOKEN' \
  -H 'Content-Type: application/json'
const response = await fetch('https://api.elaichi.ai/connection/<id>/run-post-install', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer ' + process.env.ELAICHI_API_TOKEN,
    'Content-Type': 'application/json',
  },
});

const data = await response.json();
console.log(data);
import os
import requests

url = "https://api.elaichi.ai/connection/<id>/run-post-install"
headers = {
    "Authorization": f"Bearer {os.environ['ELAICHI_API_TOKEN']}",
    "Content-Type": "application/json",
}

response = requests.post(url, headers=headers)
print(response.json())