- A key. You create it once per subject per network, receive a
consent_id, and pass thatconsent_idon every product query for the subject. Without a validconsent_id, consumer and business queries are rejected. - An audit artifact. The record permanently captures who consented, as identified by which details, when, and with what scope — so that every query you ever ran can be traced back to a lawful basis.
Lifecycle
A consumer consent record moves through a simple lifecycle, with one endpoint for each transition you control: You gather the subject’s permission outside the API — in your onboarding flow, your terms, your call script — then record it. From there theconsent_id is reusable on queries until the consent expires, and you can read
it back or adjust its mutable attributes at any time.
What a consent record contains
All three consumer endpoints return the same shape:Creating consent
POST /v1/consent/consumer records consent server-to-server. You supply the
subject’s identity and attest that you gathered their permission beforehand.
200 OK returns the full record, including a default field access grant
created alongside the consent:
Linking identity: consumer_id vs. the identity payload
How the consent attaches to an entity depends on whether
you pass consumer_id:
- With
consumer_id— the consent links to that existing consumer profile. Use this after a successfulGET /v1/entities/consumer/search, so the subject’s history stays consolidated on one profile. - Without
consumer_id— a new consumer profile is created from the identity payload and linked to the consent.
Using a consent ID
Pass theconsent_id in the body of a product query. The network resolves the
consent to the subject’s identity and applies the appropriate field access — you
don’t repeat the subject’s identifying details on every call.
Reading consent back
GET /v1/consent/consumer/{consent_id} returns the current state of a consent
record. The network_id query parameter is required — the lookup is scoped
to that network:
consent_id doesn’t exist
or exists in a different network, you get a 404:
A consent record belongs to one network. The same subject needs a separate
consent in each network you query them through, and a
consent_id minted in
one network is invisible — 404, not 403 — from another.Updating consent
PUT /v1/consent/consumer/{consent_id} changes the mutable attributes of a
consent record: its scope, its expiry, and the description of consented fields.
400:
Identity is immutable — by design
The update endpoint deliberately accepts onlyscope, expires_at, and
consented_fields. The subject’s name, date of birth, email, phone, and SSN on
a consent record can never change.
Field access grants
Each consent record carries one or more field access grants infield_access_grants. A grant is a concrete statement of which fields, from
which furnisher, over which time window this consent unlocks.
When you create a consent, a default grant is attached automatically with
effective_from set to the creation date and a baseline set of field
definitions. Grants outside their effective window no longer apply.
Grants describe what this consent covers. They sit alongside — not in
place of — entitlement: a field appears in a query
result only if the consent covers asking, the network’s
querying policy exposes the field, and you have
earned entitlement to it.
Failure modes
Error responses follow the standard envelope — see
Errors:
Business consent
POST /v1/consent/business records consent to query a business, mirroring the
consumer flow:
consent_id, consented_fields, created_at, events,
and scope. Use the consent_id on business product queries exactly as you
would a consumer one.
Business consent currently supports create only. There is no
GET or PUT /v1/consent/business/{consent_id} today — read-back and
updates are consumer-only. If you need to change a business consent’s
attributes, create a new record and switch to its consent_id.How consent relates to entitlement
Consent and entitlement are complementary gates, and a query needs both:
Consent without entitlement yields a permitted query with little or no data;
entitlement without consent yields no query at all.
Common questions
Should I reuse a consent_id across queries?
Should I reuse a consent_id across queries?
Yes. Create one consent per subject per network and reuse its
consent_id
on every product query for that subject while the consent is valid. You do
not need a new consent record for each query.Why does GET return 404 for a consent I just created?
Why does GET return 404 for a consent I just created?
The read is scoped by the
network_id query parameter. The most common
cause is passing a different network_id than the one the consent was
created under — the record exists, but it isn’t visible from that network,
so the API reports 404 RESOURCE_NOT_FOUND rather than confirming it
exists elsewhere.When do I update versus create a new consent?
When do I update versus create a new consent?
Update when the subject’s permission itself changed shape — a broader
or narrower scope, a new expiry date, a revised description of consented
fields. Create new when anything about the subject’s identity needs to
differ: identity fields are immutable, so a corrected SSN, a legal name
change, or a new email all require a fresh record and a switch to its
consent_id.Does furnishing require consent?
Does furnishing require consent?
The
consent_id requirement documented here applies to queries —
reading data back out of the network. See
Furnishing for the obligations that apply when
contributing data.In the dashboard

Consumer — consent tab

Find or create consumer dialog

Find or create consumer — ready to submit

Find or create business dialog

Find or create business — ready to submit

Business — consent tab
Related concepts
Entities
The subjects consent records are about, and how to find them.
Querying
How consent plugs into a product query.
Entitlement
What determines which fields a query returns.
Errors
The error envelope and status codes used across the API.