docs.vin

comms

The comms noun — identity, lifecycle, events, and every capability as an anchored section: 20 capabilities, 0 live, 20 sandbox, 0 declared.

comms is one of the estate's 317 automotive nouns — a job a car needs done. It carries 20 capabilities: 0 live, 20 sandbox, 0 declared · doors aggregator.vin.

Identity

Nouncomms
PillarServices (facets: 6 data · 12 services · 2 commerce)
Capabilities20 — 0 live · 20 sandbox · 0 declared
EntitiesCustomer
Doorsaggregator.vin
SDKVin.comms.* from apis.vin
Address/catalog/comms#{action} — the anchor IS the wire name minus comms.

Events

The vocabulary this noun can append to the record — 16 past-tense, versioned event types, each linked to the capability that emits it:

Discover & read

read

comms.read · GET /comms/read · gate none · sandbox · answers CommsRead@1

FieldTypeRequiredNotes
vinstringno

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /3FTTW8BA7SRB20266 (the VIN lens).

Try it — sandbox: every call answers a deterministic, provenance-labeled simulated payload ({ environment, simulated } in the body). Force any documented outcome with the magic triggers. Going live is a connect, never a ballot: submit the credential at integrates.vin (dealer systems) or connects.vin (consumer accounts) — submissions enter the activation queue and rank live rollout.

the SDK — comms.read
import { comms } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await comms.read({"vin":"3FTTW8BA7SRB20266"})
GET /comms/read
curl 'https://apis.vin/comms/read?vin=3FTTW8BA7SRB20266'

Receipt — the sandbox wire answered the request above with this exact body at build time. Captured by the receipts runner (timestamped, provenance in the payload), never authored; it re-executes only when this descriptor changes.

receipt · executed 2026-08-17T12:42:09.253Z · HTTP 200
{
  "type": "OK",
  "answers": "CommsRead@1",
  "value": {
    "partyId": "ID-11f17424",
    "type": "person",
    "name": "Ava Good",
    "identifiers": [
      {
        "kind": "cast-key",
        "value": "ava-good"
      }
    ],
    "roles": [
      {
        "role": "customer"
      }
    ],
    "status": "active",
    "noun": "comms",
    "asOf": "2026-08-10",
    "identityId": "ID-11f17424",
    "threadId": "TH-31e306be",
    "thread": {
      "id": "TH-31e306be",
      "messages": [
        {
          "id": "MSG-a633f5ce",
          "date": "2026-04-12",
          "kind": "welcome",
          "direction": "outbound",
          "body": "Welcome — your garage and preferences are on file."
        },
        {
          "id": "MR-bdb62aa4",
          "date": "2026-08-07",
          "kind": "maintenance-reminder",
          "direction": "outbound",
          "body": "Scheduled service is due — reply to book your appointment."
        }
      ],
      "unread": 0
    }
  },
  "evidence": {
    "partyId": "ID-11f17424",
    "type": "person",
    "name": "Ava Good",
    "identifiers": [
      {
        "kind": "cast-key",
        "value": "ava-good"
      }
    ],
    "roles": [
      {
        "role": "customer"
      }
    ],
    "status": "active",
    "noun": "comms",
    "asOf": "2026-08-10",
    "identityId": "ID-11f17424",
    "threadId": "TH-31e306be",
    "thread": {
      "id": "TH-31e306be",
      "messages": [
        {
          "id": "MSG-a633f5ce",
          "date": "2026-04-12",
          "kind": "welcome",
          "direction": "outbound",
          "body": "Welcome — your garage and preferences are on file."
        },
        {
          "id": "MR-bdb62aa4",
          "date": "2026-08-07",
          "kind": "maintenance-reminder",
          "direction": "outbound",
          "body": "Scheduled service is due — reply to book your appointment."
        }
      ],
      "unread": 0
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "identity-comms-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

history

comms.history · GET /comms/history · gate none · sandbox · answers CommsHistory@1

FieldTypeRequiredNotes
vinstringno

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /3FTTW8BA7SRB20266 (the VIN lens).

Try it — sandbox: every call answers a deterministic, provenance-labeled simulated payload ({ environment, simulated } in the body). Force any documented outcome with the magic triggers. Going live is a connect, never a ballot: submit the credential at integrates.vin (dealer systems) or connects.vin (consumer accounts) — submissions enter the activation queue and rank live rollout.

the SDK — comms.history
import { comms } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await comms.history({"vin":"3FTTW8BA7SRB20266"})
GET /comms/history
curl 'https://apis.vin/comms/history?vin=3FTTW8BA7SRB20266'

Receipt — the sandbox wire answered the request above with this exact body at build time. Captured by the receipts runner (timestamped, provenance in the payload), never authored; it re-executes only when this descriptor changes.

receipt · executed 2026-08-17T12:42:09.247Z · HTTP 200
{
  "type": "OK",
  "answers": "CommsHistory@1",
  "value": {
    "partyId": "ID-11f17424",
    "type": "person",
    "name": "Ava Good",
    "identifiers": [
      {
        "kind": "cast-key",
        "value": "ava-good"
      }
    ],
    "roles": [
      {
        "role": "customer"
      }
    ],
    "status": "active",
    "noun": "comms",
    "asOf": "2026-08-10",
    "identityId": "ID-11f17424",
    "threadId": "TH-31e306be",
    "events": [
      {
        "date": "2026-04-12",
        "kind": "welcome",
        "messageId": "MSG-a633f5ce"
      },
      {
        "date": "2026-08-07",
        "kind": "maintenance-reminder",
        "messageId": "MR-bdb62aa4"
      }
    ]
  },
  "evidence": {
    "partyId": "ID-11f17424",
    "type": "person",
    "name": "Ava Good",
    "identifiers": [
      {
        "kind": "cast-key",
        "value": "ava-good"
      }
    ],
    "roles": [
      {
        "role": "customer"
      }
    ],
    "status": "active",
    "noun": "comms",
    "asOf": "2026-08-10",
    "identityId": "ID-11f17424",
    "threadId": "TH-31e306be",
    "events": [
      {
        "date": "2026-04-12",
        "kind": "welcome",
        "messageId": "MSG-a633f5ce"
      },
      {
        "date": "2026-08-07",
        "kind": "maintenance-reminder",
        "messageId": "MR-bdb62aa4"
      }
    ]
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "identity-comms-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

thread

comms.thread · POST /comms/thread · gate key · sandbox · answers CommsThread@1

No input — this capability takes no request body.

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /3FTTW8BA7SRB20266 (the VIN lens).

Try it — sandbox: every call answers a deterministic, provenance-labeled simulated payload ({ environment, simulated } in the body). Force any documented outcome with the magic triggers. Going live is a connect, never a ballot: submit the credential at integrates.vin (dealer systems) or connects.vin (consumer accounts) — submissions enter the activation queue and rank live rollout.

EmitsComms.threaded@1.

the SDK — comms.thread
import { comms } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await comms.thread()
POST /comms/thread
curl -X POST https://apis.vin/comms/thread \
  -H 'content-type: application/json' \
  -d '{}'

Receipt — the sandbox wire answered the request above with this exact body at build time. Captured by the receipts runner (timestamped, provenance in the payload), never authored; it re-executes only when this descriptor changes.

receipt · executed 2026-08-16T14:50:09.698Z · HTTP 200
{
  "type": "OK",
  "answers": "CommsThread@1",
  "value": {
    "partyId": "ID-11f17424",
    "type": "person",
    "name": "Ava Good",
    "identifiers": [
      {
        "kind": "cast-key",
        "value": "ava-good"
      }
    ],
    "roles": [
      {
        "role": "customer"
      }
    ],
    "status": "active",
    "noun": "comms",
    "asOf": "2026-08-10",
    "identityId": "ID-11f17424",
    "threadId": "TH-31e306be",
    "thread": {
      "id": "TH-31e306be",
      "subject": "Ava Good",
      "messageCount": 1,
      "messages": [
        {
          "id": "MSG-a633f5ce",
          "date": "2026-04-12",
          "kind": "welcome",
          "direction": "outbound",
          "body": "Welcome — your garage and preferences are on file."
        }
      ]
    }
  },
  "evidence": {
    "partyId": "ID-11f17424",
    "type": "person",
    "name": "Ava Good",
    "identifiers": [
      {
        "kind": "cast-key",
        "value": "ava-good"
      }
    ],
    "roles": [
      {
        "role": "customer"
      }
    ],
    "status": "active",
    "noun": "comms",
    "asOf": "2026-08-10",
    "identityId": "ID-11f17424",
    "threadId": "TH-31e306be",
    "thread": {
      "id": "TH-31e306be",
      "subject": "Ava Good",
      "messageCount": 1,
      "messages": [
        {
          "id": "MSG-a633f5ce",
          "date": "2026-04-12",
          "kind": "welcome",
          "direction": "outbound",
          "body": "Welcome — your garage and preferences are on file."
        }
      ]
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "identity-comms-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

callTrack

comms.callTrack · GET /comms/call-track · gate none · sandbox · answers CommsCallTrack@1

No input — this capability takes no request body.

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /3FTTW8BA7SRB20266 (the VIN lens).

Try it — sandbox: every call answers a deterministic, provenance-labeled simulated payload ({ environment, simulated } in the body). Force any documented outcome with the magic triggers. Going live is a connect, never a ballot: submit the credential at integrates.vin (dealer systems) or connects.vin (consumer accounts) — submissions enter the activation queue and rank live rollout.

the SDK — comms.callTrack
import { comms } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await comms.callTrack()
GET /comms/call-track
curl 'https://apis.vin/comms/call-track'

Receipt — the sandbox wire answered the request above with this exact body at build time. Captured by the receipts runner (timestamped, provenance in the payload), never authored; it re-executes only when this descriptor changes.

receipt · executed 2026-08-16T14:50:09.696Z · HTTP 200
{
  "type": "OK",
  "answers": "CommsCallTrack@1",
  "value": {
    "partyId": "ID-11f17424",
    "type": "person",
    "name": "Ava Good",
    "identifiers": [
      {
        "kind": "cast-key",
        "value": "ava-good"
      }
    ],
    "roles": [
      {
        "role": "customer"
      }
    ],
    "status": "active",
    "noun": "comms",
    "asOf": "2026-08-10",
    "identityId": "ID-11f17424",
    "threadId": "TH-31e306be",
    "call": {
      "id": "CALL-ff79ef1e",
      "durationSec": 468,
      "outcome": "completed",
      "recorded": true
    }
  },
  "evidence": {
    "partyId": "ID-11f17424",
    "type": "person",
    "name": "Ava Good",
    "identifiers": [
      {
        "kind": "cast-key",
        "value": "ava-good"
      }
    ],
    "roles": [
      {
        "role": "customer"
      }
    ],
    "status": "active",
    "noun": "comms",
    "asOf": "2026-08-10",
    "identityId": "ID-11f17424",
    "threadId": "TH-31e306be",
    "call": {
      "id": "CALL-ff79ef1e",
      "durationSec": 468,
      "outcome": "completed",
      "recorded": true
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "identity-comms-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

coBrowse

comms.coBrowse · POST /comms/co-browse · gate key · sandbox · answers CommsCoBrowse@1

No input — this capability takes no request body.

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /3FTTW8BA7SRB20266 (the VIN lens).

Try it — sandbox: every call answers a deterministic, provenance-labeled simulated payload ({ environment, simulated } in the body). Force any documented outcome with the magic triggers. Going live is a connect, never a ballot: submit the credential at integrates.vin (dealer systems) or connects.vin (consumer accounts) — submissions enter the activation queue and rank live rollout.

EmitsComms.coBrowsed@1.

the SDK — comms.coBrowse
import { comms } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await comms.coBrowse()
POST /comms/co-browse
curl -X POST https://apis.vin/comms/co-browse \
  -H 'content-type: application/json' \
  -d '{}'

Receipt — the sandbox wire answered the request above with this exact body at build time. Captured by the receipts runner (timestamped, provenance in the payload), never authored; it re-executes only when this descriptor changes.

receipt · executed 2026-08-16T14:50:09.696Z · HTTP 200
{
  "type": "OK",
  "answers": "CommsCoBrowse@1",
  "value": {
    "partyId": "ID-11f17424",
    "type": "person",
    "name": "Ava Good",
    "identifiers": [
      {
        "kind": "cast-key",
        "value": "ava-good"
      }
    ],
    "roles": [
      {
        "role": "customer"
      }
    ],
    "status": "active",
    "noun": "comms",
    "asOf": "2026-08-10",
    "identityId": "ID-11f17424",
    "threadId": "TH-31e306be",
    "session": {
      "id": "CB-1797835e",
      "kind": "co-browse",
      "status": "completed"
    }
  },
  "evidence": {
    "partyId": "ID-11f17424",
    "type": "person",
    "name": "Ava Good",
    "identifiers": [
      {
        "kind": "cast-key",
        "value": "ava-good"
      }
    ],
    "roles": [
      {
        "role": "customer"
      }
    ],
    "status": "active",
    "noun": "comms",
    "asOf": "2026-08-10",
    "identityId": "ID-11f17424",
    "threadId": "TH-31e306be",
    "session": {
      "id": "CB-1797835e",
      "kind": "co-browse",
      "status": "completed"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "identity-comms-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Quote & price

openRate

comms.openRate · GET /comms/open-rate · gate key · sandbox · answers CommsOpenRate@1

FieldTypeRequiredNotes
vinstringno

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /3FTTW8BA7SRB20266 (the VIN lens).

Try it — sandbox: every call answers a deterministic, provenance-labeled simulated payload ({ environment, simulated } in the body). Force any documented outcome with the magic triggers. Going live is a connect, never a ballot: submit the credential at integrates.vin (dealer systems) or connects.vin (consumer accounts) — submissions enter the activation queue and rank live rollout.

the SDK — comms.openRate
import { comms } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await comms.openRate({"vin":"3FTTW8BA7SRB20266"})
GET /comms/open-rate
curl 'https://apis.vin/comms/open-rate?vin=3FTTW8BA7SRB20266'

Receipt — the sandbox wire answered the request above with this exact body at build time. Captured by the receipts runner (timestamped, provenance in the payload), never authored; it re-executes only when this descriptor changes.

receipt · executed 2026-08-17T12:42:09.252Z · HTTP 200
{
  "type": "OK",
  "answers": "CommsOpenRate@1",
  "value": {
    "partyId": "ID-11f17424",
    "type": "person",
    "name": "Ava Good",
    "identifiers": [
      {
        "kind": "cast-key",
        "value": "ava-good"
      }
    ],
    "roles": [
      {
        "role": "customer"
      }
    ],
    "status": "active",
    "noun": "comms",
    "asOf": "2026-08-10",
    "identityId": "ID-11f17424",
    "threadId": "TH-31e306be",
    "engagement": {
      "openPct": 25,
      "clickPct": 7
    }
  },
  "evidence": {
    "partyId": "ID-11f17424",
    "type": "person",
    "name": "Ava Good",
    "identifiers": [
      {
        "kind": "cast-key",
        "value": "ava-good"
      }
    ],
    "roles": [
      {
        "role": "customer"
      }
    ],
    "status": "active",
    "noun": "comms",
    "asOf": "2026-08-10",
    "identityId": "ID-11f17424",
    "threadId": "TH-31e306be",
    "engagement": {
      "openPct": 25,
      "clickPct": 7
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "identity-comms-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Apply & book

schedule

comms.schedule · POST /comms/schedule · gate offer · sandbox · answers CommsSchedule@1

FieldTypeRequiredNotes
vinstringno

The gate is a 402 OFFER — the price and a hard ceiling on the wire, with a durable intent that executes on settlement. Never a wall, never "contact sales". Price: not posted — see /pricing.

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /3FTTW8BA7SRB20266 (the VIN lens).

Try it — sandbox: every call answers a deterministic, provenance-labeled simulated payload ({ environment, simulated } in the body). Force any documented outcome with the magic triggers. Going live is a connect, never a ballot: submit the credential at integrates.vin (dealer systems) or connects.vin (consumer accounts) — submissions enter the activation queue and rank live rollout.

EmitsComms.requested@1 · Comms.scheduled@1.

the SDK — comms.schedule
import { comms } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await comms.schedule({"vin":"3FTTW8BA7SRB20266"})
POST /comms/schedule
curl -X POST https://apis.vin/comms/schedule \
  -H 'content-type: application/json' \
  -d '{"vin":"3FTTW8BA7SRB20266"}'

Receipt — the sandbox wire answered the request above with this exact body at build time. Captured by the receipts runner (timestamped, provenance in the payload), never authored; it re-executes only when this descriptor changes.

receipt · executed 2026-08-17T12:42:09.254Z · HTTP 200
{
  "type": "OK",
  "answers": "CommsSchedule@1",
  "value": {
    "partyId": "ID-11f17424",
    "type": "person",
    "name": "Ava Good",
    "identifiers": [
      {
        "kind": "cast-key",
        "value": "ava-good"
      }
    ],
    "roles": [
      {
        "role": "customer"
      }
    ],
    "status": "active",
    "noun": "comms",
    "asOf": "2026-08-10",
    "identityId": "ID-11f17424",
    "threadId": "TH-31e306be",
    "scheduled": {
      "id": "MSG-a8ad413f",
      "sendOn": "2026-08-11",
      "status": "scheduled"
    }
  },
  "evidence": {
    "partyId": "ID-11f17424",
    "type": "person",
    "name": "Ava Good",
    "identifiers": [
      {
        "kind": "cast-key",
        "value": "ava-good"
      }
    ],
    "roles": [
      {
        "role": "customer"
      }
    ],
    "status": "active",
    "noun": "comms",
    "asOf": "2026-08-10",
    "identityId": "ID-11f17424",
    "threadId": "TH-31e306be",
    "scheduled": {
      "id": "MSG-a8ad413f",
      "sendOn": "2026-08-11",
      "status": "scheduled"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "identity-comms-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Pay & settle

pay

comms.pay · POST /comms/pay · gate offer · sandbox · answers CommsPay@1

FieldTypeRequiredNotes
vinstringno

The gate is a 402 OFFER — the price and a hard ceiling on the wire, with a durable intent that executes on settlement. Never a wall, never "contact sales". Price: not posted — see /pricing.

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /3FTTW8BA7SRB20266 (the VIN lens).

Try it — sandbox: every call answers a deterministic, provenance-labeled simulated payload ({ environment, simulated } in the body). Force any documented outcome with the magic triggers. Going live is a connect, never a ballot: submit the credential at integrates.vin (dealer systems) or connects.vin (consumer accounts) — submissions enter the activation queue and rank live rollout.

EmitsComms.failed@1 · Comms.paid@1.

the SDK — comms.pay
import { comms } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await comms.pay({"vin":"3FTTW8BA7SRB20266"})
POST /comms/pay
curl -X POST https://apis.vin/comms/pay \
  -H 'content-type: application/json' \
  -d '{"vin":"3FTTW8BA7SRB20266"}'

Receipt — the sandbox wire answered the request above with this exact body at build time. Captured by the receipts runner (timestamped, provenance in the payload), never authored; it re-executes only when this descriptor changes.

receipt · executed 2026-08-17T12:42:09.253Z · HTTP 200
{
  "type": "OK",
  "answers": "CommsPay@1",
  "value": {
    "partyId": "ID-11f17424",
    "type": "person",
    "name": "Ava Good",
    "identifiers": [
      {
        "kind": "cast-key",
        "value": "ava-good"
      }
    ],
    "roles": [
      {
        "role": "customer"
      }
    ],
    "status": "active",
    "noun": "comms",
    "asOf": "2026-08-10",
    "identityId": "ID-11f17424",
    "threadId": "TH-31e306be",
    "payment": {
      "id": "PAY-e1d87b43",
      "amountCents": 25000,
      "currency": "USD",
      "status": "settled"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "evidence": {
    "partyId": "ID-11f17424",
    "type": "person",
    "name": "Ava Good",
    "identifiers": [
      {
        "kind": "cast-key",
        "value": "ava-good"
      }
    ],
    "roles": [
      {
        "role": "customer"
      }
    ],
    "status": "active",
    "noun": "comms",
    "asOf": "2026-08-10",
    "identityId": "ID-11f17424",
    "threadId": "TH-31e306be",
    "payment": {
      "id": "PAY-e1d87b43",
      "amountCents": 25000,
      "currency": "USD",
      "status": "settled"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "identity-comms-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

textToPay

comms.textToPay · POST /comms/text-to-pay · gate key · sandbox · answers CommsTextToPay@1

No input — this capability takes no request body.

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /3FTTW8BA7SRB20266 (the VIN lens).

Try it — sandbox: every call answers a deterministic, provenance-labeled simulated payload ({ environment, simulated } in the body). Force any documented outcome with the magic triggers. Going live is a connect, never a ballot: submit the credential at integrates.vin (dealer systems) or connects.vin (consumer accounts) — submissions enter the activation queue and rank live rollout.

EmitsComms.textToPaid@1.

the SDK — comms.textToPay
import { comms } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await comms.textToPay()
POST /comms/text-to-pay
curl -X POST https://apis.vin/comms/text-to-pay \
  -H 'content-type: application/json' \
  -d '{}'

Receipt — the sandbox wire answered the request above with this exact body at build time. Captured by the receipts runner (timestamped, provenance in the payload), never authored; it re-executes only when this descriptor changes.

receipt · executed 2026-08-16T14:50:09.698Z · HTTP 200
{
  "type": "OK",
  "answers": "CommsTextToPay@1",
  "value": {
    "partyId": "ID-11f17424",
    "type": "person",
    "name": "Ava Good",
    "identifiers": [
      {
        "kind": "cast-key",
        "value": "ava-good"
      }
    ],
    "roles": [
      {
        "role": "customer"
      }
    ],
    "status": "active",
    "noun": "comms",
    "asOf": "2026-08-10",
    "identityId": "ID-11f17424",
    "threadId": "TH-31e306be",
    "link": {
      "id": "TP-a50c8bde",
      "amountCents": 25000,
      "currency": "USD",
      "status": "link-sent"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "evidence": {
    "partyId": "ID-11f17424",
    "type": "person",
    "name": "Ava Good",
    "identifiers": [
      {
        "kind": "cast-key",
        "value": "ava-good"
      }
    ],
    "roles": [
      {
        "role": "customer"
      }
    ],
    "status": "active",
    "noun": "comms",
    "asOf": "2026-08-10",
    "identityId": "ID-11f17424",
    "threadId": "TH-31e306be",
    "link": {
      "id": "TP-a50c8bde",
      "amountCents": 25000,
      "currency": "USD",
      "status": "link-sent"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "identity-comms-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Fulfill & operate

send

comms.send · POST /comms/send · gate offer · sandbox · answers CommsSend@1

FieldTypeRequiredNotes
vinstringno

The gate is a 402 OFFER — the price and a hard ceiling on the wire, with a durable intent that executes on settlement. Never a wall, never "contact sales". Price: not posted — see /pricing.

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /3FTTW8BA7SRB20266 (the VIN lens).

Try it — sandbox: every call answers a deterministic, provenance-labeled simulated payload ({ environment, simulated } in the body). Force any documented outcome with the magic triggers. Going live is a connect, never a ballot: submit the credential at integrates.vin (dealer systems) or connects.vin (consumer accounts) — submissions enter the activation queue and rank live rollout.

EmitsComms.requested@1 · Comms.sent@1.

the SDK — comms.send
import { comms } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await comms.send({"vin":"3FTTW8BA7SRB20266"})
POST /comms/send
curl -X POST https://apis.vin/comms/send \
  -H 'content-type: application/json' \
  -d '{"vin":"3FTTW8BA7SRB20266"}'

Receipt — the sandbox wire answered the request above with this exact body at build time. Captured by the receipts runner (timestamped, provenance in the payload), never authored; it re-executes only when this descriptor changes.

receipt · executed 2026-08-17T12:42:09.259Z · HTTP 200
{
  "type": "OK",
  "answers": "CommsSend@1",
  "value": {
    "partyId": "ID-11f17424",
    "type": "person",
    "name": "Ava Good",
    "identifiers": [
      {
        "kind": "cast-key",
        "value": "ava-good"
      }
    ],
    "roles": [
      {
        "role": "customer"
      }
    ],
    "status": "active",
    "noun": "comms",
    "asOf": "2026-08-10",
    "identityId": "ID-11f17424",
    "threadId": "TH-31e306be",
    "message": {
      "id": "MSG-701109e7",
      "channel": "sms",
      "to": "Ava Good",
      "status": "sent",
      "consent": "granted"
    }
  },
  "evidence": {
    "partyId": "ID-11f17424",
    "type": "person",
    "name": "Ava Good",
    "identifiers": [
      {
        "kind": "cast-key",
        "value": "ava-good"
      }
    ],
    "roles": [
      {
        "role": "customer"
      }
    ],
    "status": "active",
    "noun": "comms",
    "asOf": "2026-08-10",
    "identityId": "ID-11f17424",
    "threadId": "TH-31e306be",
    "message": {
      "id": "MSG-701109e7",
      "channel": "sms",
      "to": "Ava Good",
      "status": "sent",
      "consent": "granted"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "identity-comms-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Authorize & resolve

comms.consent · GET /comms/consent · gate none · sandbox · answers CommsConsent@1

FieldTypeRequiredNotes
vinstringno

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /3FTTW8BA7SRB20266 (the VIN lens).

Try it — sandbox: every call answers a deterministic, provenance-labeled simulated payload ({ environment, simulated } in the body). Force any documented outcome with the magic triggers. Going live is a connect, never a ballot: submit the credential at integrates.vin (dealer systems) or connects.vin (consumer accounts) — submissions enter the activation queue and rank live rollout.

the SDK — comms.consent
import { comms } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await comms.consent({"vin":"3FTTW8BA7SRB20266"})
GET /comms/consent
curl 'https://apis.vin/comms/consent?vin=3FTTW8BA7SRB20266'

Receipt — the sandbox wire answered the request above with this exact body at build time. Captured by the receipts runner (timestamped, provenance in the payload), never authored; it re-executes only when this descriptor changes.

receipt · executed 2026-08-17T12:42:09.242Z · HTTP 200
{
  "type": "OK",
  "answers": "CommsConsent@1",
  "value": {
    "partyId": "ID-11f17424",
    "type": "person",
    "name": "Ava Good",
    "identifiers": [
      {
        "kind": "cast-key",
        "value": "ava-good"
      }
    ],
    "roles": [
      {
        "role": "customer"
      }
    ],
    "status": "active",
    "noun": "comms",
    "asOf": "2026-08-10",
    "identityId": "ID-11f17424",
    "threadId": "TH-31e306be",
    "consent": {
      "identityId": "ID-11f17424",
      "status": "granted",
      "channels": [
        "email",
        "sms",
        "phone"
      ],
      "capturedAt": "2026-04-12"
    }
  },
  "evidence": {
    "partyId": "ID-11f17424",
    "type": "person",
    "name": "Ava Good",
    "identifiers": [
      {
        "kind": "cast-key",
        "value": "ava-good"
      }
    ],
    "roles": [
      {
        "role": "customer"
      }
    ],
    "status": "active",
    "noun": "comms",
    "asOf": "2026-08-10",
    "identityId": "ID-11f17424",
    "threadId": "TH-31e306be",
    "consent": {
      "identityId": "ID-11f17424",
      "status": "granted",
      "channels": [
        "email",
        "sms",
        "phone"
      ],
      "capturedAt": "2026-04-12"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "identity-comms-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

More actions

blast

comms.blast · POST /comms/blast · gate offer · sandbox · answers CommsBlast@1

FieldTypeRequiredNotes
vinstringno

The gate is a 402 OFFER — the price and a hard ceiling on the wire, with a durable intent that executes on settlement. Never a wall, never "contact sales". Price: not posted — see /pricing.

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /3FTTW8BA7SRB20266 (the VIN lens).

Try it — sandbox: every call answers a deterministic, provenance-labeled simulated payload ({ environment, simulated } in the body). Force any documented outcome with the magic triggers. Going live is a connect, never a ballot: submit the credential at integrates.vin (dealer systems) or connects.vin (consumer accounts) — submissions enter the activation queue and rank live rollout.

EmitsComms.blasted@1 · Comms.requested@1.

the SDK — comms.blast
import { comms } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await comms.blast({"vin":"3FTTW8BA7SRB20266"})
POST /comms/blast
curl -X POST https://apis.vin/comms/blast \
  -H 'content-type: application/json' \
  -d '{"vin":"3FTTW8BA7SRB20266"}'

Receipt — the sandbox wire answered the request above with this exact body at build time. Captured by the receipts runner (timestamped, provenance in the payload), never authored; it re-executes only when this descriptor changes.

receipt · executed 2026-08-17T12:42:09.240Z · HTTP 200
{
  "type": "OK",
  "answers": "CommsBlast@1",
  "value": {
    "partyId": "ID-11f17424",
    "type": "person",
    "name": "Ava Good",
    "identifiers": [
      {
        "kind": "cast-key",
        "value": "ava-good"
      }
    ],
    "roles": [
      {
        "role": "customer"
      }
    ],
    "status": "active",
    "noun": "comms",
    "asOf": "2026-08-10",
    "identityId": "ID-11f17424",
    "threadId": "TH-31e306be",
    "blast": {
      "id": "BL-e5a892a8",
      "audience": "persona-cast",
      "recipients": 12,
      "status": "sent"
    }
  },
  "evidence": {
    "partyId": "ID-11f17424",
    "type": "person",
    "name": "Ava Good",
    "identifiers": [
      {
        "kind": "cast-key",
        "value": "ava-good"
      }
    ],
    "roles": [
      {
        "role": "customer"
      }
    ],
    "status": "active",
    "noun": "comms",
    "asOf": "2026-08-10",
    "identityId": "ID-11f17424",
    "threadId": "TH-31e306be",
    "blast": {
      "id": "BL-e5a892a8",
      "audience": "persona-cast",
      "recipients": 12,
      "status": "sent"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "identity-comms-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

callConnect

comms.callConnect · POST /comms/call-connect · gate offer · sandbox · answers CommsCallConnect@1

FieldTypeRequiredNotes
vinstringno

The gate is a 402 OFFER — the price and a hard ceiling on the wire, with a durable intent that executes on settlement. Never a wall, never "contact sales". Price: not posted — see /pricing.

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /3FTTW8BA7SRB20266 (the VIN lens).

Try it — sandbox: every call answers a deterministic, provenance-labeled simulated payload ({ environment, simulated } in the body). Force any documented outcome with the magic triggers. Going live is a connect, never a ballot: submit the credential at integrates.vin (dealer systems) or connects.vin (consumer accounts) — submissions enter the activation queue and rank live rollout.

EmitsComms.callConnected@1.

the SDK — comms.callConnect
import { comms } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await comms.callConnect({"vin":"3FTTW8BA7SRB20266"})
POST /comms/call-connect
curl -X POST https://apis.vin/comms/call-connect \
  -H 'content-type: application/json' \
  -d '{"vin":"3FTTW8BA7SRB20266"}'

Receipt — the sandbox wire answered the request above with this exact body at build time. Captured by the receipts runner (timestamped, provenance in the payload), never authored; it re-executes only when this descriptor changes.

receipt · executed 2026-08-17T12:42:09.241Z · HTTP 200
{
  "type": "OK",
  "answers": "CommsCallConnect@1",
  "value": {
    "partyId": "ID-11f17424",
    "type": "person",
    "name": "Ava Good",
    "identifiers": [
      {
        "kind": "cast-key",
        "value": "ava-good"
      }
    ],
    "roles": [
      {
        "role": "customer"
      }
    ],
    "status": "active",
    "noun": "comms",
    "asOf": "2026-08-10",
    "identityId": "ID-11f17424",
    "threadId": "TH-31e306be",
    "call": {
      "id": "CALL-ff79ef1e",
      "from": "The Estate Store",
      "to": "Ava Good",
      "status": "connected"
    }
  },
  "evidence": {
    "partyId": "ID-11f17424",
    "type": "person",
    "name": "Ava Good",
    "identifiers": [
      {
        "kind": "cast-key",
        "value": "ava-good"
      }
    ],
    "roles": [
      {
        "role": "customer"
      }
    ],
    "status": "active",
    "noun": "comms",
    "asOf": "2026-08-10",
    "identityId": "ID-11f17424",
    "threadId": "TH-31e306be",
    "call": {
      "id": "CALL-ff79ef1e",
      "from": "The Estate Store",
      "to": "Ava Good",
      "status": "connected"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "identity-comms-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

chatbot

comms.chatbot · POST /comms/chatbot · gate key · sandbox · answers CommsChatbot@1

No input — this capability takes no request body.

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /3FTTW8BA7SRB20266 (the VIN lens).

Try it — sandbox: every call answers a deterministic, provenance-labeled simulated payload ({ environment, simulated } in the body). Force any documented outcome with the magic triggers. Going live is a connect, never a ballot: submit the credential at integrates.vin (dealer systems) or connects.vin (consumer accounts) — submissions enter the activation queue and rank live rollout.

EmitsComms.chatbotInvoked@1.

the SDK — comms.chatbot
import { comms } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await comms.chatbot()
POST /comms/chatbot
curl -X POST https://apis.vin/comms/chatbot \
  -H 'content-type: application/json' \
  -d '{}'

Receipt — the sandbox wire answered the request above with this exact body at build time. Captured by the receipts runner (timestamped, provenance in the payload), never authored; it re-executes only when this descriptor changes.

receipt · executed 2026-08-16T14:50:09.696Z · HTTP 200
{
  "type": "OK",
  "answers": "CommsChatbot@1",
  "value": {
    "partyId": "ID-11f17424",
    "type": "person",
    "name": "Ava Good",
    "identifiers": [
      {
        "kind": "cast-key",
        "value": "ava-good"
      }
    ],
    "roles": [
      {
        "role": "customer"
      }
    ],
    "status": "active",
    "noun": "comms",
    "asOf": "2026-08-10",
    "identityId": "ID-11f17424",
    "threadId": "TH-31e306be",
    "session": {
      "id": "CH-c80f03e9",
      "intent": "vehicle-question",
      "resolved": true
    }
  },
  "evidence": {
    "partyId": "ID-11f17424",
    "type": "person",
    "name": "Ava Good",
    "identifiers": [
      {
        "kind": "cast-key",
        "value": "ava-good"
      }
    ],
    "roles": [
      {
        "role": "customer"
      }
    ],
    "status": "active",
    "noun": "comms",
    "asOf": "2026-08-10",
    "identityId": "ID-11f17424",
    "threadId": "TH-31e306be",
    "session": {
      "id": "CH-c80f03e9",
      "intent": "vehicle-question",
      "resolved": true
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "identity-comms-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

deliverability

comms.deliverability · GET /comms/deliverability · gate key · sandbox · answers CommsDeliverability@1

FieldTypeRequiredNotes
vinstringno

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /3FTTW8BA7SRB20266 (the VIN lens).

Try it — sandbox: every call answers a deterministic, provenance-labeled simulated payload ({ environment, simulated } in the body). Force any documented outcome with the magic triggers. Going live is a connect, never a ballot: submit the credential at integrates.vin (dealer systems) or connects.vin (consumer accounts) — submissions enter the activation queue and rank live rollout.

the SDK — comms.deliverability
import { comms } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await comms.deliverability({"vin":"3FTTW8BA7SRB20266"})
GET /comms/deliverability
curl 'https://apis.vin/comms/deliverability?vin=3FTTW8BA7SRB20266'

Receipt — the sandbox wire answered the request above with this exact body at build time. Captured by the receipts runner (timestamped, provenance in the payload), never authored; it re-executes only when this descriptor changes.

receipt · executed 2026-08-17T12:42:09.247Z · HTTP 200
{
  "type": "OK",
  "answers": "CommsDeliverability@1",
  "value": {
    "partyId": "ID-11f17424",
    "type": "person",
    "name": "Ava Good",
    "identifiers": [
      {
        "kind": "cast-key",
        "value": "ava-good"
      }
    ],
    "roles": [
      {
        "role": "customer"
      }
    ],
    "status": "active",
    "noun": "comms",
    "asOf": "2026-08-10",
    "identityId": "ID-11f17424",
    "threadId": "TH-31e306be",
    "deliverability": {
      "deliveredPct": 97,
      "bouncedPct": 0
    }
  },
  "evidence": {
    "partyId": "ID-11f17424",
    "type": "person",
    "name": "Ava Good",
    "identifiers": [
      {
        "kind": "cast-key",
        "value": "ava-good"
      }
    ],
    "roles": [
      {
        "role": "customer"
      }
    ],
    "status": "active",
    "noun": "comms",
    "asOf": "2026-08-10",
    "identityId": "ID-11f17424",
    "threadId": "TH-31e306be",
    "deliverability": {
      "deliveredPct": 97,
      "bouncedPct": 0
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "identity-comms-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

dncScrub

comms.dncScrub · POST /comms/dnc-scrub · gate offer · sandbox · answers CommsDncScrub@1

FieldTypeRequiredNotes
vinstringno

The gate is a 402 OFFER — the price and a hard ceiling on the wire, with a durable intent that executes on settlement. Never a wall, never "contact sales". Price: not posted — see /pricing.

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /3FTTW8BA7SRB20266 (the VIN lens).

Try it — sandbox: every call answers a deterministic, provenance-labeled simulated payload ({ environment, simulated } in the body). Force any documented outcome with the magic triggers. Going live is a connect, never a ballot: submit the credential at integrates.vin (dealer systems) or connects.vin (consumer accounts) — submissions enter the activation queue and rank live rollout.

EmitsDnc.scrubbed@1.

the SDK — comms.dncScrub
import { comms } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await comms.dncScrub({"vin":"3FTTW8BA7SRB20266"})
POST /comms/dnc-scrub
curl -X POST https://apis.vin/comms/dnc-scrub \
  -H 'content-type: application/json' \
  -d '{"vin":"3FTTW8BA7SRB20266"}'

Receipt — the sandbox wire answered the request above with this exact body at build time. Captured by the receipts runner (timestamped, provenance in the payload), never authored; it re-executes only when this descriptor changes.

receipt · executed 2026-08-17T12:42:09.247Z · HTTP 200
{
  "type": "OK",
  "answers": "CommsDncScrub@1",
  "value": {
    "partyId": "ID-11f17424",
    "type": "person",
    "name": "Ava Good",
    "identifiers": [
      {
        "kind": "cast-key",
        "value": "ava-good"
      }
    ],
    "roles": [
      {
        "role": "customer"
      }
    ],
    "status": "active",
    "noun": "comms",
    "asOf": "2026-08-10",
    "identityId": "ID-11f17424",
    "threadId": "TH-31e306be",
    "dnc": {
      "listed": false,
      "scrubbed": 0
    }
  },
  "evidence": {
    "partyId": "ID-11f17424",
    "type": "person",
    "name": "Ava Good",
    "identifiers": [
      {
        "kind": "cast-key",
        "value": "ava-good"
      }
    ],
    "roles": [
      {
        "role": "customer"
      }
    ],
    "status": "active",
    "noun": "comms",
    "asOf": "2026-08-10",
    "identityId": "ID-11f17424",
    "threadId": "TH-31e306be",
    "dnc": {
      "listed": false,
      "scrubbed": 0
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "identity-comms-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

drip

comms.drip · POST /comms/drip · gate offer · sandbox · answers CommsDrip@1

FieldTypeRequiredNotes
vinstringno

The gate is a 402 OFFER — the price and a hard ceiling on the wire, with a durable intent that executes on settlement. Never a wall, never "contact sales". Price: not posted — see /pricing.

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /3FTTW8BA7SRB20266 (the VIN lens).

Try it — sandbox: every call answers a deterministic, provenance-labeled simulated payload ({ environment, simulated } in the body). Force any documented outcome with the magic triggers. Going live is a connect, never a ballot: submit the credential at integrates.vin (dealer systems) or connects.vin (consumer accounts) — submissions enter the activation queue and rank live rollout.

EmitsComms.dripped@1.

the SDK — comms.drip
import { comms } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await comms.drip({"vin":"3FTTW8BA7SRB20266"})
POST /comms/drip
curl -X POST https://apis.vin/comms/drip \
  -H 'content-type: application/json' \
  -d '{"vin":"3FTTW8BA7SRB20266"}'

Receipt — the sandbox wire answered the request above with this exact body at build time. Captured by the receipts runner (timestamped, provenance in the payload), never authored; it re-executes only when this descriptor changes.

receipt · executed 2026-08-17T12:42:09.247Z · HTTP 200
{
  "type": "OK",
  "answers": "CommsDrip@1",
  "value": {
    "partyId": "ID-11f17424",
    "type": "person",
    "name": "Ava Good",
    "identifiers": [
      {
        "kind": "cast-key",
        "value": "ava-good"
      }
    ],
    "roles": [
      {
        "role": "customer"
      }
    ],
    "status": "active",
    "noun": "comms",
    "asOf": "2026-08-10",
    "identityId": "ID-11f17424",
    "threadId": "TH-31e306be",
    "drip": {
      "id": "DR-c00adc69",
      "kind": "nurture-sequence",
      "steps": 4,
      "status": "not-enrolled"
    }
  },
  "evidence": {
    "partyId": "ID-11f17424",
    "type": "person",
    "name": "Ava Good",
    "identifiers": [
      {
        "kind": "cast-key",
        "value": "ava-good"
      }
    ],
    "roles": [
      {
        "role": "customer"
      }
    ],
    "status": "active",
    "noun": "comms",
    "asOf": "2026-08-10",
    "identityId": "ID-11f17424",
    "threadId": "TH-31e306be",
    "drip": {
      "id": "DR-c00adc69",
      "kind": "nurture-sequence",
      "steps": 4,
      "status": "not-enrolled"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "identity-comms-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

optOutHonor

comms.optOutHonor · POST /comms/opt-out-honor · gate offer · sandbox · answers CommsOptOutHonor@1

FieldTypeRequiredNotes
vinstringno

The gate is a 402 OFFER — the price and a hard ceiling on the wire, with a durable intent that executes on settlement. Never a wall, never "contact sales". Price: not posted — see /pricing.

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /3FTTW8BA7SRB20266 (the VIN lens).

Try it — sandbox: every call answers a deterministic, provenance-labeled simulated payload ({ environment, simulated } in the body). Force any documented outcome with the magic triggers. Going live is a connect, never a ballot: submit the credential at integrates.vin (dealer systems) or connects.vin (consumer accounts) — submissions enter the activation queue and rank live rollout.

EmitsComms.optOutHonored@1.

the SDK — comms.optOutHonor
import { comms } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await comms.optOutHonor({"vin":"3FTTW8BA7SRB20266"})
POST /comms/opt-out-honor
curl -X POST https://apis.vin/comms/opt-out-honor \
  -H 'content-type: application/json' \
  -d '{"vin":"3FTTW8BA7SRB20266"}'

Receipt — the sandbox wire answered the request above with this exact body at build time. Captured by the receipts runner (timestamped, provenance in the payload), never authored; it re-executes only when this descriptor changes.

receipt · executed 2026-08-17T12:42:09.252Z · HTTP 200
{
  "type": "OK",
  "answers": "CommsOptOutHonor@1",
  "value": {
    "partyId": "ID-11f17424",
    "type": "person",
    "name": "Ava Good",
    "identifiers": [
      {
        "kind": "cast-key",
        "value": "ava-good"
      }
    ],
    "roles": [
      {
        "role": "customer"
      }
    ],
    "status": "active",
    "noun": "comms",
    "asOf": "2026-08-10",
    "identityId": "ID-11f17424",
    "threadId": "TH-31e306be",
    "optOut": {
      "status": "opt-out-recorded",
      "honoredWithinDays": 10
    }
  },
  "evidence": {
    "partyId": "ID-11f17424",
    "type": "person",
    "name": "Ava Good",
    "identifiers": [
      {
        "kind": "cast-key",
        "value": "ava-good"
      }
    ],
    "roles": [
      {
        "role": "customer"
      }
    ],
    "status": "active",
    "noun": "comms",
    "asOf": "2026-08-10",
    "identityId": "ID-11f17424",
    "threadId": "TH-31e306be",
    "optOut": {
      "status": "opt-out-recorded",
      "honoredWithinDays": 10
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "identity-comms-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

transcribe

comms.transcribe · POST /comms/transcribe · gate key · sandbox · answers CommsTranscribe@1

No input — this capability takes no request body.

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /3FTTW8BA7SRB20266 (the VIN lens).

Try it — sandbox: every call answers a deterministic, provenance-labeled simulated payload ({ environment, simulated } in the body). Force any documented outcome with the magic triggers. Going live is a connect, never a ballot: submit the credential at integrates.vin (dealer systems) or connects.vin (consumer accounts) — submissions enter the activation queue and rank live rollout.

EmitsComms.transcribed@1.

the SDK — comms.transcribe
import { comms } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await comms.transcribe()
POST /comms/transcribe
curl -X POST https://apis.vin/comms/transcribe \
  -H 'content-type: application/json' \
  -d '{}'

Receipt — the sandbox wire answered the request above with this exact body at build time. Captured by the receipts runner (timestamped, provenance in the payload), never authored; it re-executes only when this descriptor changes.

receipt · executed 2026-08-16T14:50:09.698Z · HTTP 200
{
  "type": "OK",
  "answers": "CommsTranscribe@1",
  "value": {
    "partyId": "ID-11f17424",
    "type": "person",
    "name": "Ava Good",
    "identifiers": [
      {
        "kind": "cast-key",
        "value": "ava-good"
      }
    ],
    "roles": [
      {
        "role": "customer"
      }
    ],
    "status": "active",
    "noun": "comms",
    "asOf": "2026-08-10",
    "identityId": "ID-11f17424",
    "threadId": "TH-31e306be",
    "transcript": {
      "id": "TR-78fbaf93",
      "callId": "CALL-ff79ef1e",
      "lines": 63,
      "status": "transcribed"
    }
  },
  "evidence": {
    "partyId": "ID-11f17424",
    "type": "person",
    "name": "Ava Good",
    "identifiers": [
      {
        "kind": "cast-key",
        "value": "ava-good"
      }
    ],
    "roles": [
      {
        "role": "customer"
      }
    ],
    "status": "active",
    "noun": "comms",
    "asOf": "2026-08-10",
    "identityId": "ID-11f17424",
    "threadId": "TH-31e306be",
    "transcript": {
      "id": "TR-78fbaf93",
      "callId": "CALL-ff79ef1e",
      "lines": 63,
      "status": "transcribed"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "identity-comms-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

videoCall

comms.videoCall · POST /comms/video-call · gate key · sandbox · answers CommsVideoCall@1

No input — this capability takes no request body.

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /3FTTW8BA7SRB20266 (the VIN lens).

Try it — sandbox: every call answers a deterministic, provenance-labeled simulated payload ({ environment, simulated } in the body). Force any documented outcome with the magic triggers. Going live is a connect, never a ballot: submit the credential at integrates.vin (dealer systems) or connects.vin (consumer accounts) — submissions enter the activation queue and rank live rollout.

EmitsComms.videoCalled@1.

the SDK — comms.videoCall
import { comms } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await comms.videoCall()
POST /comms/video-call
curl -X POST https://apis.vin/comms/video-call \
  -H 'content-type: application/json' \
  -d '{}'

Receipt — the sandbox wire answered the request above with this exact body at build time. Captured by the receipts runner (timestamped, provenance in the payload), never authored; it re-executes only when this descriptor changes.

receipt · executed 2026-08-16T14:50:09.698Z · HTTP 200
{
  "type": "OK",
  "answers": "CommsVideoCall@1",
  "value": {
    "partyId": "ID-11f17424",
    "type": "person",
    "name": "Ava Good",
    "identifiers": [
      {
        "kind": "cast-key",
        "value": "ava-good"
      }
    ],
    "roles": [
      {
        "role": "customer"
      }
    ],
    "status": "active",
    "noun": "comms",
    "asOf": "2026-08-10",
    "identityId": "ID-11f17424",
    "threadId": "TH-31e306be",
    "session": {
      "id": "VC-8a449e91",
      "kind": "video-walkaround",
      "vin": "1HGCM82633A004352",
      "status": "completed"
    }
  },
  "evidence": {
    "partyId": "ID-11f17424",
    "type": "person",
    "name": "Ava Good",
    "identifiers": [
      {
        "kind": "cast-key",
        "value": "ava-good"
      }
    ],
    "roles": [
      {
        "role": "customer"
      }
    ],
    "status": "active",
    "noun": "comms",
    "asOf": "2026-08-10",
    "identityId": "ID-11f17424",
    "threadId": "TH-31e306be",
    "session": {
      "id": "VC-8a449e91",
      "kind": "video-walkaround",
      "vin": "1HGCM82633A004352",
      "status": "completed"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "identity-comms-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Data model

The record shape behind this noun — one entity, each property an evidence field. See the whole estate model on the data model page.

Customer

Modeled

The noun drawn out — its record shape, its lifecycle, and how it is exercised end to end. One diagram, rendered from the estate model.

Comms · Class model


Generated from the catalog. Every capability, answer, gate, and entity on this page is a rendered descriptor — it cannot drift from the wire.