# Track link progress and detect failures and their reasons

**URL:** <https://community.developer.gridx.de/t/track-link-progress-and-detect-failures-and-their-reasons/955>\
**Category:** ☁️ API Documentation: Cloud Connector\
**Created:** [October 5, 2026, 11:58am UTC](https://community.developer.gridx.de/t/track-link-progress-and-detect-failures-and-their-reasons/955 "2026-10-05T11:58:31Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![j.meier](https://dub1.discourse-cdn.com/flex005/user_avatar/community.developer.gridx.de/j.meier/32/91_2.png) [@j.meier](https://community.developer.gridx.de/u/j.meier)\
**Post date:** [October 5, 2026, 11:58am UTC](https://community.developer.gridx.de/t/track-link-progress-and-detect-failures-and-their-reasons/955/1 "2026-10-05T11:58:31Z")

</div>

Linking used to be a one-shot effort: you started the link and waited until the asset was created. This could take a long time, or simply fail — and either way, you had no way to confirm whether the session had actually failed, let alone why. That made it hard to know whether a retry was worth it or the failure was permanent.

This is now solved with the introduction of **link sessions**. The [link endpoint](https://community.developer.gridx.de/t/api-documentation-cloud-connector-api/359#post-/systems/-system_id-/assets/link) now includes a `sessionID` in its response, which you can poll via [`GET /systems/{system_id}/linksessions/{session_id}`](https://community.developer.gridx.de/t/api-documentation-cloud-connector-api/359#get-/systems/-system_id-/linksessions/-session_id-) to track its progress.

**Status**

The response carries an aggregate `status` for the whole session, plus a `results` array with one entry per requested asset type:

- `pending` — still in progress; keep polling
- `completed` — finished successfully; the result carries the created `assetId`
- `failed` — finished unsuccessfully; the result carries a `failureKind` (see [API docs](https://community.developer.gridx.de/t/api-documentation-cloud-connector-api/359#get-/systems/-system_id-/linksessions/-session_id-) for possible values)
- `expired` — no completion arrived within the session’s TTL; start a new link attempt
- `superseded` — replaced by a newer link attempt for the same system

The session-level `status` is derived from the per-asset-type results: `pending` while any asset type is still unresolved, `completed` only once every asset type succeeded, and `failed` if at least one of them failed.

**Why multiple results?**

A single link call can request several asset types at once (e.g. `assetTypes: ["EV", "EVSTATION"]`). Each asset type is tracked independently, so `results` contains one entry per requested asset type with its own status and outcome, instead of a single outcome for the whole call.
