---
title: "Create edges between facts"
method: POST
path: "/pots/{pot_id}/edges"
tags: ["edges", "edges"]
---

# Create edges between facts

`POST /pots/{pot_id}/edges`

Create one or more edges between facts in a POT.

After creating edges, runs POT Score propagation to update
affected fact scores based on the new relationships.

- **pot_id**: UUID of the POT
- **edges_data**: List of edge definitions (from_id, to_id, type, weight, rationale)

Returns the created edges and triggers POT Score propagation.

## Path parameters

- `pot_id` string, uuid, required

## Request body

- EdgeCreate[]
  - `from_id` string, uuid, required
  - `to_id` string, uuid, required
  - `type` 'supports' | 'contradicts' | 'resolved_contradiction' | 'refines' | 'derives_from' | 'is_part_of' | 'extends' | 'cites' | 'related_to', required — Types of semantic relationships between facts. M7 uses a simplified subset. Full taxonomy in edge-types.md will be implemented in M8+ when GraphRAG is introduced.
  - `weight` number, required
  - `rationale` string
  - `detected_by` string
  - `confidence` number

## Response `201`

Edges created successfully

- EdgeListResponse — Response for list edges endpoint.
  - `edges` Edge[], required
    - `id` string, required — Unique edge identifier
    - `pot_id` string, uuid, required — POT this edge belongs to
    - `workspace_id` string, uuid, required — Workspace this edge belongs to
    - `from_id` string, uuid, required — Source fact ID (A in A → B)
    - `to_id` string, uuid, required — Target fact ID (B in A → B)
    - `type` 'supports' | 'contradicts' | 'resolved_contradiction' | 'refines' | 'derives_from' | 'is_part_of' | 'extends' | 'cites' | 'related_to', required — Types of semantic relationships between facts. M7 uses a simplified subset. Full taxonomy in edge-types.md will be implemented in M8+ when GraphRAG is introduced.
    - `weight` number, required — Confidence in relationship (0.0-1.0)
    - `rationale` string — Brief explanation of why this relationship exists
    - `detected_by` string — Detector/model that identified this edge
    - `confidence` number — Detection confidence (0.0-1.0)
    - `validation_status` string — Validation status (auto-approved, pending, validated, rejected)
    - `resolution_type` string, nullable — Resolution type (confirmed_a, confirmed_b, both_valid, needs_update, dismissed)
    - `resolved_by_name` string, nullable — Name of the person who resolved the contradiction
    - `resolved_by_role` string, nullable — Role of the person who resolved the contradiction
    - `resolved_by_contributor_id` string, uuid, nullable — Contributor registry ID of the person who resolved the contradiction
    - `resolved_at` string, date-time, nullable — When the contradiction was resolved
    - `resolution_notes` string, nullable — Notes about the resolution
    - `created_at` string, date-time, nullable
    - `updated_at` string, date-time, nullable
  - `total` integer, required
  - `pot_id` string, uuid, required

## Other responses

- `404` — POT or referenced facts not found
- `422` — Validation error

---

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