Connections & status

Connections & status

List your connections

GET /partner/v1/requests
Authorization: Bearer <access token>

Returns every active connection your organization holds with the token’s user — the recovery path when you did not store request_id at connect time. Pending invitations are never listed: before consent there is no connection.

{
  "requests": [
    {
      "requestId": "6f9b2c9e-6a4e-4a44-9d5e-2f0f6f2a9b11",
      "manifestId": "b1af2d3c-9c1f-4f6e-8f2a-77aa01c2d9f0",
      "manifestName": "Investor onboarding",
      "manifestVersion": 3,
      "state": "active"
    }
  ]
}

manifestVersion is pinned at consent — re-publishing a manifest never widens a live connection; new asks require a new consent.

Per-slot status

GET /partner/v1/requests/{requestId}/status

This is the surface to drive your UI from: the connection’s effective state, the manifest’s presentation groups, and each slot with its grant status.

{
  "state": "active",
  "groups": [
    { "id": "identity", "label": "Identity", "order": 1 },
    { "id": "family", "label": "Your children", "order": 2 }
  ],
  "subjects": [
    { "id": "1a7e…", "relation": "child", "label": "Each child you cover", "repeat": true }
  ],
  "items": [
    {
      "slotId": "0d4e7a52-1a53-4d69-a9be-52bfa4e0a1c7",
      "label": "Passport",
      "group": "identity",
      "kind": "id_document",
      "target": "Passport",
      "verbs": [],
      "status": "granted",
      "verification": [
        {
          "method": "facetec-3d",
          "level": "high",
          "verifiedAt": "2026-08-01T09:12:44Z",
          "version": 1
        }
      ]
    },
    {
      "slotId": "7c2b9e11-30cf-4f2e-9f57-b8a4f7f4f2ad",
      "label": "Proof of address",
      "group": "identity",
      "kind": "schema",
      "target": "PersonAddress",
      "verbs": ["fill", "keep"],
      "status": "pending"
    },
    {
      "slotId": "9e01c4d8-2b1f-4b7e-8c53-6a2f19d5b0aa",
      "label": "Child's name",
      "group": "family",
      "subject": "1a7e…",
      "kind": "schema",
      "target": "PersonFullName",
      "verbs": ["fill", "keep"],
      "status": "pending"
    }
  ]
}
  • slotId is the canonical address of an item — use it on every other route. kind/target remain for display.
  • verbs say what you may do BEYOND reading. Reading a granted item is what a connection is, so it needs no verb and an empty list is ordinary — the plain ask. fill lets you list the slot’s candidates, attach one, or create a value in it; edit lets you update or delete the granted document on the user’s behalf; keep means your organization holds a copy that survives revocation and receives later versions.
  • status is granted or pending — nothing else. pending is deliberately indistinguishable from “the user refused” and from “the user has no such data”. Do not build UI that treats pending as “exists but not yet shared”; render it as not provided with a way to fill it in-app.
  • subjects is the cast — the people this manifest asks about beyond the account holder (“each child you cover”). A slot carrying subject asks about that role; with repeat: true the user answers it once per family member, in your app — see Relatives & subjects.
  • verification is assurance metadata about the current version of a granted item — what was checked, how strong, when. Never evidence, present on granted items only, and absent again the moment a new unverified version is written.
  • state is evaluated at call time against both clocks: the request’s state machine and the terms’ retention window. A connection past its retention reads expired and stops serving immediately.