docs.vin

creditProfile

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

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

Identity

NouncreditProfile
PillarData (facets: 4 data · 3 services)
Capabilities7 — 0 live · 7 sandbox · 0 declared
EntitiesCreditApplication
Doorsaggregator.vin
SDKVin.creditProfile.* from apis.vin
Address/catalog/creditProfile#{action} — the anchor IS the wire name minus creditProfile.

Events

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

Discover & read

decode

creditProfile.decode · GET /credit-profiles/decode · gate none · sandbox · answers CreditProfileDecode@1

FieldTypeRequiredNotes
vinstringno

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /KNAG64J71S5313688 (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 — creditProfile.decode
import { creditProfile } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await creditProfile.decode({"vin":"KNAG64J71S5313688"})
GET /credit-profiles/decode
curl 'https://apis.vin/credit-profiles/decode?vin=KNAG64J71S5313688'

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.942Z · HTTP 200
{
  "type": "OK",
  "answers": "CreditProfileDecode@1",
  "value": {
    "vin": "KNAG64J71S5313688",
    "noun": "creditProfile",
    "asOf": "2026-08-10",
    "id": "app_8c99b722",
    "applicantId": "ID-11f17424",
    "coApplicants": [],
    "lenderId": "F00SET",
    "decision": {
      "status": "pending"
    },
    "stips": [],
    "adverseAction": {
      "status": "none"
    },
    "status": "Prequal",
    "profile": {
      "identityId": "ID-11f17424",
      "score": 843,
      "tier": "super-prime",
      "note": "approved band (>= 680)",
      "basis": "cast-score-law"
    }
  },
  "evidence": {
    "vin": "KNAG64J71S5313688",
    "noun": "creditProfile",
    "asOf": "2026-08-10",
    "id": "app_8c99b722",
    "applicantId": "ID-11f17424",
    "coApplicants": [],
    "lenderId": "F00SET",
    "decision": {
      "status": "pending"
    },
    "stips": [],
    "adverseAction": {
      "status": "none"
    },
    "status": "Prequal",
    "profile": {
      "identityId": "ID-11f17424",
      "score": 843,
      "tier": "super-prime",
      "note": "approved band (>= 680)",
      "basis": "cast-score-law"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "credit-jacket-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

history

creditProfile.history · GET /credit-profiles/history · gate none · sandbox · answers CreditProfileHistory@1

FieldTypeRequiredNotes
vinstringno

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /KNAG64J71S5313688 (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 — creditProfile.history
import { creditProfile } from 'apis.vin'

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

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.943Z · HTTP 200
{
  "type": "OK",
  "answers": "CreditProfileHistory@1",
  "value": {
    "vin": "KNAG64J71S5313688",
    "noun": "creditProfile",
    "asOf": "2026-08-10",
    "id": "app_8c99b722",
    "applicantId": "ID-11f17424",
    "coApplicants": [],
    "lenderId": "F00SET",
    "decision": {
      "status": "pending"
    },
    "stips": [],
    "adverseAction": {
      "status": "none"
    },
    "status": "Prequal",
    "history": {
      "note": "approved band (>= 680)",
      "basis": "cast-anchor"
    }
  },
  "evidence": {
    "vin": "KNAG64J71S5313688",
    "noun": "creditProfile",
    "asOf": "2026-08-10",
    "id": "app_8c99b722",
    "applicantId": "ID-11f17424",
    "coApplicants": [],
    "lenderId": "F00SET",
    "decision": {
      "status": "pending"
    },
    "stips": [],
    "adverseAction": {
      "status": "none"
    },
    "status": "Prequal",
    "history": {
      "note": "approved band (>= 680)",
      "basis": "cast-anchor"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "credit-jacket-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

monitor

creditProfile.monitor · POST /credit-profiles/monitor · gate offer · sandbox · answers CreditProfileMonitor@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) · /KNAG64J71S5313688 (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.

EmitsCreditProfile.monitorEnrolled@1.

the SDK — creditProfile.monitor
import { creditProfile } from 'apis.vin'

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

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.943Z · HTTP 200
{
  "type": "OK",
  "answers": "CreditProfileMonitor@1",
  "value": {
    "vin": "KNAG64J71S5313688",
    "noun": "creditProfile",
    "asOf": "2026-08-10",
    "id": "app_8c99b722",
    "applicantId": "ID-11f17424",
    "coApplicants": [],
    "lenderId": "F00SET",
    "decision": {
      "status": "pending"
    },
    "stips": [],
    "adverseAction": {
      "status": "none"
    },
    "status": "Prequal",
    "monitoring": {
      "id": "CPM-6ac41015",
      "topic": "credit-profile",
      "status": "enrolled"
    }
  },
  "evidence": {
    "vin": "KNAG64J71S5313688",
    "noun": "creditProfile",
    "asOf": "2026-08-10",
    "id": "app_8c99b722",
    "applicantId": "ID-11f17424",
    "coApplicants": [],
    "lenderId": "F00SET",
    "decision": {
      "status": "pending"
    },
    "stips": [],
    "adverseAction": {
      "status": "none"
    },
    "status": "Prequal",
    "monitoring": {
      "id": "CPM-6ac41015",
      "topic": "credit-profile",
      "status": "enrolled"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "credit-jacket-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Authorize & resolve

creditProfile.consent · POST /credit-profiles/consent · gate offer · sandbox · answers CreditProfileConsent@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) · /KNAG64J71S5313688 (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.

EmitsCreditProfile.consentCaptured@1.

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

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

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.942Z · HTTP 200
{
  "type": "OK",
  "answers": "CreditProfileConsent@1",
  "value": {
    "vin": "KNAG64J71S5313688",
    "noun": "creditProfile",
    "asOf": "2026-08-10",
    "id": "app_8c99b722",
    "applicantId": "ID-11f17424",
    "coApplicants": [],
    "lenderId": "F00SET",
    "decision": {
      "status": "pending"
    },
    "stips": [],
    "adverseAction": {
      "status": "none"
    },
    "status": "Prequal",
    "consent": {
      "id": "CPC-339bd469",
      "status": "consent-captured",
      "participant": {
        "partyId": "ID-11f17424",
        "type": "person",
        "name": "Ava Good",
        "identifiers": [
          {
            "kind": "cast-key",
            "value": "ava-good"
          }
        ],
        "roles": [
          {
            "role": "customer"
          }
        ],
        "status": "active"
      }
    }
  },
  "evidence": {
    "vin": "KNAG64J71S5313688",
    "noun": "creditProfile",
    "asOf": "2026-08-10",
    "id": "app_8c99b722",
    "applicantId": "ID-11f17424",
    "coApplicants": [],
    "lenderId": "F00SET",
    "decision": {
      "status": "pending"
    },
    "stips": [],
    "adverseAction": {
      "status": "none"
    },
    "status": "Prequal",
    "consent": {
      "id": "CPC-339bd469",
      "status": "consent-captured",
      "participant": {
        "partyId": "ID-11f17424",
        "type": "person",
        "name": "Ava Good",
        "identifiers": [
          {
            "kind": "cast-key",
            "value": "ava-good"
          }
        ],
        "roles": [
          {
            "role": "customer"
          }
        ],
        "status": "active"
      }
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "credit-jacket-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

dispute

creditProfile.dispute · POST /credit-profiles/dispute · gate offer · sandbox · answers CreditProfileDispute@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) · /KNAG64J71S5313688 (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.

EmitsCreditProfile.disputeFiled@1.

the SDK — creditProfile.dispute
import { creditProfile } from 'apis.vin'

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

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.943Z · HTTP 200
{
  "type": "OK",
  "answers": "CreditProfileDispute@1",
  "value": {
    "vin": "KNAG64J71S5313688",
    "noun": "creditProfile",
    "asOf": "2026-08-10",
    "id": "app_8c99b722",
    "applicantId": "ID-11f17424",
    "coApplicants": [],
    "lenderId": "F00SET",
    "decision": {
      "status": "pending"
    },
    "stips": [],
    "adverseAction": {
      "status": "none"
    },
    "status": "Prequal",
    "dispute": {
      "id": "CPD-fc2fabdf",
      "status": "dispute-filed",
      "participant": {
        "partyId": "ID-11f17424",
        "type": "person",
        "name": "Ava Good",
        "identifiers": [
          {
            "kind": "cast-key",
            "value": "ava-good"
          }
        ],
        "roles": [
          {
            "role": "customer"
          }
        ],
        "status": "active"
      }
    }
  },
  "evidence": {
    "vin": "KNAG64J71S5313688",
    "noun": "creditProfile",
    "asOf": "2026-08-10",
    "id": "app_8c99b722",
    "applicantId": "ID-11f17424",
    "coApplicants": [],
    "lenderId": "F00SET",
    "decision": {
      "status": "pending"
    },
    "stips": [],
    "adverseAction": {
      "status": "none"
    },
    "status": "Prequal",
    "dispute": {
      "id": "CPD-fc2fabdf",
      "status": "dispute-filed",
      "participant": {
        "partyId": "ID-11f17424",
        "type": "person",
        "name": "Ava Good",
        "identifiers": [
          {
            "kind": "cast-key",
            "value": "ava-good"
          }
        ],
        "roles": [
          {
            "role": "customer"
          }
        ],
        "status": "active"
      }
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "credit-jacket-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

More actions

freeze

creditProfile.freeze · GET /credit-profiles/freeze · gate key · sandbox · answers CreditProfileFreeze@1

FieldTypeRequiredNotes
vinstringno

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /KNAG64J71S5313688 (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 — creditProfile.freeze
import { creditProfile } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await creditProfile.freeze({"vin":"KNAG64J71S5313688"})
GET /credit-profiles/freeze
curl 'https://apis.vin/credit-profiles/freeze?vin=KNAG64J71S5313688'

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.943Z · HTTP 200
{
  "type": "OK",
  "answers": "CreditProfileFreeze@1",
  "value": {
    "vin": "KNAG64J71S5313688",
    "noun": "creditProfile",
    "asOf": "2026-08-10",
    "id": "app_8c99b722",
    "applicantId": "ID-11f17424",
    "coApplicants": [],
    "lenderId": "F00SET",
    "decision": {
      "status": "pending"
    },
    "stips": [],
    "adverseAction": {
      "status": "none"
    },
    "status": "Prequal",
    "freeze": {
      "status": "not-frozen",
      "basis": "cast-all-scored"
    }
  },
  "evidence": {
    "vin": "KNAG64J71S5313688",
    "noun": "creditProfile",
    "asOf": "2026-08-10",
    "id": "app_8c99b722",
    "applicantId": "ID-11f17424",
    "coApplicants": [],
    "lenderId": "F00SET",
    "decision": {
      "status": "pending"
    },
    "stips": [],
    "adverseAction": {
      "status": "none"
    },
    "status": "Prequal",
    "freeze": {
      "status": "not-frozen",
      "basis": "cast-all-scored"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "credit-jacket-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

pull

creditProfile.pull · GET /credit-profiles/pull · gate key · sandbox · answers CreditProfilePull@1

FieldTypeRequiredNotes
vinstringno

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /KNAG64J71S5313688 (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.

EmitsCreditProfile.pulled@1.

the SDK — creditProfile.pull
import { creditProfile } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await creditProfile.pull({"vin":"KNAG64J71S5313688"})
GET /credit-profiles/pull
curl 'https://apis.vin/credit-profiles/pull?vin=KNAG64J71S5313688'

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.943Z · HTTP 200
{
  "type": "OK",
  "answers": "CreditProfilePull@1",
  "value": {
    "prequal": {
      "outcome": "scored",
      "score": 673,
      "tier": "near-prime",
      "ref": "PQ-1",
      "provenance": {
        "environment": "sandbox",
        "simulated": true,
        "provider": "credit-rail-sandbox"
      }
    }
  },
  "evidence": {
    "prequal": {
      "outcome": "scored",
      "score": 673,
      "tier": "near-prime",
      "ref": "PQ-1",
      "provenance": {
        "environment": "sandbox",
        "simulated": true,
        "provider": "credit-rail-sandbox"
      }
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "credit-rail-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.

CreditApplication

Modeled

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

CreditProfile · Class model

CreditProfile · State machine

CreditProfile · Sequence


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