> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tckg.factagora.com/llms.txt
> Use this file to discover all available pages before exploring further.

# List edges and their strength

> GET /v1/edges. The edges a space knew at as_of and, with with=strength, the measured strength of each causal edge, as known then.

Without `with`, this is the edge read: the rows of `tckg.read_edges`. With `with=strength`, each row also carries `strength`: one item per measurement fact that points at the edge (see [write measurements](/api-reference/measurements)), valued the way [resolve](/api-reference/resolve) values a fact. The server computes nothing; it masks the measurements by `as_of` and picks with the fact's policy.

An edge nobody measured has `strength: []`, and so does every edge that is not causal (`SUPPORTS`, `SUPERSEDES`, `MENTIONS` and the rest are never scored). That is the normal answer, not an error.

## Query parameters

**as\_of** `timestamp or date` *required*

Knowledge time. Edges, their endpoints and the measurements must have been known by then. A date is widened to its end of day (UTC). Without it the request is a `400` (`TCKG_AS_OF_REQUIRED`).

**valid\_at** `timestamp`

Content time. Only edges in force at `valid_at` (default `as_of`). A measurement whose sample starts after `valid_at` answers `no_value_at`.

**space** `string`

Edges whose source is in this space, and only measurements written in this space.

**family** `string`

`causal`, `argumentative`, `temporal` or `general`.

**with** `string`

`strength` adds the `strength` column. Any other value is a `400`.

**min\_grade** `integer`

With `with=strength`: keep only edges with an answered item of at least this grade. Without it no edge is filtered.

**horizon** `string`

With `with=strength`: keep only the items of this horizon. Edges are not filtered; with `min_grade`, the grade is judged on this horizon's items.

**rules\_as\_of** `timestamp`

With `with=strength`: apply the fact declarations in force at this instant, as in [resolve](/api-reference/resolve). A measurement backfilled to before its fact was declared is `undeclared_fact` unless you pass it.

`min_grade`, `horizon` and `rules_as_of` without `with=strength` are a `400` (`TCKG_STRENGTH_WITHOUT_WITH`).

## Response

**items** `EdgeRow[]`

`source_id`, `target_id`, `edge_type`, `family`, `tenant`, `status`, `confidence`, `lag`, `mechanism`, `properties`, `asserted_at`, `captured_at`, `valid`, `known_at`, `backfill_batch`, and with `with=strength`, `strength`. The first fifteen are the same with or without `with`.

**items\[].strength** `object[]`

One item per measurement fact, in `fact_key` order:

* `fact_key`, `horizon`
* `status`, `reason`, `value`: the fact's resolved value, or `no_answer` and why: `unresolved_conflict` (two measurements known at the same instant), `no_value_at` (`valid_at` is outside the sample), `undeclared_fact` (no declaration then; see `rules_as_of`), `edge_mismatch` (the winning measurement was taken on another edge)
* `id`, `known_at`: the winning measurement and when it became known
* `candidates`: how many measurements were considered
* `prereg`: `{commitment_id, known_at, before_measurement}` when the measurement links a preregistration; `before_measurement` says the commitment was known before the measurement

**certificate** `object`

Scoped to `space`. `masked` counts what was hidden because it was known after `as_of`, measurements included.

```bash Request theme={null}
curl -s -G $TCKG/v1/edges --data-urlencode as_of=2026-10-21 \
  --data-urlencode space=farm:demo --data-urlencode with=strength
```

```json Response theme={null}
{"items": [{"source_id": "factor:rain", "target_id": "entity:harvest", "edge_type": "CAUSES", "family": "causal",
            "...": "...",
            "strength": [{"fact_key": "measure.factor:rain.causes.entity:harvest.30d", "status": "answered", "reason": null,
                          "id": "measure.factor:rain.causes.entity:harvest.30d.20261020T121705.000000Z",
                          "known_at": "2026-10-20T12:17:05+00:00", "horizon": "30d",
                          "value": {"grade": 2, "beta": 0.12, "se": 0.04, "horizon": "30d", "method": "event_study", "method_hash": "9f2c..."},
                          "candidates": 2,
                          "prereg": {"commitment_id": "commitment:prereg:rain-harvest", "known_at": "2026-09-01T00:00:00+00:00", "before_measurement": true}}]},
           {"source_id": "factor:rain", "target_id": "entity:flour", "edge_type": "CAUSES", "...": "...", "strength": []}],
 "certificate": {"as_of": "2026-10-21T23:59:59.999999+00:00", "...": "..."}}
```

Ask the same question with `as_of` before a measurement was written and the edge reads `strength: []` again: a measurement is known from when the server recorded it, never earlier.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.